Ana içeriğe geç

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 root hesabının şifresinden alınan şifreye sahip default kullanı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: root hesabı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):

clickhouse-client

2. Uzaktaki bir makineden bağlanma:

clickhouse-client --host <IP-adresi> --port 9000 --user default --password <şifre>

3. Basit bir sorgu yürütme:

SELECT version();

4. Veritabanı listesini görüntüleme:

SHOW DATABASES;

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+N tuşlarına basın)

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

  • Next düğ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 Download düğmesine tıklayın:

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

  • OK düğmesine tıklayın

5. Bağlantıyı test etme

  • Test Connection düğ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

  • Finish düğ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

CREATE DATABASE IF NOT EXISTS my_database;

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:

SELECT * FROM my_database.events LIMIT 10;

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:

INSERT INTO my_database.logs
FROM INFILE '/path/to/file.csv'
FORMAT CSV;

Kullanıcıları ve ayrıcalıkları yönetme

Kullanıcı oluşturma:

CREATE USER analyst IDENTIFIED BY 'secure_password';

İzin verme:

GRANT SELECT ON my_database.* TO analyst;

Kullanıcıları görüntüleme:

SHOW USERS;

Ayrıcalıkları görüntüleme:

SHOW GRANTS FOR analyst;

Hizmeti yönetme

Hizmeti başlatma:

clickhouse start

Hizmeti durdurma:

clickhouse stop

Hizmeti yeniden başlatma:

clickhouse restart

Hizmet durumu:

clickhouse status

Günlükleri görüntüleme:

tail -f /var/log/clickhouse-server/clickhouse-server.log

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:

ss -tlnp | grep clickhouse

Veya daha detaylı:

ss -tlnp | grep $(pidof clickhouse-server)

Yapılandırmada yapılandırılmış portları kontrol etmek için:

cat /etc/clickhouse-server/config.xml | grep -E "port>" | head -20

Belirli bir portu kontrol etmek için:

ss -tlnp | grep :8123

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.

ClickHouse ile bir sunucu sipariş etme