Die vertaling van die artikel is spesifiek vir die studente van die kursus voorberei
Twee jaar gelede het ek spandeer
ClickHouse bestaan uit 170 235 reëls C++-kode, derdeparty-biblioteke uitgesluit, en is een van die kleinste kodebasisse vir verspreide databasisse. In vergelyking, SQLite ondersteun nie verspreiding nie en bestaan uit 207 XNUMX reëls C-kode.Ten tyde van hierdie skrywe het XNUMX ingenieurs bygedra tot ClickHouse, en die pleegkoers het die afgelope tyd toegeneem.
In Maart 2017 het ClickHouse begin optree
In hierdie artikel gaan ek kyk na die werkverrigting van 'n ClickHouse-kluster op AWS EC2 wat 36-kern verwerkers en NVMe-berging gebruik.
UPDATE: 'n Week na die oorspronklike publikasie van hierdie pos het ek die toets met 'n verbeterde konfigurasie weer laat loop en baie beter resultate behaal. Hierdie plasing is opgedateer om hierdie veranderinge te weerspieël.
Bestuur 'n AWS EC2-kluster
Ek sal drie c5d.9xlarge EC2-gevalle vir hierdie pos gebruik. Elkeen van hulle bevat 36 vCPU's, 72 GB RAM, 900 GB NVMe SSD-berging, en ondersteun 10 Gigabit-netwerke. Hulle kos $1,962 1/uur elk in eu-west-16.04 wanneer dit op aanvraag bekendgestel word. Ek sal Ubuntu Server XNUMX LTS as my bedryfstelsel gebruik.
Die firewall is so opgestel dat elke masjien sonder beperking met mekaar kan kommunikeer, en net my IPv4-adres word deur SSH in die cluster gewitlys.
NVMe ry in operasionele gereedheid
Vir ClickHouse om te werk, sal ek 'n EXT4-lêerstelsel op die NVMe-aandrywer op elk van die bedieners skep.
$ sudo mkfs -t ext4 /dev/nvme1n1
$ sudo mkdir /ch
$ sudo mount /dev/nvme1n1 /ch
Sodra alles opgestel is, kan jy die monteerpunt sien en 783 GB spasie beskikbaar op elke stelsel.
$ 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
Die datastel wat ek in hierdie toets gaan gebruik, is 'n datastorting wat ek gegenereer het uit 1.1 miljard taxiritte in New York oor ses jaar. Blog
$ sudo apt update
$ sudo apt install awscli
$ aws configure
Ek sal die kliënt se gelyktydige versoeklimiet op 100 stel sodat lêers vinniger laai as die verstekinstellings.
$ aws configure set
default.s3.max_concurrent_requests
100
Ek sal die taxiritdatastel van AWS S3 aflaai en dit op 'n NVMe-stasie op die eerste bediener stoor. Hierdie datastel is ~104 GB in GZIP saamgeperste CSV-formaat.
$ sudo mkdir -p /ch/csv
$ sudo chown -R ubuntu /ch/csv
$ aws s3 sync s3://<bucket>/csv /ch/csv
Installeer ClickHouse
Ek sal die OpenJDK-verspreiding vir Java 8 installeer, aangesien dit nodig is om Apache ZooKeeper te laat loop, wat nodig is vir 'n verspreide ClickHouse-installasie op al drie masjiene.
$ sudo apt update
$ sudo apt install
openjdk-8-jre
openjdk-8-jdk-headless
Toe stel ek die omgewingsveranderlike JAVA_HOME
.
$ sudo vi /etc/profile
export JAVA_HOME=/usr
$ source /etc/profile
Ek sal dan Ubuntu se pakketbestuurstelsel gebruik om ClickHouse 18.16.1, glances en ZooKeeper op al drie masjiene te installeer.
$ 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
Ek sal 'n gids vir ClickHouse skep en ook 'n paar konfigurasie-oorskrywings op al drie bedieners doen.
$ 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
Dit is die konfigurasie-oorskrywings wat ek sal gebruik.
<?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>
Dan sal ek ZooKeeper en die ClickHouse-bediener op al drie masjiene begin.
$ sudo /etc/init.d/zookeeper start
$ sudo service clickhouse-server start
Laai data op na ClickHouse
Op die eerste bediener sal ek 'n reistabel skep (trips
) wat 'n datastel van taxiritte sal stoor deur die Log-enjin te gebruik.
$ 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;
Ek pak dan elkeen van die CSV-lêers uit en laai in 'n reistabel (trips
). Die volgende word in 55 minute en 10 sekondes voltooi. Na hierdie operasie was die grootte van die datagids 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)
Die invoerspoed was 155 MB ongecomprimeerde CSV-inhoud per sekonde. Ek vermoed dit was as gevolg van 'n bottelnek in GZIP-dekompressie. Dit was dalk vinniger om alle gzip-lêers parallel te dekomprimeer deur xargs te gebruik en dan die gedekomprimeerde data af te laai. Hieronder is 'n beskrywing van wat tydens die CSV-invoerproses aangemeld is.
$ 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
Ek sal spasie op die NVMe-stasie vrymaak deur die oorspronklike CSV-lêers uit te vee voordat ek voortgaan.
$ sudo rm -fr /ch/csv
Skakel om na kolomvorm
Die Log ClickHouse-enjin sal data in 'n string-georiënteerde formaat stoor. Om die data vinniger te bevraagteken, skakel ek dit om na 'n kolomformaat deur die MergeTree-enjin te gebruik.
$ clickhouse-client --host=0.0.0.0
Die volgende word in 34 minute en 50 sekondes voltooi. Na hierdie operasie was die grootte van die datagids 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;
Dit is hoe die blikuitset gelyk het tydens die operasie:
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)
In die laaste toets is verskeie kolomme omgeskakel en herbereken. Ek het gevind dat sommige van hierdie funksies nie meer behoorlik op hierdie datastel werk nie. Om hierdie probleem op te los, het ek die onvanpaste funksies verwyder en die data gelaai sonder om na meer fynkorrelige tipes om te skakel.
Verspreiding van groepdata
Ek sal data oor al drie cluster nodusse versprei. Om te begin, sal ek hieronder 'n tabel op al drie masjiene skep.
$ 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);
Dan sal ek seker maak dat die eerste bediener al drie nodusse in die groepie kan sien.
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:
Dan sal ek 'n nuwe tabel op die eerste bediener definieer wat op die skema gebaseer is trips_mergetree_third
en gebruik die Distributed-enjin.
CREATE TABLE trips_mergetree_x3
AS trips_mergetree_third
ENGINE = Distributed(perftest_3shards,
default,
trips_mergetree_third,
rand());
Dan sal ek die data van die MergeTree-gebaseerde tabel na al drie bedieners kopieer. Die volgende word in 34 minute en 44 sekondes voltooi.
INSERT INTO trips_mergetree_x3
SELECT * FROM trips_mergetree;
Na bogenoemde operasie het ek ClickHouse 15 minute gegee om verby die maksimum stoormerk te kom. Die datagidse was uiteindelik onderskeidelik 264 GB, 34 GB en 33 GB op elk van die drie bedieners.
ClickHouse-klusterprestasie-evaluering
Wat ek volgende gesien het, was die vinnigste tyd wat ek gesien het toe ek elke navraag verskeie kere op die tafel uitgevoer het trips_mergetree_x3
.
$ clickhouse-client --host=0.0.0.0
Die volgende word in 2.449 sekondes voltooi.
SELECT cab_type, count(*)
FROM trips_mergetree_x3
GROUP BY cab_type;
Die volgende word in 0.691 sekondes voltooi.
SELECT passenger_count,
avg(total_amount)
FROM trips_mergetree_x3
GROUP BY passenger_count;
Die volgende word in 0 sekondes gedoen.
SELECT passenger_count,
toYear(pickup_date) AS year,
count(*)
FROM trips_mergetree_x3
GROUP BY passenger_count,
year;
Die volgende word in 0.983 sekondes voltooi.
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;
Ter vergelyking het ek dieselfde navrae uitgevoer op 'n MergeTree-gebaseerde tabel wat uitsluitlik op die eerste bediener woon.
Enkelnode prestasie-evaluering ClickHouse
Wat ek volgende gesien het, was die vinnigste tyd wat ek gesien het toe ek elke navraag verskeie kere op die tafel uitgevoer het trips_mergetree_x3
.
Die volgende word in 0.241 sekondes voltooi.
SELECT cab_type, count(*)
FROM trips_mergetree
GROUP BY cab_type;
Die volgende word in 0.826 sekondes voltooi.
SELECT passenger_count,
avg(total_amount)
FROM trips_mergetree
GROUP BY passenger_count;
Die volgende word in 1.209 sekondes voltooi.
SELECT passenger_count,
toYear(pickup_date) AS year,
count(*)
FROM trips_mergetree
GROUP BY passenger_count,
year;
Die volgende word in 1.781 sekondes voltooi.
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;
Besinning oor resultate
Dit is die eerste keer dat 'n gratis SVE-gebaseerde databasis 'n GPU-gebaseerde databasis in my toetse kon vaar. Daardie GPU-gebaseerde databasis het sedertdien twee hersienings ondergaan, maar steeds is die werkverrigting wat ClickHouse op 'n enkele nodus getoon het, baie indrukwekkend.
Terselfdertyd, wanneer navraag 1 op 'n verspreide enjin uitgevoer word, is die oorhoofse koste 'n orde van grootte hoër. Ek hoop ek het iets in my navorsing vir hierdie pos gemis, want dit sal lekker wees om te sien dat navraagtye afneem namate ek meer nodusse by die groep voeg. Dit is egter merkwaardig dat wanneer ander navrae uitgevoer word, prestasie met ongeveer 2 keer toegeneem het.
Dit sal lekker wees as ClickHouse ontwikkel in die rigting om berging en berekening te skei sodat hulle onafhanklik kan skaal. Ondersteuning vir HDFS, wat verlede jaar bygevoeg is, kan 'n stap hiertoe wees. In terme van rekenaars, as 'n enkele navraag versnel kan word deur meer nodusse by die groepering te voeg, sal die toekoms van hierdie sagteware baie blink wees.
Dankie dat jy die tyd geneem het om hierdie pos te lees. Ek bied konsultasie-, argitektuur- en praktiese ontwikkelingsdienste vir kliënte in Noord-Amerika en Europa. As jy wil bespreek hoe my voorstelle jou besigheid kan help, kontak my asseblief deur
Bron: will.com