多种单文件版分析型数据库调用底层函数对比
研究对象:duckdb, glaredb, cedardb, clickhouse, datafusion-cli
数据准备:
用nm -D |grep " U"
仅查询导入函数。
nm -D duckdb130 |grep " U" > due.h
nm -D glaredb |grep " U" > gla.h
nm -D cedardb723 |grep " U" > cdr.h
nm -D clickhouse |grep " U" > cck.h
nm -D datafusion-cli |grep " U" > daf.h
保存数据到duckdb:
create table t(db varchar, func varchar);insert into t select 'duckdb',i from read_csv('due.h',header=0)t(i);
insert into t select 'glaredb',i from read_csv('gla.h',header=0)t(i);
insert into t select 'cedardb',i from read_csv('cdr.h',header=0)t(i);
insert into t select 'clickhouse',i from read_csv('cck.h',header=0)t(i);
insert into t select 'datafusion',i from read_csv('daf.h',header=0)t(i);
统计
概况
1.各种数据库导入函数计数
D select db,count(*)cnt from t group by db order by db;
┌────────────┬───────┐
│ db │ cnt │
│ varchar │ int64 │
├────────────┼───────┤
│ cedardb │ 413 │
│ clickhouse │ 533 │
│ datafusion │ 242 │
│ duckdb │ 429 │
│ glaredb │ 159 │
└────────────┴───────┘
2.各种数据库均导入的函数计数
D select count(*)cnt from (select func,count(*)cnt from t group by func having cnt=5);
┌───────┐
│ cnt │
│ int64 │
├───────┤
│ 52 │
└───────┘
3.哪些数据库用到了文件内存映射函数
D select db from t where func like '%munmap%';
┌────────────┐
│ db │
│ varchar │
├────────────┤
│ duckdb │
│ glaredb │
│ cedardb │
│ clickhouse │
│ datafusion │
└────────────┘
4.哪些数据库用到了文件缓冲输出函数
D select db from t where func like '%setvbuf%';
┌────────────┐
│ db │
│ varchar │
├────────────┤
│ duckdb │
│ cedardb │
│ clickhouse │
└────────────┘
5.比较不同数据库之间公用函数的计数
D select t.db tdb, t1.db t1db,count(*)cnt from t join t t1 on(t.db<t1.db and t.func=t1.func )group by tdb,t1db order by cnt,1,2;
┌────────────┬────────────┬───────┐
│ tdb │ t1db │ cnt │
│ varchar │ varchar │ int64 │
├────────────┼────────────┼───────┤
│ duckdb │ glaredb │ 74 │
│ datafusion │ duckdb │ 97 │
│ clickhouse │ glaredb │ 108 │
│ cedardb │ glaredb │ 109 │
│ datafusion │ glaredb │ 135 │
│ clickhouse │ datafusion │ 141 │
│ cedardb │ datafusion │ 144 │
│ cedardb │ duckdb │ 185 │
│ clickhouse │ duckdb │ 192 │
│ cedardb │ clickhouse │ 291 │
├────────────┴────────────┴───────┤
│ 10 rows 3 columns │
└─────────────────────────────────┘