Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक PHP क्वेरी बिल्डर के साथ कॉम्प्लेक्स जहां क्लॉज को संभालना

मैंने Zend_Db . पर काफी काम किया है पुस्तकालय, जिसमें एक PHP एसक्यूएल क्वेरी बनाने के लिए वर्ग शामिल है . मैंने WHERE . में हर कल्पनाशील SQL सिंटैक्स को संभालने की कोशिश करने का फैसला किया और HAVING खंड, कई कारणों से:

  • PHP एक स्क्रिप्टिंग भाषा है जो प्रत्येक अनुरोध पर कोड को पार्स और संकलित करती है (जब तक कि आप बाइटकोड कैश का उपयोग नहीं करते)। तो PHP पर्यावरण भारी कोड पुस्तकालयों के प्रति संवेदनशील है - जावा या सी # या पायथन या आपके पास क्या है। इसलिए पुस्तकालयों को जितना हो सके उतना दुबला रखना एक उच्च प्राथमिकता है।

    सभी Zend_Db जिस पुस्तकालय पर मैंने काम किया वह PHP कोड की लगभग 2,000 पंक्तियों का था। इसके विपरीत, जावा हाइबरनेट कोड की 118K लाइनों के क्रम में है। लेकिन यह कोई समस्या नहीं है क्योंकि जावा लाइब्रेरी पहले से संकलित है और हर अनुरोध पर इसे लोड करने की आवश्यकता नहीं है।

  • SQL अभिव्यक्तियाँ एक जनरेटिव व्याकरण का अनुसरण करती हैं जो अधिक कॉम्पैक्ट है, और पढ़ने और बनाए रखने में आसान है कि आपके द्वारा दिखाया गया कोई भी PHP-आधारित निर्माण। एसक्यूएल अभिव्यक्ति व्याकरण सीखना एक एपीआई सीखने से कहीं ज्यादा आसान है जो इसे अनुकरण कर सकता है। आप अंत में "सरलीकृत व्याकरण" का समर्थन करते हैं। या फिर आप इस तरह से शुरुआत करते हैं, और अपने आप को अपने उपयोगकर्ता समुदाय द्वारा फ़ीचर क्रीप में मजबूर पाते हैं। जब तक आपका एपीआई अनुपयोगी रूप से जटिल न हो।

  • ऐसे एपीआई का उपयोग करने वाले एप्लिकेशन को डीबग करने के लिए, आपको अनिवार्य रूप से अंतिम SQL अभिव्यक्ति तक पहुंच की आवश्यकता होगी, इसलिए यह सबसे कमजोर एब्स्ट्रैक्शन आप ले सकते हैं।

  • SQL अभिव्यक्तियों के लिए PHP-आधारित इंटरफ़ेस का उपयोग करने का एकमात्र लाभ यह होगा कि यह स्मार्ट संपादकों और IDE में कोड-पूर्णता में सहायता करता है। लेकिन जब इतने सारे ऑपरेटर और ऑपरेंड स्ट्रिंग स्थिरांक का उपयोग करते हैं जैसे '>=' , आप किसी भी कोड-पूर्ण बुद्धि को खराब करते हैं।

अपडेट करें: मैंने अभी एक अच्छा ब्लॉग लेख पढ़ा है "A Farewell to ORMs ।" लेखक, एल्डो कोर्टेसी, SQL अभिव्यक्ति भाषा का उपयोग करने का सुझाव देते हैं। पायथन के SQLAlchemy में। सिंटेक्टिक शुगर और ऑपरेटर ओवरलोडिंग जो कि पायथन में मानक है (लेकिन PHP में समर्थित नहीं है) इसे एक बहुत ही प्रभावी क्वेरी-जनरेटिंग समाधान बनाते हैं।

आप पर्ल के DBIx::Class को भी देख सकते हैं, लेकिन यह बहुत बदसूरत हो जाता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Azure प्रदर्शन बेंचमार्क पर MySQL - स्केलग्रिड बनाम Azure डेटाबेस

  2. mysql में एमपी 3 फाइलों को स्टोर करना

  3. पायथन:MySQL से जुड़ने और प्रश्नों को निष्पादित करने का सबसे अच्छा अभ्यास और सबसे सुरक्षित तरीका

  4. अपडेट में शामिल होने के लिए MySQL सिंटैक्स

  5. PHP Mysql का उपयोग करके फॉर्म से दिनांक सम्मिलित करना