مجلة المعلوماتية مجلة المعلوماتية
المعرفة • البحث • التقنيةأعداد متاحة للقراءة الإلكترونية

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

العددالعدد 62
تاريخ النشر
عدد القراءات1
اقتباس

الملخص:

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

الكلمات المفتاحية: قواعد البيانات البيانية، Neo4j، العقد والعلاقات، نمذجة البيانات، قواعد البيانات

مقدمة:

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

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

من المفيد فهم النموذج المفاهيمي، ولذلك نبدأ به. لا تخزن قاعدة البيانات البيانية إلا نوعين من البيانات: العُقد والحواف.

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

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

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

يوضح الشكل الأول هذا النموذج. ولم تُنقل الصورة؛ ومضمونها أن لجين دو زوجًا جديدًا هو جون، وابنة من علاقة سابقة اسمها ماري سميث، وصديقين هما روبرت وروندا رو. ولهذين ابن هو رايان، تربطه علاقة بماري سميث. مصدر الرسم: Opensource.com.

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

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

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

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

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

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

لنضف معلومات جديدة. يوضح الشكل الثاني نوعًا جديدًا من العقد يمثل مكانًا، وعلاقات مرتبطة به. ولم تُنقل الصورة، ومصدرها Opensource.com.

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

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

المراجع

  • https://neo4j.com/
  • https://www.redhat.com/en/services/training/learning-subscription?intcmp=7016000000127cYAAQ

اقتبس هذا المقال

روث هولواي (2018). «أساسيات قواعد البيانات البيانية مع Neo4j». مجلة المعلوماتية، العدد 62. https://informaticsjournal.net/?p=50380

مشاركة:

مقالات ذات صلة