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
Clone the repository
git clone https://github.com/KipData/FnckSQL.git
Install rust toolchain first.
cargo run
Example
(id int primary key, title varchar unique);
insert into blog (id, title) values (0, 'FnckSQL'), (1, 'KipDB');
update blog set title = 'KipData' where id = 2;
select * from blog order by title desc nulls first
select count(distinct id) from blog;
delete from blog where title like 'Kip%';
truncate table blog;
blog;
Using FnckSQL in code
let fnck_sql = with_kipdb.await?;
let tupes = db.run.await?;
Storage Support:
- KipDB
Features
- ORM Mapping:
features = ["marcos"]
implement_from_tuple!;
- 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
- Unique Index
- Supports multiple primary key types
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Varchar
- DDL
- Create
- Table
- Index
- Drop
- Table
- Index
- Alert
- Add Column
- Drop Column
- Truncate
- Create
- DQL
- Select
- SeqScan
- IndexScan
- Where
- Distinct
- Alias
- Aggregation: count()/sum()/avg()/min()/max()
- SubQuery(from)
- Join: Inner/Left/Right/Full Cross(x)
- Group By
- Having
- Order By
- Limit
- Show Tables
- Explain
- Select
- DML
- Insert
- Insert Overwrite
- Update
- Delete
- Analyze
- DataTypes
- Invalid
- SqlNull
- Boolean
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Float
- Double
- Varchar
- Date
- DateTime
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.
Thanks For
- Fedomn/sqlrs: Main reference materials, Optimizer and Executor all refer to the design of sqlrs
- systemxlabs/bustubx
- duckdb/duckdb