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

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

في قاعدة بيانات الرسم البياني ، تسمى الاتصالات بين العقد بالحواف ، ويمكنها توصيل أي عقدتين من أي مكان في الجدول. تحدد الحواف العلاقات بين العقد ، ويمكن أن يكون لها أنواع معينة. على سبيل المثال ، سيتم ربط صديقين بميزة "Friends" ، ولكن سيتم توصيل المستخدم إلى مشاركة ذات ميزة "تم النشر" أو "أعجبني".
ما الذي يجعلها أسرع؟
ليس الأمر أن قواعد البيانات العلائقية مثل MySQL لا يمكنها تخزين روابط الهياكل الشبيهة بالرسم البياني مثل هذه لا تزال مفاهيم أساسية لجداول SQL.تشكل الروابط اتصالات بين الجداول ، مما يتيح تخزين البيانات وتحديثها في جداول منفصلة مع الحفاظ على ارتباط في مكان آخر في قاعدة البيانات ، وهو مشابه جدًا لكيفية عمل المؤشرات في C. في مثال الشبكة الاجتماعية ، لن ترغب في تخزين اسم يمكن لكل صديق للمستخدم أن يغير اسمه ، لذا يمكنك بدلاً من ذلك تخزين معرف الصديق ، ثم إجراء بحث متى احتجت إلى البيانات الصحيحة. ربما تقوم بتخزين النتائج مؤقتًا لتحمل بعض التحميل من قاعدة البيانات ، لكن معظم الأنظمة ستعمل بشكل مشابه لهذا.
تخزين مجموعة واحدة من الروابط (مثل قائمة الأصدقاء) أمر جيد ، ولكن المشكلة تأتي عندما تبدأ في إجراء أي نوع من التحليل المعقد. المثال الكلاسيكي هو البحث عن أصدقاء الأصدقاء. للحصول على قائمة بكل شخص لديه صديق مشترك مع الشخص المحدد ، ستحتاج إلى تكرار قائمة أصدقاء الشخص المحدد ، ثم تكرار قائمة أصدقاء كل صديق ، ثم إجراء بحث عن كل سجل. يجب عليك أيضًا التأكد من أنك لا تقوم بإرجاع سجلات مكررة ، وهي حلقة إضافية.
إذا كنت معتادًا على Big O Notation ، فقد ترى المشكلة هنا بالفعل. إنها مشكلة مع التعقيد الأسي. يؤدي إجراء عدة حلقات متداخلة مثل هذا إلى كسر الكمبيوتر بسرعة كبيرة. كما أنها ليست طريقة ذكية للتعامل مع هذه المشكلة.
ألق نظرة على هذا المعيار الخاص بـ neo4j الذي يدير استعلام أصدقاء الأصدقاء ، مقارنة بقاعدة البيانات الارتباطية التقليدية (مثل MySQL):

في العمق 2 ، إنه استعلام بسيط لكلا قاعدتي البيانات. في العمق 3 ، تصبح MySQL غير قادرة على تنفيذ هذا الاستعلام في إطار زمني عادي ، وتستغرق 30 ثانية لإرجاع الرد. يُحسب له أنه تمكن من إرجاع استعلام العمق 4 بعد 25 دقيقة ، على الرغم من أن العمق 5 يعطل قاعدة البيانات.
قاعدة بيانات الرسم البياني ليس لديها مشكلة في إرجاع أي من هذه الاستعلامات ، حيث تكون جميع أوقات التنفيذ أقل من ثانيتين ، مما يجعلها أسرع بآلاف المرات.
كيف تفعل هذا؟ الرياضيات المعقدة للغاية ، في الغالب.الرسوم البيانية هي بنية رياضية في جوهرها ، وهناك الكثير من النظريات وراءها ، والتي لسنا مؤهلين تمامًا لمناقشتها بالتفصيل. لكن الرسوم البيانية العلائقية سهلة الفهم بصريًا إلى حد ما ، مما يجعل العمل مع قواعد بيانات الرسم البياني عمليًا أمرًا سهلاً.
إذا كنت ترغب في بدء العمل بواحد ، فسيتعين عليك اختيار قاعدة بيانات الرسم البياني وتثبيتها. Neo4j مجاني ومفتوح المصدر وخيار شائع جدًا. تمتلك AWS قاعدة بيانات Neptune الخاصة بها ، والتي يمكنك تجربتها مجانًا ، ولكن يجب استضافتها على AWS. تدعم بعض قواعد البيانات متعددة النماذج الرسوم البيانية كخيار ، مثل Microsoft SQL Server و Oracle Database و ArangoDB.