اگر SQLite با فضای ابری ترکیب میشد چه میشد؟
تصور کنید مثل همیشه میخواهید سریع یک ایده را پیاده کنید. مثلاً یک اپ ساده که قیمت گوشیها یا لپتاپها را از سایتهایی مثل دیجیکالا، ترب و زومیت جمع میکند، تحلیلهایی انجام میدهد (مثل ارزانترین فروشنده یا نمودار تغییرات قیمت در یک ماه گذشته) و نتایج را در یک رابط وب یا اپلیکیشن موبایل ساده نمایش میدهد.
خب طبیعتاً در مراحل اولیه، هیچکس نمیخواهد دردسر راهاندازی پایگاه داده سنگین مثل PostgreSQL، MongoDB یا مدیریت یک REST API کامل را به جان بخرد. ترجیح میدهید همهچیز ساده باشد؛ دقیقاً مثل تجربه کار با #SQLite: یک فایل دیتابیس کنار برنامه، بدون نیاز به سرور، بدون کانفیگ پیچیده.
اینجاست که SlateDB وارد میشود.
SlateDB: دیتابیس تعبیهشده بدون دیسک، نوشتهشده با Rust . این دیتابیس مثل SQLite ساده و سبک است، اما با یک تفاوت مهم:
به جای نوشتن روی دیسک، همهچیز مستقیماً روی فضای ابری مثل Amazon S3 یا سرویسهای داخلی مثل پارسپک، آروانکلاد یا ستون ذخیره میشود.
یعنی برنامه شما همچنان مثل SQLite ساده و سریع است، ولی انگار همه اپها به یک دیتابیس مشترک روی ابر وصلاند.
SlateDB – An embedded storage engine built on object storage | SlateDB
Description will go into a meta tag in <head />
https://slatedb.io/
برگردیم به مثال: تحلیل قیمت گوشیها در بازار ایران – با SlateDB:
نیازی به پایگاهداده مرکزی ندارید.
کراولر فقط دادهها را در SlateDB ذخیره میکند.
همه اپها همزمان از همان SlateDB – یعنی همان فضای استوریج، دادهها را میخوانند.
اگر Crawler یا اپها روی سرورهای مختلف باشند، فقط کافی است دسترسی به S3 مشترک داشته باشند.
بدون نیاز به تعریف API پیچیده یا سرور مرکزی.
چرا SlateDB انتخاب خوبی است؟
سادگی: مثل SQLite، میتوانید آن را مستقیماً داخل برنامه (embed) کنید.
مقیاسپذیری: با تکیه بر #ObjectStorage، نیاز به شارد یا ریپلیکیشن ندارید؛ خود فضا مقیاسپذیر است.
بدون نیاز به سرور: دیگر لازم نیست دیتابیس جداگانه راهاندازی و مدیریت کنید.
پشتیبانی از خوانندگان متعدد: چند اپ یا سرویس میتوانند همزمان بدون مشکل دادهها را بخوانند.
معماری بدون دیسک: آینده دیتابیسهای سبک و ابری
دیتابیسSlateDB نمونهای عملی از این ترند است — دیتابیسی سبک و بدون سرور که مانند SQLite در برنامه embed میشود، اما دادهها را روی فضای ابری نگه میدارد.
محدودیتهای SlateDB
تکنویسنده: فقط یک نویسنده همزمان مجاز است؛ برای نوشتارهای موازی، باید از صف پیام یا پارتیشنبندی استفاده شود.
تأخیر نوشتن: latency نوشتن به دلیل استفاده از Object Storage بین ۵۰ تا ۱۰۰ میلیثانیه است.
نبود تراکنش (فعلاً): قابلیتهایی مثل snapshot isolation هنوز در حال توسعه هستند.