هل تهدف قواعد البيانات الموجهة نحو المستند إلى استبدال قواعد البيانات العلائقية؟

StackOverflow https://stackoverflow.com/questions/2866086

سؤال

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

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

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

المحلول

هل تم تطوير قواعد البيانات الموجهة نحو المستندات لتكون الجيل القادم من قواعد البيانات واستبدال قواعد البيانات العلائقية بشكل أساسي تمامًا؟

لا. قواعد البيانات الموجهة نحو المستندات (مثل MongoDB) جيدة جدًا في نوع المهام التي نراها عادة في مواقع الويب الحديثة (عمليات البحث السريعة للعناصر الفردية أو مجموعات صغيرة من العناصر).

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

هل من الممكن أن تكون المشاريع أفضل حالًا باستخدام كل من قاعدة البيانات الموجهة نحو المستند وقاعدة بيانات علائقية جنبًا إلى جنب لمختلف البيانات التي تناسب واحد أو آخر؟

نعم. في الواقع ، أنا أقوم بتشغيل موقع ويب كبير جدًا يستخدم كليهما. بدأ النظام في MySQL ، لكننا قمنا بترحيل جزء منه إلى MongoDB ، B/C نحتاج إلى متجر قيمة رئيسي و MySQL ليس جيدًا جدًا في العثور على عنصر واحد في سجلات 150 مترًا.

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

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

لكن، قواعد البيانات العلائقية لا يزال لديك ساق قوية على أشياء مثل الإبلاغ ، والتي تميل إلى أن تكون "قائمة على المجموعة".

بصراحة ، أستطيع أن أرى عالمًا "يتم التعامل مع معظم البيانات" بواسطة قاعدة بيانات موجهة نحو المستند ، ولكن حيث يتم التقارير في قاعدة بيانات علائقية يتم تحديثها بواسطة وظائف Reduce Map.

نصائح أخرى

هذا هو حقا مسألة اللياقة للغرض.

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

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

أيضًا ، أوصيك باتباع مدونات Ayende Rahien حول هذا الموضوع.

http://ayende.com/blog/

Sohnee هو بقعة على. قد أضيف تلك قواعد البيانات العلائقية

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

اسأل نفسك ماذا تريد أن تفعل وماذا الصفات مهمة بالنسبة لك. يمكنك أن تفعل كل ما يتعلق برمجة البرمجيات في shell. هل تريد أن؟

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

MongoDB ... يمكنك تشغيله ويتم ذلك .... ثم يتم تشغيله. إنها بسيطة بشكل لا يصدق وهي سريعة بشكل لا يصدق. لذلك فكر في ذلك. وقتك.

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

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

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

طالما أنك لا تحتاج إلى معاملات متعددة الكائنات ، يمكن أن يكون MongoDB بديلاً إيجابيًا لـ RDMBs ، خاصة في سياق تطبيق الويب. السرعة والخطط ونمذجة المستندات كلها مفيدة لهذا المجال.

في رأيي ، فإن قواعد البيانات الموجهة نحو المستندات جيدة فقط لـ

  1. قواعد البيانات التي يتم تمثيل البيانات بشكل أفضل باستخدام نموذج هرمي (شجرة). هذا ليس شائعًا لقواعد بيانات الموقع.
  2. قواعد البيانات مع كمية هائلة من البيانات مثل قواعد بيانات Facebook و Amazon. في هذه الحالة ، يتعين على التضحية بفوائد النموذج العلائقي.

AFAIK ، قواعد بيانات المستندات ليس لديها انضمام. هذا إلى حد كبير عرض عرض لـ> 99 ٪ من احتياجات إدارة البيانات.

كما يشير Matthew Flaschen في التعليقات ، حتى على سطح المكتب ، تقدم قواعد البيانات مثل SQLite دلالات SQL إلى المناطق التي استخدمت تقليديًا تنسيقات ملفات الملاءمة أو XML.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top