ClickHouse¶
Bu makalede
Bilgi
ClickHouse, OLAP sınıfı analitik sorguları yürütmek üzere tasarlanmış yüksek performanslı bir sütun tabanlı veritabanı yönetim sistemidir (DBMS). DBMS, düşük gecikme süresiyle büyük hacimli verileri analiz etmeye odaklanmıştır ve analitik, izleme, günlük kaydı ve telemetri işleme görevlerinde yaygın olarak kullanılmaktadır.
ClickHouse. Temel Özellikler¶
- Sütun tabanlı depolama: veriler satırlar yerine sütunlar halinde depolanır, bu da analitik sorgu yürütmesini önemli ölçüde hızlandırır ve işlenen veri hacmini azaltır.
- Yüksek performans: devasa veri setlerini işlemek için optimize edilmiştir ve vektörleştirilmiş işleme ile verimli CPU kullanımı sayesinde milyarlarca satır üzerinde sorgu yürütebilir.
- Veri sıkıştırması: depolanan veri miktarını dramatik şekilde azaltabilen (genellikle satır tabanlı DBMS'lere göre birkaç kat daha küçük) özel sıkıştırma algoritmaları kullanır, özellikle analitik iş yükleri altında.
- SQL uyumluluğu: ek analitik fonksiyonlarla genişletilmiş SQL sözdizimini destekler, mevcut uygulamaların taşınmasını kolaylaştırır.
- Dağıtık işleme: yatay ölçeklendirme ve birden fazla sunucu arasında veri işleme için küme oluşturmaya olanak tanır.
- Veri replikasyonu: yerleşik replikasyon desteği hata toleransını ve yüksek veri kullanılabilirliğini sağlar.
- Birden fazla veri formatı desteği: verileri CSV, JSON, Parquet, Avro ve diğer formatlarda içe ve dışa aktarabilir.
- Materyalize görünümler: tekrarlayan sorguları hızlandırmak için verileri arka planda otomatik olarak özetler.
- Harici kaynaklarla entegrasyon: MySQL, PostgreSQL, MongoDB, Kafka, S3 ve diğer sistemlerden veri okumayı doğrudan destekler.
Çalıştırma Özellikleri¶
| ID | Yazılım Adı | Uyumlu OS | VM | BM | VGPU | GPU | Min CPU (Çekirdekler) | Min RAM (GB) | Min HDD/SSD (GB) | Özel Alan Adı | Aktif |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 492 | ClickHouse | Ubuntu 24.04, Ubuntu 22.04 | + | + | + | + | 4 | 8 | 120 | Hayır | SİPARİŞ VER |
-
Yüklenen yazılımlar:
- ClickHouse Server >= 26.1.1
- ClickHouse Client >= 26.1.1
-
Kurulum özellikleri:
- Yazılım resmi geliştirici betiği aracılığıyla yüklenir;
- Kurulum süresi: 5-10 dakika;
- Veritabanı çeşitli SQL istemcileri üzerinden ağ bağlantıları için kullanılabilir;
- Varsayılan olarak
roothesabının şifresinden alınan şifreye sahipdefaultkullanıcısı kullanılır.
Yapılandırma ve veri dosyası konumları:
- Ana sunucu yapılandırması:
/etc/clickhouse-server/config.xml - Kullanıcı ayarları:
/etc/clickhouse-server/users.xml - Sunucu günlükleri:
/var/log/clickhouse-server/clickhouse-server.log/var/log/clickhouse-server/clickhouse-server.err.log
- Veriler:
/var/lib/clickhouse/ - PID dosyası:
/run/clickhouse-server/clickhouse-server.pid - Sistem sınırları:
/etc/security/limits.d/clickhouse.conf
Bağlantılar için kullanılabilir portlar:
| Port | Protokol | Amaç | Durum | İstemciler/Kullanım |
|---|---|---|---|---|
| 8123 | HTTP | HTTP arayüzü | Aktif | DBeaver, DataGrip, Tableau, web arayüzü, JDBC/ODBC |
| 9000 | TCP Native | ClickHouse yerel protokolü | Aktif | clickhouse-client, Python/Go sürücüler |
| 9004 | MySQL | MySQL protokolü taklidi | Aktif | MySQL Workbench, mysql istemcisi |
| 9005 | PostgreSQL | PostgreSQL protokolü taklidi | Aktif | pgAdmin, psql istemcisi |
| 9009 | Interserver HTTP | Sunucular arası replikasyon | Aktif | Küme içi iletişim |
| 8443 | HTTPS | SSL ile HTTP arayüzü | İsteğe bağlı | SSL sertifikası yapılandırması gerektirir |
| 9100 | gRPC | gRPC arayüzü | İsteğe bağlı | gRPC istemcileri |
Not
8443 ve 9100 portları varsayılan olarak devre dışıdır ve /etc/clickhouse-server/config.xml içinde ek yapılandırma gerektirir.
Not
Aksi belirtilmedikçe, yazılımın resmi geliştirici web sitesinden en son sürümünü kurarız.
ClickHouse'un Dağıtılmasından Sonra Başlangıç¶
Sipariş için ödeme yapıldıktan sonra sunucunun çalışmaya hazır olduğuna dair, kayıt sırasında belirtilen e-posta adresine bir bildirim gönderilecektir. Bu bildirimde VPS'nin IP adresi ile bağlantı için kullanıcı adı ve şifre yer alacaktır. Şirketimizin müşterileri donanımı sunucu ve API kontrol paneli üzerinden yönetir - Invapi.
Yetkilendirme ayrıntıları:
- Sunucu IP adresi: e-postada ve kontrol panelinde sağlanır;
- Kullanıcı adı:
default; - Şifre:
roothesabının şifresiyle eşleşir ve e-posta adresine gönderilir.
Önemli
GUI istemcileri (DBeaver, DataGrip ve diğerleri) için 8123 portunu (HTTP arayüzü) kullanın. 9000 portu yalnızca yerel clickhouse-client için ayrılmıştır.
ClickHouse'a Bağlanma¶
Bağlantı Yöntemleri
Bu bölüm, ClickHouse'a clickhouse-client (komut satırı istemcisi) ve DBeaver (grafik arayüz) üzerinden bağlanmanın en yaygın yollarını açıklamaktadır. ClickHouse ayrıca DataGrip, Tableau, MySQL Workbench (9004 portu üzerinden), pgAdmin (9005 portu üzerinden) ve Python, Go, Java ve diğer diller için programlama kütüphaneleri dahil olmak üzere diğer istemciler üzerinden bağlantıları da destekler.
clickhouse-client ile Bağlanma¶
ClickHouse, veritabanı işlemleri için yerel bir komut satırı istemcisi içerir.
1. Sunucudan bağlanma (yerel):
2. Uzaktaki bir makineden bağlanma:
3. Basit bir sorgu yürütme:
4. Veritabanı listesini görüntüleme:
DBeaver ile Bağlanma¶
DBeaver, ClickHouse dahil olmak üzere çeşitli veritabanlarıyla çalışmak için evrensel bir GUI istemcisidir.
1. DBeaver'ı Yükleme
DBeaver'ı resmi web sitesinden indirin ve yükleyin.
2. Yeni bir bağlantı oluşturma
- DBeaver'ı başlatın
- Database >> New Database Connection'ı seçin (veya
Ctrl+Shift+Ntuşlarına basın)

