ClickHouse¶
Այս հոդվածում
Տեղեկատվություն
ClickHouse-ը բարձր արդյունավետության սյունային տվյալների բազայի կառավարման համակարգ (DBMS) է, որը նախատեսված է OLAP դասի անալիտիկ հարցումներ կատարելու համար։ DBMS-ը կենտրոնացած է մեծ ծավալի տվյալների վերլուծության վրա ցածր լատենտությամբ և լայնորեն օգտագործվում է անալիտիկայի, մոնիտորինգի, լոգավորման և տելեմետրիայի մշակման խնդիրներում։
ClickHouse. Հիմնական հնարավորություններ¶
- Սյունային պահպանում. տվյալները պահվում են սյունակներով, այլ ոչ թե տողերով, ինչը զգալիորեն արագացնում է անալիտիկ հարցումների կատարումը և նվազեցնում մշակվող տվյալների ծավալը։
- Բարձր արդյունավետություն. օպտիմալացված է հսկայական տվյալների բազաների հետ աշխատելու համար և կարողանում է կատարել հարցումներ միլիարդավոր տողերի վրա՝ շնորհիվ վեկտորային մշակման և CPU-ի արդյունավետ օգտագործման։
- Տվյալների սեղմում. օգտագործում է մասնագիտացված սեղմման ալգորիթմներ, որոնք կարող են զգալիորեն նվազեցնել պահվող տվյալների քանակը (հաճախ մի քանի անգամ ավելի քիչ, քան տողային DBMS-ները), հատկապես անալիտիկ բեռի դեպքում։
- SQL համատեղելիություն. աջակցում է ընդլայնված SQL սինտաքսին՝ լրացուցիչ անալիտիկ ֆունկցիաներով, ինչը պարզեցնում է գոյություն ունեցող հավելվածների միգրացիան։
- Բաշխված մշակում. հնարավորություն է տալիս ստեղծել կլաստեր՝ հորիզոնական մասշտաբավորման և տվյալների մշակման համար մի քանի սերվերների վրա։
- Տվյալների ռեպլիկացիա. ներկառուցված ռեպլիկացիայի աջակցությունը ապահովում է սխալանման դիմադրողականություն և տվյալների բարձր հասանելիություն։
- Տարբեր տվյալների ֆորմատների աջակցություն. կարող է ներմուծել և արտահանել տվյալներ CSV, JSON, Parquet, Avro և այլ ֆորմատներով։
- Մատերիալացված տեսքեր. ավտոմատ կերպով ագրեգացնում է տվյալները ֆոնային ռեժիմում՝ կրկնվող հարցումները արագացնելու համար։
- Ինտեգրում արտաքին աղբյուրների հետ. աջակցում է տվյալների ուղղակի ընթերցում MySQL, PostgreSQL, MongoDB, Kafka, S3 և այլ համակարգերից։
Տեղակայման հնարավորություններ¶
| ID | Ծրագրային ապահովման անվանում | Համատեղելի ՕՀ | VM | BM | VGPU | GPU | Նվազագույն CPU (միջուկներ) | Նվազագույն RAM (ԳԲ) | Նվազագույն HDD/SSD (ԳԲ) | Սեփական դոմեն | Ակտիվ |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 492 | ClickHouse | Ubuntu 24.04, Ubuntu 22.04 | + | + | + | + | 4 | 8 | 120 | Ոչ | ՊԱՏՎԻՐԵԼ |
-
Տեղադրված ծրագրային ապահովում.
- ClickHouse Server >= 26.1.1
- ClickHouse Client >= 26.1.1
-
Տեղադրման առանձնահատկություններ.
- Ծրագրային ապահովումը տեղադրվում է պաշտոնական մշակողի սկրիպտի միջոցով;
- Տեղադրման ժամանակ. 5-10 րոպե;
- Բազան հասանելի է ցանցային կապերի համար՝ տարբեր SQL հաճախորդների միջոցով;
- Ըստ լռելյայնի օգտագործվում է
defaultօգտատերը՝rootհաշվի գաղտնաբառով։
Կոնֆիգուրացիայի և տվյալների ֆայլերի գտնվելու վայրեր.
- Հիմնական սերվերի կոնֆիգուրացիա.
/etc/clickhouse-server/config.xml - Օգտատերերի կարգավորումներ.
/etc/clickhouse-server/users.xml - Սերվերի լոգեր.
/var/log/clickhouse-server/clickhouse-server.log/var/log/clickhouse-server/clickhouse-server.err.log
- Տվյալներ.
/var/lib/clickhouse/ - PID ֆայլ.
/run/clickhouse-server/clickhouse-server.pid - Համակարգի սահմանափակումներ.
/etc/security/limits.d/clickhouse.conf
Հասանելի պորտեր կապերի համար.
| Պորտ | Պրոտոկոլ | Նպատակ | Կարգավիճակ | Հաճախորդներ/Օգտագործում |
|---|---|---|---|---|
| 8123 | HTTP | HTTP ինտերֆեյս | Active | DBeaver, DataGrip, Tableau, web ինտերֆեյս, JDBC/ODBC |
| 9000 | TCP Native | ClickHouse բնածին պրոտոկոլ | Active | clickhouse-client, Python/Go դրայվերներ |
| 9004 | MySQL | MySQL պրոտոկոլի էմուլյացիա | Active | MySQL Workbench, mysql հաճախորդ |
| 9005 | PostgreSQL | PostgreSQL պրոտոկոլի էմուլյացիա | Active | pgAdmin, psql հաճախորդ |
| 9009 | Interserver HTTP | Ռեպլիկացիա սերվերների միջև | Active | Կլաստերի ներսում կապ |
| 8443 | HTTPS | HTTP ինտերֆեյս SSL-ով | Optional | Պահանջում է SSL սերտիֆիկատի կոնֆիգուրացիա |
| 9100 | gRPC | gRPC ինտերֆեյս | Optional | gRPC հաճախորդներ |
Նշում
8443 և 9100 պորտերը լռելյայն անջատված են և պահանջում են լրացուցիչ կոնֆիգուրացիա /etc/clickhouse-server/config.xml ֆայլում։
Նշում
Եթե այլ կերպ նշված չէ, մենք տեղադրում ենք ծրագրային ապահովման վերջին թողարկման տարբերակը պաշտոնական մշակողի կայքից։
Սկսել աշխատել ClickHouse-ի տեղադրումից հետո¶
Գրանցման ժամանակ նշված էլ. հասցեին կուղարկվի ծանուցում, որ սերվերը պատրաստ է աշխատանքի համար՝ պատվերի վճարումից հետո։ Այն կպարունակի VPS-ի IP հասցեն, ինչպես նաև մուտքի և գաղտնաբառի տվյալները։ Մեր ընկերության հաճախորդները կառավարում են սարքավորումները սերվերի և API կառավարման պանելում - Invapi։
Մուտքի տվյալներ.
- Սերվերի IP հասցե. տրված է էլ. նամակում և կառավարման պանելում;
- Օգտատեր.
default; - Գաղտնաբառ. համընկնում է
rootհաշվի գաղտնաբառի հետ և ուղարկվում է էլ. հասցեին։
Կարևոր
GUI հաճախորդների (DBeaver, DataGrip և այլն) համար օգտագործեք 8123 պորտը (HTTP ինտերֆեյս)։ 9000 պորտը նախատեսված է միայն բնածին clickhouse-client-ի համար։
Կապվել ClickHouse-ի հետ¶
Կապի եղանակներ
Այս բաժնում նկարագրված են ClickHouse-ի հետ կապվելու ամենատարածված եղանակները՝ clickhouse-client (հրամանների տողի հաճախորդ) և DBeaver (գրաֆիկական ինտերֆեյս) միջոցով։ ClickHouse-ը նաև աջակցում է կապեր այլ հաճախորդների միջոցով. DataGrip, Tableau, MySQL Workbench (9004 պորտի միջոցով), pgAdmin (9005 պորտի միջոցով), ինչպես նաև Python, Go, Java և այլ լեզուների ծրագրավորման գրադարաններ։
Կապվել clickhouse-client-ի միջոցով¶
ClickHouse-ը ներառում է բնածին հրամանների տողի հաճախորդ՝ տվյալների բազայի գործողություններ կատարելու համար։
1. Կապվել սերվերից (տեղային).
2. Կապվել հեռավոր մեքենայից.
3. Պարզ հարցում կատարել.
4. Դիտել տվյալների բազաների ցուցակը.
Կապվել DBeaver-ի միջոցով¶
DBeaver-ը ունիվերսալ GUI հաճախորդ է՝ տարբեր տվյալների բազաների, ներառյալ ClickHouse-ի, հետ աշխատելու համար։
1. Ինստալյացիա DBeaver
Ներբեռնեք և տեղադրեք DBeaver-ը պաշտոնական կայքից։
2. Նոր կապ ստեղծել
- Գործարկեք DBeaver
- Ընտրեք Database >> New Database Connection (կամ սեղմեք
Ctrl+Shift+N)

