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