سؤال

هل ستكون فيما يلي استراتيجية قابلة للحياة لتنفيذ النسخة (باستخدام "مثال" كنوع نموذج مستند):

لديك وثيقة أصلية واحدة حيث يتم تسمية حقل النوع exams_original.

التغييرات اللاحقة في المستند جميعها تحتوي جميع exampose_change ومعرف المستند example_original كإجراء مفتاح. التغيير سوف يحمل أيضا الطابع الزمني.

احتفظ بثوثين واحفظه من النوع _current هذا هو نتيجة example_original مع جميع example_change "التطبيق". سيتم تطبيق وثيقة example_change الجديدة تلقائيا على هذا المستند.

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

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

ما هي إيجابيات وسلبيات ترى في هذا النهج؟

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

المحلول

قلقي الأول هو: عند "الحصول على" إصدار معين، يمكنك تطبيق التغييرات على الأصل دون تعديل قاعدة البيانات؟

هل تحتاج إلى حذف شيء من التاريخ؟ هل انت حقا متاكد؟ حقا، بالتأكيد حقا؟ ماذا عن الفروع؟

الكل في الكل، وهذا يبدو وكأنه استراتيجية معقدة. ضع في اعتبارك أنني سمعت عن couchdb ولكن لم أستخدمها أبدا. سأذهب لنهج أكثر بسيطة:

  1. عند إنشاء مستند، تقوم بتعيين UUID. لا تستخدم الاسم أو أنك سوف تعمل في ورطة أثناء إعادة تسمية عملياتها. أضف حقل إصدار يقرأ "1". قم بإنشاء مستند ثان يحتوي على قائمة المستندات بنفس UUID أو إضافة مؤشر "الأصل" إلى المستند الأول.

    إن امتلاك "وثيقة التاريخ" لكل وثيقة تسمح بملاحة أسرع من التاريخ، لكن المؤشرات الأصلية أكثر "آمنة" (نظرا لأنك لا تستطيع إنشاء هياكل غير قانونية بسهولة).

  2. عند إنشاء مراجعة جديدة، إعادة استخدام UUID وتعيين إصدار جديد فريد من نوعه. تحديث مستند التاريخ أو مؤشر الأصل.

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

نصائح أخرى

نسخة بسيطة نسخة مع couchdb

يجب أن تناسب نهج المرفقات الموصوفة في هذه المقالة متطلبات معظم الناس للتخلص.

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

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

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

يمكن إجراء حذف مستند عن طريق كتابة إصدار جديد بدون محتوى ولكن مجموعة خاصية محذوفة.

لا يمكن القيام بفروع بهذه الطريقة لأن آلية الإصدار تقدم مؤشر تراجع واحد من المراجعات.

الآن لمستقبل couchdb المحتمل:

  • اليوم يتمتع كل مراجعة بنسخة كاملة من المستند ولكن يمكن للمرء أن يعتقد أن التحسينات لمحرك Couchdb قد تخزن Deltas يوم واحد.
  • من الممكن أيضا أن تقدم Couchdb في المستقبل واجهة برمجة تطبيقات لمنع ضغط أنواع المستندات معينة. هذا سيسمح للحفاظ على جميع المستندات في نفس قاعدة البيانات. سيكون هذا رقعة سهلة إلى couchdb.
  • تتيح هذه الاستراتيجية إدارة فروع الوثائق ولكن بالنظر إلى طبيعة CouchDB كقاعدة بيانات مستندات، فهذا شيء من إمكانية معقولة، ولكن طويلة الأجل،.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top