it-swarm.asia

NoSQL مقابل SQL أخرى Drupal Setups

ما هي مزايا تشغيل NoSQL (ex MongoDB) عبر MySQL أو PostGRE SQL أو MSSQL في دروبال؟ هل المزايا المكتسبة من استخدام التخزين ببساطة أم أن بعض Drupal بحاجة إلى التغيير؟

14
Kevin

يمكن استخدام MongoDB لتخزين معظم أو كل كياناتك في مساحة تخزين سريعة وموجهة نحو المستندات. هذا النوع من التخزين يتطور بشكل أفضل من التخزين القياسي المعتمد على SQL الذي لدينا في Drupal core (والذي يعتمد على مخطط "جدول واحد لكل حقل").

في الحالة الحالية Drupal 7 ، سيكون لديك:

  • الجدول الأساسي للكيان المخزن في SQL (أي جدول المستخدمين ، وجدول العقدة ، وما إلى ذلك)
  • جميع الحقول المخزنة في SQL
  • تتكرر خصائص الكيانات من جداولها الأساسية في MongoDB

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

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

بفضل EntityFieldQuery backend for Views ، يمكنك بسهولة الاستفادة من هذه القوة ، باستخدام الأدوات التي اعتدت عليها. الجانب السلبي الوحيد هو أن العلاقات غير مدعومة (ولكن في الممارسة العملية نادرًا ما تحتاج إليها على أي حال - ويمكن حل هذه المشكلة عن طريق دفع بيانات إضافية إلى كائن الكيان وإضافتها كخصائص إضافية للكيان).

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

13
Damien Tournoud

تم تصميم MongoDB وما شابه ذلك لتخزين البيانات المنظمة (الهرمية) بطريقة مرنة نسبيًا.

على سبيل المثال في Drupal 7 ، عند استخدام field_sql_storage ، كل حقل يحصل على جداول خاصة به. عند إرفاق 10 حقول بنوع محتوى ، ينتهي بك الأمر بـ 10 جداول في قاعدة البيانات الخاصة بك. عند تحميل تلك العقدة ، field_sql_storage سينفذ استعلامًا لكل حقل وعُقدة (أو عُقد متعددة ، عند استخدام node_load_multiple).

عند استخدام mongodb_field_storage ، يمكنك تخزين جميع حقول العقدة في مستند واحد والحصول على استعلام واحد.

يمكنك أيضًا تخزين أشياء أخرى مثل المراقبة ، والجلسات ، وذاكرة التخزين المؤقت ، والكتل في MongoDB .

ما زلت بحاجة إلى MySQL ، MongoDB لا يحل محله (فقط لأجزاء محددة).

ميزة أخرى هي أنه من الأسهل باستخدام مقياس MongoDB ، يمكنك إضافة العديد من الخوادم إلى مجموعة تشارك البيانات فيما بينها.

7
Berdir

الإيجابيات تأتي مع سلبيات.

لا يمكن تحويل دروبال ككل إلى MongoDb ، لذا سيكون عليك دعم قاعدتي بيانات والتأكد من أنهما يعملان معًا بشكل جيد.

لن تتمكن العديد من الوحدات من العمل مع mongodb لذا ستفقد إمكانية التشغيل البيني.

ما لم تكن لديك حاجة ملحة (مثل جزء من نظامك لا يتكيف مع عدد الطلب/أو كمية البيانات) لن أبدل. وحتى عندما تبدأ في الاقتراب من الحدود ، انظر إلى إلقاء الأجهزة على المشكلة أو الضبط قبل التبديل.

اعتقدت أنني أجبت على هذا من قبل ، هناك مكرر تقريبًا على SO

5
Jeremy French