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

المزامنة

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

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

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

تعمل الدورة بعد التغييرات المحلية، وعلى مؤقت خمول مع backoff (حتى خمس دقائق بين عمليات الاستطلاع)، وفورًا عند Sync Now. تتراجع الإخفاقات وتعيد المحاولة؛ وتبلغ الحلقة نتيجة كل دورة إلى الواجهة كحالة، ونص خطأ، وعدد الصفوف المطبقة.

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

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

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

الجهاز المنضم أو المستعيد لا يعيد تشغيل التاريخ من البداية. ينزّل snapshot، وهي صورة SQLite كاملة منشورة دوريًا إلى موطن السحابة، ثم يطبق فقط changesets التي تراكمت في كل تدفق بعدها. تسجل بيانات snapshot الوصفية إصدار المخطط ومؤشرات كل تدفق التي تجسدها.

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

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

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

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

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

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

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