Þýðing greinarinnar var unnin sérstaklega fyrir nemendur námskeiðsins
Fyrir tveimur árum eyddi ég
ClickHouse samanstendur af 170 þúsund línum af C++ kóða, að þriðja aðila bókasöfnum undanskildum, og er einn minnsti dreifði kóðagrunnur gagnagrunnsins. Til samanburðar styður SQLite ekki dreifingu og samanstendur af 235 þúsund línum af C kóða. Þegar þetta er skrifað hafa 207 verkfræðingar lagt sitt af mörkum til ClickHouse og styrkleiki skuldbindinga hefur verið að aukast að undanförnu.
Í mars 2017 hóf ClickHouse að framkvæma
Í þessari grein ætla ég að skoða frammistöðu ClickHouse klasa á AWS EC2 sem notar 36 kjarna örgjörva og NVMe geymslu.
UPPFÆRSLA: Viku eftir upphaflega birtingu þessarar færslu endurkeyrði ég prófið með bættri uppsetningu og náði mun betri árangri. Þessi færsla hefur verið uppfærð til að endurspegla þessar breytingar.
Opnar AWS EC2 klasa
Ég mun nota þrjú c5d.9xlarge EC2 tilvik fyrir þessa færslu. Hver þeirra inniheldur 36 sýndar örgjörva, 72 GB af vinnsluminni, 900 GB af NVMe SSD geymslu og styður 10 Gigabit net. Þeir kosta $1,962/klst hver á eu-west-1 svæðinu þegar þeir keyra á eftirspurn. Ég mun nota Ubuntu Server 16.04 LTS sem stýrikerfi.
Eldveggurinn er stilltur þannig að hver vél getur átt samskipti sín á milli án takmarkana og aðeins IPv4 vistfangið mitt er á hvítlista af SSH í klasanum.
NVMe drif í rekstrarviðbúnaði
Til að ClickHouse virki mun ég búa til skráarkerfi á EXT4 sniði á NVMe drifi á hverjum netþjóni.
$ sudo mkfs -t ext4 /dev/nvme1n1
$ sudo mkdir /ch
$ sudo mount /dev/nvme1n1 /ch
Þegar allt hefur verið stillt geturðu séð festingarpunktinn og 783 GB af plássi sem er í boði á hverju kerfi.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 87.9M 1 loop /snap/core/5742
loop1 7:1 0 16.5M 1 loop /snap/amazon-ssm-agent/784
nvme0n1 259:1 0 8G 0 disk
└─nvme0n1p1 259:2 0 8G 0 part /
nvme1n1 259:0 0 838.2G 0 disk /ch
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 35G 0 35G 0% /dev
tmpfs 6.9G 8.8M 6.9G 1% /run
/dev/nvme0n1p1 7.7G 967M 6.8G 13% /
tmpfs 35G 0 35G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 35G 0 35G 0% /sys/fs/cgroup
/dev/loop0 88M 88M 0 100% /snap/core/5742
/dev/loop1 17M 17M 0 100% /snap/amazon-ssm-agent/784
tmpfs 6.9G 0 6.9G 0% /run/user/1000
/dev/nvme1n1 825G 73M 783G 1% /ch
Gagnapakkinn sem ég mun nota í þessu prófi er gagnahaugur sem ég bjó til úr 1.1 milljarði leigubílaferða sem teknar voru í New York borg á sex árum. Á blogginu
$ sudo apt update
$ sudo apt install awscli
$ aws configure
Ég mun stilla samtímis beiðni viðskiptavinarins á 100 þannig að skrám hleðst niður hraðar en sjálfgefnar stillingar.
$ aws configure set
default.s3.max_concurrent_requests
100
Ég mun hlaða niður gagnagrunni fyrir leigubílaferðir frá AWS S3 og geyma það á NVMe drifi á fyrsta netþjóninum. Þetta gagnasafn er ~104GB á GZIP-þjöppuðu CSV-sniði.
$ sudo mkdir -p /ch/csv
$ sudo chown -R ubuntu /ch/csv
$ aws s3 sync s3://<bucket>/csv /ch/csv
ClickHouse uppsetning
Ég mun setja upp OpenJDK dreifingu fyrir Java 8 þar sem það er nauðsynlegt til að keyra Apache ZooKeeper, sem er nauðsynlegt fyrir dreifða uppsetningu á ClickHouse á öllum þremur vélunum.
$ sudo apt update
$ sudo apt install
openjdk-8-jre
openjdk-8-jdk-headless
Síðan stillti ég umhverfisbreytuna JAVA_HOME
.
$ sudo vi /etc/profile
export JAVA_HOME=/usr
$ source /etc/profile
Ég mun þá nota pakkastjórnunarkerfi Ubuntu til að setja upp ClickHouse 18.16.1, glances og ZooKeeper á öllum þremur vélunum.
$ sudo apt-key adv
--keyserver hkp://keyserver.ubuntu.com:80
--recv E0C56BD4
$ echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" |
sudo tee /etc/apt/sources.list.d/clickhouse.list
$ sudo apt-get update
$ sudo apt install
clickhouse-client
clickhouse-server
glances
zookeeperd
Ég mun búa til möppu fyrir ClickHouse og gera einnig nokkrar stillingar hnekkja á öllum þremur netþjónum.
$ sudo mkdir /ch/clickhouse
$ sudo chown -R clickhouse /ch/clickhouse
$ sudo mkdir -p /etc/clickhouse-server/conf.d
$ sudo vi /etc/clickhouse-server/conf.d/taxis.conf
Þetta eru stillingarhneigðirnar sem ég mun nota.
<?xml version="1.0"?>
<yandex>
<listen_host>0.0.0.0</listen_host>
<path>/ch/clickhouse/</path>
<remote_servers>
<perftest_3shards>
<shard>
<replica>
<host>172.30.2.192</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<host>172.30.2.162</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<host>172.30.2.36</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards>
</remote_servers>
<zookeeper-servers>
<node>
<host>172.30.2.192</host>
<port>2181</port>
</node>
<node>
<host>172.30.2.162</host>
<port>2181</port>
</node>
<node>
<host>172.30.2.36</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<shard>03</shard>
<replica>01</replica>
</macros>
</yandex>
Ég mun þá keyra ZooKeeper og ClickHouse þjóninn á öllum þremur vélunum.
$ sudo /etc/init.d/zookeeper start
$ sudo service clickhouse-server start
Hleður upp gögnum í ClickHouse
Á fyrsta þjóninum mun ég búa til ferðatöflu (trips
), sem mun geyma gagnapakka af leigubílaferðum með því að nota Log vélina.
$ clickhouse-client --host=0.0.0.0
CREATE TABLE trips (
trip_id UInt32,
vendor_id String,
pickup_datetime DateTime,
dropoff_datetime Nullable(DateTime),
store_and_fwd_flag Nullable(FixedString(1)),
rate_code_id Nullable(UInt8),
pickup_longitude Nullable(Float64),
pickup_latitude Nullable(Float64),
dropoff_longitude Nullable(Float64),
dropoff_latitude Nullable(Float64),
passenger_count Nullable(UInt8),
trip_distance Nullable(Float64),
fare_amount Nullable(Float32),
extra Nullable(Float32),
mta_tax Nullable(Float32),
tip_amount Nullable(Float32),
tolls_amount Nullable(Float32),
ehail_fee Nullable(Float32),
improvement_surcharge Nullable(Float32),
total_amount Nullable(Float32),
payment_type Nullable(String),
trip_type Nullable(UInt8),
pickup Nullable(String),
dropoff Nullable(String),
cab_type Nullable(String),
precipitation Nullable(Int8),
snow_depth Nullable(Int8),
snowfall Nullable(Int8),
max_temperature Nullable(Int8),
min_temperature Nullable(Int8),
average_wind_speed Nullable(Int8),
pickup_nyct2010_gid Nullable(Int8),
pickup_ctlabel Nullable(String),
pickup_borocode Nullable(Int8),
pickup_boroname Nullable(String),
pickup_ct2010 Nullable(String),
pickup_boroct2010 Nullable(String),
pickup_cdeligibil Nullable(FixedString(1)),
pickup_ntacode Nullable(String),
pickup_ntaname Nullable(String),
pickup_puma Nullable(String),
dropoff_nyct2010_gid Nullable(UInt8),
dropoff_ctlabel Nullable(String),
dropoff_borocode Nullable(UInt8),
dropoff_boroname Nullable(String),
dropoff_ct2010 Nullable(String),
dropoff_boroct2010 Nullable(String),
dropoff_cdeligibil Nullable(String),
dropoff_ntacode Nullable(String),
dropoff_ntaname Nullable(String),
dropoff_puma Nullable(String)
) ENGINE = Log;
Ég tek síðan út og hleð hverri CSV skránni í ferðatöflu (trips
). Eftirfarandi var lokið á 55 mínútum og 10 sekúndum. Eftir þessa aðgerð var stærð gagnaskrárinnar 134 GB.
$ time (for FILENAME in /ch/csv/trips_x*.csv.gz; do
echo $FILENAME
gunzip -c $FILENAME |
clickhouse-client
--host=0.0.0.0
--query="INSERT INTO trips FORMAT CSV"
done)
Innflutningshraðinn var 155 MB af óþjöppuðu CSV efni á sekúndu. Mig grunar að þetta hafi verið vegna flöskuhálss í GZIP þjöppun. Það gæti hafa verið fljótlegra að pakka niður öllum gzipðu skránum samhliða með því að nota xargs og hlaða svo uppþjöppuðu gögnunum. Hér að neðan er lýsing á því sem tilkynnt var í CSV innflutningsferlinu.
$ sudo glances
ip-172-30-2-200 (Ubuntu 16.04 64bit / Linux 4.4.0-1072-aws) Uptime: 0:11:42
CPU 8.2% nice: 0.0% LOAD 36-core MEM 9.8% active: 5.20G SWAP 0.0%
user: 6.0% irq: 0.0% 1 min: 2.24 total: 68.7G inactive: 61.0G total: 0
system: 0.9% iowait: 1.3% 5 min: 1.83 used: 6.71G buffers: 66.4M used: 0
idle: 91.8% steal: 0.0% 15 min: 1.01 free: 62.0G cached: 61.6G free: 0
NETWORK Rx/s Tx/s TASKS 370 (507 thr), 2 run, 368 slp, 0 oth sorted automatically by cpu_percent, flat view
ens5 136b 2Kb
lo 343Mb 343Mb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
100.4 1.5 1.65G 1.06G 9909 ubuntu 0 S 1:01.33 0 0 clickhouse-client --host=0.0.0.0 --query=INSERT INTO trips FORMAT CSV
DISK I/O R/s W/s 85.1 0.0 4.65M 708K 9908 ubuntu 0 R 0:50.60 32M 0 gzip -d -c /ch/csv/trips_xac.csv.gz
loop0 0 0 54.9 5.1 8.14G 3.49G 8091 clickhous 0 S 1:44.23 0 45M /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
loop1 0 0 4.5 0.0 0 0 319 root 0 S 0:07.50 1K 0 kworker/u72:2
nvme0n1 0 3K 2.3 0.0 91.1M 28.9M 9912 root 0 R 0:01.56 0 0 /usr/bin/python3 /usr/bin/glances
nvme0n1p1 0 3K 0.3 0.0 0 0 960 root -20 S 0:00.10 0 0 kworker/28:1H
nvme1n1 32.1M 495M 0.3 0.0 0 0 1058 root -20 S 0:00.90 0 0 kworker/23:1H
Ég losa um pláss á NVMe drifinu með því að eyða upprunalegu CSV skránum áður en ég held áfram.
$ sudo rm -fr /ch/csv
Umbreyta í dálkaform
Log ClickHouse vélin mun geyma gögn á línumiðuðu sniði. Til að spyrjast fyrir um gögn hraðar, breyti ég þeim í dálkasnið með því að nota MergeTree vélina.
$ clickhouse-client --host=0.0.0.0
Eftirfarandi var lokið á 34 mínútum og 50 sekúndum. Eftir þessa aðgerð var stærð gagnaskrárinnar 237 GB.
CREATE TABLE trips_mergetree
ENGINE = MergeTree(pickup_date, pickup_datetime, 8192)
AS SELECT
trip_id,
CAST(vendor_id AS Enum8('1' = 1,
'2' = 2,
'CMT' = 3,
'VTS' = 4,
'DDS' = 5,
'B02512' = 10,
'B02598' = 11,
'B02617' = 12,
'B02682' = 13,
'B02764' = 14)) AS vendor_id,
toDate(pickup_datetime) AS pickup_date,
ifNull(pickup_datetime, toDateTime(0)) AS pickup_datetime,
toDate(dropoff_datetime) AS dropoff_date,
ifNull(dropoff_datetime, toDateTime(0)) AS dropoff_datetime,
assumeNotNull(store_and_fwd_flag) AS store_and_fwd_flag,
assumeNotNull(rate_code_id) AS rate_code_id,
assumeNotNull(pickup_longitude) AS pickup_longitude,
assumeNotNull(pickup_latitude) AS pickup_latitude,
assumeNotNull(dropoff_longitude) AS dropoff_longitude,
assumeNotNull(dropoff_latitude) AS dropoff_latitude,
assumeNotNull(passenger_count) AS passenger_count,
assumeNotNull(trip_distance) AS trip_distance,
assumeNotNull(fare_amount) AS fare_amount,
assumeNotNull(extra) AS extra,
assumeNotNull(mta_tax) AS mta_tax,
assumeNotNull(tip_amount) AS tip_amount,
assumeNotNull(tolls_amount) AS tolls_amount,
assumeNotNull(ehail_fee) AS ehail_fee,
assumeNotNull(improvement_surcharge) AS improvement_surcharge,
assumeNotNull(total_amount) AS total_amount,
assumeNotNull(payment_type) AS payment_type_,
assumeNotNull(trip_type) AS trip_type,
pickup AS pickup,
pickup AS dropoff,
CAST(assumeNotNull(cab_type)
AS Enum8('yellow' = 1, 'green' = 2))
AS cab_type,
precipitation AS precipitation,
snow_depth AS snow_depth,
snowfall AS snowfall,
max_temperature AS max_temperature,
min_temperature AS min_temperature,
average_wind_speed AS average_wind_speed,
pickup_nyct2010_gid AS pickup_nyct2010_gid,
pickup_ctlabel AS pickup_ctlabel,
pickup_borocode AS pickup_borocode,
pickup_boroname AS pickup_boroname,
pickup_ct2010 AS pickup_ct2010,
pickup_boroct2010 AS pickup_boroct2010,
pickup_cdeligibil AS pickup_cdeligibil,
pickup_ntacode AS pickup_ntacode,
pickup_ntaname AS pickup_ntaname,
pickup_puma AS pickup_puma,
dropoff_nyct2010_gid AS dropoff_nyct2010_gid,
dropoff_ctlabel AS dropoff_ctlabel,
dropoff_borocode AS dropoff_borocode,
dropoff_boroname AS dropoff_boroname,
dropoff_ct2010 AS dropoff_ct2010,
dropoff_boroct2010 AS dropoff_boroct2010,
dropoff_cdeligibil AS dropoff_cdeligibil,
dropoff_ntacode AS dropoff_ntacode,
dropoff_ntaname AS dropoff_ntaname,
dropoff_puma AS dropoff_puma
FROM trips;
Svona leit úttakið út í augnablikinu meðan á aðgerðinni stóð:
ip-172-30-2-200 (Ubuntu 16.04 64bit / Linux 4.4.0-1072-aws) Uptime: 1:06:09
CPU 10.3% nice: 0.0% LOAD 36-core MEM 16.1% active: 13.3G SWAP 0.0%
user: 7.9% irq: 0.0% 1 min: 1.87 total: 68.7G inactive: 52.8G total: 0
system: 1.6% iowait: 0.8% 5 min: 1.76 used: 11.1G buffers: 71.8M used: 0
idle: 89.7% steal: 0.0% 15 min: 1.95 free: 57.6G cached: 57.2G free: 0
NETWORK Rx/s Tx/s TASKS 367 (523 thr), 1 run, 366 slp, 0 oth sorted automatically by cpu_percent, flat view
ens5 1Kb 8Kb
lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
241.9 12.8 20.7G 8.78G 8091 clickhous 0 S 30:36.73 34M 125M /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
DISK I/O R/s W/s 2.6 0.0 90.4M 28.3M 9948 root 0 R 1:18.53 0 0 /usr/bin/python3 /usr/bin/glances
loop0 0 0 1.3 0.0 0 0 203 root 0 S 0:09.82 0 0 kswapd0
loop1 0 0 0.3 0.1 315M 61.3M 15701 ubuntu 0 S 0:00.40 0 0 clickhouse-client --host=0.0.0.0
nvme0n1 0 3K 0.3 0.0 0 0 7 root 0 S 0:00.83 0 0 rcu_sched
nvme0n1p1 0 3K 0.0 0.0 0 0 142 root 0 S 0:00.22 0 0 migration/27
nvme1n1 25.8M 330M 0.0 0.0 59.7M 1.79M 2764 ubuntu 0 S 0:00.00 0 0 (sd-pam)
Í síðasta prófi var nokkrum dálkum breytt og endurreiknað. Ég komst að því að sumar þessara aðgerða virka ekki lengur eins og búist var við á þessu gagnasafni. Til að leysa þetta vandamál fjarlægði ég óviðeigandi aðgerðir og hlaðið gögnunum án þess að breyta í kornóttari gerðir.
Dreifing gagna yfir klasann
Ég mun dreifa gögnunum yfir alla þrjá klasahnúta. Til að byrja, hér að neðan mun ég búa til töflu á öllum þremur vélunum.
$ clickhouse-client --host=0.0.0.0
CREATE TABLE trips_mergetree_third (
trip_id UInt32,
vendor_id String,
pickup_date Date,
pickup_datetime DateTime,
dropoff_date Date,
dropoff_datetime Nullable(DateTime),
store_and_fwd_flag Nullable(FixedString(1)),
rate_code_id Nullable(UInt8),
pickup_longitude Nullable(Float64),
pickup_latitude Nullable(Float64),
dropoff_longitude Nullable(Float64),
dropoff_latitude Nullable(Float64),
passenger_count Nullable(UInt8),
trip_distance Nullable(Float64),
fare_amount Nullable(Float32),
extra Nullable(Float32),
mta_tax Nullable(Float32),
tip_amount Nullable(Float32),
tolls_amount Nullable(Float32),
ehail_fee Nullable(Float32),
improvement_surcharge Nullable(Float32),
total_amount Nullable(Float32),
payment_type Nullable(String),
trip_type Nullable(UInt8),
pickup Nullable(String),
dropoff Nullable(String),
cab_type Nullable(String),
precipitation Nullable(Int8),
snow_depth Nullable(Int8),
snowfall Nullable(Int8),
max_temperature Nullable(Int8),
min_temperature Nullable(Int8),
average_wind_speed Nullable(Int8),
pickup_nyct2010_gid Nullable(Int8),
pickup_ctlabel Nullable(String),
pickup_borocode Nullable(Int8),
pickup_boroname Nullable(String),
pickup_ct2010 Nullable(String),
pickup_boroct2010 Nullable(String),
pickup_cdeligibil Nullable(FixedString(1)),
pickup_ntacode Nullable(String),
pickup_ntaname Nullable(String),
pickup_puma Nullable(String),
dropoff_nyct2010_gid Nullable(UInt8),
dropoff_ctlabel Nullable(String),
dropoff_borocode Nullable(UInt8),
dropoff_boroname Nullable(String),
dropoff_ct2010 Nullable(String),
dropoff_boroct2010 Nullable(String),
dropoff_cdeligibil Nullable(String),
dropoff_ntacode Nullable(String),
dropoff_ntaname Nullable(String),
dropoff_puma Nullable(String)
) ENGINE = MergeTree(pickup_date, pickup_datetime, 8192);
Þá mun ég ganga úr skugga um að fyrsti þjónninn geti séð alla þrjá hnúta í þyrpingunni.
SELECT *
FROM system.clusters
WHERE cluster = 'perftest_3shards'
FORMAT Vertical;
Row 1:
──────
cluster: perftest_3shards
shard_num: 1
shard_weight: 1
replica_num: 1
host_name: 172.30.2.192
host_address: 172.30.2.192
port: 9000
is_local: 1
user: default
default_database:
Row 2:
──────
cluster: perftest_3shards
shard_num: 2
shard_weight: 1
replica_num: 1
host_name: 172.30.2.162
host_address: 172.30.2.162
port: 9000
is_local: 0
user: default
default_database:
Row 3:
──────
cluster: perftest_3shards
shard_num: 3
shard_weight: 1
replica_num: 1
host_name: 172.30.2.36
host_address: 172.30.2.36
port: 9000
is_local: 0
user: default
default_database:
Þá mun ég skilgreina nýja töflu á fyrsta þjóninum sem er byggð á skemanu trips_mergetree_third
og notar dreifða vélina.
CREATE TABLE trips_mergetree_x3
AS trips_mergetree_third
ENGINE = Distributed(perftest_3shards,
default,
trips_mergetree_third,
rand());
Ég mun síðan afrita gögnin úr MergeTree byggðri töflunni á alla þrjá netþjóna. Eftirfarandi var lokið á 34 mínútum og 44 sekúndum.
INSERT INTO trips_mergetree_x3
SELECT * FROM trips_mergetree;
Eftir ofangreinda aðgerð gaf ég ClickHouse 15 mínútur til að fara frá hámarks geymslustigi. Gagnaskrárnar enduðu á að vera 264 GB, 34 GB og 33 GB í sömu röð á hverjum af netþjónunum þremur.
Frammistöðumat ClickHouse klasa
Það sem ég sá næst var hraðasti tíminn sem ég hef séð keyra hverja fyrirspurn á borði mörgum sinnum trips_mergetree_x3
.
$ clickhouse-client --host=0.0.0.0
Eftirfarandi kláraðist á 2.449 sekúndum.
SELECT cab_type, count(*)
FROM trips_mergetree_x3
GROUP BY cab_type;
Eftirfarandi kláraðist á 0.691 sekúndum.
SELECT passenger_count,
avg(total_amount)
FROM trips_mergetree_x3
GROUP BY passenger_count;
Eftirfarandi kláraðist á 0 sekúndum.
SELECT passenger_count,
toYear(pickup_date) AS year,
count(*)
FROM trips_mergetree_x3
GROUP BY passenger_count,
year;
Eftirfarandi kláraðist á 0.983 sekúndum.
SELECT passenger_count,
toYear(pickup_date) AS year,
round(trip_distance) AS distance,
count(*)
FROM trips_mergetree_x3
GROUP BY passenger_count,
year,
distance
ORDER BY year,
count(*) DESC;
Til samanburðar rak ég sömu fyrirspurnir á MergeTree töflu sem er eingöngu á fyrsta netþjóninum.
Árangursmat á einum ClickHouse hnút
Það sem ég sá næst var hraðasti tíminn sem ég hef séð keyra hverja fyrirspurn á borði mörgum sinnum trips_mergetree_x3
.
Eftirfarandi kláraðist á 0.241 sekúndum.
SELECT cab_type, count(*)
FROM trips_mergetree
GROUP BY cab_type;
Eftirfarandi kláraðist á 0.826 sekúndum.
SELECT passenger_count,
avg(total_amount)
FROM trips_mergetree
GROUP BY passenger_count;
Eftirfarandi kláraðist á 1.209 sekúndum.
SELECT passenger_count,
toYear(pickup_date) AS year,
count(*)
FROM trips_mergetree
GROUP BY passenger_count,
year;
Eftirfarandi kláraðist á 1.781 sekúndum.
SELECT passenger_count,
toYear(pickup_date) AS year,
round(trip_distance) AS distance,
count(*)
FROM trips_mergetree
GROUP BY passenger_count,
year,
distance
ORDER BY year,
count(*) DESC;
Hugleiðingar um úrslitin
Þetta er í fyrsta skipti sem ókeypis CPU-undirstaða gagnagrunnur var fær um að standa sig betur en GPU-byggður gagnagrunnur í prófunum mínum. Þessi GPU-undirstaða gagnagrunnur hefur farið í gegnum tvær endurskoðanir síðan þá, en árangurinn sem ClickHouse skilaði á einum hnút er engu að síður mjög áhrifamikill.
Á sama tíma, þegar fyrirspurn 1 er keyrð á dreifðri vél, er kostnaður við kostnaðinn stærðargráðu hærri. Ég vona að ég hafi misst af einhverju í rannsókninni minni fyrir þessa færslu því það væri gaman að sjá fyrirspurnartímum lækka þegar ég bæti fleiri hnútum við þyrpinguna. Hins vegar er frábært að þegar aðrar fyrirspurnir eru framkvæmdar jókst árangur um það bil 2 sinnum.
Það væri gaman að sjá ClickHouse þróast í átt að því að geta aðskilið geymslu og reiknað svo þau geti skalað sjálfstætt. HDFS stuðningur, sem bætt var við á síðasta ári, gæti verið skref í átt að þessu. Hvað varðar tölvumál, ef hægt er að flýta fyrir einni fyrirspurn með því að bæta fleiri hnútum við þyrpinguna, þá er framtíð þessa hugbúnaðar mjög björt.
Þakka þér fyrir að gefa þér tíma til að lesa þessa færslu. Ég býð upp á ráðgjöf, arkitektúr og þróunarþjónustu fyrir viðskiptavini í Norður-Ameríku og Evrópu. Ef þú vilt ræða hvernig tillögur mínar geta hjálpað fyrirtækinu þínu, vinsamlegast hafðu samband við mig í gegnum
Heimild: www.habr.com