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

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

سؤال

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

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

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

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

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

هل كانت مفيدة؟

المحلول

حسنًا ، يعتمد ذلك على كيفية تنظيم بياناتك وعلى نماذج الوصول إلى البيانات.

تخزين قواعد بيانات المستندات واسترداد المستندات والوحدة المخزنة الذرية الأساسية هي وثيقة. كما قلت ، تحتاج إلى التفكير في أنماط / حالات الاستخدام الخاصة بالبيانات لإنشاء نموذج مستند ذكي. عندما يمكن تقسيم نموذج المجال الخاص بك وتقسيمه عبر بعض المستندات ، يعمل database المستندات مثل السحر. على سبيل المثال للحصول على مدونة مدونة أو CMS أو برنامج Wiki-software يعمل مستند DB بشكل جيد للغاية. طالما يمكنك العثور على طريقة جيدة للضغط على بياناتك في مستند ليس لديك أي مشاكل. لكن لا تحاول لتناسب نموذج علائقي في مقر الوثائق. بمجرد أن تستخدم أنماط الوصول إلى البيانات الكثير من "التنقل" على العلاقات أو الرسم البياني أو بيانات الكائنات هي خيار طبيعي أكثر.

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

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

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