Shard ve replica farklı sorulara cevap verir
Shard, veriyi parçalara bölerek kapasiteyi yatay büyütür. Replica ise erişilebilirlik ve okuma kapasitesi için aynı verinin kopyasını tutar. İki kavram birlikte kullanılır ama aynı problemi çözmez.
Eğer veri tek node disk ve CPU sınırına yaklaşıyorsa shard gündeme gelir. Eğer erişilebilirlik ve okuma dayanıklılığı isteniyorsa replica konuşulur.
- Shard: veri ve sorgu yükünü bölmek için.
- Replica: erişilebilirlik ve bazı okuma senaryoları için.
- Distributed table: shardlar üzerinde sorgu çalıştırmak için.
- Yanlış veri modeli, shard ekleseniz de pahalı kalabilir.
Önce MergeTree tasarımını düzeltin
ClickHouse ölçeklenebilirliği ORDER BY, partition, primary key pruning ve veri tipi kararlarına çok bağlıdır. Sorgularınız tenant_id ve tarih aralığıyla çalışıyorsa tablo düzeni bunu desteklemelidir.
Sık kullanılan panolar için projection, materialized view veya özet tablo gerekebilir. Her raporu ham event tablosundan okumak, cluster büyüdükçe maliyeti artırır.
Distributed table ne zaman pahalılaşır?
Distributed table sorguyu shardlara dağıtır ve sonuçları toplar. Eğer sorgu doğru filtrelerle shardları daraltamıyorsa çok fazla veri ağ üzerinden taşınabilir. Bu durum özellikle geniş JOIN veya yüksek kardinaliteli group by sorgularında görünür.
Bu nedenle shard key, ORDER BY ve sorgu deseni birlikte düşünülmelidir. Sadece node sayısını artırmak ağ ve koordinasyon maliyetini de artırabilir.
Shard karar notu
En büyük tablo: Günlük veri girişi: En sık sorgu filtreleri: ORDER BY: Partition: Tahmini veri saklama süresi: Tek node sınırı: disk / CPU / bellek / insert Shard adayı: Replica ihtiyacı:
Kullanım örneği: SaaS analitik panosu
SaaS ürününde her tenant için event akıyorsa ClickHouse iyi bir adaydır. Sorgular çoğu zaman tenant_id, event_date ve event_name ile filtrelenir. Tablo düzeni bu filtreleri desteklerse çok büyük veri bile daha az satır okuyarak cevaplanabilir.
Tenantlar arasında veri hacmi çok dengesizse tek büyük tenant bazı shardları ısıtabilir. Bu durumda shard key ve tenant dağılımı ayrıca ölçülmelidir.