پستگرس در Rust: تورسو میخواد LLVM دیتابیسها بشه
خلاصهٔ کاملتر
گلابر کاستا و پکا انبرگ اعلام کردن که قراره نسخهٔ مدرنی از پستگرس رو از صفر بنویسن — داخل Turso که خودش با Rust نوشته شده. جملهٔ کوتاهشون اینه: تورسو داره تبدیل به LLVM دیتابیسها میشه؛ یک هستهٔ مدرن و قابل اتکا، و چند فرانتاند دیتابیسی که روش کامپایل میشن. SQLite اولین فرانتاند بود، پستگرس دومیه.
برای درک ماجرا باید بدونی تورسو چی بود: تا همین اواخر صرفاً بازنویسی کامل SQLite در Rust با معماری مدرن، سازگار در سطح فایل با SQLite. ولی چند قابلیت جالب داره که پستگرسکارها میشناسنشون — نوشتن همزمان با MVCC، سیستم نوع غنی، و ویوهای متریالایز که برخلاف پستگرس خودشون بهروز میشن. نویسندهها میگن اگه تا حالا کرونجاب REFRESH MATERIALIZED VIEW رو بچهداری کردی یا با انبوهی تریگر ویوی زنده فیک ساختی، همین یک جمله ارزش دوبارهخوندن داره.
بخش عجیب مقاله ادعای اصلیشونه دربارهٔ SQLite: اگه یککم چشمهات رو ریز کنی، SQLite واقعاً دیتابیس نیست، ماشین مجازیه. SQLite (و تورسو هم همین طراحی رو برداشته) کوئری SQL رو به بایتکد اختصاصی خودش به اسم VDBE کامپایل میکنه؛ زبانی همهمنظوره مثل JVM یا WASM نیست و عملیات سطحبالای دیتابیسی مثل «این رو تو B-tree پیدا کن» داره، ولی بالاخره بایتکده.
و برای اثباتش کاری کردن که سخته جدی نگیریش: Doom رو بهعنوان بایتکد VDBE اجرا کردن. یک کامپایلر کوچیک C به VDBE نوشتن و موتور واقعی تورسو که به WASM کامپایل شده، اون رو دقیقاً همونطوری اجرا میکنه که یک SELECT رو اجرا میکنه: هر فریم یک ردیف نتیجهست و نواحی حافظه بهشکل blob خونده و نوشته میشن.
حالا «نوشتن پستگرس داخل تورسو» یعنی چی؟ به گفتهٔ نویسندهها، تلاشهای قبلی برای ازدواج SQLite و پستگرس معمولاً در لایهٔ کوئری انجام شده — یعنی ترجمهٔ کوئریهای پستگرس به SQLite — که ناهماهنگی بزرگی داره چون این دو از بیرون خیلی فرق دارن. ولی از داخل اونقدرها فرق ندارن: هر دیتابیس SQL در نهایت مجموعهای از B-Treeها و ایندکسهاست. پس فرانتاند رو پلاگینپذیر کردن: زبان پستگرس به یک AST مشترک پارس میشه و اون AST به بایتکد تورسو کامپایل میشه.
این ایده اول بهشکل پروژهٔ آزمایشی pgmicro زنده شد و حالا کاملاً توی درخت اصلی مرج شده و رسمی شده. خودشون شفافان که این فعلاً یک پایهست نه محصول تمامشده، ولی پایهای واقعی و در حال اجرا. بستهای منتشر نشده و فعلاً باید از سورس بیلد کنی.
در بخش پرسش و پاسخ چند نکتهٔ مهم روشن میشه. سازگاری ۱۰۰٪ با پستگرس هدفشون نیست؛ میخوان «بهقدر کافی» سازگار باشن، مخصوصاً در هستهٔ قابلیتها. اپلیکیشنها، ORMها و psql باید وصل بشن چون پروتکل سیمی و پیادهسازی سرور هم خواهد داشت. اجرای امبدد روی موبایل و دستگاهها و همگامسازی دیتابیس با یک فایل محلی هم پشتیبانی میشه. برای اکستنشنها هم یک اثبات مفهوم با کانتینر WASM دارن. لایسنس هم همون MIT فعلی تورسوئه.
تصویری که از آینده میکشن جذابه: پستگرس واقعی داخل یک تب مرورگر بدون هیچ سروری پشتش، ایجنتی که برای هر کاربر یک پستگرس تازه بالا میاره — میلیاردها تا، هرکدوم فقط یک فایل — و اپ لوکال-فرستی که پستگرسش رو به یک فایل سینک میکنه و برمیگردونه. دربارهٔ سرعت هم صریحان: با AI کد میزنن ولی همهچیز رو دقیق مرور میکنن، چون به قول خودشون دیتابیس جای «تند برو و بشکن» نیست.
نکات کلیدی:
- تورسو فرانتاند رو پلاگینپذیر کرده تا «LLVM دیتابیسها» بشه
- زبان پستگرس به AST مشترک پارس و به بایتکد VDBE کامپایل میشه
- ویوهای متریالایز تورسو برخلاف پستگرس زنده و خودبهروزرسانان
- Doom بهعنوان بایتکد VDBE داخل موتور دیتابیس اجرا شده
- هدف سازگاری «کافی» با پستگرسه، نه ۱۰۰٪؛ پروتکل سیمی و psql پشتیبانی میشن
- پروژه اوپنسورس با لایسنس MIT و بیش از ۲۶۰ مشارکتکنندهست




