انتقل إلى المحتوى الرئيسي

ما هي التعيينات العلائقية للكائنات (ORM)؟

رسم الخرائط العلائقية للكائنات (ORM) هو عملية تجريد الاتصال بين كيانات لغة البرمجة (الكائنات) وعناصر قاعدة البيانات المقابلة لها.

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

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

كيف تعمل التعيينات العلائقية للكائنات؟

تربط التعيينات العلائقية للكائنات (Object-Relational Mappings, ORM) التطبيقات المكتوبة بلغة برمجة موجهة للكائنات (Object-Oriented Programming, OOP) بقاعدة بيانات أساسية. غالبًا ما يتم استخدام هذه الأنواع من التطبيقات وقواعد البيانات معًا، ولكن كل منها يتعامل مع البيانات بشكل مختلف. إضافة أحد التعيينات العلائقية للكائنات بينهما تسمح لكل منهما بإرسال البيانات بتنسيق يفهمه الآخر. يمكنك تعديل أحدهما بدون التأثير في الآخر.

لغة برمجة موجهة للكائنات

تنظم لغات OOP البيانات في كائنات، وهي عبارة عن بُنى برمجية ذات سمة واحدة أو أكثر. على سبيل المثال، في أحد التطبيقات القائمة على OOP، يمكنك تعريف كائن يتم تمثيله كفئة ذات بيانات دائمة، مثل سيارة، بسمات مثل الشركة المصنِّعة والطراز ورقم تعريف المركبة (VIN) واللون والمسافة المقطوعة.

تتضمن بعض أشهر لغات البرمجة الموجهة للكائنات (OOP) Python، Java، JavaScript، و.NET/C#.

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

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

على سبيل المثال، يمكن أن تحتوي قاعدة بيانات سيارتك على عدة جداول. فقد يحتوي أحد الجداول على بيانات العلامة التجارية، مثل الشركة المصنِّعة والطراز ورقم VIN. وقد يخزن جدول آخر سمات كل سيارة على حدة، مثل اسم المالك، واللون، والمسافة المقطوعة. تتضمن بعض قواعد البيانات العلائقية الأكثر شيوعًا MySQL، PostgreSQL، وSQL Server.

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

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

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

نظرًا لأن التعيينات مجردة، إذا تغيرت بنية قاعدة البيانات في أي وقت أو قمت بالترحيل إلى قاعدة بيانات جديدة، فلا يزال بإمكان ORM الإشارة إلى البيانات الصحيحة مع الحد الأدنى من التحديثات.

أُطر عمل ORM المشتركة

تتوفر أدوات أو أُطر عمل ORM من أجل نمذجة البيانات في العديد من أشهر لغات البرمجة الموجهة للكائنات. بعض من أشهرها ما يلي:

  • السبات للغة Java
  • SQLAcademy للغة Python
  • إطار عمل الكيان للغة .NET/C#

هل يمكنك استخدام ORM مع قاعدة بيانات غير ارتباطية؟

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

تتضمن بعض قواعد البيانات غير العلائقية الأكثر شيوعًا MongoDB و NoSQL.

ما الفرق بين ORM و ORDBMS؟

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

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

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

ما الفرق بين ORM و SQL؟

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

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

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

ما الأسباب الداعية إلى استخدام ORM بدلاً من استعلامات SQL؟

تتطلب SQL كتابة الأوامر يدويًا للتفاعل مع قاعدة البيانات، بينما يقوم ORM تلقائيًا بترجمة التعليمات البرمجية الموجهة للكائنات إلى SQL خلف الكواليس.

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

يؤدي أيضًا استخدام لغة برمجة أكثر قابلية للفهم إلى تسهيل قراءة التعليمات البرمجية وتصحيحها.

ما هي فوائد استخدام رسم الخرائط العلائقية للكائنات؟

تجلب أنظمة ORM الفوائد التالية.

تطوير التطبيقات بطريقة حديثة

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

صيانة أبسط للتطبيقات

من خلال تلخيص استعلامات قاعدة البيانات من خلال ORM، يمكن للمطورين العمل بلغة واحدة، مما يجعل التعليمات البرمجية الخاصة بهم أسهل للفهم والصيانة.

