ClickHouse向けの強力な新しいJSONデータ型の開発
(clickhouse.com)紹介
- JSONは、現代のデータシステムにおいて半構造化データおよび非構造化データを扱うための標準フォーマットとして定着している。
- ClickHouseはJSONの重要性を認識しており、JSONを大規模に効果的に活用するうえでのいくつかの課題を解決している。
課題
-
課題 1: 真のカラム指向ストレージ
JSONデータを他のカラム型のように効率よく処理するため、JSONパスをカラム指向方式で保存する必要がある。 -
課題 2: 動的に変化するデータと型統合の問題
JSONパスに対して異なるデータ型を保存できるようにし、データの整合性を維持する必要がある。 -
課題 3: ディスク上のカラムデータファイルの爆発的増加の防止
固有のJSONキーが多い場合、カラムファイルの急増を防ぐためにカラム生成へ制限を設ける必要がある。 -
課題 4: 高密度ストレージ
固有ではあるが出現頻度の低いJSONキーが多い場合、NULLやデフォルト値を重複して保存しないようにする必要がある。
新しいJSONデータ型
- ClickHouseは、高性能なJSONデータ処理のための新しいJSONデータ型を導入した。
- この型は動的に変化するデータをサポートし、高いデータ圧縮率とクエリ性能を維持する。
- JSONパースのためのヒントを提供することで、性能を調整できる。
ビルディングブロック 1 - Variant型
- Variant型は、同じテーブルカラム内で異なるデータ型の値を効率的に保存できるようにする。
- 各データ型ごとに別々のサブカラムを使用し、データの整合性を維持する。
ビルディングブロック 2 - Dynamic型
- Dynamic型はVariant型を拡張し、事前に型を指定しなくても多様なデータ型を保存できるようにする。
- 保存される型の数を制限することで、カラムファイルの爆発的増加を防ぐ。
ClickHouse JSON型
- Variant型とDynamic型を基盤として新しいJSON型を実装し、すべての課題を解決する。
- JSONオブジェクトの構造に関係なく保存でき、JSONパスをサブカラムとして使って値を読み取れる。
GN⁺のまとめ
- ClickHouseの新しいJSONデータ型は、大規模データ分析におけるJSONの性能問題の解決に重点を置いている。
- この型は多様なデータ型をサポートし、高い性能と拡張性を提供する。
- JSONに加えて、XMLやYAMLなど他の半構造化型をサポートできる基盤も築く。
- ClickHouseを利用する開発者にとって有用であり、データ圧縮とクエリ性能の面で利点を提供する。
1件のコメント
Hacker Newsの意見
PostHogでClickHouseを使うという判断は、最高の選択のひとつだった。パフォーマンスを拡張しながら、同じデータセットでより多くの製品を構築できた
JSONにデータ型を追加しても、それがJSONとしての資格を保てるのか気になる
ClickHouseでこの機能が見られるのは良いことだ
ClickHouseを評価する際はApache Pinotも検討する価値がある
動的に変化するデータについて興味深く感じる
ClickHouseのJSONサポートを待っていたが、新しい型と動的カラムは特に役立ちそうだ
ClickHouseはすばらしいツールだ
数週間前にClickHouseを試したとき、カラム名に基づいてファイル名を付けていたため、長いファイル名やスラッシュのせいでファイルシステム上のエラーが発生した
ClickHouseは十分に使われていない