- Բազաների ցուցակում գտեք և ընտրեք ClickHouse

- Սեղմեք
Next
3. Կապի պարամետրերի կոնֆիգուրացիա
Կարգավորումների պատուհանում նշեք հետևյալ պարամետրերը.
Host: <IP-address of your server>
Port: 8123
Database/Schema: (leave empty or specify default)
Username: default
Password: <root_password>

Անհրաժեշտ է
DBeaver կապերի համար օգտագործեք 8123 պորտը։
4. JDBC դրայվերի ներբեռնում
Առաջին անգամ կապվելիս DBeaver-ը կառաջարկի ներբեռնել JDBC դրայվերը ClickHouse-ի համար.
- Սեղմեք
Downloadհայտնված պատուհանում.

- Սպասեք, մինչև դրայվերի ներբեռնումը ավարտվի.

- Սեղմեք
OK
5. Կապի թեստավորում
- Սեղմեք
Test Connection; - Եթե ամեն ինչ ճիշտ է կոնֆիգուրացված, կհայտնվի հաղորդագրություն. Connected (XXX ms).

- Հաղորդագրությունը կներառի.
- Server: ClickHouse X.X.X.XXX
- Driver: ClickHouse JDBC Driver X.X.X
6. Կարգավորումների ավարտ
- Սեղմեք
Finish; - Կապը կհայտնվի Database Navigator-ում;
- Բացեք կապի ծառը՝ տվյալների բազաները, աղյուսակները և այլ օբյեկտներ դիտելու համար։

