Skip to content

Commit 3ff6e60

Browse files
committed
Merge remote-tracking branch 'upstream/main' into questdb-7.3.10
2 parents 5309ebd + 88f4ca2 commit 3ff6e60

File tree

9 files changed

+313
-0
lines changed

9 files changed

+313
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,8 @@ We also introduced the [Hardware Benchmark](https://benchmark.clickhouse.com/har
283283
- [x] GlareDB
284284
- [ ] Seafowl
285285
- [ ] Sneller
286+
- [x] Tablespace
287+
- [x] Tembo
286288

287289
By default, all tests are run on c6a.4xlarge VM in AWS with 500 GB gp2.
288290

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@
433433
,{"system":"StarRocks","date":"2022-09-25","machine":"c6a.4xlarge, 500gb gp2","cluster_size":1,"comment":"","tags":["C++","column-oriented","MySQL compatible","ClickHouse derivative"],"load_time":492,"data_size":17233927256,"result":[[0.04,0.02,0.02],[0.21,0.03,0.04],[1.88,0.07,0.07],[3.4,0.09,0.1],[0.37,0.34,0.33],[2.71,0.88,0.84],[0.03,0.02,0.02],[0.06,0.03,0.03],[1.66,0.53,0.47],[1.58,1.52,1.47],[0.68,0.1,0.11],[1.26,0.12,0.12],[0.54,0.54,0.54],[0.99,0.96,0.99],[0.81,0.77,0.8],[0.41,0.39,0.4],[1.45,1.49,1.52],[0.52,0.52,0.51],[2.98,2.6,2.56],[0.02,0.01,0],[12.97,1.1,1.11],[14.84,0.91,0.94],[27.68,1.96,1.94],[46.49,1.49,1.22],[0.16,0.11,0.07],[0.94,0.12,0.12],[0.06,0.05,0.04],[13.99,1.44,1.42],[11.58,10.2,10.37],[0.22,0.1,0.11],[4.6,0.38,0.36],[4.15,0.53,0.52],[3.54,3.48,3.48],[15.22,6.08,6.17],[14.9,6.34,6.31],[1.86,0.59,0.51],[0.99,0.09,0.08],[0.42,0.05,0.05],[0.15,0.04,0.04],[1.27,0.18,0.18],[0.32,0.04,0.03],[0.11,0.03,0.04],[0.08,0.03,0.02]],"source":"starrocks/results/c6a.4xlarge.json"}
434434
,{"system":"StarRocks","date":"2023-02-10","machine":"c6a.metal, 500gb gp2","cluster_size":1,"comment":"","tags":["C++","column-oriented","MySQL compatible","ClickHouse derivative"],"load_time":433,"data_size":17705230744,"result":[[0.04,0.04,0.03],[0.12,0.03,0.03],[0.66,0.06,0.06],[2.08,0.08,0.06],[0.1,0.08,0.09],[2.19,0.22,0.21],[0.04,0.02,0.03],[0.06,0.04,0.04],[0.99,0.12,0.12],[0.73,0.74,0.7],[0.13,0.06,0.05],[1.04,0.06,0.07],[0.17,0.18,0.17],[0.23,0.23,0.23],[0.54,0.18,0.18],[0.09,0.09,0.08],[0.31,0.32,0.3],[0.12,0.1,0.11],[1.27,0.48,0.44],[0.01,0.01,0],[12.09,0.17,0.15],[0.17,0.13,0.12],[10.91,0.28,0.24],[28.25,0.86,1.36],[0.03,0.03,0.02],[0.06,0.04,0.04],[0.02,0.03,0.02],[0.63,0.24,0.21],[8.77,1.6,1.64],[0.12,0.1,0.1],[1.33,0.13,0.13],[3.46,0.18,0.19],[0.97,0.86,0.86],[0.95,0.96,0.98],[0.96,0.97,0.97],[0.14,0.12,0.14],[0.07,0.06,0.06],[0.05,0.04,0.04],[0.04,0.03,0.03],[0.1,0.09,0.09],[0.47,0.03,0.03],[0.25,0.03,0.03],[0.04,0.03,0.03]],"source":"starrocks/results/c6a.metal.json"}
435435
,{"hide":false,"system":"Tablespace","date":"2024-02-25","machine":"L1 - 16CPU 32GB","cluster_size":1,"comment":"","tags":["C","Rust","row-oriented","column-oriented","PostgreSQL compatible","managed","analytical"],"load_time":13711,"data_size":135469176422,"result":[[0.436542,0.032826,0.058116],[0.475804,0.06273,0.069842],[0.221264,0.118931,0.108054],[1.13058,0.110611,0.107611],[0.842296,0.840424,0.84895],[2.84863,1.22785,1.17402],[0.009753,0.002873,0.003417],[0.195597,0.098896,0.074905],[1.70796,1.37998,1.54147],[1.4772,1.33613,1.31476],[0.373194,0.340836,0.338413],[0.375037,0.361468,0.378387],[1.16898,1.22366,1.21796],[2.09798,2.94135,2.16265],[1.52902,1.34797,1.2899],[0.972571,0.981924,0.914636],[2.43485,2.58636,2.75724],[0.005437,0.003755,0.003427],[5.30082,5.16673,5.20788],[0.006782,0.002805,0.002702],[16.7202,0.179415,0.169258],[0.210038,0.180524,0.174665],[23.7864,0.2504,0.242016],[0.183456,0.173261,0.17237],[0.048444,0.003245,0.003059],[0.007258,0.003278,0.003245],[0.015761,0.003279,0.003193],[22.3888,1.79019,1.70748],[17.1564,4.59906,18.7535],[0.599159,0.572579,0.5331],[1.20788,1.13153,1.1528],[3.71611,1.39238,1.40143],[8.40708,8.20716,7.2647],[46.2087,5.43577,45.5534],[6.23327,6.50139,6.08041],[2.44898,2.23633,2.08641],[0.42763,0.352619,0.30957],[0.678261,0.476425,0.445909],[0.179801,0.154265,0.160855],[0.776884,0.791492,0.785599],[0.171634,0.11076,0.090103],[0.110994,0.084385,0.084405],[0.103362,0.10878,0.093837]],"source":"tablespace/results/large-1.json"}
436+
,{"system":"Tembo OLAP (columnar)","date":"2024-02-09","machine":"c6a.4xlarge, 500gb gp3","cluster_size":1,"comment":"","tags":["C","PostgreSQL compatible","column-oriented"],"load_time":4903,"data_size":33864704000,"result":[[0.335424,0.288406,0.291833],[0.273387,0.276144,0.280566],[1.04303,1.03311,1.02745],[0.699428,0.698998,0.701829],[23.4004,23.0228,23.3303],[35.6514,35.9655,36.1087],[0.091153,0.074667,0.076713],[0.27855,0.276916,0.278651],[27.9524,27.7416,27.1891],[30.495,31.5809,30.8035],[2.98169,3.01209,2.96031],[3.36352,3.38749,3.32161],[9.25541,9.33663,9.30109],[10.6757,10.6452,10.352],[10.0414,9.99654,9.95628],[23.6013,23.7551,24.0158],[27.5649,26.7495,27.0685],[0.422969,0.37809,0.382737],[46.2609,46.2509,46.5879],[0.312248,0.312461,0.319174],[2.71278,2.74919,2.66242],[2.85679,2.8941,2.91063],[3.79428,3.82795,3.76534],[21.6777,21.8457,22.4842],[1.55266,1.4268,1.42082],[0.3739,0.336904,0.343475],[1.23959,1.22557,1.23188],[4.89249,4.94013,4.92233],[42.7291,42.4905,42.5116],[8.16955,8.15319,8.1022],[11.0438,10.8213,10.9278],[18.9006,18.1182,17.7459],[72.6787,71.4905,72.13],[44.2683,42.1593,42.9159],[44.1782,44.6741,44.1548],[17.2926,18.1069,17.8896],[0.393598,0.395635,0.394274],[0.234447,0.237086,0.196967],[0.108035,0.125385,0.117379],[0.78023,0.826582,0.806038],[0.106995,0.113052,0.118778],[0.120202,0.11803,0.119093],[0.153295,0.150266,0.151742]],"source":"tembo-olap/results/tembo-olap-col-c6a.json"}
436437
,{"system":"TimescaleDB (compression)","date":"2022-07-01","machine":"c6a.4xlarge, 500gb gp2","cluster_size":1,"comment":"","tags":["C","PostgreSQL compatible","column-oriented","time-series"],"load_time":4605,"data_size":20333747165,"result":[[2.28686,1.63642,1.64263],[32.6848,1.63476,1.40052],[60.8633,3.70484,3.59342],[36.4029,2.87091,2.80739],[110.391,38.9688,38.0549],[147.379,66.2513,65.6379],[33.0294,2.92031,2.84375],[33.0221,1.2984,1.19227],[115.694,47.4651,47.0125],[156.347,51.577,51.2694],[68.3301,4.75521,4.68007],[77.4356,5.55128,5.56577],[49.7741,11.2911,11.3265],[81.1014,14.9111,14.9541],[82.9569,14.6156,14.6331],[62.0338,26.399,26.3351],[103.259,36.4122,36.6076],[92.8828,26.2395,25.8991],[144.281,63.5102,63.7661],[7.00679,0.573073,0.536283],[75.0203,7.86344,7.90495],[81.2825,9.15868,9.01775],[104.084,13.9528,13.8435],[132.531,81.522,82.1561],[80.6965,3.28231,3.16574],[39.7693,2.51443,2.43849],[80.4245,3.26941,3.13916],[104.015,13.7044,13.5313],[307.26,253.127,252.147],[42.8549,22.4187,22.0325],[137.601,14.9592,14.6804],[136.767,22.8007,22.131],[263.005,168.551,163.355],[156.919,92.6308,91.702],[160.842,96.0512,97.1773],[62.8357,28.0336,28.7397],[1.75869,0.561604,0.541215],[0.46607,0.191863,0.19021],[0.303671,0.137579,0.136615],[2.32031,1.49223,1.52369],[0.563764,0.14192,0.138234],[0.372428,0.122989,0.123709],[0.448574,0.159092,0.154687]],"source":"timescaledb-compressed/results/c6a.4xlarge.json"}
437438
,{"system":"TimescaleDB","date":"2022-07-01","machine":"c6a.4xlarge, 500gb gp2","cluster_size":1,"comment":"","tags":["C","PostgreSQL compatible","row-oriented","time-series"],"load_time":1620,"data_size":72882392030,"result":[[437.7,215.793,176.42],[327.026,259.568,244.578],[262.978,263.09,263.083],[262.807,263.046,266.847],[337.497,334.964,330.852],[355.689,356.801,362.894],[262.762,263.012,262.968],[263.055,263.016,263.028],[319.928,319.388,320.704],[323.584,322.224,322.488],[265.979,265.465,265.375],[266.019,265.543,265.462],[277.018,276.3,276.595],[280.352,279.251,279.572],[279.915,279.896,279.674],[296.377,298.506,297.659],[314.448,314.605,312.57],[302.668,302.672,303.039],[325.81,324.061,324.376],[262.447,262.698,262.704],[267.581,267.467,267.482],[268.085,267.466,267.696],[263.391,263.097,263.126],[38.291,0.435,0.335],[0.127,0.005,0.005],[263.138,263.1,263.092],[0.889,0.341,0.339],[267.586,267.498,267.491],[289.086,290.012,290.093],[263.22,263.071,263.109],[274.78,273.995,273.998],[282.217,281.39,281.47],[429.273,426.588,439.431],[448.808,418.724,418.207],[455.196,422.75,423.142],[299.263,296.937,297.261],[18.693,1.552,1.481],[18.125,0.945,0.937],[18.528,1.062,0.902],[18.268,1.779,1.77],[19.615,1.965,1.966],[18.97,1.435,1.43],[18.33,1.153,0.952]],"source":"timescaledb/results/c6a.4xlarge.json"}
438439
,{"system":"Umbra","date":"2024-02-05","machine":"c6a.4xlarge, 500gb gp2","cluster_size":1,"tags":["C++","column-oriented","PostgreSQL compatible"],"load_time":505.913,"data_size":36477780830,"result":[[0.030601,0.010866,0.011101],[0.33904,0.003698,0.003548],[0.645752,0.027352,0.026303],[0.719249,0.026984,0.026267],[0.727638,0.13537,0.133211],[2.0782,0.252201,0.255137],[0.338405,0.027632,0.027376],[0.309864,0.004253,0.004158],[1.61685,0.243389,0.263255],[3.01982,0.51973,0.524606],[1.08709,0.033062,0.032059],[1.46887,0.037179,0.035897],[2.0821,0.216457,0.215829],[3.92123,0.391088,0.395779],[2.48072,0.233635,0.21876],[0.765295,0.18303,0.18472],[3.88406,0.518152,0.541263],[3.8342,0.459446,0.476508],[7.15095,0.868591,0.862418],[0.674124,0.001847,0.001711],[18.1118,0.276739,0.27634],[21.1296,0.085333,0.083386],[35.0997,0.143139,0.141073],[122.717,118.44,116.582],[5.06751,0.009433,0.009186],[2.00484,0.00967,0.009456],[5.07312,0.038766,0.038597],[18.5152,0.269536,0.271205],[13.2374,2.55058,2.54432],[0.465351,0.022607,0.021943],[4.74853,0.13671,0.133112],[7.54723,0.204112,0.20182],[5.16736,1.29808,1.30411],[18.7229,1.4329,1.42222],[18.6891,1.47666,1.50563],[0.706767,0.194858,0.196652],[19.6567,0.01349,0.013724],[12.869,0.008628,0.009058],[1.23511,0.019785,0.019251],[34.5888,0.030742,0.027173],[0.503624,0.015988,0.015614],[0.288441,0.016486,0.016809],[3.59948,0.005299,0.005082]],"source":"umbra/results/c6a.4xlarge.json"}

tembo-olap/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Instantiation
2+
3+
1) Create Account and Login to https://cloud.tembo.io
4+
2) Select OLAP Stack after clicking Create Instance button
5+
6+
## Choose System Configuration:
7+
8+
**Instance Type**: Compute Optimized (CI-32)
9+
10+
**CPU**: 16vCPU
11+
12+
**RAM** : 32GB
13+
14+
**Storage**: 500GB
15+
16+
Note: instance creation takes *20-25* seconds.
17+
18+
## Specify Connection params
19+
Tembo provides connection-string through instance **Home** tab.
20+
21+
Use hostname and password taken from Tembo console and specify them in benchmark.sh
22+
```
23+
HOSTNAME="<hostname>"
24+
PASSWORD="<password>"
25+
```
26+
27+
## Start Benchmark
28+
29+
```
30+
./benchmark.sh
31+
```

