تخط إلى المحتوى

المزامنة

مزامنة bae هي مزامنة coven: يعلن bae جداوله وblobs، ويفعل coven الباقي. هذه الصفحة هي الآلية كما تنطبق على bae؛ وتغطي وثائق coven نفسها كل قطعة بتفصيل كامل.

يملك coven اتصال SQLite، لذلك تمر كل كتابة يثبتها bae عبره. عندما تُثبَّت معاملة تغيّر جداول متزامنة، يسجل coven في المعاملة نفسها كل تغيير صف مع الأعمدة التي لمسها، فلا يضيع تغيير مثبّت أبدًا، حتى لو تعطل التطبيق بعد لحظة. لا diffing، ولا dirty flags: الالتقاط خاصية للاتصال، ولا يمكن أن تفلت كتابة. ينتظر التغيير على الجهاز ولا يُشفّر ويُوقّع إلا عند إرساله، لذلك لا تحتاج الكتابة إلى مفتاح ولا إلى شبكة.

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

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

تعمل الدورات بعد التغييرات المحلية، وعلى مؤقت خمول، وفورًا عند المزامنة الآن. تعيد الإخفاقات المحاولة وفق جدول تراجع واحد، وكل ما لا يستطيع المضي يسمّي ما ينتظره، ويعرض bae ذلك في سطر حالة المزامنة.

تحرير جهازين للمكتبة نفسها وهما منفصلان هو الحالة العادية، لا الاستثناء. عندما تلتقي تغييراتهما:

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

يحتفظ coven بكل قيمة مستبدلة بوصفها قيمة مفقودة؛ لا يعرض bae أيًا منها ولا يتجاهل أيًا منها، لذلك لا توجد واجهة تعارض. تصل كل الأجهزة إلى النتيجة نفسها من أي ترتيب وصول.

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

إصدارات المخطط

رابط إلى هذا القسم

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

أخشن من إصدار المخطط هو حقبة التوافق: مراجعة coven المثبتة داخل كل ملف تنفيذي. لا تتزامن بنيتان إلا داخل حقبة واحدة؛ وكسر تنسيق النقل في coven يعني حقبة جديدة وزيادة الإصدار الرئيسي عبر كل تطبيق. قبل 1.0، كل بناء في الحقبة صفر، وتتغير التنسيقات بلا ترحيل.

ما يراه المزود

رابط إلى هذا القسم

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