Skip to content

KipData/FnckSQL

Repository files navigation

Built by @KipData


███████╗███╗   ██╗ ██████╗██╗  ██╗    ███████╗ ██████╗ ██╗     
██╔════╝████╗  ██║██╔════╝██║ ██╔╝    ██╔════╝██╔═══██╗██║     
█████╗  ██╔██╗ ██║██║     █████╔╝     ███████╗██║   ██║██║     
██╔══╝  ██║╚██╗██║██║     ██╔═██╗     ╚════██║██║▄▄ ██║██║     
██║     ██║ ╚████║╚██████╗██║  ██╗    ███████║╚██████╔╝███████╗
╚═╝     ╚═╝  ╚═══╝ ╚═════╝╚═╝  ╚═╝    ╚══════╝ ╚══▀▀═╝ ╚══════╝

-----------------------------------
🖕

SQL as a Function for Rust

 

CI github star github fork

Introduction

FnckSQL is a lightweight embedded database inspired by MyRocks and SQLite 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. can perform complex relational data operations

Key Features

  • 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

Examples

let fnck_sql = DataBaseBuilder::path("./data").build()?;

fnck_sql
    .run("create table if not exists t1 (c1 int primary key, c2 int)")?
    .done()?;
fnck_sql
    .run("insert into t1 values(0, 0), (1, 1)")?
    .done()?;

for tuple in fnck_sql.run("select * from t1")? {
    println!("{:?}", tuple?);
}

👉more examples

TPC-C

run cargo run -p tpcc --release to run tpcc

  • i9-13900HX
  • 32.0 GB
  • YMTC PC411-1024GB-B
  • Tips: TPC-C currently only supports single thread
<90th Percentile RT (MaxRT)>
   New-Order : 0.003  (0.012)
     Payment : 0.001  (0.003)
Order-Status : 0.054  (0.188)
    Delivery : 0.021  (0.049)
 Stock-Level : 0.004  (0.006)
<TpmC>
7345 Tpmc

Roadmap

License

FnckSQL uses the Apache 2.0 license to strike a balance between open contributions and allowing you to use the software however you want.

Contributors