コスト最適化: コミュニティからの戦略
このガイドは、コミュニティミートアップから得られた発見のコレクションの一部です。このページの発見は、ClickHouseを使用する際のコスト最適化に関連するコミュニティの知恵をカバーしており、特定の経験とセットアップにおいてうまく機能したものです。より具体的な問題に基づく実世界の解決策や洞察については、特定の問題別にブラウジングできます。
どのようにClickHouse Cloudが運用コストの管理に役立つかを学びましょう。
圧縮戦略: 生産におけるLZ4対ZSTD
Microsoft Clarityが数百テラバイトのデータを処理する必要があるとき、圧縮の選択がコストに劇的な影響を与えることを発見しました。彼らの規模では、ストレージの節約はすべて重要であり、パフォーマンスとストレージコストの間に伝統的なトレードオフに直面しました。Microsoft Clarityは、月間2ペタバイトの未圧縮データをすべてのアカウントで処理し、8つのノードで毎時約60,000のクエリを処理し、数百万のウェブサイトから数十億のページビューを提供しています。このようなスケールでは、圧縮戦略が重要なコスト要因となります。
彼らは最初にClickHouseのデフォルト LZ4 圧縮を使用しましたが、 ZSTD を使用することで大きなコスト削減が可能であることを発見しました。LZ4は速いですが、ZSTDはわずかに遅いパフォーマンスの代わりに、より良い圧縮を提供します。両方のアプローチをテストした結果、彼らはストレージ節約を優先する戦略的決定を下しました。結果は顕著で、パフォーマンスに管理可能な影響を与えながら、大規模なテーブルで50%のストレージ削減を実現しました。
主要な結果:
- ZSTD圧縮による大規模テーブルでの50%のストレージ削減
- 月間2ペタバイトのデータ処理能力
- 取り込みとクエリへの管理可能なパフォーマンス影響
- 数百TBスケールでの大幅なコスト削減
カラムベースの保持戦略
最も強力なコスト最適化技術の1つは、実際に使用されているカラムを分析することから来ています。Microsoft Clarityは、ClickHouseの組み込みテレメトリ機能を使用して洗練されたカラムベースの保持戦略を実施しています。ClickHouseは、カラムごとのストレージ使用量に関する詳細なメトリックや、アクセスされたカラム、頻度、クエリの持続時間、および全体の使用統計に関する包括的なクエリパターンを提供します。
このデータ駆動型アプローチにより、保持ポリシーやカラムのライフサイクル管理に関する戦略的決定が可能になります。このテレメトリデータを分析することで、Microsoftは、significant spaceを消費するが基本的にクエリが少ないカラム、すなわちストレージホットスポットを特定できます。こうした低使用カラムに対しては、保持ポリシーを攻撃的に実施し、ストレージ期間を30か月からわずか1か月に短縮したり、全くクエリされていないカラムを完全に削除したりすることができます。この選択的保持戦略は、ユーザーの体験に影響を与えることなくストレージコストを削減します。
この戦略:
- ClickHouseテレメトリを使用してカラムの使用パターンを分析
- 高ストレージ低クエリのカラムを特定
- 選択的保持ポリシーを実施
- データ駆動型の決定のためのクエリパターンを監視
関連ドキュメント
パーティションベースのデータ管理
Microsoft Clarityは、パーティショニング戦略がパフォーマンスと運用のシンプルさの両方に影響を与えることを発見しました。彼らのアプローチ:日付でパーティション分けし、時間で順序付ける。この戦略は、クリーンアップ効率だけでなく、顧客向けサービスの請求計算を簡素化し、行ベースの削除に関するGDPR準拠要件をサポートするなど、複数の利点をもたらします。
主要な利点:
- trivial data cleanup (パーティションを削除することvs行単位で削除)
- 請求計算のシンプル化
- パーティションエリミネーションによるクエリパフォーマンスの改善
- 簡単な運用管理
関連ドキュメント
文字列から整数への変換戦略
分析プラットフォームは、何百万行にもわたって繰り返して現れるカテゴリー的データに関してストレージの課題に直面します。Microsoftのエンジニアリングチームは、検索分析データのこの問題に直面し、影響を受けたデータセットで60%のストレージ削減を達成した効果的な解決策を開発しました。
Microsoftのウェブ分析システムでは、検索結果が異なるタイプの回答をトリガーします - 天候カード、スポーツ情報、ニュース記事、事実に基づく応答。それぞれのクエリ結果には、「weather_answer」、「sports_answer」、「factual_answer」のような説明文字列が付けられていました。数十億の検索クエリが処理される中で、これらの文字列値がClickHouseに繰り返し保存され、大量のストレージ容量を消費し、クエリ中に高価な文字列比較が必要でした。
Microsoftは、別のMySQLデータベースを使用して文字列から整数へのマッピングシステムを実装しました。ClickHouseに実際の文字列を保存する代わりに、整数IDのみを保存します。ユーザーがUIを通じてクエリを実行し、weather_answer
のデータを要求すると、クエリオプティマイザーがまずMySQLマッピングテーブルを参照し、対応する整数IDを取得し、その後クエリを整数を使用するように変換してClickHouseに送信します。
このアーキテクチャはユーザー体験を保持します - ユーザーはダッシュボードでweather_answer
のような意味のあるラベルを引き続き見ることができます - 一方でバックエンドのストレージとクエリははるかに効率的な整数で操作します。このマッピングシステムは、ユーザーインターフェースやユーザーフローに変更を加えることなく、すべての翻訳を透過的に処理します。
主要な利点:
- 影響を受けたデータセットでの60%のストレージ削減
- 整数比較におけるクエリパフォーマンスの向上
- 結合と集計のためのメモリ使用量の削減
- 大規模な結果セットのためのネットワーク転送コストの低減
これはMicrosoft Clarityのデータシナリオに特有の例です。すべてのデータがClickHouseにある場合や、データをClickHouseに移動する制約がない場合は、dictionariesを使用してみてください。
動画ソース
- Microsoft Clarity and ClickHouse - Microsoft Clarityチーム
- ClickHouse journey in Contentsquare - Doron Hoffman & Guram Sigua (ContentSquare)
これらのコミュニティのコスト最適化の洞察は、数百テラバイトからペタバイトのデータを処理する企業からの戦略を示しており、ClickHouseの運用コストを削減するための実世界のアプローチを提供しています。