tembo-olap/benchmark.sh

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/bin/bash
2+
3+
HOSTNAME="<hostname>"
4+
PASSWORD="<password>"
5+
6+
sudo apt-get update
7+
sudo apt-get install -y postgresql-client
8+
9+
wget --no-verbose --continue 'https://datasets.clickhouse.com/hits_compatible/hits.tsv.gz'
10+
gzip -d hits.tsv.gz
11+
chmod 777 ~ hits.tsv
12+
13+
psql postgresql://postgres:$PASSWORD@$HOSTNAME:5432 -t -c 'CREATE DATABASE test'
14+
psql "host=$HOSTNAME port=5432 dbname=test user=postgres password=$PASSWORD sslmode=require" < create.sql
15+
psql "host=$HOSTNAME port=5432 dbname=test user=postgres password=$PASSWORD sslmode=require" -t -c '\timing' -c "\\copy hits FROM 'hits.tsv'"
16+
psql "host=$HOSTNAME port=5432 dbname=test user=postgres password=$PASSWORD sslmode=require" < index.sql
17+
psql "host=$HOSTNAME port=5432 dbname=test user=postgres password=$PASSWORD sslmode=require" -t -c '\timing' -c "select pg_total_relation_size('hits');"
18+
19+
./run.sh "${HOSTNAME}" "${PASSWORD}" 2>&1 | tee log.txt
20+
21+
cat log.txt |
22+
grep -oP 'Time: \d+\.\d+ ms' |
23+
sed -r -e 's/Time: ([0-9]+\.[0-9]+) ms/\1/' |
24+
awk '{
25+
if (i % 3 == 0) {
26+
printf "[";
27+
}
28+
printf $1 / 1000;
29+
if (i % 3 != 2) {
30+
printf ",";
31+
} else {
32+
print "],";
33+
}
34+
++i;
35+
}'

