SQL-RS
A lightweight, embedded database written in Rust that combines traditional relational database features with vector database capabilities.
Features
Core Database Features
- Traditional Database: B-tree based storage with ACID properties
- Vector Database: High-dimensional embeddings with similarity search
- CLI Interface: Simple command-line interface for all operations
- Single File: Database stored in a single file
- Rust Edition 2024: Modern Rust with latest features
Advanced Features
- Write-Ahead Logging (WAL): Durability and crash recovery support
- Transaction Support: BEGIN, COMMIT, ROLLBACK operations
- Full SQL Support: CREATE, INSERT, SELECT, UPDATE, DELETE, DROP TABLE
- WHERE Clauses: Filter data with comparison operators (=, !=, >, <, >=, <=)
- ORDER BY: Sort results in ascending or descending order
- LIMIT/OFFSET: Pagination support for query results
- Multiple Data Types: INTEGER, FLOAT, TEXT, BLOB, BOOLEAN, NULL
Installation
As a Library
Add this to your Cargo.toml:
[]
= "0.1"
Build from Source
Usage
Create a Database
Traditional Database Operations
Create a Table
Insert Data
Query Data
Update Data
Delete Data
Drop Table
Vector Database Operations
Create a Vector Collection
Add Vectors
Search Similar Vectors
Database Info
Architecture
SQL-RS follows a modular architecture:
- Storage Layer: Page-based B-tree storage with WAL and transaction support
- Vector Layer: HNSW index for approximate nearest neighbor search
- Query Engine: SQL parser and executor with full CRUD operations
- Transaction Manager: ACID-compliant transaction handling
- CLI Layer: Command-line interface using clap
Distance Metrics
sql_rs supports three distance metrics for vector similarity:
- Cosine: Measures angle between vectors (default)
- Euclidean: Measures straight-line distance
- Dot Product: Measures vector alignment
Performance
- Insert: >10k rows/sec
- Query: <10ms for indexed lookups
- Vector search: <100ms for 1M vectors (approximate)
- Memory footprint: <50MB for typical workloads
Examples
See the examples/ directory for complete usage examples.
Testing
Development
Built with:
- Rust Edition 2024: Latest Rust features and improvements
- clap: Command-line interface parsing
- serde/serde_json: Serialization and deserialization
- bincode: Binary encoding for efficient storage
- parking_lot: High-performance synchronization primitives
- memmap2: Memory-mapped file I/O
- thiserror/anyhow: Robust error handling
Project Structure
src/
├── lib.rs # Main library entry point
├── main.rs # CLI entry point
├── cli/ # Command-line interface
├── storage/ # B-tree, WAL, transactions
├── vector/ # HNSW index, similarity metrics
├── query/ # SQL parser and executor
└── types/ # Core data types and schemas
Running Tests
Examples
Basic Usage (examples/basic_usage.rs):
- Simple database operations
- Basic vector search
Comprehensive Demo (examples/comprehensive_demo.rs):
- All SQL operations (CREATE, INSERT, SELECT, UPDATE, DELETE, DROP)
- WHERE clause filtering with multiple operators
- Multiple data types (INTEGER, TEXT, FLOAT, BOOLEAN)
- Vector database with 384-dimensional embeddings
- Multiple distance metrics (Cosine, Euclidean, Dot Product)
- Vector search with metadata
- Performance benchmarking
- Complex data analysis
Run the comprehensive demo to see all features in action:
Building
Roadmap
See TODO.md for planned features and improvements.
Documentation
- ARCHITECTURE.md: Detailed system design and architecture
- TODO.md: Feature roadmap and planned improvements
- SPEC.md: Technical specifications