7 पॉइंट द्वारा GN⁺ 2023-06-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • ORM (object-relational mapper) को software development में अक्सर एक anti-pattern के रूप में आलोचना मिलती है.
  • लेकिन यह आलोचना बढ़ा-चढ़ाकर पेश की जाती है, और ORMs दूसरे software tools की तरह अपने आप में बुरे नहीं हैं.
  • ORM की असली समस्या अक्सर उसके गलत उपयोग या गलत समझे जाने में होती है.
  • ORM और relational database अलग-अलग paradigm पर काम करते हैं, इसलिए data modeling और relationships में चुनौतीपूर्ण समस्याएँ पैदा हो सकती हैं.
  • ORM single responsibility principle (SRP) और separation of concerns (SOC) के सिद्धांतों का उल्लंघन करता है, लेकिन यह आलोचना अपने आप में कोई निर्णायक समस्या नहीं है.
  • ORM की वास्तविक समस्या efficiency और visibility में है.
  • अगर सही तरीके से उपयोग न किया जाए तो ORM inefficient हो सकता है, लेकिन इसमें queries को optimize करने और performance बेहतर करने वाली सुविधाएँ भी होती हैं.
  • ORM में database के लिए कई बार round-trip होने वाली N+1 समस्या को data loader का उपयोग करके कम किया जा सकता है.
  • ORM की सबसे बड़ी समस्या visibility और debugging है. यह स्पष्ट error messages नहीं दे सकता या समस्या को समझना और हल करना कठिन बना सकता है.
  • सही तरीके से उपयोग किए जाने पर ORM raw SQL जितना efficient हो सकता है, लेकिन developers को इसकी features और native SQL equivalents का उपयोग करना चाहिए.
  • कुछ complex या problematic queries के लिए raw SQL query पर स्विच करना आवश्यक हो सकता है.
  • कुल मिलाकर, ORM अपने आप में बुरा नहीं है, लेकिन संभावित समस्याओं से बचने के लिए इसका सावधानीपूर्वक और समझदारी से उपयोग जरूरी है.

1 टिप्पणियां

 
GN⁺ 2023-06-28
Hacker News राय
  • ORM की सीमाओं और कमियों, जैसे दूसरे database का उपयोग न कर पाना और SQL ज्ञान की आवश्यकता, की आलोचना की जाती है।
  • string interpolation और raw JDBC के करीब वाले तरीके से data layer को एक-एक query बनाकर तैयार करना बेहतर approach माना जाता है।
  • ORM अक्सर सिर्फ basic table और view mapping तक सीमित रहते हैं और SQL की advanced features और क्षमताओं को नज़रअंदाज़ करते हैं।
  • ORM के दो प्रकार होते हैं: एक जो domain model पर आधारित होता है और दूसरा जो मौजूदा database से domain model बनाता है।
  • jOOQ और Hibernate जैसे अलग-अलग implementation और features वाले ORM, अलग-अलग उद्देश्यों के लिए इस्तेमाल किए जाते हैं।
  • ORM कई tables और उचित foreign key relationships वाले complex applications में उपयोगी हो सकते हैं।
  • string literal में raw SQL का उपयोग ORM के विकल्प के रूप में देखा जाता है, और query wrapper बनाने वाले tools का भी उपयोग किया जा सकता है।
  • ऐसे व्यावहारिक ORM को प्राथमिकता दी जाती है जो सब कुछ bundle के भीतर छिपाने की कोशिश न करें या अपनी खुद की query language न लाएँ।
  • SQLAlchemy की उस approach के लिए प्रशंसा की जाती है जो SQL को फिर से गढ़े बिना एक सुविधाजनक query layer देती है।
  • ORM का उपयोग न करने पर developers को अपना database interface खुद लिखना और बनाए रखना पड़ता है, जिससे bugs और security vulnerabilities पैदा हो सकती हैं।
  • ORM के SOLID principles का उल्लंघन करने वाली आलोचना को शैक्षणिक शिक्षण और वास्तविक development के बीच टकराव के रूप में देखा जाता है।
  • अनुभव की कमी या शैक्षणिक प्रथाओं के प्रभाव के कारण समस्याएँ पैदा हो सकती हैं और बजट से अधिक खर्च हो सकता है।