مواد پر جائیں

ہم آہنگی

bae کی ہم آہنگی coven کی ہم آہنگی ہے: bae اپنی جدولیں اور blobs بتاتا ہے، اور coven باقی کرتا ہے۔ یہ صفحہ طریقہ کار کو bae پر لاگو ہوتے ہوئے بیان کرتا ہے؛ coven کی اپنی دستاویزات ہر حصے کو پوری گہرائی میں بیان کرتی ہیں۔

coven SQLite تعلق اپنے پاس رکھتا ہے، اس لیے bae کی ہر محفوظ لکھائی اس سے گزرتی ہے۔ SQLite کی نشست پسوند ہر لین دین میں عین ہوئی تبدیلی ریکارڈ کرتی ہے؛ ہم آہنگ جدولوں کی تبدیلیاں تبدیلی سیٹ بنتی ہیں، لائبریری کلید سے بند اور آلہ کی شناخت کلید سے دستخط شدہ۔ فرق نکالنا نہیں، گندے نشان نہیں: گرفت تعلق کی صفت ہے، اور لکھائی چھوٹ نہیں سکتی۔

ہر آلہ کلاؤڈ گھر میں اپنے بہاؤ پر تبدیلی سیٹیں جوڑتی ہے، سلسلہ وار نمبروں کے ساتھ۔ آلات ایک دوسرے کے بہاؤ پر کبھی نہیں لکھتیں، اس لیے ذخیرہ میں لکھائی ٹکراؤ نہیں کرتی، اور ہر آلہ ہم رتبہ بہاؤ کے لیے cursor رکھتی ہے۔ ہم آہنگی چکر مقامی outbox دھکیلتا ہے، پھر ہر ہم رتبہ کے بہاؤ کو اپنے cursor سے آگے کھینچتا ہے، ہر تبدیلی سیٹ کے دستخط اور مصنف کی رکنیت جانچ کر لاگو کرتا ہے۔

چکر مقامی تبدیلیوں کے بعد، backoff والے فارغ timer پر (polls کے بیچ پانچ منٹ تک)، اور Sync Now پر فوراً چلتا ہے۔ ناکامیاں پیچھے ہٹ کر دوبارہ کوشش کرتی ہیں؛ دور ہر چکر کا نتیجہ UI کو حالت، خرابی متن، اور لاگو قطاروں کی تعداد کے طور پر رپورٹ کرتا ہے۔

دو آلات کا الگ رہتے ہوئے ایک ہی لائبریری میں ترمیم کرنا عام حالت ہے، استثنا نہیں۔ جب ان کی تبدیلیاں ملتی ہیں:

  • مختلف قطاروں یا مختلف ستونوں کی ترمیمات دونوں لاگو ہوتی ہیں۔ laptop پر اجرا کا year بدلنا اور ڈیسک ٹاپ پر اس کا label بدلنا دونوں نتیجہ دیتے ہیں۔
  • اسی قطار کے اسی ستون کی ترمیمات قطار کے _updated_at hybrid logical clock سے ترتیب پاتی ہیں: بعد والی ترمیم جیتتی ہے، مقرر طور پر اور ہر آلہ پر ایک ہی طرح۔
  • حذف جیتتا ہے ہم وقت ترمیمات پر: ایک آلہ پر حذف شدہ اجرا حذف ہی رہتی ہے، چاہے اسی وقفے میں دوسری آلہ نے اسے بدلا ہو۔

Conflict UI نہیں کیونکہ ان سلجھی حالت نہیں: ہر آلہ کسی بھی لاگو ترتیب سے ایک ہی نتیجہ پر پہنچتی ہے۔

شامل یا بحال ہونے والا آلہ تاریخ کو شروع سے دوبارہ نہیں چلاتا۔ یہ نقل تصویر ڈاؤن لوڈ کرتا ہے، کلاؤڈ گھر پر وقتاً فوقتاً شائع ہونے والی پوری SQLite image، پھر صرف وہ تبدیلی سیٹیں لگاتا ہے جو اس کے بعد ہر بہاؤ نے جمع کیے۔ نقل تصویر کی میٹا معلومات خاکہ version اور ہر بہاؤ کے cursors ریکارڈ کرتی ہے جو اس میں شامل ہیں۔

خاکہ versions

اس حصے کا ربط

bae کا خاکہ numbered ladder سے migrate ہوتا ہے، اور ladder کا top rung ہر تبدیلی سیٹ پر stamped ہوتا ہے جو آلہ لکھتی ہے۔ ایسی آلہ جو اپنے سے newer خاکہ کا تبدیلی سیٹ کھینچے، اس بہاؤ کو روک کر رکھتی ہے، اس کے آگے کچھ لاگو نہیں کرتی، جب تک ایپ تازہ نہ ہو؛ کچھ گم نہیں ہوتا اور کچھ غلط لاگو نہیں ہوتا۔ Database فائل خود اپنے خاکہ سے older binary کے تحت کھلنے سے انکار کرتی ہے۔

خاکہ version سے وسیع تر compatibility era ہے: ہر binary میں پکی ہوئی pinned coven revision۔ دو builds صرف ایک era کے اندر ہم آہنگی کرتے ہیں؛ coven wire شکل ٹوٹنا نیا era اور ہر ایپ میں major version bump ہے۔ Pre-1.0 میں ہر build era zero ہے اور شکلیں migration کے بغیر بدلتی ہیں۔

فراہم کنندہ کیا دیکھتا ہے

اس حصے کا ربط

Opaque گھر پر فراہم کنندہ ciphertext تبدیلی سیٹیں، ciphertext blobs، اور دستخط شدہ رکنیت ریکارڈ محفوظ کرتا ہے؛ یہ اشیا گن سکتا ہے اور sizes اور timing دیکھ سکتا ہے، مگر کچھ پڑھ نہیں سکتا۔ آلہ کی کھینچی ہوئی ہر شے database کو چھونے سے پہلے جانچی جاتی ہے، دستخط اور رکنیت، دونوں؛ ذخیرہ ایک ناسمجھ، ناقابل اعتماد ڈاک خانہ ہے۔ رمز بندی اور شناخت اور رکنیت دیکھیں۔