tembo-olap/create.sql

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
CREATE EXTENSION IF NOT EXISTS COLUMNAR;
2+
DROP TABLE IF EXISTS hits CASCADE;
3+
CREATE TABLE hits
4+
(
5+
WatchID BIGINT NOT NULL,
6+
JavaEnable SMALLINT NOT NULL,
7+
Title TEXT NOT NULL,
8+
GoodEvent SMALLINT NOT NULL,
9+
EventTime TIMESTAMP NOT NULL,
10+
EventDate Date NOT NULL,
11+
CounterID INTEGER NOT NULL,
12+
ClientIP INTEGER NOT NULL,
13+
RegionID INTEGER NOT NULL,
14+
UserID BIGINT NOT NULL,
15+
CounterClass SMALLINT NOT NULL,
16+
OS SMALLINT NOT NULL,
17+
UserAgent SMALLINT NOT NULL,
18+
URL TEXT NOT NULL,
19+
Referer TEXT NOT NULL,
20+
IsRefresh SMALLINT NOT NULL,
21+
RefererCategoryID SMALLINT NOT NULL,
22+
RefererRegionID INTEGER NOT NULL,
23+
URLCategoryID SMALLINT NOT NULL,
24+
URLRegionID INTEGER NOT NULL,
25+
ResolutionWidth SMALLINT NOT NULL,
26+
ResolutionHeight SMALLINT NOT NULL,
27+
ResolutionDepth SMALLINT NOT NULL,
28+
FlashMajor SMALLINT NOT NULL,
29+
FlashMinor SMALLINT NOT NULL,
30+
FlashMinor2 TEXT NOT NULL,
31+
NetMajor SMALLINT NOT NULL,
32+
NetMinor SMALLINT NOT NULL,
33+
UserAgentMajor SMALLINT NOT NULL,
34+
UserAgentMinor VARCHAR(255) NOT NULL,
35+
CookieEnable SMALLINT NOT NULL,
36+
JavascriptEnable SMALLINT NOT NULL,
37+
IsMobile SMALLINT NOT NULL,
38+
MobilePhone SMALLINT NOT NULL,
39+
MobilePhoneModel TEXT NOT NULL,
40+
Params TEXT NOT NULL,
41+
IPNetworkID INTEGER NOT NULL,
42+
TraficSourceID SMALLINT NOT NULL,
43+
SearchEngineID SMALLINT NOT NULL,
44+
SearchPhrase TEXT NOT NULL,
45+
AdvEngineID SMALLINT NOT NULL,
46+
IsArtifical SMALLINT NOT NULL,
47+
WindowClientWidth SMALLINT NOT NULL,
48+
WindowClientHeight SMALLINT NOT NULL,
49+
ClientTimeZone SMALLINT NOT NULL,
50+
ClientEventTime TIMESTAMP NOT NULL,
51+
SilverlightVersion1 SMALLINT NOT NULL,
52+
SilverlightVersion2 SMALLINT NOT NULL,
53+
SilverlightVersion3 INTEGER NOT NULL,
54+
SilverlightVersion4 SMALLINT NOT NULL,
55+
PageCharset TEXT NOT NULL,
56+
CodeVersion INTEGER NOT NULL,
57+
IsLink SMALLINT NOT NULL,
58+
IsDownload SMALLINT NOT NULL,
59+
IsNotBounce SMALLINT NOT NULL,
60+
FUniqID BIGINT NOT NULL,
61+
OriginalURL TEXT NOT NULL,
62+
HID INTEGER NOT NULL,
63+
IsOldCounter SMALLINT NOT NULL,
64+
IsEvent SMALLINT NOT NULL,
65+
IsParameter SMALLINT NOT NULL,
66+
DontCountHits SMALLINT NOT NULL,
67+
WithHash SMALLINT NOT NULL,
68+
HitColor CHAR NOT NULL,
69+
LocalEventTime TIMESTAMP NOT NULL,
70+
Age SMALLINT NOT NULL,
71+
Sex SMALLINT NOT NULL,
72+
Income SMALLINT NOT NULL,
73+
Interests SMALLINT NOT NULL,
74+
Robotness SMALLINT NOT NULL,
75+
RemoteIP INTEGER NOT NULL,
76+
WindowName INTEGER NOT NULL,
77+
OpenerName INTEGER NOT NULL,
78+
HistoryLength SMALLINT NOT NULL,
79+
BrowserLanguage TEXT NOT NULL,
80+
BrowserCountry TEXT NOT NULL,
81+
SocialNetwork TEXT NOT NULL,
82+
SocialAction TEXT NOT NULL,
83+
HTTPError SMALLINT NOT NULL,
84+
SendTiming INTEGER NOT NULL,
85+
DNSTiming INTEGER NOT NULL,
86+
ConnectTiming INTEGER NOT NULL,
87+
ResponseStartTiming INTEGER NOT NULL,
88+
ResponseEndTiming INTEGER NOT NULL,
89+
FetchTiming INTEGER NOT NULL,
90+
SocialSourceNetworkID SMALLINT NOT NULL,
91+
SocialSourcePage TEXT NOT NULL,
92+
ParamPrice BIGINT NOT NULL,
93+
ParamOrderID TEXT NOT NULL,
94+
ParamCurrency TEXT NOT NULL,
95+
ParamCurrencyID SMALLINT NOT NULL,
96+
OpenstatServiceName TEXT NOT NULL,
97+
OpenstatCampaignID TEXT NOT NULL,
98+
OpenstatAdID TEXT NOT NULL,
99+
OpenstatSourceID TEXT NOT NULL,
100+
UTMSource TEXT NOT NULL,
101+
UTMMedium TEXT NOT NULL,
102+
UTMCampaign TEXT NOT NULL,
103+
UTMContent TEXT NOT NULL,
104+
UTMTerm TEXT NOT NULL,
105+
FromTag TEXT NOT NULL,
106+
HasGCLID SMALLINT NOT NULL,
107+
RefererHash BIGINT NOT NULL,
108+
URLHash BIGINT NOT NULL,
109+
CLID INTEGER NOT NULL,
110+
PRIMARY KEY (CounterID, EventDate, UserID, EventTime, WatchID)
111+
)USING columnar;
112+

