Crates.io | wql |
lib.rs | wql |
version | 0.1.3 |
source | src |
created_at | 2021-02-12 23:49:56.824603 |
updated_at | 2021-03-13 17:41:54.661679 |
description | Crate to parse WQL |
homepage | |
repository | https://github.com/naomijub/wooridb/wql |
max_upload_size | |
id | 354425 |
size | 97,111 |
WooriDB is a general purpose (EXPERIMENTAL) time serial database, which means it contains all entities registries indexed by DateTime. It is schemaless, key-value storage and uses its own query syntax that is similar to SparQL and Crux's Datalog.
Some other features are:
ENCRYPT
keyword.CHECK
keyword.Ron
schemas for input and output.
entity_name
(Entity Tree), DateTime
(Time Serial) and Uuid
(Entity ID). Entity format is a HashMap where keys are strings and values are supported Types
.S3
as a backend is to be developed.Postgres
as a backend is to be developed.DynamoDB
as a backend is to be developed.P
suffix.
98347883122138743294728345738925783257325789353593473247832493483478935673.9347324783249348347893567393473247832493483478935673P
.Config.toml
.Woori
means our
and although I developed this DB initially alone, it is in my culture to call everything that is done for our community and by our community ours.
This project is hugely inspired by:
Crux;
Professor Andy Pavlo Database classes.
To run WooriDB it is necessary to have Rust installed in the machine. There are two ways to do this:
Go to rustup.rs and copy the command there, for unix it is curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
.
Clone WooriDB and execute make setup
.
Release mode performance
: make release
in project root for performance optimization.Release mode size
: make run
in project root for size optimization.Debug mode
: make debug
in project root.you can find the latest docker image at naomijub/wooridb. The current most stable tag is beta-3
. To execute the docker container run:
docker run -p 1438:1438 naomijubs/wooridb:beta-3 debug
for debug mode.docker run -p 1438:1438 -e AUTH_HASHING_COST=8 -e ADMIN=your-admin-id -e ADMIN_PASSWORD=your-admin-pswd naomijubs/wooridb:beta-3 run
for size optimization.docker run -p 1438:1438 -e AUTH_HASHING_COST=8 -e ADMIN=your-admin-id -e ADMIN_PASSWORD=your-admin-pswd naomijubs/wooridb:beta-3 release
for performance optimization.-e/--env
can be replaced by a --env-file path/to/your/.env
. Your .env
file should contain the following fields:HASHING_COST=16
PORT=1438
AUTH_HASHING_COST=8
ADMIN=your-admin-id
ADMIN_PASSWORD=your-admin-pswd
RON
format. Support for JSON
and EDN
will be done later by using features.S3
, Postgres
and DynamoDB
will also be done later by using features.P
at the end.
UPDATE CONTENT
.INSERT {a: 98347883122138743294728345738925783257325789353593473247832493483478935673.9347324783249348347893567393473247832493483478935673P, } INTO my_entity
.BLOB
will not be supported. Check out To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem.HASHING_COST=16
PORT=1438
MacBook Pro, 2.2 GHz Intel Core i7, 16 GB 2400 MHz DDR4
create_entity
time: [15.269 ms 15.332 ms 15.396 ms]insert_entity
time: [27.438 ms 28.177 ms 28.958 ms]update_set_entity
time: [22.969 ms 23.382 ms 23.839 ms]update_content_entity
time: [23.181 ms 23.578 ms 24.037 ms]delete_entity
time: [41.999 ms 42.719 ms 43.492 ms] - Filtered 400sevict_entity_id
time: [41.387 ms 42.029 ms 42.731 ms] - Filtered 400sevict_entity
time: [31.582 ms 31.805 ms 32.039 ms] - Filtered 400sselect_all
20 entities time: [23.692 ms 24.183 ms 24.690 ms]select_all
10 entities time: [22.018 ms 22.301 ms 22.586 ms]select_all
1 entity time: [19.963 ms 20.679 ms 21.412 ms]