- Notifications
You must be signed in to change notification settings - Fork54
KipData/KiteSQL
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation

KiteSQL is a lightweight embedded database inspired byMyRocks andSQLite and completely coded in Rust. It aims to provide a more user-friendly, lightweight, and low-loss RDBMS for Rust programming so that the APP does not rely on other complex components. It can perform complex relational data operations.
- A lightweight embedded SQL database fully rewritten in Rust
- Higher write speed, more user-friendly API
- All metadata and actual data in KV Storage, and there is no state component (e.g. system table) in the middle
- Supports extending storage for customized workloads
- Supports most of the SQL 2016 syntax
- Ships a WebAssembly build for JavaScript runtimes
- Build:
wasm-pack build --release --target nodejs(outputs to./pkg; use--target webor--target bundlerfor browser/bundler setups). - Usage:
import{WasmDatabase}from"./pkg/kite_sql.js";constdb=newWasmDatabase();awaitdb.execute("create table demo(id int primary key, v int)");awaitdb.execute("insert into demo values (1, 2), (2, 4)");constrows=db.run("select * from demo").rows();console.log(rows.map((r)=>r.values.map((v)=>v.Int32??v)));
- In Node.js, provide a small
localStorageshim if you enable statistics-related features (seeexamples/wasm_index_usage.test.mjs).
use kite_sql::db::{DataBaseBuilder,ResultIter};let kite_sql =DataBaseBuilder::path("./data").build()?;kite_sql.run("create table if not exists t1 (c1 int primary key, c2 int)")?.done()?;kite_sql.run("insert into t1 values(0, 0), (1, 1)")?.done()?;letmut iter = kite_sql.run("select * from t1")?;// Query schema is available on every result iterator.let column_names:Vec<_> = iter.schema().iter().map(|c| c.name()).collect();println!("columns: {column_names:?}");for tuplein iter{println!("{:?}", tuple?);}
👉more examples
runcargo run -p tpcc --release to run tpcc
- i9-13900HX
- 32.0 GB
- KIOXIA-EXCERIA PLUS G3 SSD
- Tips: TPC-C currently only supports single thread
<90th Percentile RT (MaxRT)> New-Order: 0.002 (0.018) Payment: 0.001 (0.024)Order-Status: 0.050 (0.067) Delivery: 0.021 (0.030) Stock-Level: 0.003 (0.005)<TpmC>8101 Tpmc
- GetSQL 2016 mostly supported
- LLVM JIT:Perf: TPCC
KiteSQL uses theApache 2.0 license to strike a balance betweenopen contributions and allowing you to use the software however you want.
About
SQL as a Function for Rust
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.