ما هي لغة QL؟

مكتمل

QL هي لغة استعلام تعريفية موجهة للكائنات تم تحسينها لتمكين التحليل الفعال لبنى البيانات الهرمية؛ على وجه الخصوص، قواعد البيانات التي تمثل البيانات الاصطناعية للبرامج.

قاعدة البيانات هي مجموعة منظمة من البيانات. نموذج قاعدة البيانات الأكثر استخداما هو نموذج ارتباطي، والذي يخزن البيانات في الجداول. SQL (لغة الاستعلامات المركبة) هي لغة الاستعلام الأكثر استخداما لقواعد البيانات الارتباطية.

الغرض من لغة استعلام هو توفير منصة برمجة يمكنك من خلالها طرح أسئلة حول المعلومات المخزنة في قاعدة بيانات. يدير نظام إدارة قاعدة البيانات تخزين البيانات وإدارتها ويوفر آلية الاستعلام. يشير الاستعلام عادةً إلى كيانات قاعدة البيانات ذات الصلة ويحدد شروطاً مختلفة (تسمى المؤكدات) التي يجب أن تفي بها النتائج. يتضمن تقييم الاستعلام التحقق من هذه الموكدات وإنشاء النتائج. تتضمن بعض الخصائص المرغوبة للغة استعلام جيدة وتنفيذها ما يلي:

  • المواصفات التعريفية: تصف المواصفات التعريفية الخصائص التي يجب أن تفي بها النتيجة، بدلا من توفير الإجراء لحساب النتيجة. في سياق لغات استعلام قاعدة البيانات، تلخص المواصفات التصريحية تفاصيل نظام إدارة قاعدة البيانات الأساسي وتقنيات معالجة الاستعلام. هذا يبسط بشكل كبير كتابة الاستعلام.
  • التعبير: تسمح لك لغة الاستعلام القوية بكتابة استعلامات معقدة. هذا يجعل اللغة قابلة للتطبيق على نطاق واسع.
  • التنفيذ الفعال: يمكن أن تكون الاستعلامات معقدة ويمكن أن تكون قواعد البيانات كبيرة جدا، لذلك من الضروري لتنفيذ لغة الاستعلام معالجة الاستعلامات وتنفيذها بكفاءة.

في هذه الوحدة، ستتعرف على الميزات الأساسية للغة البرمجة QL بحيث يمكنك كتابة الاستعلامات المخصصة الخاصة بك أو فهم الاستعلامات مفتوحة المصدر المتوفرة مسبقا بشكل أفضل.

بناء جملة QL

بناء جملة QL مشابه ل SQL. ومع ذلك، تستند دلالات QL إلى Datalog، وهي لغة برمجة منطقية تعريفية غالبا ما تستخدم كلغة استعلام. هذا يجعل QL لغة منطقية في المقام الأول، وجميع العمليات في QL هي عمليات منطقية. علاوة على ذلك، يرث QL دالات التقييم التكرارية من Datalog ويضيف دعما للتجميعات، مما يجعل الاستعلامات المعقدة موجزة وبسيطة. على سبيل المثال، ضع في اعتبارك قاعدة بيانات تحتوي على العلاقات بين الوالدين والطفل للأشخاص. إذا كنت ترغب في العثور على عدد التوابع الخاصة بشخص ما، فعادة ما تقوم بالتالي:

  1. العثور على سليل الشخص المحدد؛ أي طفل أو تابع لطفل.
  2. احسب عدد التابعين الذين تم العثور عليهم باستخدام الخطوة السابقة.

عند كتابة هذه العملية في QL، فإنها تشبه إلى حد وثيق هذه البنية الموضحة. لاحظ أن المثال استخدم الارتجاعية للعثور على جميع التابعين للشخص المحدد، وإيجاد إجمالي حساب عدد التابعين. من الممكن ترجمة هذه الخطوات إلى الاستعلام النهائي دون إضافة أي تفاصيل إجرائية نظراً للطبيعة التصريحية للغة. سيبدو رمز QL كما يلي:

Person getADescendant(Person p) {
  result = p.getAChild() or
  result = getADescendant(p.getAChild())
}

int getNumberOfDescendants(Person p) {
  result = count(getADescendant(p))
}

اتجاه العنصر

يعد توجيه العنصر ميزة مهمة في QL. فوائد اتجاه الكائن معروفة. فهو يزيد من الوحدات النمطية، ويمكن إخفاء المعلومات، ويسمح بإعادة استخدام التعليمات البرمجية. تقدم QL كل هذه الفوائد دون المساومة على أساسها المنطقي. يتم تحقيق ذلك من خلال تحديد نموذج عنصر بسيط حيث يتم نمذجة الفئات كموكدات والتوريث كتضمين. تستفيد المكتبات المتاحة لجميع اللغات المدعومة من الفئات والميراث على نطاق واسع.

QL ولغات البرمجة للأغراض العامة

فيما يلي بعض الاختلافات المفاهيمية والوظيفية البارزة بين لغات البرمجة للأغراض العامة وQL:

  • لا تحتوي QL على أي ميزات حتمية مثل التعيينات للمتغيرات أو عمليات نظام الملفات.
  • تعمل QL على مجموعات من المجموعات، ويمكن عرض الاستعلام على أنه تسلسل معقد من عمليات المجموعة التي تحدد نتيجة الاستعلام.
  • تجعل دلالات QL المستندة إلى المجموعة من الطبيعي جدا معالجة مجموعات القيم دون الحاجة إلى القلق بشأن تخزينها وفهرستها واجتيازها بكفاءة.

في لغات البرمجة الموجهة للعناصر، يتضمن إنشاء فئة إنشاء عنصر عن طريق تخصيص ذاكرة فعلية للاحتفاظ بحالة هذا المثيل من الفئة. في QL، تعتبر الفئات مجرد خصائص منطقية تصف مجموعات من القيم الموجودة بالفعل.