ログ分析のための ClickHouse クイズ
最終更新: September 13, 2026
カラムナー形式のストレージが分析的なログクエリに役立つのはなぜですか?
- A) 常にすべてのフィールドをスキャンするため
- B) 選択したカラムを読み取り、繰り返される値を圧縮できるため
- C) 固定の圧縮率を保証するため
- D) スキーマ設計が不要になるため
回答を表示
回答: B) 選択したカラムを読み取り、繰り返される値を圧縮できるため
利点はデータ、ソートキー、クエリに依存します。このガイドは 10:1 の圧縮率や固定のスループットを保証していません。
この設計における Keeper/ZooKeeper の役割は何ですか?
- A) すべての分散 SELECT を実行する
- B) すべてのログ行を保存する
- C) レプリケートされたテーブルと分散 DDL を調整する
- D) コレクターを置き換える
回答を表示
回答: C) レプリケートされたテーブルと分散 DDL を調整する
ClickHouse のクエリイニシエーターと Distributed テーブルは分散クエリを実行します。Keeper はそれらのクエリルーターではありません。
MergeTree ストレージにレプリケーションを追加するエンジンはどれですか?
- A) ReplicatedMergeTree
- B) Memory
- C) Buffer
- D) Distributed 単体
回答を表示
回答: A) ReplicatedMergeTree
レプリカには引き続き調整、独立した永続ストレージ、適切な障害ドメイン設計が必要です。レプリケーションだけでは無条件の HA 保証にはなりません。
繰り返される namespace や severity の値に対して評価する価値がある型はどれですか?
- A) 常に FixedString(255)
- B) LowCardinality(String)
- C) ログメッセージごとに一意の整数
- D) 圧縮されない String のみ
回答を表示
回答: B) LowCardinality(String)
辞書エンコーディングは繰り返される値に役立つ場合があります。普遍的な個別値数のしきい値を前提とするのではなく、辞書サイズとクエリの挙動をベンチマークしてください。
ログテーブルの ORDER BY はどのように選択すべきですか?
- A) アルファベット順にする
- B) フィールドの作成時刻で決める
- C) 選択性の高いフィルター、局所性、代表的なクエリから決める
- D) クエリに関係なく常に timestamp を最後に置く
回答を表示
回答: C) 選択性の高いフィルター、局所性、代表的なクエリから決める
キーは順序とインデックスプルーニングに影響します。頻繁にクエリされるカラムだけでは、最適な順序は決まりません。
SAMPLE 0.1 を使用する前に、何が真でなければなりませんか?
- A) どのテーブルでも自動的にサポートされる
- B) テーブルには正確に 10 行が含まれていなければならない
- C) 常に正確に行の 10% を返す
- D) 互換性のある MergeTree サンプリング式が定義され、主キーに含まれている
回答を表示
回答: D) 互換性のある MergeTree サンプリング式が定義され、主キーに含まれている
メインのログテーブルには SAMPLE BY がありません。別の sample_demo が必要な設計を示しています。決定的なサンプリングキーの範囲が、有限の行セットの正確に 10% を含む必要はありません。
設定に応じて、Kafka は何を追加しますか?
- A) メモリ上の Buffer による、保証された exactly-once 配信
- B) 保持期間内でのバーストバッファリングとリプレイ
- C) すべてのパーサーエラーの自動的な除去
- D) 障害発生中の無制限のストレージ
回答を表示
回答: B) 保持期間内でのバーストバッファリングとリプレイ
保持期間、確認応答、レプリケーション、容量、オフセットコミット、下流の挿入動作をテストする必要があります。メモリ上の Buffer はクラッシュ時に確認応答済みのデータを失う可能性があります。
オプションの response_time_ms に nullable JSON 抽出を使用するのはなぜですか?
- A) 欠落した測定値をレイテンシーゼロのリクエストにしてはならないため
- B) すべてのログが HTTP リクエストであるため
- C) JSON 検証が不要になるため
- D) サーバーのクロックを変更するため
回答を表示
回答: A) 欠落した測定値をレイテンシーゼロのリクエストにしてはならないため
最初に JSONType を確認してブール値と数値文字列を除外し、その後 nullable な数値を抽出します。nullable 抽出だけでは、これらの値が強制変換される可能性があります。カウントおよびパーセンタイルのクエリでは、測定されたイベントを使用する必要があります。
TTL TO VOLUME 句が必要とするもの、および保証するものは何ですか?
- A) S3 バケットと IAM ロールを作成する
- B) 正確なウォールクロックの期限ですべての行を削除する
- C) 既存の選択済みストレージポリシーと、非同期のバックグラウンド処理
- D) コールドパートを独立した Parquet バックアップにする
回答を表示
回答: C) 既存の選択済みストレージポリシーと、非同期のバックグラウンド処理
TTL ではポリシーやクラウド権限を作成できません。コールドテーブルストレージと別途検証された Parquet アーカイブでは、所有権とリカバリーのセマンティクスが異なります。
- ClickHouse をバックエンドとする Grafana アラートはどのように構築すべきですか?
- A) clickhouse_custom_query という Prometheus メトリクスをでっち上げる
- B) 数値の SQL 結果および Grafana Alerting とともに grafana-clickhouse-datasource を使用する
- C) すべてのダッシュボードに管理者アカウントを付与する
- D) 受信ログがないことを正常性の証拠とみなす
回答を表示
回答: B) 数値の SQL 結果および Grafana Alerting とともに grafana-clickhouse-datasource を使用する
制限された読み取り専用アカウント、検証済みの TLS、必要なタイムアウト設定の権限を使用してください。インジェストは別途監視してください。入力がなくても集計結果がゼロを返す場合があります。