أمن محسَّن

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

الأداء المُحسّن

يمكن لـ ORM تحسين أداء النظام من خلال تمكين التخزين المؤقت للكائنات الشفافة في طبقة التطبيق. يمكنه حفظ البيانات الأكثر شيوعًا التي يتم استردادها بالقرب من التطبيق للوصول بشكل أسرع.

ما هي تحديات استخدام تعيينات الكائنات العلائقية؟

تقدم ORMs التحديات التالية.

عدم تطابق المعاوقة

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

مشاكل الأداء ذات التعقيد العالي

يعد الاستعلام المباشر عن قاعدة بيانات أكثر كفاءة من الناحية الحسابية من استخدام ORM. بالنسبة للاستعلامات شديدة التعقيد، قد يكون من الأفضل استخدام كود SQL بدلاً من أداة تخطيط الكائنات العلائقية (ORM).

منحنى التعلم

بينما تساعدك ORMs على تجنب الحاجة إلى تعلم كود SQL المعقد، سيظل المطورون بحاجة إلى تعلم كيفية استخدام أدوات ORM.

متى يجب استخدام تعيينات الكائنات العلائقية؟

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

يحتوي التطبيق الخاص بك على العديد من الكائنات

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

يكرر التطبيق الخاص بك استعلامات قاعدة بيانات مماثلة

تساعدك أُطر ORM على أتمتة العديد من عمليات CRUD الروتينية بسهولة (إنشاء البيانات وقراءتها وتحديثها وحذفها)، مما يقلل الحاجة إلى كتابة تعليمة برمجية SQL.

تطور المخطط مستمر

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

قابلية نقل قاعدة البيانات مهمة

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

متى يجب عدم استخدام تعيينات الكائنات العلائقية؟

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

لتفاعلات قاعدة البيانات البسيطة

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

عندما تكون الحوسبة عالية الأداء أمرًا بالغ الأهمية

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

عندما تحتاج إلى استخدام مخططات غير طبيعية

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

كيف يمكن لـ AWS المساعدة في متطلبات إدارة جهات الاتصال الخاصة بك؟

توفر AWS مجموعة من حلول قواعد البيانات السحابية التي تجعل إدارة البيانات فعالة وفعالة من حيث التكلفة.

خدمة قاعدة بيانات Amazon Relational Database Service (Amazon RDS) هي خدمة مُدارة تتيح سهولة إعداد قاعدة بيانات ارتباطية وتشغيلها وتوسيع نطاقها في السحابة. وتقدم سعة فعالة من حيث التكلفة ويمكن تغيير حجمها إلى جانب التعامل مع مهام إدارة قاعدة البيانات المستهلكة للوقت، ما يتيح لك التركيز على تطبيقاتك وأعمالك.

Amazon Aurora هي خدمة قاعدة بيانات علائقية حديثة تقدم أداءً عاليًا وتوافرًا عاليًا على نطاق واسع. إنه يوفر إصدارات متوافقة مع MySQL و PostgreSQL مفتوحة المصدر بالكامل ومجموعة من أدوات المطور لإنشاء تطبيقات بدون خادم تعتمد على التعلم الآلي (ML).

تعمل Amazon Redshift على تشغيل تحليلات البيانات الحديثة على نطاق واسع، مما يوفر أداء أفضل للسعر يصل إلى 3 أضعاف وسرعة أفضل بـ 7 أضعاف من مستودعات البيانات السحابية الأخرى.

Amazon DocumentDB (مع التوافق مع MongoDB) هي قاعدة بيانات مستندات مؤسسية سريعة وقابلة للتطوير ومتاحة للغاية ومدارة بالكامل تخزن البيانات في مستندات مشابهة لكائنات JSON. وهي تستخدم برامج التشغيل التي يتم إرجاعها من الكائنات الأصلية إلى لغة البرمجة المستخدمة من قبل المطور، مما يلغي الحاجة إلى أدوات ORM.

ابدأ بقواعد بيانات الرسم البياني على AWS من خلال إنشاء حساب مجاني اليوم.