تعيين كائن-علائقي

تعيين الكائنات والعلاقات ( ORM و O/RM وأداة تعيين O/R ) في علوم الكمبيوتر هي تقنية برمجة لتحويل البيانات بين قاعدة بيانات علائقية والذاكرة (عادةً الكومة ) للغة برمجة موجهة للكائنات . يؤدي هذا في الواقع إلى إنشاء قاعدة بيانات كائنات افتراضية يمكن استخدامها من داخل لغة البرمجة.

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

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

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

ملخص

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

فيما يلي مثال بسيط، مكتوب بلغة C# ، لتنفيذ استعلام مكتوب بلغة SQL باستخدام محرك قاعدة البيانات.

var sql = "SELECT id, first_name, last_name, phone, birth_date, sex, age FROM persons WHERE id = 10" ; var result = context . Persons . FromSqlRaw ( sql ). ToList (); var name = result [ 0 ][ "first_name" ];   
   
   

على النقيض من ذلك، يستخدم ما يلي واجهة برمجة تطبيقات ORM-job والتي تجعل من الممكن كتابة كود يستخدم بشكل طبيعي ميزات اللغة.

var person = repository.GetPerson ( 10 ) ; var firstName = person.GetFirstName ( ) ;   
   

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

فار شخص = شخص . الحصول على ( 10 );   

مقارنة مع تقنيات الوصول إلى البيانات التقليدية

بالمقارنة مع التقنيات التقليدية للتبادل بين لغة موجهة للكائنات وقاعدة بيانات علائقية، فإن ORM غالبًا ما يقلل من كمية التعليمات البرمجية التي يلزم كتابتها. [2]

تنبع عيوب أدوات ORM عمومًا من المستوى العالي من التجريد الذي يحجب ما يحدث بالفعل في كود التنفيذ. كما تم الاستشهاد بالاعتماد الشديد على برامج ORM كعامل رئيسي في إنتاج قواعد بيانات مصممة بشكل سيئ. [3]

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

هناك نهج آخر يتمثل في استخدام نظام إدارة قواعد البيانات الموجهة للكائنات (OODBMS) أو قواعد البيانات الموجهة للمستندات مثل قواعد بيانات XML الأصلية التي توفر مرونة أكبر في نمذجة البيانات. تُعَد قواعد البيانات الموجهة للكائنات قواعد بيانات مصممة خصيصًا للعمل مع القيم الموجهة للكائنات. يؤدي استخدام نظام إدارة قواعد البيانات الموجهة للكائنات إلى التخلص من الحاجة إلى تحويل البيانات من وإلى نموذج SQL الخاص بها، حيث يتم تخزين البيانات في تمثيلها الأصلي للكائنات ويتم تمثيل العلاقات بشكل مباشر، بدلاً من الحاجة إلى جداول /عمليات الانضمام. يُطلق على المكافئ لـ ORMs لقواعد البيانات الموجهة للمستندات اسم مُعيِّنات المستندات الكائنية (ODMs).

كما تمنع قواعد البيانات الموجهة للمستندات المستخدم من الاضطرار إلى "تقسيم" الكائنات إلى صفوف جدول. كما تدعم العديد من هذه الأنظمة لغة الاستعلام XQuery لاسترجاع مجموعات البيانات.

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

التحديات

تنشأ مجموعة متنوعة من الصعوبات عند التفكير في كيفية مطابقة نظام كائني لقاعدة بيانات علائقية. يشار إلى هذه الصعوبات باسم عدم تطابق معاوقة الكائن-العلائقية . [4]

البديل لتطبيق ORM هو استخدام اللغات الإجرائية الأصلية المتوفرة مع كل قاعدة بيانات رئيسية. يمكن استدعاؤها من العميل باستخدام عبارات SQL. يتم استخدام نمط تصميم كائن الوصول إلى البيانات (DAO) لتلخيص هذه العبارات وتقديم واجهة خفيفة الوزن موجهة للكائنات لبقية التطبيق. [5]

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

انظر أيضا

مراجع

  1. ^ ab "ما هو تعيين الكائنات/العلائق؟". نظرة عامة على Hibernate . JBOSS Hibernate . تم الاسترجاع في 27 يناير 2022 .
  2. ^ دوغلاس باري، تورستن ستانيندا، "حل مشكلة تخزين كائنات جافا"، كمبيوتر، المجلد 31، العدد 11، الصفحات 33-40، نوفمبر 1998، مقتطف من https://www.service-architecture.com/articles/object-relational-mapping/transparent-persistence-vs-jdbc-call-level-interface.html إن أسطر التعليمات البرمجية باستخدام O/R ليست سوى جزء بسيط من تلك المطلوبة لواجهة مستوى المكالمة (1:4). بالنسبة لهذا التمرين، كانت هناك حاجة إلى 496 سطرًا من التعليمات البرمجية باستخدام ODMG Java Binding مقارنة بـ 1923 سطرًا من التعليمات البرمجية باستخدام JDBC.
  3. ^ جوش بيركوس، "تدمير قاعدة البيانات الخاصة بك"، كمبيوتر، أغسطس 2009، https://www.toolbox.com/tech/data-management/blogs/wrecking-your-database-080509/
  4. ^ إعادة النظر في رسم الخرائط بين الكائنات والعلاقات - دراسة كمية حول تأثير تكنولوجيا قواعد البيانات على استراتيجيات رسم الخرائط بين الكائنات والعلاقات. م. لورينز، جيه. بي. رودولف، جي. هيسي، م. أوفلاكر، هـ. بلاتنر. مؤتمر هاواي الدولي حول علوم النظم (HICSS)، 4877-4886 (DOI:10.24251/hicss.2017.592)
  5. ^ Feuerstein, Steven; Bill Pribyl (سبتمبر 1997). "Oracle PL/SQL Programming". 18.5 تعديل الكائنات الدائمة . تم الاسترجاع في 23 أغسطس 2011 .{{cite web}}:CS1 maint: الموقع ( الرابط )
  6. ^ "تنفيذ استعلامات SQL الخام | وثائق Django". مشروع Django . تم ​​الاسترجاع في 8 سبتمبر 2024 .
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Object–relational_mapping&oldid=1248921594"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate