Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Prototype database for designing database kernel

License

NotificationsYou must be signed in to change notification settings

daviszhen/plan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

单机事务数据库内核。

围绕执行tpch query而设计的,有计算引擎和存储引擎。

文档:快速实现数据库内核

两个bin:

plandb:psql交互执行

tester:非交互。

支持的语句

  1. create schema创建schema. 内置的schema是public
create schema if not exists s1;
  1. create table创建表。
CREATE TABLE NATION  ( N_NATIONKEY  INTEGER NOT NULL,N_NAME       VARCHAR(25) /*CHAR(25)*/ NOT NULL,N_REGIONKEY  INTEGER NOT NULL,N_COMMENT    VARCHAR(152),PRIMARY KEY (N_NATIONKEY));
  1. copy从parquet,csv文件中导入数据到表中。
copy nationfrom '/home/pengzhen/Documents/tpch-parquet/nation.parquet'with (FORMAT 'parquet');
  1. insert ... values

  2. tpch 22条query

tpch query 1

selectl_returnflag,l_linestatus,sum(l_quantity) as sum_qty,sum(l_extendedprice) as sum_base_price,sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,avg(l_quantity) as avg_qty,avg(l_extendedprice) as avg_price,avg(l_discount) as avg_disc,count(*) as count_orderfromlineitemwherel_shipdate <= date '1998-12-01' - interval '112 day'group byl_returnflag,l_linestatusorder byl_returnflag,l_linestatus;

plandb

使用psql连接交互执行。

make plandb./plandbpsql -h 127.0.0.1

tester

make tester

配置

配置文件tester.toml

配置文件搜索路径。以下路径都没有配置文件,报错退出。

././etc/tpch/1g/

执行sql

执行支持的语句。不限于tpch的query.

tester tpch1gddl --ddl'sql'

导入tpch1g的数据

创建tpch表并从parquet中导入数据。

