Stoolap؛ دیتابیس SQL امبدد به زبان Rust
خلاصهٔ کاملتر
به گفتهٔ خود پروژه، Stoolap یه دیتابیس SQL امبدده که «همراه اپلیکیشنت شیپ میشه»: یه فایل تکبایناری، کاملاً با Rust و امن از نظر حافظه. ایده اینه که راحتی SQLite رو داشته باشی ولی امکاناتی در حد دیتابیسهای بزرگتر. برای همین کنار CLI، درایورهای رسمی برای کلی زبون مثل Python، Go، Node.js، Java، C#، PHP و حتی WebAssembly داره.
هستهٔ همزمانیش روی MVCC با ایزولهسازی snapshot بنا شده؛ یعنی خوانندهها جلوی نویسندهها رو نمیگیرن. یکی از ویژگیهای خاصش کوئری سفر در زمانه: با AS OF میتونی وضعیت داده رو در یه لحظهٔ گذشته ببینی.
SELECT * FROM accounts
AS OF '2024-01-15 10:30:00';برای سرعت هم یه بهینهساز هزینهمحور به سبک PostgreSQL داره که از کاردینالیتی واقعی یاد میگیره و موقع اجرا دوباره پلن رو بهینه میکنه. اجرای موازی هم با زمانبند کار-دزدی Rayon انجام میشه و فیلترها، جوینها و مرتبسازیها رو خودکار بین هستهها پخش میکنه، طوریکه کوئری کوچیک سریع بمونه و کوئری بزرگ مقیاس بگیره.
بخشی که Stoolap رو از SQLite جدا میکنه، جستجوی برداری و معناییه. یه نوع دادهٔ VECTOR بومی با ایندکس HNSW داره و سه معیار فاصله (L2، کسینوس و ضرب داخلی) رو پشتیبانی میکنه؛ تابع اختیاری EMBED هم متن رو بدون هیچ API بیرونی یا پایتون به بردار تبدیل میکنه.
CREATE TABLE docs (
id INTEGER PRIMARY KEY,
content TEXT,
embedding VECTOR(384)
);
CREATE INDEX idx_emb ON docs(embedding)
USING HNSW WITH (metric = 'cosine');بقیهٔ امکاناتش هم کامله: WAL و بازیابی بعد از کرش، توابع پنجرهای، CTEهای بازگشتی و پشتیبانی کامل SQL. جالب اینه که به WebAssembly کامپایل میشه و توی سایتش یه playground داره که کاملاً داخل مرورگر و بدون سرور اجرا میشه. نسخهٔ فعلی v0.4.0 و لایسنسش Apache 2.0 ـه.
نکات کلیدی:
- دیتابیس SQL امبدد، تکبایناری و کاملاً Rust با درایور برای زبونهای مختلف
- MVCC با snapshot و کوئری سفر در زمان با AS OF
- بهینهساز هزینهمحور و اجرای موازی خودکار با Rayon
- جستجوی برداری/معنایی با نوع VECTOR، ایندکس HNSW و تابع EMBED بدون پایتون
- کامپایل به WebAssembly با playground داخل مرورگر؛ لایسنس Apache 2.0