tembo-olap/index.sql

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
CREATE INDEX adveng on hits (AdvEngineID);
2+
CREATE INDEX regid on hits (RegionID);
3+
CREATE INDEX cid on hits (CounterID);
4+
CREATE INDEX eventtime on hits (EventTime);
5+
CREATE INDEX eventdate on hits (EventDate);
6+
CREATE INDEX mobile on hits (MobilePhoneModel);
7+
CREATE INDEX refresh on hits (IsRefresh, DontCountHits);
8+
CREATE INDEX resolutionwidth on hits (ResolutionWidth);
9+
CREATE INDEX search on hits (SearchPhrase);
10+
CREATE INDEX UserID on hits (UserID);
11+
12+
CREATE INDEX UserIDsearch on hits (UserID, SearchPhrase);
13+
CREATE INDEX widcip on hits (WatchID, ClientIP);
14+
CREATE INDEX mobileuser on hits (MobilePhoneModel,UserID);
15+
CREATE INDEX regionuser on hits (RegionID,UserID);
16+
17+
CREATE INDEX mobile2 on hits (MobilePhoneModel) WHERE MobilePhoneModel <> ''::text;
18+
CREATE INDEX search2 on hits (SearchPhrase) WHERE SearchPhrase <> ''::text;

0 commit comments

Comments
 (0)