دالت‌هاب (DoltHub) به‌تازگی نسخه 2.0 از پایگاه داده متن‌باز و کنترل‌شده با نسخه خود را منتشر کرده است. این به‌روزرسانی عمده، قابلیت‌های بهینه‌سازی خودکار ذخیره‌سازی از جمله جمع‌آوری زباله (Garbage Collection) و فشرده‌سازی را به همراه پشتیبانی بهبودیافته از انواع داده‌های بزرگ و برداری ارائه می‌دهد.

دالت چیست؟

دالت (Dolt) یک پایگاه داده SQL سازگار با MySQL است که کنترل نسخه را به سبک Git به‌صورت داخلی پیاده‌سازی می‌کند. این ابزار از عملیات‌هایی مانند انشعاب (Branching)، ادغام (Merging)، کلون‌کردن و تفاوت‌یابی (Diffing) پشتیبانی می‌کند. داده‌ها در ساختار درخت‌های پرالی (Prolly Trees) با آدرس‌دهی بر اساس محتوا ذخیره می‌شوند که امکان نسخه‌گذاری در سطح سطر، اشتراک‌گذاری کارآمد ساختار بین نسخه‌ها و تفاوت‌یابی سریع را فراهم می‌کند.

ویژگی‌های جدید نسخه 2.0

سه سال پس از انتشار اولین نسخه اصلی، نسخه 2.0 با تمرکز بر عملکرد و بهینه‌سازی ذخیره‌سازی عرضه شده است. مهم‌ترین ویژگی‌های این نسخه عبارتند از:

  • جمع‌آوری خودکار زباله و فشرده‌سازی بایگانی: این ویژگی‌ها به‌صورت پیش‌فرض فعال هستند و فضای دیسک را بهینه می‌کنند.
  • ذخیره‌سازی تطبیقی: سازگاری هوشمند با نیازهای ذخیره‌سازی.
  • پشتیبانی بتا از ایندکس‌های برداری: با استفاده از نوع Vector پایگاه داده ماریا دی‌بی.
  • بهبود عملکرد: تیم توسعه‌دهنده ادعا می‌کند دالت اکنون در بنچمارک sysbench از MySQL سریع‌تر است.

نمودار مقایسه عملکرد دالت با MySQL

اهمیت جمع‌آوری زباله

تیم سان (Tim Sehn)، بنیان‌گذار و مدیرعامل دالت‌هاب، در وبلاگ رسمی توضیح می‌دهد که چرا جمع‌آوری زباله در دالت حیاتی است: «دالت مقدار زیادی زباله روی دیسک تولید می‌کند، به‌ویژه هنگام واردات داده. از آنجایی که دالت از معماری کپی‌روی‌نوشتن (Copy-on-Write) استفاده می‌کند، تمام وضعیت تراکنش‌های میانی روی دیسک ذخیره می‌شود. هر وضعیت میانی که در یک تعهد (Commit) دالت ثبت نشده باشد، زباله محسوب می‌شود و باید پاک شود. دالت مجبور است تمام تاریخچه را در گراف تعهدات روی دیسک نگه دارد و افزودن زباله اضافی می‌تواند خیلی سریع فضای دیسک را مصرف کند.»

قالب جدید بایگانی و کاهش 50 درصدی حجم

نسخه 2.0 یک قالب جدید روی دیسک به نام «بایگانی» (Archives) معرفی می‌کند که با استفاده از فشرده‌سازی فرهنگ‌لغت (Dictionary Compression) برای یکتا‌سازی ذخیره‌سازی، ردپای ذخیره‌سازی را 30 تا 50 درصد کاهش می‌دهد.

عملکرد فراتر از MySQL

تیم سان در مورد بهبود عملکرد دالت می‌گوید: «ما از جایی شروع کردیم که در خواندن 10 برابر و در نوشتن 20 برابر کندتر از MySQL بودیم. با تلاش بی‌وقفه، اکنون در نوشتن 13 درصد و در خواندن 5 درصد سریع‌تر از MySQL هستیم.» این ارقام بر اساس بنچمارک sysbench به‌دست آمده است.

پشتیبانی بتا از ایندکس‌های برداری

دالت 2.0 همچنین پشتیبانی بتا از ایندکس‌های برداری (Vector Indexes) را ارائه می‌دهد. به گفته تیم توسعه، دالت تنها پایگاه داده‌ای است که بردارها را کنترل نسخه می‌کند. وضعیت بتا پس از رفع شکاف‌های باقی‌مانده در مسیر خواندن حذف خواهد شد.

تصویری از رابط دالت برای مدیریت ایندکس‌های برداری

رقبا و جایگزین‌ها

دالت تنها ابزار شبیه Git برای نسخه‌گذاری داده‌ها نیست. پروژه‌های دیگری مانند LakeFS (راهکاری برای کنترل نسخه دریاچه داده) و Nessie (کاتالوگ تراکنشی با معنای Git) نیز وجود دارند. همچنین دالت‌گرس کیوال (DoltgreSQL)، نسخه سازگار با PostgreSQL، در مرحله بتا قرار دارد.

سیمون اسپاتی (Simon Späti) در مجموعه مقالات خود توضیح می‌دهد که گردش‌های کاری شبیه Git در حال تبدیل شدن به یک استاندارد ضروری در مدیریت داده هستند. او می‌گوید: «شاید نه امروز یا فردا، اما با ابزارهای مناسب می‌توانیم به مدیریت تغییرات بهتر، آزمایش روی داده‌های واقعی، بازگشت سریع و آرامش خاطر در استقرار تغییرات دست یابیم.»

دسترسی و مجوز

دالت تحت مجوز Apache 2.0 در گیت‌هاب در دسترس است.