عدم تطابق المعاوقة بين الكائن والعلاقة

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

مصطلح عدم تطابق المعاوقة مشتق من مصطلح مطابقة المعاوقة في الهندسة الكهربائية .

عدم التوافق

تُعرَّف البرمجة الكائنية رياضياً بأنها رسوم بيانية موجهة ، حيث تشير الكائنات إلى بعضها البعض. أما البرمجة العلائقية فهي عبارة عن صفوف في جداول باستخدام الجبر العلائقي . الصفوف هي حقول بيانات مُجمَّعة في "صف" مع حقول مُحدَّدة النوع. الروابط قابلة للعكس (الربط الداخلي متناظر لتتبع المفاتيح الخارجية عكسياً)، مما يُشكِّل رسوماً بيانية غير موجهة .

مفاهيم البرمجة الكائنية

التغليف

يُخفي تغليف الكائنات التفاصيل الداخلية، ولا تظهر خصائص الكائنات إلا من خلال الواجهات المُنفذة. مع ذلك، تُتيح العديد من أنظمة إدارة الكائنات العلائقية (ORMs) عرض الخصائص علنًا للتعامل مع أعمدة قواعد البيانات. وتتجنب أنظمة إدارة الكائنات العلائقية القائمة على البرمجة الوصفية انتهاك مبدأ التغليف.

إمكانية الوصول

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

الواجهة، والفئة، والوراثة، وتعدد الأشكال

يجب أن تُطبّق الكائنات واجهاتٍ حتى لا تكشف عن تفاصيلها الداخلية. تستخدم قواعد البيانات العلائقية طرق العرض لتغيير وجهات النظر والقيود. وهي تفتقر إلى مفاهيم البرمجة الكائنية مثل الفئات والوراثة وتعدد الأشكال .

الربط بالمفاهيم العلائقية

لكي يعمل نظام إدارة علاقات الكائنات (ORM) بشكل صحيح، يجب ربط الجداول المرتبطة عبر علاقات المفتاح الخارجي / المفتاح الأساسي بالارتباطات في التحليل الموجه للكائنات .

اختلافات أنواع البيانات

تمنع البرمجة العلائقية استخدام الإشارات المرجعية (مثل المؤشرات )، بينما تدعم البرمجة الكائنية هذه الإشارات. وتختلف أنواع البيانات العددية بينهما، مما يعيق عملية الربط.

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

الاختلافات الهيكلية والتكاملية

يمكن للكائنات أن تتألف من كائنات أخرى أو أن تتخصص. العلاقات غير متداخلة، ولا تتناسب العلاقة ( الصفوف ذات الرأس نفسه) مع البرمجة الكائنية.

تستخدم البرمجة العلائقية قيودًا تصريحية على الأنواع العددية، والخصائص، ومتغيرات العلاقة، و/أو على المستوى العام. بينما تستخدم البرمجة الكائنية الاستثناءات لحماية المكونات الداخلية للكائنات.

الاختلافات في التلاعب

تستخدم البرمجة العلائقية عوامل تشغيل قياسية لمعالجة البيانات، بينما تستخدم البرمجة الكائنية عوامل تشغيل إلزامية خاصة بكل فئة وحالة . ويقتصر دعم البرمجة الكائنية للتصريح على القوائم وجداول التجزئة ، وهو يختلف عن المجموعات في البرمجة العلائقية.

الاختلافات في المعاملات

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

حل مشكلة عدم تطابق المعاوقة

تبدأ الحلول بإدراك الاختلافات بين الأنظمة المنطقية. وهذا يقلل من عدم التوافق أو يعوضه. [ 1 ]

بنى بديلة

  1. قواعد بيانات NoSQL . لا يكمن التناقض بين البرمجة الكائنية وأنظمة إدارة قواعد البيانات. بل يكمن التناقض، الذي يُعرف بتناقض المعاوقة بين البرمجة الكائنية وأنظمة إدارة قواعد البيانات العلائقية، تحديدًا بين البرمجة الكائنية وأنظمة إدارة قواعد البيانات العلائقية . وتتجنب البدائل مثل قواعد بيانات NoSQL أو XML هذا التناقض.
  2. الربط الوظيفي-العلائقي . تتطابق عبارات الفهم في لغات البرمجة الوظيفية مع الاستعلامات العلائقية. [ 2 ] تُطبّق بعض لغات البرمجة الوظيفية الربط الوظيفي-العلائقي. [ 3 ] يُجنّب التطابق المباشر بين عبارات الفهم والاستعلامات العديد من مشاكل الربط بين الكائنات والعلاقات.

التبسيط في البرمجة الكائنية التوجه

