ClickHouse/docs/ja/introduction/history.md
2020-04-03 16:23:32 +03:00

5.5 KiB

toc_priority toc_title
7 歴史

ClickHouseの歴史

ClickHouseは元々、 世界で2番目に大きなWeb分析プラットフォーム である Yandex.Metricaを強化するために開発されたもので、このシステムのコアコンポーネントであり続けています。データベースには13兆を超えるレコードがあり、毎日200億を超えるイベントが発生しますが、ClickHouseでは集計されていないデータから直接カスタムレポートを生成できます。この記事では、ClickHouseの開発の初期段階におけるClickHouseの目標について簡単に説明します。

Yandex.Metricaは、ユーザーが定義した任意のセグメントを使用して、ヒットとセッションに基づいてカスタマイズされたレポートをその都度作成します。これには、多くの場合、一意のユーザー数などの複雑な集計を作成する必要があり、レポートを作成するための新しいデータがリアルタイムで受信されます。

2014年4月の時点で、Yandex.Metricaは毎日約120億のイベント(ページビューとクリック)を追跡していました。カスタムレポートを作成するには、これらすべてのイベントを保存する必要があります。単一のクエリで、数百ミリ秒以内に数百万行をスキャンしたり、わずか数秒で数億行をスキャンする必要があります。

Yandex.Metricaおよびその他のYandexサービスでの用途

ClickHouseは、Yandex.Metricaで複数の目的に使用されます。その主なタスクは、非集計データを使用してオンラインでレポートを作成することです。 374台のサーバーからなるクラスターを使用し、20.3兆行をデータベースに保存します。圧縮されたデータの量は、重複データとレプリケーションを除いて約2PBです。非圧縮データ(TSV形式)の量は約17PBにもなります。

ClickHouseは以下の目的にも使用されます。

  • Yandex.Metricaのデータをセッションリプレイのために保存する。
  • 中間データを処理する。
  • Analyticsを使用したグローバルレポートの作成。
  • Yandex.Metricaエンジンをデバッグするためのクエリの実行。
  • APIおよびユーザーインターフェイスからのログの分析。

ClickHouseは少なくとも、そのほか12のYandexのサービス(検索分野、Market、Direct、ビジネス分析、モバイル開発、AdFox、パーソナルサービスなど)で利用されています。

集約されたデータと非集約データ

統計を効果的に計算するには、データの量を減らすため、データを集計する必要があるという一般的な意見があります。

ただし次の理由により、データ集約は非常に限られた解決策です。

  • ユーザーが必要とするレポートの事前定義リストが必要です。
  • ユーザーはカスタムレポートを作成できません。
  • 大量のキーを集約する場合、データ量は削減されず、集約は役に立ちません。
  • 多数のレポートの場合、集計のバリエーションが多すぎます(組み合わせ爆発)
  • カーディナリティの高いキー(URLなど)を集約する場合、データの量はそれほど減少しません(たかだか半分程度)。
  • このため、集約されたデータの量は減少するどころか増加する場合があります。
  • 生成した全てのレポートをユーザが見るわけではありません。計算の大部分は無駄になっています。
  • データの論理的な整合性は、さまざまな集計に対して違反する可能性があります。

何も集約せず、集約されていないデータを操作する場合、実際には計算量が減る可能性があります。

しかしながら集約は、その大部分がオフラインで実行され、比較的ゆったりと処理します。対照的に、オンライン計算では、ユーザーが結果を待っているため、できるだけ高速に計算する必要があります。

Yandex.Metricaには、Metrageと呼ばれるデータを集計するための特別なシステムがあり、これはほとんどのレポートで使用されています。 2009年以降、Yandex.Metricaは、以前にレポートビルダーで使用されていたOLAPServerと呼ばれる非集計データ用の特殊なOLAPデータベースも使用しました。 OLAPServerは非集計データに対してはうまく機能しましたが、多くの制限があり、必要に応じてすべてのレポートに使用することはできませんでした。制限とは、(数値のみしか扱えない)データ型サポートの欠如や、リアルタイムでデータを段階的に更新できないこと(毎日データを書き換えることによってのみ更新可能)がありました。 OLAPServerはDBMSではなく、特殊なDBだったのです。

OLAPServerの制限を取り除き、レポートのための非集計データを扱う問題を解決するために、私達は ClickHouse DBMSを開発しました。

Original article