قاعدة البيانات الموجهة نحو المستندات - ماذا لو تغيرت تعريفات المستند؟

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

سؤال

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

{
  name: 'John Blank',
  yearOfBirth: 1960
}

في وقت لاحق ، في إصدار جديد ، يتم إعادة تمهيد هذا الهيكل

{
  firstname: 'John',
  lastname: 'Blank',
  yearOfBirth: 1960
}

كيف تفعل هذا مع قواعد البيانات الموجهة نحو المستند؟ هل يجب عليك إعداد Serge-Scripts ، التي تغير جميع إدخالاتك في قاعدة البيانات؟ أم أن هناك طرقًا أفضل يمكنك التعامل مع التغييرات في الهيكل؟

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

المحلول

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

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

هذا ليس خيارًا حقًا مع قاعدة بيانات SQL لأنه يتعين عليك الاحتفاظ بالعمود عفا عليه الزمن وربما فهرسته. مع DODB ، أنت لا تهدر أي بيانات أو مساحة فهرس. يجب أن تزن المزايا ضد العيوب.

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

هناك ميزة واضحة للحفاظ على المستندات القديمة ؛ إذا لم تكن متأكدًا من أن إعادة تمثيلك مثالية - على سبيل المثال ، إذا كانت البيانات الموجودة فيك name لم يتبع العمود اتفاقية ثابتة ، ربما في بعض الحالات lastname, firstname وفي حالات أخرى firstname lastname وفي حالات أخرى company name -ثم قم بإجراء التحويلات الخاصة بك أثناء التنقل دون إجراء تحديث دائم firstname و lastname الحقول عند توفرها ولكن تعود إلى name لعبة التخمين للبيانات القديمة.

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

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

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