توجد قواعد بيانات كائنية (OODBMS) لتجنب عدم التوافق، لكنها أقل نجاحًا من قواعد البيانات العلائقية. يُعدّ البرمجة الكائنية أساسًا ضعيفًا للمخططات. [ 4 ] تتضمن أبحاث قواعد البيانات الكائنية المستقبلية الذاكرة المعاملاتية .

يتمثل حل آخر في دمج منطق المجال ومنطق الإطار. هنا، يقوم البرمجة الكائنية بتحديد الجوانب العلائقية في وقت التشغيل بدلاً من تحديدها بشكل ثابت. تحتوي الأطر على فئة tuple (تُسمى أيضًا row أو entity) وفئة علائقية (تُعرف أيضًا باسم dataset).

المزايا

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

العيوب

  • لا يوجد تحديد نوع ثابت. تعمل دوال الوصول المحددة النوع على تخفيف هذا الأمر.
  • تكلفة الأداء غير المباشر
  • يتجاهل مفاهيم مثل تعدد الأشكال

تعويض

يُعدّ دمج مستويات الخطاب في البرمجة الكائنية التوجه إشكاليًا. ويُعوّض دعم الأطر البرمجية هذا الإشكال بشكل أساسي، من خلال أتمتة معالجة البيانات وأنماط العرض على مستوى النمذجة. ويُستخدم كلٌّ من الانعكاس وتوليد الشفرة . يُعالج الانعكاس الشفرة البرمجية كبيانات للسماح بنقل البيانات وعرضها وسلامتها تلقائيًا. أما التوليد فيُحوّل المخططات إلى فئات ووظائف مساعدة. ويُعاني كلا الأسلوبين من بعض التباينات بين المستويات، حيث تمتلك الفئات المُولّدة خصائص خاصة بالمجال (مثل الاسم والعنوان ورقم الهاتف) وخصائص خاصة بالإطار البرمجي (مثل تاريخ التعديل).

حدوث

على الرغم من إمكانية حدوث عدم توافق في خصائص الكائنات العلائقية مع البرمجة الكائنية التوجه بشكل عام، إلا أن أحد أبرز التحديات يكمن في أدوات ربط الكائنات العلائقية (ORMs). [ 5 ] ونظرًا لأن أداة ربط الكائنات العلائقية غالبًا ما تُحدد من خلال التكوين والتعليقات التوضيحية ولغات خاصة بمجال معين ، فإنها تفتقر إلى مرونة لغة البرمجة الكاملة لحل مشكلة عدم التوافق.

الخلاف

نموذج RDBMS حقيقي

يقول كريستوفر ج. ديت إن نظام إدارة قواعد البيانات العلائقية الحقيقي يتغلب على هذه المشكلة، [ 6 ] [ 7 ] [ 8 ] لأن المجالات والفئات متكافئة. إن الربط بين البرمجة العلائقية والبرمجة الكائنية التوجه خطأ. [ 9 ] فالصفوف العلائقية تربط الكيانات، لا تمثلها. ويقتصر دور البرمجة الكائنية التوجه على إدارة الحقول فقط.

القيود والمعاملات غير القانونية

توجد اختلافات جوهرية بين عناصر المجال وواجهات المستخدم . ينبغي أن تمنع واجهات المستخدم الفعّالة المعاملات غير القانونية (انتهاكات قيود قاعدة البيانات ) لمساعدة المشغلين وغيرهم من غير المبرمجين على إدارة البيانات. يتطلب هذا معرفةً بخصائص قاعدة البيانات تتجاوز الاسم والنوع، مما يُكرر المنطق في مخططات العلاقات.

تستفيد الأطر من قيود التكامل المرجعي ومعلومات المخطط الأخرى لتوحيد التعامل بعيدًا عن التعليمات البرمجية التي تُكتب حالة بحالة.

المعاوقة الخاصة بلغة SQL والحلول البديلة

يُعيق افتقار لغة SQL لأنواع النطاقات تصميم البرمجيات الموجهة للكائنات. كما أنها تُسبب فقدانًا للبيانات بين نظام إدارة قواعد البيانات والتطبيق (سواء كان موجهًا للكائنات أم لا). مع ذلك، يتجنب الكثيرون استخدام NoSQL ولغات الاستعلام البديلة الخاصة بموردين محددين. وتتجاهل أنظمة إدارة قواعد البيانات أيضًا نظام Business System 12 والبرنامج التعليمي D.

تُعالج أنظمة إدارة قواعد البيانات الشائعة مثل أوراكل ومايكروسوفت SQL Server هذه المشكلة. تُوسّع أكواد البرمجة الكائنية (جافا و.NET على التوالي) هذه الأنظمة، ويمكن استدعاؤها في SQL بسلاسة كما لو كانت مُدمجة في نظام إدارة قواعد البيانات نفسه. يُعدّ إعادة استخدام إجراءات المكتبة عبر مخططات متعددة نموذجًا حديثًا مدعومًا.

