سازوکار نرمافزار محلی-اول: سیآردیتیها چگونه دادهها را بدون نیاز به ابر همگام میکنند
با انتقال پایگاه داده اصلی به دستگاه کاربر و استفاده از الگوریتمهای ریاضی برای حل تضادها، نرمافزار محلی-اول (Local-First) دیگر نیازی به نشانگرهای انتظار (loading spinners) ندارد و مالکیت دادهها را به کاربر بازمیگرداند.
به قلم کیان راد
این خبر را به اشتراک بگذارید
- توسعهدهندگان محلی-اول
- طرفدار عاملیت کاربر، مالکیت دادهها و حذف تأخیر شبکه.
- نظریهپردازان سیستمهای توزیعشده
- تمرکز بر ظرافت ریاضی و تضمینهای سازگاری حل تضاد غیرمتمرکز.
- طرفداران معماری ابری
- برجسته کردن چالشهای عملی، سربار حافظه و خطرات امنیتی دادههای غیرمتمرکز.
برنامههای ابری مانند گوگل داکس و ترلو امکان همکاری بیدرنگ و یکپارچه را فراهم میکنند، اما این کار را با متمرکز کردن ذخیرهسازی دادهها روی سرورهای راه دور انجام میدهند. این معماری، مالکیت واقعی فایلها را از کاربران سلب میکند و یک کفِ تأخیر شبکه غیرقابل کاهش را تحمیل میکند، زیرا هر تعامل نیازمند یک رفت و برگشت به مرکز داده است.[1]
در پاسخ به این چالش، آزمایشگاه تحقیقاتی مستقل Ink & Switch در مانیفست سال ۲۰۱۹ خود اصطلاح «نرمافزار محلی-اول» را ابداع کرد. این الگو یک وارونگی رادیکال در وب مدرن پیشنهاد میکند: نسخه اصلی و معتبر دادههای کاربر باید روی دستگاه محلی او قرار گیرد، و ابر (Cloud) تنها به عنوان یک مکانیسم ثانویه برای همگامسازی در پسزمینه عمل کند.[1][3]
این تغییر معماری، مشخصات عملکردی برنامههای وب را به طور اساسی دگرگون میکند. برنامههای محلی-اول با پرسوجو از یک پایگاه داده تعبیهشده محلی به جای انتظار برای پاسخ سرور راه دور، میتوانند زمان پاسخدهی زیر میلیثانیه ارائه دهند، نشانگرهای انتظار (loading spinners) را به طور کامل حذف کنند و قابلیت آفلاین واقعی را فراهم آورند.[5]
با این حال، انتقال پایگاه داده اصلی به سمت کلاینت، یک چالش عظیم در سیستمهای توزیعشده ایجاد میکند: چگونه تضادها را زمانی حل کنیم که چندین کاربر دقیقاً یک سند را به صورت آفلاین ویرایش کرده و سپس دوباره متصل میشوند؟ از لحاظ تاریخی، این امر یا نیازمند ادغام دستی توسط کاربر بود یا اینکه یک سرور متمرکز به طور خودسرانه یک «برنده» را انتخاب میکرد و ویرایشهای دیگر را نادیده میگرفت.[5]
پیشرفتی که نرمافزار محلی-اول مدرن را ممکن میسازد، یک ساختار داده ریاضی به نام «نوع داده تکرارشده بدون تضاد» (CRDT) است. سیآردیتیها که رسماً توسط محقق مارک شاپیرو و همکارانش در سال ۲۰۱۱ تعریف شدند، مشکل تضاد را بدون نیاز به هیچ مرجع مرکزی یا هماهنگی سرور حل میکنند.[2][4]
سیآردیتیها ویژگیای به نام «سازگاری نهایی قوی» (Strong Eventual Consistency) را تضمین میکنند. این بدان معناست که تا زمانی که دو دستگاه در نهایت بهروزرسانیهای خود را مبادله کنند، پایگاههای داده محلی آنها به صورت ریاضی به یک حالت دقیقاً یکسان همگرا خواهند شد، صرف نظر از ترتیبی که شبکه بهروزرسانیها را تحویل داده است.[2][4]
آنها این همگرایی را از طریق ویژگیهای جبری خاصی به دست میآورند. در یک سیآردیتی مبتنی بر حالت، تابع ادغام باید جابهجاییپذیر (ترتیب عملیات مهم نباشد)، شرکتپذیر (گروهبندی عملیات مهم نباشد) و خودتوان (تکرار دقیق همان عملیات ادغام، نتیجه نهایی را تغییر ندهد) باشد.[2]
آنها این همگرایی را از طریق ویژگیهای جبری خاصی به دست میآورند.
برای مثال، در یک ویرایشگر متن مشارکتی، سیآردیتی به جای پیگیری سند به عنوان یک رشته متنی ساده، هر درج و حذف کاراکتر مجزا را ردیابی میکند. به هر کاراکتر یک شناسه رمزنگاری منحصر به فرد و یک مُهر زمانی منطقی اختصاص داده میشود.[2][6]
هنگامی که دو کاربر یک پاراگراف را به صورت آفلاین ویرایش میکنند، دستگاههای آنها نیازی به پرسیدن از سرور برای نحوه ادغام متن ندارند. الگوریتم سیآردیتی به صورت ریاضی کاراکترها را بر اساس شناسههای منحصر به فردشان در هم میآمیزد و تضمین میکند که هر دو کاربر پس از اتصال مجدد دستگاههایشان، دقیقاً همان نتیجه ادغامشده را مشاهده کنند.[4][6]
این رویکرد غیرمتمرکز برای حل تضاد، همکاری همتا به همتای واقعی را امکانپذیر میسازد. دستگاهها میتوانند مستقیماً از طریق وایفای محلی یا بلوتوث همگامسازی شوند، به طور کامل اینترنت را دور بزنند و تضمین کنند که نرمافزار حتی اگر فروشنده از کار بیفتد، به طور نامحدود به کار خود ادامه میدهد.[1]
با وجود ظرافت نظری، سیآردیتیها مصالحههای مهندسی قابل توجهی را به همراه دارند. از آنجایی که آنها باید همگرایی ریاضی را تحت هر شرایطی تضمین کنند، بسیاری از پیادهسازیهای سیآردیتی کل تاریخچه هر عملیاتی را که روی دادهها انجام شده است، ذخیره میکنند.[6]
این گزارش ثبت (لاگ) فقط-افزودنی تاریخی میتواند منجر به تورم شدید حافظه و دیسک شود. سندی که تنها چند کیلوبایت متن ساده است، ممکن است به مگابایتها فراداده سیآردیتی نیاز داشته باشد تا شجرهنامه هر ویرایش، حذف و ادغام را در طول عمر خود ردیابی کند.[6]
علاوه بر این، در حالی که سیآردیتیها به طور خودکار تضادهای دادهای را حل میکنند، لزوماً تضادهای معنایی را حل نمیکنند. ممکن است دو کاربر به طور همزمان سندی را به گونهای ویرایش کنند که از نظر ریاضی کاملاً ادغام شود اما منجر به یک جمله از نظر گرامری نامفهوم یا یک حالت کاربردی از نظر منطقی شکسته شود.[7]
برای کاهش این مشکلات، چارچوبهای محلی-اول مدرن در حال توسعه تکنیکهای پیشرفته جمعآوری زباله (Garbage Collection) و فشردهسازی گزارش هستند. این سیستمها تلاش میکنند تا دادههای تاریخی را هرس کرده و ردپای فراداده را فشرده سازند، بدون اینکه تضمینهای ریاضی سیآردیتی زیربنایی را نقض کنند.[6]
با بلوغ رابطهای برنامهنویسی ذخیرهسازی مرورگر و قدرتمندتر شدن دستگاهها، الگوی محلی-اول به سرعت از تحقیقات آکادمیک به سمت تولید حرکت میکند. این الگو نوید آیندهای را میدهد که در آن نرمافزار حس آنی بودن دارد، بدون نقص آفلاین کار میکند و در نهایت حاکمیت دادهها را به کاربر بازمیگرداند.[1][3][5]
نکات کلیدی
- نرمافزار محلی-اول نسخه اصلی دادههای کاربر را روی دستگاه محلی ذخیره میکند و از ابر فقط برای همگامسازی در پسزمینه استفاده میکند.
- این معماری تأخیر شبکه را حذف میکند و زمان پاسخدهی زیر میلیثانیه و قابلیت آفلاین واقعی را ممکن میسازد.
- انواع داده تکرارشده بدون تضاد (CRDTs) به چندین کاربر آفلاین اجازه میدهند تا دادههای یکسان را ویرایش کرده و بدون نیاز به سرور مرکزی، آنها را به طور کامل ادغام کنند.
- سیآردیتیها از طریق عملیاتهای ریاضی جابهجاییپذیر، شرکتپذیر و خودتوان، «سازگاری نهایی قوی» را تضمین میکنند.
- اگرچه سیآردیتیها از نظر تئوری ظریف هستند، اما میتوانند با ذخیره کل تاریخچه هر عملیات، منجر به تورم قابل توجه حافظه شوند.
چرا مهم است
برای دو دهه، برنامههای کاربردی وب به ابر (Cloud) وابسته بودهاند، به این معنی که هر کلیک نیازمند اتصال به اینترنت است و کاربران مالک واقعی دادههای خود نیستند. گذار به نرمافزار محلی-اول، که توسط سیآردیتیها (CRDTs) تقویت میشود، نویدبخش برنامههایی است که فوراً پاسخ میدهند، بدون نقص به صورت آفلاین کار میکنند و حاکمیت دادهها را به کاربر بازمیگردانند.
منابع
[1]Ink & Switchتوسعهدهندگان محلی-اولLocal-first software: you own your data, in spite of the cloud
مطالعه در Ink & Switch →
[2]Wikipediaتوسعهدهندگان محلی-اولConflict-free replicated data type
مطالعه در Wikipedia →
[3]Wikipediaتوسعهدهندگان محلی-اولLocal-first software
مطالعه در Wikipedia →
[4]CRDT.techنظریهپردازان سیستمهای توزیعشدهConflict-free Replicated Data Types
مطالعه در CRDT.tech →
[5]RxDBتوسعهدهندگان محلی-اولWhy Local-First Software Is the Future and what are its Limitations
مطالعه در RxDB →
[6]Loroنظریهپردازان سیستمهای توزیعشدهThe Emergence of CRDTs
مطالعه در Loro →
[7]تیم سردبیری کوهستانطرفداران معماری ابریتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
هر زاویه. هر روز.
دریافت متا اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.