- Veritabanı listesinde ClickHouse'u bulun ve seçin

Nextdüğmesine tıklayın
3. Bağlantı parametrelerini yapılandırma
Ayarlar penceresinde aşağıdaki parametreleri belirtin:
Host: <sunucunuzun IP adresi>
Port: 8123
Database/Schema: (boş bırakın veya default belirtin)
Username: default
Password: <root_şifresi>

Son derece önemli
DBeaver bağlantıları için 8123 portunu kullanın.
4. JDBC sürücüsünü indirme
İlk kez bağlanırken DBeaver, ClickHouse için JDBC sürücüsünü indirmenizi isteyecektir:
- Açılır pencerede
Downloaddüğmesine tıklayın:

- Sürücünün indirmesinin tamamlanmasını bekleyin:

OKdüğmesine tıklayın
5. Bağlantıyı test etme
Test Connectiondüğmesine tıklayın;- Her şey doğru yapılandırıldıysa, aşağıdaki mesaj görünecektir: Connected (XXX ms):

- Mesaj şunları içerecektir:
- Server: ClickHouse X.X.X.XXX
- Driver: ClickHouse JDBC Driver X.X.X
6. Kurulumu tamamlama
Finishdüğmesine tıklayın;- Bağlantı Database Navigator'da görünecektir;
- Veritabanlarını, tabloları ve diğer nesneleri görüntülemek için bağlantı ağacını genişletin.

Yaygın sorunlar:
| Hata | Neden | Çözüm |
|---|---|---|
transport error: 400 | 8123 yerine 9000 portu kullanıldı | 8123 portuna değiştirin |
Connection refused | Yanlış IP veya güvenlik duvarı portu engelliyor | IP adresini ve güvenlik duvarı kurallarını doğrulayın |
Authentication failed | Yanlış kullanıcı adı veya şifre | Kimlik bilgilerini doğrulayın |
Hostname is not specified | SSH tüneli yapılandırma olmadan yanlışlıkla etkinleştirildi | Bağlantı ayarlarında SSH sekmesini kapatın |
ClickHouse'da Temel İşlemler¶
Veritabanı oluşturma¶
Tablo oluşturma¶
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);
Veri ekleme¶
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);
Veri seçme¶
Basit sorgu:
Veri özetleme:
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;
Zaman serisi:
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'den veri içe aktarma¶
Tablo oluşturma:
CREATE TABLE my_database.logs
(
timestamp DateTime,
level String,
message String
)
ENGINE = MergeTree()
ORDER BY timestamp;
Veri içe aktarma:
Kullanıcıları ve ayrıcalıkları yönetme¶
Kullanıcı oluşturma:
İzin verme:
Kullanıcıları görüntüleme:
Ayrıcalıkları görüntüleme:
Hizmeti yönetme¶
Hizmeti başlatma:
Hizmeti durdurma:
Hizmeti yeniden başlatma:
Hizmet durumu:
Günlükleri görüntüleme:
Not
Root olarak çalışmıyorsanız, komutların başına sudo ekleyin: sudo clickhouse start
Aktif portları kontrol etme¶
ClickHouse'un hangi portları dinlediğini görmek için:
Veya daha detaylı:
Yapılandırmada yapılandırılmış portları kontrol etmek için:
Belirli bir portu kontrol etmek için:
Beklenen port kontrolü çıktısı:
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)
Not
ClickHouse yapılandırması ve optimizasyonu hakkında ayrıntılı bilgi resmi geliştirici dokümantasyonunda mevcuttur.