تُستخدم البرمجة الكائنية في الواجهة الخلفية لأن لغة SQL لن تحصل أبدًا على المكتبات والهياكل الحديثة التي تناسب مبرمجي اليوم، على الرغم من رغبة لجنة ISO SQL-99 في إضافة البرمجة الإجرائية. من المنطقي استخدامها مباشرةً بدلًا من تغيير SQL. هذا يُطمس تقسيم المسؤولية بين "برمجة التطبيقات" و"إدارة قواعد البيانات"، لأن تنفيذ القيود والمحفزات يتطلب الآن مهارات كلٍ من إدارة قواعد البيانات والبرمجة الكائنية.

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

موقع النسخة الأساسية من البيانات

في البرمجة العلائقية، يُعتبر نظام إدارة قواعد البيانات هو المرجع الأساسي، بينما تُعدّ كائنات البرنامج الكائني نسخًا مؤقتة (قد تصبح قديمة إذا تم تعديل قاعدة البيانات في الوقت نفسه). أما في البرمجة الكائنية، فتُعتبر الكائنات هي المرجع الأساسي، ويُستخدم نظام إدارة قواعد البيانات فقط لحفظ البيانات.

تقسيم المسؤولية

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

يساهم المزيد من التعاون في حل هذه المشكلة. ينبغي أن تنبع قرارات تغيير المخطط من احتياجات العمل. فالبيانات الجديدة أو تحسينات الأداء كلاهما يستدعي تعديل المخطط.

الاختلافات الفلسفية

توجد اختلافات فلسفية رئيسية:

  • الواجهات التصريحية مقابل الواجهات الإجرائية تستخدم الواجهات العلائقية بيانات تصريحية بينما تستخدم الواجهات الكائنية سلوكًا إجرائيًا. وقليلٌ من الواجهات تعوض عن الواجهات العلائقية باستخدام المشغلات والإجراءات المخزنة. 
  • يقيّد المخطط - في قواعد البيانات العلائقية، تقتصر الصفوف على مخططات الكيانات الخاصة بها. وينطبق الأمر نفسه على التوريث في البرمجة الكائنية (سواء كان شجريًا أم لا). كما يمكن للبرمجة الكائنية إضافة سمات. أما أنظمة قواعد البيانات الديناميكية الحديثة والقليلة فتتيح تجاوز هذا القيد في قواعد البيانات العلائقية. 
  • قواعد الوصول تستخدم البرمجة العلائقية عوامل تشغيل قياسية، بينما تحتوي فئات البرمجة الكائنية على أساليب فردية. البرمجة الكائنية أكثر تعبيرية، لكن البرمجة العلائقية تتميز بالاستدلال الرياضي، والنزاهة، واتساق التصميم. 
  • العلاقة بين الأسماء والأفعال فئة البرمجة الكائنية هي كيان اسمي مرتبط ارتباطًا وثيقًا بأفعال. وهذا يشكل مفهومًا . وتناقش العلاقات مدى طبيعية أو منطقية هذا الارتباط الوثيق. 
  • هوية الكائن يختلف كائنان قابلان للتغيير لهما نفس الحالة. تتجاهل قواعد البيانات العلائقية هذه الخاصية الفريدة، وتضطر إلى ابتكارها باستخدام مفاتيح مرشحة ، لكن هذه ممارسة سيئة ما لم يكن هذا المعرّف موجودًا في الواقع. الهوية دائمة في قواعد البيانات العلائقية، ولكنها قد تكون مؤقتة في البرمجة الكائنية. 
  • التطبيع يتجاهل البرمجة الكائنية التطبيع العلائقي . ومع ذلك، يمكن القول إن الكائنات المترابطة عبر المؤشرات تشكل قاعدة بيانات شبكية ، والتي يمكن القول إنها قاعدة بيانات علائقية غير مُطَبَّعة للغاية . 
  • وراثة المخططات ترفض المخططات العلائقية الوراثة الهرمية في البرمجة الكائنية. تقبل البرمجة العلائقية نظرية المجموعات الأكثر قوة . توجد برمجة كائنية غير شجرية (غير جافا ) غير شائعة، لكنها أصعب من الجبر العلائقي. 
  • البنية مقابل السلوك يركز البرمجة الكائنية التوجه على البنية (سهولة الصيانة، قابلية التوسع، إمكانية إعادة الاستخدام، الأمان). بينما يركز البرمجة العلائقية على السلوك (الكفاءة، قابلية التكيف، تحمل الأعطال، استمرارية العمل، التكامل المنطقي، إلخ). يخدم كود البرمجة الكائنية التوجه المبرمجين، بينما يركز كود البرمجة العلائقية على السلوك المرئي للمستخدم. مع ذلك، قد لا يكون هذا السلوك متأصلًا في البرمجة العلائقية، حيث تُقدم طرق العرض الخاصة بالمهام عادةً معلومات للمهام الفرعية، لكن بيئات التطوير المتكاملة تتجاهل ذلك وتفترض استخدام الكائنات. 
  • العلاقات بين المجموعات والرسوم البيانية تتبع العلاقات نظرية المجموعات ، بينما تتبع البرمجة الكائنية نظرية الرسوم البيانية . على الرغم من تكافؤهما، إلا أن نماذج الوصول والإدارة تختلف. 

