๐ง NebulaDB
โก Lightweight embedded SQL database engine written in pure Dart
๐ Overview
NebulaDB is a lightweight, embedded relational database engine built entirely in Dart.
It provides a full SQL execution pipeline with persistent storage and Write-Ahead Logging (WAL).
โจ Features
- SQL parser & executor
- WHERE / JOIN / GROUP BY
- B-Tree indexing
- Page-based storage (4KB)
- WAL + crash recovery
- Basic transactions
๐ฆ Installation
dart pub add nebula_db
โก Quick Example
import 'nebula_db.dart';
void main() async {
final db = await NebulaDB.open('./my_db');
await db.execute('''
CREATE TABLE users (
id INT,
name TEXT,
age INT
)
''');
await db.execute("INSERT INTO users VALUES (1, 'Ahmed', 25)");
final result = await db.execute('SELECT * FROM users');
result.prettyPrint();
await db.close();
}
๐ฏ Use Cases
- Flutter apps (offline-first)
- Embedded/local databases
- Learning database internals
โ ๏ธ Limitations
- Single-process only
- No advanced concurrency yet
- Not designed for large-scale production
๐งช Testing
dart test
๐ License
MIT License
Libraries
- catalog/schema
- catalog/table_meta
- concurrency/lock_manager
- concurrency/lock_manager_v2
- concurrency/transaction_manager
- concurrency/transaction_manager_v2
- engine/database
- engine/row
- engine/table
- index/btree
- index/btree_v2
- index/index_selector
- mvcc/mvcc_persistence
- mvcc/mvcc_row
- mvcc/mvcc_table
- nebula_db
- optimizer/cbo_planner
- optimizer/cost_model
- optimizer/join_graph
- optimizer/statistics
- optimizer/statistics_v2
- relational/join_engine
- relational/relation_model
- sql/executor
- sql/lexer
- sql/parser
- sql/planner
- storage/byte_data_ext
- storage/cache
- storage/checkpoint
- storage/crash_recovery
- storage/crc32
- storage/page_header
- storage/page_table
- storage/pager
- storage/slotted_page
- storage/tuple_codec
- storage/vfs
- storage/vfs_io
- storage/vfs_stub
- storage/wal
- storage/wal_binary