FalkorDB 6.0 با موتور جدید Rust منتشر شد
خلاصهٔ کاملتر
تیم FalkorDB (یه دیتابیس گراف که داده رو به شکل گره و یال نگه میداره) نسخه 6.0 رو منتشر کرده. این اولین نسخهای هست که روی موتور جدید Rust ساخته شده. به گفته تیم، روی بیشتر از ۳۰۰ کوئری بنچمارک، ۳۹٪ دستورالعمل CPU کمتری از موتور C قبلی اجرا میکنه، ۲۲۶ باگ رو بسته و کوئریهای Cypher (زبان کوئری دیتابیسهای گراف)، APIها و integrationها بدون هیچ تغییری کار میکنن.
بازنویسی ۱۷ ماه طول کشیده و حدود ۸۰ هزار خط کد Rust تو ۳۵۷ pull request تولید کرده. تیم میگه Rust رو انتخاب کردن چون memory safety رو موقع کامپایل تضمین میکنه و همزمان کارایی سطح پایین لازم برای موتور گراف رو هم داره. ایده اصلی FalkorDB حفظ شده: گرافها به شکل sparse matrix ذخیره میشن و پیمایش گراف با ضرب ماتریس انجام میشه. موتور جدید همون فایلهای داده قبلی رو میخونه. هر تغییر باید از حدود ۱۵۸۵ سناریوی openCypher TCK و ۱۳۲۲ تست قبلی رد میشد.
یه تغییر مهم، فرمت جدید replication به اسم effects v3 هست. تو فرمت قبلی، replica خودش بعضی چیزها مثل ID گرهها رو از ترتیب رسیدن دادهها حدس میزد. حالا هر گره، یال، label و attribute با ID و اسمش میرسه و replica فقط چک میکنه درست باشه. موقع حذف هم labelهای موجودیت فرستاده میشه، و اگه چیز غیرمنتظرهای مثل checksum غلط برسه، replica همون لحظه ردش میکنه. این فرمت به موتور C هم اضافه میشه، یعنی یه replica با Rust میتونه یه primary با C رو تو مهاجرت زنده دنبال کنه و اگه لازم شد برگرده عقب.
برای سنجش کارایی، تیم یه benchmark harness کنار کد موتور تو repo داره که بیشتر از ۳۰۰ کوئری Cypher رو روی یه گراف ۱۰ هزار نفره اجرا میکنه. معیار اصلی تعداد دستورالعملهای CPU هست، چون پایدارتر از زمان اجراست. از ۲ آگوست حدود ۳۰ تا از ۹۵ تغییر ادغامشده بهبود کارایی بودن و تا اوایل سپتامبر کل مجموعه به 0.61x دستورالعملهای موتور C رسیده. مثلاً count(DISTINCT …) از 36.2M به 7.6M دستورالعمل رسیده و یه cartesian product چهارطرفه از ۲.۵ دقیقه و 20.8 گیگ رم به ۲۵ میلیثانیه و 28 مگ رسیده.
از ۲۲۶ باگ بستهشده، حدود ۱۶۶ تا مربوط به درستی نتایج کوئری بودن، ۴۳ تا مشکل پایداری مثل segmentation fault و کمبود حافظه، و ۶ تا مشکل memory safety مثل یه use-after-free تو کش query plan. یه محدودیت مهم هم هست: نسخه 6.0 هنوز مسیر ارتقای رسمی از 4.x نداره و این قابلیت تو 6.2 میاد. تا اون موقع تیم پیشنهاد میکنه 6.0 رو روی deploymentهای جدید یا کنار سیستم فعلی اجرا کنید. نسخه جدید روی Docker Hub در دسترسه و کمکم به FalkorDB Cloud هم میاد.
نکات کلیدی:
- FalkorDB 6.0 اولین نسخه روی موتور Rust هست، با ۸۰ هزار خط کد تو ۱۷ ماه
- روی بیشتر از ۳۰۰ کوئری، ۳۹٪ دستورالعمل CPU کمتر از موتور C
- ۲۲۶ باگ بسته شده، شامل ۴۳ crash و ۶ مشکل memory safety
- فرمت replication جدید effects v3 به جای حدس زدن، داده رو چک میکنه
- مسیر ارتقای رسمی از 4.x تا نسخه 6.2 وجود نداره