Տարածված խնդիրներ.
| Սխալ | Պատճառ | Լուծում |
|---|---|---|
transport error: 400 | Օգտագործվել է 9000 պորտը 8123-ի փոխարեն | Փոխեք 8123 պորտի |
Connection refused | Սխալ IP կամ ֆայրվոլը արգելափակում է պորտը | Ստուգեք IP հասցեն և ֆայրվոլի կանոնները |
Authentication failed | Սխալ օգտատեր կամ գաղտնաբառ | Ստուգեք մուտքի տվյալները |
Hostname is not specified | SSH թունելը պատահականորեն ակտիվացված է՝ առանց կոնֆիգուրացիայի | Փակեք SSH լեզվակը (tab) |
Հիմնական գործողություններ ClickHouse-ում¶
Տվյալների բազայի ստեղծում¶
Աղյուսակի ստեղծում¶
CREATE TABLE my_database.events
(
event_date Date,
event_time DateTime,
user_id UInt32,
event_type String,
value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);
Տվյալների ներդրում¶
INSERT INTO my_database.events VALUES
('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);
Տվյալների ընտրություն¶
Պարզ հարցում.
Տվյալների ագրեգացիա.
SELECT
event_type,
count() as events_count,
avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;
Ժամանակային շարքեր.
SELECT
toStartOfHour(event_time) as hour,
count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;
Տվյալների ներմուծում CSV-ից¶
Աղյուսակի ստեղծում.
CREATE TABLE my_database.logs
(
timestamp DateTime,
level String,
message String
)
ENGINE = MergeTree()
ORDER BY timestamp;
Տվյալների ներմուծում.
Օգտատերերի և լիազորությունների կառավարում¶
Օգտատիրոջ ստեղծում.
Լիազորությունների շնորհում.
Օգտատերերի դիտում.
Լիազորությունների դիտում.
Ծառայության կառավարում¶
Ծառայության միացում.
Ծառայության անջատում.
Ծառայության վերագործարկում.
Ծառայության կարգավիճակ.
Լոգերի դիտում.
Նշում
Եթե դուք աշխատում եք ոչ root օգտատիրոջ անունից, ավելացրեք sudo հրամանների առջև. sudo clickhouse start
Ակտիվ պորտերի ստուգում¶
Որպեսզի տեսնեք, թե որ պորտերին է ClickHouse-ը լսում.
Կամ ավելի մանրամասն.
Ստուգել կոնֆիգուրացիայում կարգավորված պորտերը.
Ստուգել կոնկրետ պորտ.
Պատկերացվող պորտերի ստուգման ելք.
LISTEN *:8123 clickhouse-serv (HTTP)
LISTEN *:9000 clickhouse-serv (Native TCP)
LISTEN *:9004 clickhouse-serv (MySQL)
LISTEN *:9005 clickhouse-serv (PostgreSQL)
LISTEN *:9009 clickhouse-serv (Interserver)
Նշում
ClickHouse-ի կոնֆիգուրացիայի և օպտիմալացման մանրամասն տեղեկատվությունը հասանելի է պաշտոնական մշակողի փաստաթղթերում։