Turso؛ یه دیتابیس SQL درونپردازشی و سازگار با SQLite
خلاصهٔ کاملتر
طبق چیزی که تو صفحهٔ پروژه اومده، Turso Database یه دیتابیس SQL درونپردازشی (in-process) هست که با زبان Rust نوشته شده و با SQLite سازگاره. درونپردازشی بودن یعنی مثل SQLite مستقیم داخل خود برنامه اجرا میشه و نیازی به یه سرور دیتابیس جدا نداره. سازگاریش هم گویش SQL، فرمت فایل و API زبان C رو شامل میشه.
نقطهٔ اصلی این پروژه اینه که بهجای فورک زدن از SQLite، داره کل اون رو از صفر با Rust بازنویسی میکنه. تیم توسعه میگه این کار اولش یه آزمایش ساده و بیادعا بوده، ولی بهخاطر موفقیت زیادش حالا جای libSQL (تلاش قبلی خودشون که از راه فورک بود) رو بهعنوان مسیر اصلی گرفته.
از نظر امکانات، Turso چند چیز رو فراتر از SQLite آورده: ورودی/خروجی ناهمزمان (async) روی لینوکس با io_uring، دستور BEGIN CONCURRENT برای بالا بردن توان نوشتن همزمان با کمک کنترل همزمانی چندنسخهای (MVCC)، ردگیری بلادرنگ تغییرات دیتابیس (CDC) و پشتیبانی از بردار (vector) برای جستوجوی دقیق. یه سری قابلیت آزمایشی مثل رمزنگاری دادهها روی دیسک و جستوجوی تماممتن هم داره.
یکی از جذابیتهاش پشتیبانی از زبونهای زیاده: Go، جاوااسکریپت، Java، داتنت، پایتون، Rust و حتی WebAssembly برای اجرا تو مرورگر. کار کردن باهاش هم شبیه هر کلاینت SQLite دیگهست؛ مثلاً تو جاوااسکریپت به یه فایل دیتابیس وصل میشی و کوئری میزنی:
import { connect } from '@tursodatabase/database';
const db = await connect('sqlite.db');
const stmt = db.prepare('SELECT * FROM users');
const users = stmt.all();
console.log(users);نکتهٔ مهمی که خود پروژه هم روش تأکید میکنه اینه که Turso هنوز تو مرحلهٔ بتاست و مثل libSQL آمادهٔ تولید (production) نیست. البته میگن الان هم اپهای واقعیای مثل Turso Cloud و دستیار Kin AI روش کار میکنن و با ابزارهای تست زیادی سنجیده میشه، ولی چون هدفشون رسیدن به سطح اطمینان خود SQLite هست، تا اون موقع توصیه میکنن برای کارهای حساس با احتیاط و همراه با بکاپ مستقل ازش استفاده کنین.
نکات کلیدی:
- Turso یه دیتابیس درونپردازشی نوشتهشده با Rust و سازگار با SQLite هست.
- بهجای فورک زدن، عملاً داره SQLite رو از نو بازنویسی میکنه و جای libSQL رو گرفته.
- امکاناتی مثل async با io_uring، نوشتن همزمان با MVCC، CDC و پشتیبانی از بردار داره.
- از زبونهای زیادی مثل جاوااسکریپت، پایتون، Go، Rust و WebAssembly پشتیبانی میکنه.
- فعلاً بتاست و برای کارهای حساس باید با احتیاط ازش استفاده کرد.




