What is FnckSQL
FnckSQL individual developers independently implemented LSM KV-based SQL DBMS out of hobby. This SQL database will prove to you that anyone can write a database (even the core author cannot find a job). If you are also a database-related Enthusiastic, let us give this "beautiful" industry a middle fingerđź–•.
Welcome to our WebSite, Power By FnckSQL: http://www.kipdata.site/
Quick Started
Tips: Install rust toolchain first.
Clone the repository
git clone https://github.com/KipData/FnckSQL.git
then use psql
to enter sql
Using FnckSQL in code
let fnck_sql = path
.build
.await?;
let tuples = fnck_sql.run.await?;
Storage Support:
- KipDB
Docker
Pull Image
docker pull kould23333/fncksql:latest
Build From Source
git clone https://github.com/KipData/FnckSQL.git
cd FnckSQL
docker build -t kould23333/fncksql:latest .
Run
We installed the psql
tool in the image for easy debug.
You can use psql -h 127.0.0.1 -p 5432
to do this.
docker run -d \
--name=fncksql \
-p 5432:5432 \
--restart=always \
-v fncksql-data:/fnck_sql/fncksql_data \
-v /etc/localtime:/etc/localtime:ro \
kould23333/fncksql:latest
Features
- ORM Mapping:
features = ["marcos"]
implement_from_tuple!;
- User-Defined Function:
features = ["marcos"]
function!;
let fnck_sql = path
.register_function
.build
.await?;
- Optimizer
- RBO
- CBO based on RBO(Physical Selection)
- Execute
- Volcano
- Codegen on LuaJIT:
features = ["codegen_execute"]
- MVCC Transaction
- Optimistic
- Field options
- [not] null
- unique
- primary key
- SQL where options
- is [not] null
- [not] like
- [not] in
- Supports index type
- PrimaryKey
- Unique
- Normal
- Composite
- Supports multiple primary key types
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Char
- Varchar
- DDL
- Begin (Server only)
- Commit (Server only)
- Rollback (Server only)
- Create
- Table
- Index: Unique\Normal\Composite
- Drop
- Table
- Index
- Alert
- Add Column
- Drop Column
- Truncate
- DQL
- Select
- SeqScan
- IndexScan
- Where
- Distinct
- Alias
- Aggregation: count()/sum()/avg()/min()/max()
- SubQuery[select/from/where]
- Join: Inner/Left/Right/Full/Cross
- Group By
- Having
- Order By
- Limit
- Show Tables
- Explain
- Describe
- Union
- Select
- DML
- Insert
- Insert Overwrite
- Update
- Delete
- Analyze
- DataTypes
- Invalid
- SqlNull
- Boolean
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Float
- Double
- Char
- Varchar
- Date
- DateTime
- Time
- Tuple
Roadmap
- SQL 2016
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
Thanks For
- Fedomn/sqlrs: Main reference materials, Optimizer and Executor all refer to the design of sqlrs
- systemxlabs/bustubx
- duckdb/duckdb