मैं एक सर्वर लिख रहा हूं जिसे मैं कई अलग-अलग लोगों द्वारा चलाने की उम्मीद करता हूं, जिनमें से सभी के साथ मेरा सीधे संपर्क नहीं होगा। सर्वर एक दूसरे के साथ क्लस्टर में संवाद करेंगे। सर्वर की कार्यक्षमता का हिस्सा संभावित रूप से बहुत बड़ी तालिका से पंक्तियों का एक छोटा सबसेट चुनना शामिल है। पंक्तियों का चयन करने की सटीक पसंद को कुछ ट्यूनिंग की आवश्यकता होगी, और यह महत्वपूर्ण है कि क्लस्टर चलाने के लिए यह संभव है (उदाहरण के लिए, स्वयं) प्रत्येक सर्वर व्यवस्थापक को सर्वर के नए संस्करण को तैनात करने के लिए चयन मानदंडों को अद्यतन करने के लिए संभव है ।किसी तालिका से पंक्तियों का चयन करने के लिए एक डोमेन विशिष्ट भाषा लिखना
बस पायथन में फ़ंक्शन लिखना वास्तव में एक विकल्प नहीं है, क्योंकि कोई भी ऐसे सर्वर को स्थापित नहीं करना चाहता है जो रनटाइम पर मनमाने ढंग से पाइथन कोड को डाउनलोड और निष्पादित करता है।
मुझे इस लक्ष्य को प्राप्त करने के लिए डोमेन विशिष्ट भाषा को लागू करने के सबसे सरल तरीके से सुझावों की आवश्यकता है। भाषा को सरल अभिव्यक्ति मूल्यांकन के साथ-साथ टेबल इंडेक्स से पूछताछ करने और लौटाई पंक्तियों के माध्यम से पुनरावृत्त करने में सक्षम होना चाहिए। भाषा को लिखने और पढ़ने की आसानी इसे लागू करने में आसानी के लिए माध्यमिक है। मैं एक संपूर्ण क्वेरी ऑप्टिमाइज़र लिखना भी नहीं चाहूंगा, इसलिए कुछ ऐसा जो स्पष्ट रूप से निर्दिष्ट करता है कि क्वेरी करने के लिए कौन सी अनुक्रमणिका क्वेरी होगी।
इंटरफ़ेस जिसे इसके खिलाफ संकलित करना होगा, ऐप इंजन डेटास्टोर निर्यात के लिए क्षमताओं में समान होगा: आप तालिका पर किसी भी इंडेक्स पर अनुक्रमिक श्रेणियों के लिए क्वेरी कर सकते हैं (उदाहरण के लिए, कम से कम, सीमा से अधिक और समानता प्रश्न), फिर किसी भी बुलियन अभिव्यक्ति द्वारा लौटाई गई पंक्ति फ़िल्टर करें। आप एक साथ कई स्वतंत्र परिणाम सेट को भी जोड़ सकते हैं।
मुझे एहसास है कि यह प्रश्न बहुत कुछ लगता है जैसे मैं SQL के लिए पूछ रहा हूं। हालांकि, मैं यह नहीं चाहता हूं कि इस डेटा का समर्थन करने वाले डेटास्टोर एक रिलेशनल डेटाबेस हो, और मैं स्वयं को एसक्यूएल को फिर से लागू करने की कोशिश करने का ओवरहेड नहीं चाहता हूं। मैं एक ज्ञात स्कीमा के साथ केवल एक ही टेबल से निपट रहा हूं। अंत में, कोई भी शामिल होने की आवश्यकता नहीं होगी। कुछ आसान बहुत बेहतर होगा।
संपादित करें: कुछ गलत धारणाओं को साफ़ करने के लिए विस्तारित विवरण।
क्या यह ऐप इंजन में जीक्यूएल लागू करने के लिए था? : पी – wTyeRogers