প্রকল্প সম্পর্কে

FrankenSQLite হলো Rust-এ লেখা SQLite-এর একটি স্বাধীন, সম্পূর্ণ নতুন বাস্তবায়ন, যার লক্ষ্য SQLite-এর একক-রাইটার বাধা এবং স্থায়িত্বজনিত উদ্বেগ সমাধান করা। এটি কনকারেন্ট রাইটারদের অনুমতি দিতে পেজ-লেভেল মাল্টি-ভার্সন কনকারেন্সি কন্ট্রোল (MVCC) প্রবর্তন করে, যা প্রচলিত ফাইল-লেভেল লক প্রতিস্থাপন করে। ইঞ্জিনটি একটি নিরাপদ Rust কোর দিয়ে ডিজাইন করা হয়েছে, যেখানে `unsafe` কোড শুধুমাত্র VFS এবং ঐচ্ছিক C ABI শিমে সীমাবদ্ধ। **মূল বৈশিষ্ট্য:** - **কনকারেন্ট রাইটার:** ডিফল্টভাবে সিরিয়ালাইজেবল স্ন্যাপশট আইসোলেশন (SSI) সহ পেজ-লেভেল MVCC, যা ভিন্ন পেজ স্পর্শকারী রাইটারদের ওভারল্যাপ করার সুযোগ দেয়। একই-পেজ দ্বন্দ্ব বর্তমানে `SQLITE_BUSY_SNAPSHOT` দিয়ে অ্যাবর্ট ও রিট্রাই করে; একটি নিরাপদ রাইট-মার্জ ল্যাডার সুপ্ত অবস্থায় রয়েছে। - **ফাইল ফরম্যাট সামঞ্জস্যতা:** স্ট্যান্ডার্ড SQLite 3.x ডেটাবেস পড়ে ও লেখে, UTF-8 এবং UTF-16 টেক্সট এনকোডিং সমর্থন করে। প্যারিটি যাচাই UTF-8-এ সবচেয়ে গভীর। - **নিরাপদ Rust ইঞ্জিন:** কোর ইঞ্জিন, পেজার, পার্সার, VDBE এবং সংশ্লিষ্ট ক্রেটগুলো `unsafe` কোড নিষিদ্ধ করে, ব্যতিক্রম শুধুমাত্র `fsqlite-vfs` (mmap/shm) এবং `fsqlite-c-api` (FFI)-তে। - **স্তরভিত্তিক আর্কিটেকচার:** টাইপ, এরর, VFS, পেজার, WAL, MVCC, B-tree, পার্সার, প্ল্যানার, VDBE, ফাংশন এবং এক্সটেনশন (FTS5, JSON1, R-tree, ICU, ইত্যাদি)-এর জন্য ক্রেটসহ একটি ২৮-সদস্যের Cargo ওয়ার্কস্পেস। - **স্থায়িত্ব গবেষণা:** সম্ভাব্য স্ব-নিরাময় স্টোরেজের জন্য RaptorQ/ECS বিল্ডিং ব্লক অন্তর্ভুক্ত, তবে এটি ডিজাইন প্লাস আংশিক বাস্তবায়ন, কম্প্যাটিবিলিটি মোডে এখনও সক্রিয় নয়। - **ট্রানজেকশন পর্যবেক্ষণযোগ্যতা:** ট্রানজেকশন পরিসংখ্যান, সক্রিয় ট্রানজেকশন, উপদেষ্টা সতর্কতা এবং JSON টাইমলাইনের জন্য PRAGMA সারফেস। **বর্তমান অবস্থা:** রানটাইম হাইব্রিড, যেখানে স্ট্যান্ডার্ড SQLite ফাইলের উপর কম্প্যাটিবিলিটি মোডই লাইভ পাথ। নেটিভ মোড এবং ECS অংশগুলো ডিজাইন প্লাস আংশিক বাস্তবায়ন। CLI একটি ছোট শেল, পূর্ণ sqlite3 ফ্রন্ট-এন্ড নয়। FTS3/FTS4-এর মতো এক্সটেনশনগুলো শুধুমাত্র হেল্পার-লেভেল; `dbstat`, `carray`, এবং `dbpage` বাস্তবায়িত নয়। প্ল্যানার ক্রেট বিদ্যমান কিন্তু সব কোয়েরির জন্য এটি প্রাথমিক হট পাথ নয়।