tester tpch1gddl--ddl "CREATETABLENATION  ( N_NATIONKEYINTEGERNOT NULL,N_NAMEVARCHAR(25)/*CHAR(25)*/NOT NULL,N_REGIONKEYINTEGERNOT NULL,N_COMMENTVARCHAR(152),PRIMARY KEY (N_NATIONKEY));CREATETABLEREGION  ( R_REGIONKEYINTEGERNOT NULL,R_NAMEVARCHAR(25)/*CHAR(25)*/NOT NULL,R_COMMENTVARCHAR(152),PRIMARY KEY (R_REGIONKEY));CREATETABLEPART  ( P_PARTKEYINTEGERNOT NULL,  P_NAMEVARCHAR(55)NOT NULL,  P_MFGRVARCHAR(25)/*CHAR(25)*/NOT NULL,  P_BRANDVARCHAR(10)/*CHAR(10)*/NOT NULL,  P_TYPEVARCHAR(25)NOT NULL,  P_SIZEINTEGERNOT NULL,  P_CONTAINERVARCHAR(10)/*CHAR(10)*/NOT NULL,  P_RETAILPRICEDECIMAL(15,2)NOT NULL,  P_COMMENTVARCHAR(23)NOT NULL,PRIMARY KEY (P_PARTKEY));CREATETABLESUPPLIER ( S_SUPPKEYINTEGERNOT NULL, S_NAMEVARCHAR(25)/*CHAR(25)*/NOT NULL, S_ADDRESSVARCHAR(40)NOT NULL, S_NATIONKEYINTEGERNOT NULL, S_PHONEVARCHAR(15)/*CHAR(15)*/NOT NULL, S_ACCTBALDECIMAL(15,2)NOT NULL, S_COMMENTVARCHAR(101)NOT NULL,PRIMARY KEY (S_SUPPKEY));CREATETABLEPARTSUPP ( PS_PARTKEYINTEGERNOT NULL, PS_SUPPKEYINTEGERNOT NULL, PS_AVAILQTYINTEGERNOT NULL, PS_SUPPLYCOSTDECIMAL(15,2)NOT NULL, PS_COMMENTVARCHAR(199)NOT NULL,PRIMARY KEY (PS_PARTKEY, PS_SUPPKEY));CREATETABLECUSTOMER ( C_CUSTKEYINTEGERNOT NULL, C_NAMEVARCHAR(25)NOT NULL, C_ADDRESSVARCHAR(40)NOT NULL, C_NATIONKEYINTEGERNOT NULL, C_PHONEVARCHAR(15)/*CHAR(15)*/NOT NULL, C_ACCTBALDECIMAL(15,2)NOT NULL, C_MKTSEGMENTVARCHAR(10)/*CHAR(10)*/NOT NULL, C_COMMENTVARCHAR(117)NOT NULL,PRIMARY KEY (C_CUSTKEY));CREATETABLEORDERS  ( O_ORDERKEYBIGINTNOT NULL,   O_CUSTKEYINTEGERNOT NULL,   O_ORDERSTATUSVARCHAR(1)/*CHAR(1)*/NOT NULL,   O_TOTALPRICEDECIMAL(15,2)NOT NULL,   O_ORDERDATEDATENOT NULL,   O_ORDERPRIORITYVARCHAR(15)/*CHAR(15)*/NOT NULL,     O_CLERKVARCHAR(15)/*CHAR(15)*/NOT NULL,    O_SHIPPRIORITYINTEGERNOT NULL,   O_COMMENTVARCHAR(79)NOT NULL,PRIMARY KEY (O_ORDERKEY));CREATETABLELINEITEM ( L_ORDERKEYBIGINTNOT NULL, L_PARTKEYINTEGERNOT NULL, L_SUPPKEYINTEGERNOT NULL, L_LINENUMBERINTEGERNOT NULL, L_QUANTITYINTEGER/*DECIMAL(15,2)*/NOT NULL, L_EXTENDEDPRICEDECIMAL(15,2)NOT NULL, L_DISCOUNTDECIMAL(15,2)NOT NULL, L_TAXDECIMAL(15,2)NOT NULL, L_RETURNFLAGVARCHAR(1)NOT NULL, L_LINESTATUSVARCHAR(1)NOT NULL, L_SHIPDATEDATENOT NULL, L_COMMITDATEDATENOT NULL, L_RECEIPTDATEDATENOT NULL, L_SHIPINSTRUCTVARCHAR(25)/*CHAR(25)*/NOT NULL, L_SHIPMODEVARCHAR(10)/*CHAR(10)*/NOT NULL, L_COMMENTVARCHAR(44)NOT NULL,PRIMARY KEY (L_ORDERKEY, L_LINENUMBER));copy nationfrom'/home/pengzhen/Documents/tpch-parquet/nation.parquet'with (FORMAT'parquet');copy regionfrom'/home/pengzhen/Documents/tpch-parquet/region.parquet'with (FORMAT'parquet');copy partfrom'/home/pengzhen/Documents/tpch-parquet/part.parquet'with (FORMAT'parquet');copy supplierfrom'/home/pengzhen/Documents/tpch-parquet/supplier.parquet'with (FORMAT'parquet');copy partsuppfrom'/home/pengzhen/Documents/tpch-parquet/partsupp.parquet'with (FORMAT'parquet');copy customerfrom'/home/pengzhen/Documents/tpch-parquet/customer.parquet'with (FORMAT'parquet');copy ordersfrom'/home/pengzhen/Documents/tpch-parquet/orders.parquet'with (FORMAT'parquet');copy lineitemfrom'/home/pengzhen/Documents/tpch-parquet/lineitem.parquet'with (FORMAT'parquet');"

执行tpch1g

testerhelp tpch1g//测试tpch querytester tpch1g  --query_id int     运行指定序号的query。范围[1,22]。为0时,按顺序执行22条query。  --data_path string    tpch1g 数据位置  --data_format string    tpch1g 数据格式。csv,parquet  --result_path string    query结果位置  --need_headline bool    query结果第一行为headline行

tpch1g测试结果

**注意:在忽略精度和结果标题前提下,进行对比

tpch 1g qXstatus与duckdb相同与mo相同
q1rightyy
q2rightn (s_ddress,s_comment 不同)y
q3rightyy
q4rightyy
q5rightyy
q6rightyy
q7rightyy
q8rightyy
q9rightyy
q10right (use topN further)n (c_address,c_comment 不同)y
q11rightyy
q12rightyy
q13almost right. (duckdb convert left join to inner join)nalmost y. count(NULL) is diff
q14rightyy
q15rightn (s_address 不同)y
q16rightyy
q17rightyy
q18rightyy
q19rightyy
q20rightn (s_address 不同)y
q21rightyy
q22rightyy

**

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp