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 veri hacimlerini analiz etmeye odaklanmıştır ve analitik, izleme, günlükleme (logging) ve telemetri işleme görevlerinde yaygın olarak kullanılır.

ClickHouse. Temel Özellikler

  • Sütun tabanlı depolama: Veriler satırlar yerine sütunlar halinde saklanır; bu da analitik sorgu yürütme hızını önemli ölçüde artırır ve işlenen veri hacmini azaltır.
  • Yüksek performans: Devasa veri kümelerini işlemek için optimize edilmiştir; vektörel işleme ve verimli CPU kullanımı sayesinde milyarlarca satır üzerinde sorgu yürütme kapasitesine sahiptir.
  • Veri sıkıştırma: Özellikle analitik iş yükleri altında, saklanan veri miktarını dramatik bir şekilde azaltabilen (genellikle satır tabanlı DBMS'lerden birkaç kat daha küçük) özel sıkıştırma algoritmaları kullanır.
  • SQL uyumluluğu: Ek analitik fonksiyonlar içeren genişletilmiş SQL sözdizimini destekleyerek 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 (cluster) oluşturulmasına olanak tanır.
  • Veri replikasyonu: Yerleşik replikasyon desteği, hata toleransı ve yüksek veri kullanılabilirliği sağlar.
  • Birden fazla veri formatı desteği: CSV, JSON, Parquet, Avro ve diğer formatlarda veri içe aktarabilir ve dışa aktarabilir.
  • Materialized views: Tekrarlayan sorguları hızlandırmak için arka planda verileri otomatik olarak toplar (aggregate eder).
  • Harici kaynaklarla entegrasyon: MySQL, PostgreSQL, MongoDB, Kafka, S3 ve diğer sistemlerden doğrudan veri okumayı 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

Not

8443 ve 9100 numaralı portlar varsayılan olarak devre dışıdır ve /etc/clickhouse-server/config.xml dosyasında ek yapılandırma gerektirir.

Not

Aksi belirtilmedikçe, yazılımın en son sürümünü resmi geliştirici web sitesinden kuruyoruz.

ClickHouse Kurulumundan Sonra Başlangıç

Sipariş ödemesi 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 bildirim, VPS'in IP adresinin yanı sıra bağlantı için kullanıcı adı ve şifreyi içerecektir. Şirketimizin müşterileri, sunuculardaki donanımı ve API kontrol panelini - Invapi üzerinden yönetmektedir.

Yetkilendirme bilgileri:

  • Sunucu IP adresi: E-postada ve kontrol panelinde sağlanır;
  • Kullanıcı adı (Login): default;
  • Şifre: root hesabının şifresiyle aynıdır ve e-posta adresine gönderilir.

Dikkat

GUI istemcileri (DBeaver, DataGrip ve diğerleri) için port 8123 (HTTP arayüzü) kullanın. Port 9000 yalnızca yerel clickhouse-client için ayrılmıştır.

ClickHouse'a Bağlanma

Bağlantı Yöntemleri

Bu bölüm, clickhouse-client (komut satırı istemcisi) ve DBeaver (grafiksel arayüz) aracılığıyla ClickHouse'a bağlanmanın en yaygın yollarını açıklamaktadır. ClickHouse ayrıca diğer istemcilerle de bağlantıyı destekler: DataGrip, Tableau, MySQL Workbench (port 9004 üzerinden), pgAdmin (port 9005 üzerinden) ve ayrıca Python, Go, Java ve diğer diller için programlama kütüphaneleri.

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. Uzak 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ı ile çalışmak için evrensel bir GUI istemcisidir.

1. DBeaver Kurulumu

DBeaver'ı resmi web sitesinden indirin ve kurun.

2. Yeni bir bağlantı oluşturma

  • DBeaver'ı başlatın
  • Database >> New Database Connection seçeneğini seçin (veya Ctrl+Shift+N tuşlarına basın)

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

  • Next butonuna 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 varsayılanı belirtin)
Username: default
Password: <root_şifresi>

Kritik önemde

DBeaver bağlantıları için port 8123 kullanın.

4. JDBC sürücüsünü indirme

İlk kez bağlandığınızda, DBeaver ClickHouse için JDBC sürücüsünü indirmeniz için sizi yönlendirecektir:

  • Açılır penceredeki Download butonuna tıklayın:

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

  • OK butonuna tıklayın

5. Bağlantıyı test etme

  • Test Connection butonuna tıklayın;
  • Her şey doğru yapılandırılmışsa, şu 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 butonuna 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 Sebep Çözüm
transport error: 400 8123 yerine Port 9000 kullanıldı Port 8123 olarak 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 Yapılandırma yapılmadan yanlışlıkla SSH tüneli etkinleştirildi Bağlantı ayarlarındaki 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 toplama (Aggregation):

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ı ve yetki yönetimi

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;

Yetkileri görüntüleme:

SHOW GRANTS FOR analyst;

Servis yönetimi

Servisi başlatma:

clickhouse start

Servisi durdurma:

clickhouse stop

Servisi yeniden başlatma:

clickhouse restart

Servis durumu:

clickhouse status

Logları görüntüleme:

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

Not

Eğer root kullanıcısı olarak işlem yapmı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ırmadaki 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ı bilgiye resmi geliştirici dokümantasyonunda ulaşılabilir.

ClickHouse İçeren Bir Sunucu Sipariş Etme

Bu yazılımı API kullanarak kurmak için bu talimatları izleyin.