2 ポイント 投稿者 GN⁺ 2024-10-23 | 1件のコメント | WhatsAppで共有

紹介

  • 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件のコメント

 
GN⁺ 2024-10-23
Hacker Newsの意見
  • PostHogでClickHouseを使うという判断は、最高の選択のひとつだった。パフォーマンスを拡張しながら、同じデータセットでより多くの製品を構築できた

    • JSON機能が出る前からClickHouseを使っており、JSON blob内のキーに対するクエリパターンに基づいて、JSONフィールドを物理カラムへ変換する処理を設定していた
    • 物理カラムが作成されると、実行時にそのカラムへクエリをルーティングし、CPUとIOの使用量を大幅に削減した
    • ClickHouseの新しいJSON型は、コンピュータがより少ない作業で済むようにし、パフォーマンスを向上させる
    • ClickHouse Inc.のチームとコミュニティは非常に素早く動いており、ParquetとIcebergのサポートにも大きな期待を寄せている
  • JSONにデータ型を追加しても、それがJSONとしての資格を保てるのか気になる

    • 標準ライブラリのJSONパーサーで読めないなら、"CH-JSON"のような名前を使うほうがよいと思う
    • ClickHouseはまだ使ったことがないが、結果はすばらしそうに聞こえる
  • ClickHouseでこの機能が見られるのは良いことだ

    • SnowflakeはIPO前にこの機能に触れたホワイトペーパーを公開しており、JSONを密かにカラムへ変換してパフォーマンスを向上させていた
  • ClickHouseを評価する際はApache Pinotも検討する価値がある

    • ClickHouseは単一マシンへのインストールを前提に設計されており、クラスタ対応が不十分だ
    • Pinotは水平スケーリングがより容易で、スター ツリーインデックスを活用すると多次元分析で性能差が大きい
  • 動的に変化するデータについて興味深く感じる

    • Elasticsearchでログを保存する際に発生する型設定の問題を解決できることを期待する
  • ClickHouseのJSONサポートを待っていたが、新しい型と動的カラムは特に役立ちそうだ

  • ClickHouseはすばらしいツールだ

    • OLAPに使っており、6億行、300GBのデータベースを問題なく処理している
    • 新しいJSONデータ型は、現在ネストされたタプルで対処しているユースケースにより適していると期待している
  • 数週間前にClickHouseを試したとき、カラム名に基づいてファイル名を付けていたため、長いファイル名やスラッシュのせいでファイルシステム上のエラーが発生した

  • ClickHouseは十分に使われていない

    • 「postgresがすべてだ」という認識があるが、必要以上のスケールが求められるならClickHouseを検討すべきだ
    • clickhouse-localはSQLを使ったCSV処理に優れており、Google SheetsやExcelにうんざりしたときには強くおすすめする