ElyraSQL¶
A robust, MySQL-compatible SQL server written in Rust.
ElyraSQL stores an entire database in a single ACID file, speaks the MySQL wire protocol so existing clients and drivers work unchanged, and adds first-class vector search and parallel analytical (OLAP) aggregation — all under one brand.
- :material-database: **Single file, ACID**
The whole database is one crash-safe file with multi-version concurrency.
- :material-connection: **MySQL compatible**
Connect with `mysql`, DBeaver, or any MySQL driver in any language.
- :material-vector-line: **Vector native**
`VECTOR(n)` columns with exact and HNSW approximate nearest-neighbour search.
- :material-lightning-bolt: **Fast**
Sub-millisecond point lookups and cached ANN; joins and `ORDER BY ... LIMIT`
read only the columns a query uses, and stream instead of buffering.
Highlights¶
- Full SQL surface — DDL, CRUD,
JOIN(INNER/LEFT/RIGHT/FULL/CROSS, and non-equi conditions likeON a.id < b.id),WHERE,ORDER BY,LIMIT/OFFSET, aggregation withGROUP BY. - Rich types —
BIGINT,DOUBLE,TEXT,BLOB,BOOL,DATE,DATETIME,TIME,DECIMAL,JSON, andVECTOR. - Indexing — clustered primary keys (single or composite), secondary B-tree indexes, range scans, and HNSW vector indexes.
- Transactions —
BEGIN/COMMIT/ROLLBACKwith snapshot isolation. - Security —
mysql_native_passwordauth, TLS, and read/write/admin roles. - Operations — static Linux and native Apple Silicon macOS binaries, a systemd unit, and a ~15 MB Docker image.
Quick taste¶
CREATE TABLE docs (id BIGINT PRIMARY KEY, title TEXT, embedding VECTOR(3));
INSERT INTO docs VALUES (1, 'cat', '[1,0,0]'), (2, 'car', '[0,1,0]');
-- nearest neighbours to a query vector
SELECT id, title, VEC_DISTANCE(embedding, '[0.9,0.1,0]') AS dist
FROM docs ORDER BY dist LIMIT 5;
Continue to Getting Started.
Project status
ElyraSQL 1.0 is stable and follows Semantic Versioning. The feature set below is implemented, tested and regression-gated in CI; see Limitations for the honest list of what is not yet implemented or differs from MySQL.