بالنسبة للبيانات المستمرة في Terracotta، كيفية تطوير الطبقات؟

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

سؤال

نحن نفكر الطين لمشروعنا القادم.أنا مفتون بإمكانية توفير استمرارية البيانات دون الحاجة إلى نظام إدارة قواعد بيانات منفصل.(أنظر أيضا حول استخدام الطين كحل للاستمرارية)

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

هناك فقرتان عن تطور الفئة في وثائق تيراكوتا لكنها تبدو خاصة بـ DSO وتظل سطحية إلى حد ما.

  1. ما هي الطرق الممكنة للتعامل مع تطور نموذج البيانات للبيانات المستمرة المخزنة في تيراكوتا؟ أنا مهتم بشكل خاص بالسيناريو غير المتعلق بـ DSO (أيمن خلال واجهة برمجة تطبيقات مجموعة أدوات Terracotta).
  2. هل يختلف Terracotta DSO وToolkit API في ردود أفعالهما تجاه تعريفات الفئة المتطورة؟
  3. لفهم القيود المفروضة على تطور الفئة، قد يكون من المفيد معرفة كيفية تمثيل/توصيل Terracotta لبيانات الكائن؛هل هناك مواصفات لذلك؟
  4. ربما توجد تقنيات تطور المخطط من عالم OODBMS تنطبق على Terracotta؟

كمثال تافه، لنفترض أن لدي مجموعة من Car الكائنات المخزنة وقمت بتغيير modelYear مجال Car فئة من أ String إلى int.وفقًا للوثائق، فإن هذا لا يعمل خارج الصندوق.أستطيع أن أتخيل الحل حيث بلدي القديم Car يتم تحميله بواسطة أداة تحميل فئة منفصلة أثناء بدء تشغيل التطبيق، ثم يتم تحويله إلى ملف جديد Car.هل سيكون هذا نهجا جيدا ولماذا (لا)؟

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

المحلول

يعتمد ذلك على سيناريو حالة الاستخدام لديك.

إذا كانت تكلفة تحميل ذاكرة التخزين المؤقت الخاصة بك ضئيلة (بالدقائق) ويمكنك تحمل وقت التوقف عن العمل... فلا أرى أي مشكلة في إعادة بناء ذاكرة التخزين المؤقت الخاصة بك للحصول على إصدار جديد.

إذا كان لديك تكلفة عالية لملء ذاكرة التخزين المؤقت (ساعات/أيام) ولا يمكنك تحمل أي وقت توقف كبير، فيجب عليك التعامل مع الإصدار الجديد والقديم في نفس الوقت خلال الفترة الانتقالية.لهذا:

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

على سبيل المثالفي ehcache.xml يمكنك تحديد مخبأين (استنادًا إلى المثال الخاص بك):

<cache name="com.xyz.Car" timeToLiveSeconds="600"/>
<!--New version goes here-->
<cache name="com.xyz.Car2" timeToLiveSeconds="600"/>

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

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