OLAP とは何か?
OLAP は Online Analytical Processing(オンライン分析処理)の略です。技術面とビジネス面の 2 つの観点から捉えられる広い概念ですが、非常に大まかには、これらの単語を逆から読むとイメージしやすくなります。
Processing : あるソースデータが処理されて…
Analytical : …分析レポートやインサイトが生成されて…
Online : …それがリアルタイムに行われます。
ビジネスの観点から見た OLAP
近年、ビジネスに携わる人々はデータの価値を認識するようになってきています。状況を把握しないまま意思決定を行う企業は、多くの場合、競合に遅れを取ってしまいます。成功している企業のデータドリブンなアプローチは、ビジネス上の意思決定に少しでも役立つ可能性のあるあらゆるデータを収集し、それらを適切なタイミングで分析するための仕組みを必要とします。ここで登場するのが OLAP データベース管理システム (DBMS) です。
ビジネスの観点では、OLAP により企業は業務活動を継続的に計画・分析・報告できるようになり、その結果として効率を最大化し、コストを削減し、最終的には市場シェアを獲得できます。これは、自社運用のシステム上で行うことも、Web/モバイル分析サービスや CRM サービスなどの SaaS プロバイダーにアウトソースすることもできます。OLAP は多くの BI (Business Intelligence) アプリケーションの基盤となる技術です。
ClickHouse は OLAP データベース管理システムであり、ドメイン固有データを分析するこれらの SaaS ソリューションのバックエンドとしてよく利用されています。しかし、一部の企業は依然として自社データをサードパーティプロバイダーと共有することに慎重であり、社内データウェアハウスという構成も有力な選択肢となります。
技術的な観点から見た OLAP
すべてのデータベース管理システムは、大きく 2 つのグループに分類できます。OLAP (Online Analytical Processing) と OLTP (Online Transactional Processing) です。前者は、大量の履歴データに基づくレポートを作成することに重点を置きますが、その実行頻度自体はそれほど高くありません。一方で後者は、トランザクションの連続的なストリームを通常扱い、データの現在の状態を継続的に更新します。
実際には、OLAP と OLTP は厳密なカテゴリというよりは一種の連続体です。ほとんどの実システムは通常どちらか一方に重点を置きつつ、反対側のワークロードも必要な場合に備えて、ある程度の機能や回避策を提供しています。このような状況は、多くの場合、ビジネスに複数のストレージシステムを統合して運用することを強制し、それ自体は大きな問題ではないかもしれませんが、システムが増えるほど運用コストは高くなります。そのため近年のトレンドは HTAP (Hybrid Transactional/Analytical Processing) であり、単一のデータベース管理システムで両方の種類のワークロードを同等にうまく処理できるようにすることを目指しています。
DBMS が純粋な OLAP または純粋な OLTP としてスタートしていたとしても、競争力を維持するためには HTAP の方向へ進まざるを得ません。ClickHouse も例外ではなく、当初は可能な限り高速な OLAP システムとして設計され、現在でも本格的なトランザクションサポートは備えていませんが、一貫性のある読み書きや、データの更新・削除のための Mutations といった機能を追加する必要がありました。
それでも、OLAP システムと OLTP システムの根本的なトレードオフは残ります。
- 分析レポートを効率的に作成するには、列を個別に読み取れることが重要であり、そのため多くの OLAP データベースはカラム型です。
- 一方で、列を個別に保存すると、行に対する操作 (追記やインプレースでの変更など) のコストが列数に比例して増加します(システムがイベントのあらゆる詳細を「念のため」に収集しようとする場合、列数は非常に大きくなりえます)。そのため、ほとんどの OLTP システムはデータを行単位で配置して保存します。