ToyDB使用手册

编译

cd /HybridSE
mkdir build 
cmake .. -DEXAMPLES_ENABLE=ON 
make -j4 hybridse_proto && make -j4 hybride_parser && make toydb -j4

启动 ToyDB

cd /HybridSE/examples/toydb/onebox
sh start_all.sh
sh start_cli.sh

启动dbms

BUILD_DIR=$PROJECT_ROOT/build/examples/toydb
"$BUILD_DIR/src/toydb" --role=dbms  --toydb_port=9211 > dbms.log 2>&1 &
sleep 5

启动tablet

BUILD_DIR=$PROJECT_ROOT/build/examples/toydb
"$BUILD_DIR/src/toydb" --role=tablet --toydb_endpoint=127.0.0.1:9212 --toydb_port=9212 --dbms_endpoint=127.0.0.1:9211 > tablet.log 2>&1 &
sleep 5

启动控制台客户端

BUILD_DIR=$PROJECT_ROOT/build/examples/toydb
"${BUILD_DIR}/src/toydb" --role=client --tablet_endpoint=127.0.0.1:9212 --toydb_endpoint=127.0.0.1:9211

ToyDB examples

数据库操作

Create database

CREATE DATABASE db_name

Go into database

USE db_name;

Show databse list

 SHOW DATABASES;

表操作

Create table

-- create table t1
create table IF NOT EXISTS t1(
    column1 int NOT NULL,
    column2 int NOT NULL,
    column3 float NOT NULL,
    column4 bigint NOT NULL,
    column5 int NOT NULL,
    column6 string,
    index(key=column1, ts=column4)
);

Show table schema

DESC t1;
+---------+---------+------+
| Field   | Type    | Null |
+---------+---------+------+
| column1 | kInt64  | NO   |
| col2    | kString | NO   |
| col3    | kFloat  | NO   |
+---------+---------+------+

Show table list

SHOW TABLES;

Insert data

-- prepare t1 data 
insert into t1 values(1, 2, 3.3, 1000, 5, "hello");
insert into t1 values(1, 3, 4.4, 2000, 6, "world");
insert into t1 values(11, 4, 5.5, 3000, 7, "string1");
insert into t1 values(11, 5, 6.6, 4000, 8, "string2");
insert into t1 values(11, 6, 7.7, 5000, 9, "string3");
insert into t1 values(1, 2, 3.3, 1000, 5, "hello");
insert into t1 values(1, 3, 4.4, 2000, 6, "world");
insert into t1 values(11, 4, 5.5, 3000, 7, "string1");
insert into t1 values(11, 5, 6.6, 4000, 8, "string2");
insert into t1 values(11, 6, 7.7, 5000, 9, "string3");

SQL查询

Simple query statement

-- simple query 
SELECT column1, column2, column1 + (2*column5) as f1 FROM t1 limit 10;

Window query statement

-- window query t1
select
sum(column1) OVER w1 as w1_col1_sum, 
sum(column2) OVER w1 as w1_col2_sum, 
sum(column3) OVER w1 as w1_col3_sum, 
sum(column4) OVER w1 as w1_col4_sum, 
sum(column5) OVER w1 as w1_col5_sum 
FROM t1 WINDOW w1 AS (PARTITION BY column1 ORDER BY column4 ROWS BETWEEN 3000 PRECEDING AND CURRENT ROW) limit 100;

Last updated