لذا، يجادل أنصار كل نظام بضرورة التخلي عن تقنية النظام الآخر. [ 10 ] بل إن بعض مديري قواعد البيانات العلائقية (RDBMS) يدعون إلى تفضيل البرمجة الإجرائية على البرمجة الكائنية (OOBMS)، أي أن الكائنات لا ينبغي أن تتجاوز عمر المعاملات. في المقابل، يقترح المبرمجون تطوير تقنية قواعد البيانات الكائنية (OODBMS) لتحل محل البرمجة العلائقية. مع ذلك، يمتنع معظم المبرمجين عن ذلك، ويعتبرون عدم التوافق بين البرمجة الكائنية والعلائقية مجرد عقبة.

توفر مقاييس إدارة المخاطر عبر الإنترنت مزايا في بعض الحالات. ويشير المتشككون إلى عيوبها، وقلة قيمتها عند تطبيقها بشكل أعمى. [ 11 ]

انظر أيضاً

مراجع

  1. تصنيف عدم تطابق المعاوقة بين الكائنات والعلاقات. أيرلندا، كريستوفر؛ باورز، ديفيد؛ نيوتن، مايك؛ وواو، كيفن (2009). تصنيف عدم تطابق المعاوقة بين الكائنات والعلاقات. في: المؤتمر الدولي الأول حول التطورات في قواعد البيانات والمعرفة وتطبيقات البيانات (DBKDA)، 1-6 مارس 2009، كانكون، المكسيك.
  2. "عارض Jupyter Notebook" .
  3. "مقدمة · أنيقة" .
  4. سي جيه ديت، كتابات قواعد البيانات العلائقية
  5. إعادة النظر في رسم خرائط الكائنات العلائقية - دراسة كمية حول تأثير تكنولوجيا قواعد البيانات على استراتيجيات رسم خرائط الكائنات العلائقية. إم لورنز، جيه بي رودولف، جي هيس، إم أوفلاكر، إتش بلاتنر. المؤتمر الدولي لعلوم النظم في هاواي (HICSS)، 4877-4886 (DOI:10.24251/hicss.2017.592)
  6. ديت، كريستوفر "كريس" جيه؛ باسكال، فابيان (12-08-2012) [2005]، "النوع مقابل المجال والفئة"، تفنيد قواعد البيانات (مدونة شبكة الويب العالمية) ، جوجل ، تم الاسترجاع في 12 سبتمبر 2012.
  7. (2006)، "4. حول مفهوم الاختلاف المنطقي"، تاريخ قواعد البيانات: كتابات 2000-2006 ، صوت الخبير في قواعد البيانات؛ كتابات مختارة في قواعد البيانات العلائقية، الولايات المتحدة الأمريكية : Apress، ص 39، ISBN  978-1-59059-746-0يبدو أن مفهوم الفئة لا يمكن تمييزه عن مفهوم النوع، كما هو مفهوم تقليديًا..
  8. (2004)، "26. قواعد البيانات الكائنية/العلائقية" ، مقدمة في أنظمة قواعد البيانات ( الطبعة الثامنة)، بيرسون أديسون ويسلي، ص 859 ، ISBN   978-0-321-19784-9... أي تقارب من هذا القبيل ينبغي أن يستند بقوة إلى النموذج العلائقي.
  9. ديت، كريستوفر "كريس" جيه ؛ داروين، هيو ، "2. الأشياء والعلاقات"، البيان الثالث ، الخطأ الفادح الأول
  10. نيوارد، تيد (26-06-2006). "فيتنام علوم الحاسوب" (ملف PDF) . التوافقية تحدث . تم الاسترجاع في 02-06-2010 .
  11. ↑ جونسون ، رود (2002). تصميم وتطوير J2EE . دار نشر Wrox. ص 256. ISBN  9781861007841.