コンピューティング において、オンライン分析処理 (OLAP) ( / ˈ oʊ l æ p / ) は、多次元分析(MDA) クエリに迅速に回答するためのアプローチです。 [ 1 ] OLAPという用語は、従来のデータベース用語であるオンライン トランザクション処理(OLTP)を少し変更して作成されました。[ 2 ] OLAP は、リレーショナル データベース、レポート作成、データ マイニングも含む、より広範なビジネス インテリジェンスのカテゴリの一部です。 [ 3 ] OLAP の典型的なアプリケーションには、販売、マーケティング、管理レポート、ビジネス プロセス管理(BPM)のビジネス レポート、 [ 4 ]予算編成と予測、財務報告などの分野があり、農業などの新しいアプリケーションも出現しています。[ 5 ]
OLAP ツールを使用すると、ユーザーは多次元データを複数の視点から対話的に分析できます。OLAP は、統合 (ロールアップ)、ドリルダウン、スライスとダイシングの 3 つの基本的な分析操作で構成されています。[ 6 ] : 402–403統合とは、1 つ以上の次元で蓄積および計算できるデータの集計です。たとえば、すべての営業所は、販売トレンドを予測するために、営業部または営業部門にロールアップされます。対照的に、ドリルダウンは、ユーザーが詳細をナビゲートできるようにする手法です。たとえば、ユーザーは、地域の売上を構成する個々の製品ごとの売上を表示できます。スライスとダイシングは、ユーザーがOLAP キューブの特定のデータセットを取り出して (スライス) 、スライスをさまざまな視点から表示 (ダイシング) できる機能です。これらの視点は、ディメンションと呼ばれることもあります (たとえば、同じ売上を営業担当者別、日付別、顧客別、製品別、地域別などで表示する場合など)。
OLAP用に構成されたデータベースは多次元データモデルを使用し、複雑な分析クエリやアドホッククエリを高速に実行できます。[ 7 ]ナビゲーションデータベース、階層型データベース、リレーショナルデータベースの側面を取り入れています。
OLAPは通常、OLTP(オンライン・トランザクション処理)と対比されます。OLTPは一般的に、ビジネスインテリジェンスやレポート作成を目的とするのではなく、トランザクション処理のために、より単純なクエリを大量に処理することを特徴としています。OLAPシステムは主に読み取りに最適化されていますが、OLTPはあらゆる種類のクエリ(読み取り、挿入、更新、削除)を処理する必要があります。
OLAPシステムの中核となるのは、OLAPキューブ(「多次元キューブ」またはハイパーキューブとも呼ばれる)です。これは、ディメンションごとに分類されたメジャーと呼ばれる数値データで構成されています。メジャーは、ディメンションがベクトル空間として張るハイパーキューブの交点に配置されます。OLAPキューブを操作するための一般的なインターフェースは、表計算ソフトのピボットテーブルのようなマトリックスインターフェースであり、集計や平均化など、ディメンションに沿った射影演算を実行します。
キューブメタデータは通常、リレーショナルデータベース内のスター型スキーマ、スノーフレーク型スキーマ、またはファクトテーブルの集合から作成されます。メジャーはファクトテーブルのレコードから、ディメンションはディメンションテーブルから導出されます。
各指標には、ラベル、つまりメタデータのセットが関連付けられていると考えることができます。ディメンションとは、これらのラベルを記述するものであり、指標に関する情報を提供します。
簡単な例としては、店舗の売上をメジャー、日付/時刻をディメンションとするキューブが挙げられます。各売上には、その売上に関する詳細情報を示す日付/時刻ラベルが付いています。
例えば:
売上概要表 +-------------+----------+ | 販売金額 | 時間ID | +-------------+----------+ 時間次元 | 930.10| 1234 |----+ +---------+-------------------+ +-------------+----------+ | | time_id | timesamp | | +---------+-------------------+ +---->| 1234 | 20080902 12:35:43 | +---------+-------------------+
多次元構造は、「多次元構造を使用してデータを整理し、データ間の関係を表現するリレーショナル モデルのバリエーション」と定義されます。[ 6 ] : 177この構造はキューブに分割され、キューブは各キューブの範囲内でデータを格納およびアクセスできます。「多次元構造内の各セルには、その各次元に沿った要素に関連する集約データが含まれています。」[ 6 ] : 178 データが操作されても、アクセスは容易であり、コンパクトなデータベース形式を構成し続けます。データは依然として相互に関連しています。多次元構造は、オンライン分析処理 (OLAP) アプリケーションを使用する分析データベースで非常に人気があります。[ 6 ] 分析データベースは、複雑なビジネス クエリに迅速に回答を提供できるため、これらのデータベースを使用します。データはさまざまな角度から見ることができるため、他のモデルとは異なり、問題のより広い視点が得られます。[ 8 ]
複雑なクエリの場合、OLAP キューブはOLTPリレーショナル データに対する同じクエリに必要な時間の約 0.1% で回答を生成できると主張されています。 [ 9 ] [ 10 ] OLAP でこのようなパフォーマンスを実現できる最も重要なメカニズムは、集計の使用です。集計は、特定のディメンションの粒度を変更し、集計関数(または集計関数)を使用してこれらのディメンションに沿ってデータを集計することにより、ファクト テーブルから構築されます。可能な集計の数は、ディメンションの粒度の可能なすべての組み合わせによって決まります。
考えられるすべての集計と基本データの組み合わせには、データから回答できるすべてのクエリに対する回答が含まれています。[ 11 ]
通常、計算可能な集計は多数あるため、多くの場合、あらかじめ決められた数だけが完全に計算され、残りは必要に応じて解決されます。どの集計(ビュー)を計算するかを決定する問題は、ビュー選択問題として知られています。ビュー選択は、選択された集計セットの合計サイズ、基本データの変更からそれらを更新するのにかかる時間、またはその両方によって制約されることがあります。ビュー選択の目的は通常、OLAPクエリに応答する平均時間を最小化することですが、更新時間を最小化する研究もあります。ビュー選択はNP完全問題です。この問題に対しては、貪欲アルゴリズム、ランダム化探索、遺伝的アルゴリズム、A*探索アルゴリズムなど、多くの手法が検討されてきました。
Some aggregation functions can be computed for the entire OLAP cube by precomputing values for each cell, and then computing the aggregation for a roll-up of cells by aggregating these aggregates, applying a divide and conquer algorithm to the multidimensional problem to compute them efficiently.[12] For example, the overall sum of a roll-up is just the sum of the sub-sums in each cell. Functions that can be decomposed in this way are called decomposable aggregation functions, and include COUNT, MAX, MIN, and SUM, which can be computed for each cell and then directly aggregated; these are known as self-decomposable aggregation functions.[13]
In other cases, the aggregate function can be computed by computing auxiliary numbers for cells, aggregating these auxiliary numbers, and finally computing the overall number at the end; examples include AVERAGE (tracking sum and count, dividing at the end) and RANGE (tracking max and min, subtracting at the end). In other cases, the aggregate function cannot be computed without analyzing the entire set at once, though in some cases approximations can be computed; examples include DISTINCT COUNT, MEDIAN, and MODE; for example, the median of a set is not the median of medians of subsets. These latter are difficult to implement efficiently in OLAP, as they require computing the aggregate function on the base data, either computing them online (slow) or precomputing them for possible rollouts (large space).
OLAP systems have been traditionally categorized using the following taxonomy.[14]
MOLAP (multi-dimensional online analytical processing) is the classic form of OLAP and is sometimes referred to as just OLAP. MOLAP stores this data in an optimized multi-dimensional array storage, rather than in a relational database.
Some MOLAP tools require the pre-computation and storage of derived data, such as consolidations – the operation known as processing. Such MOLAP tools generally utilize a pre-calculated data set referred to as a data cube. The data cube contains all the possible answers to a given range of questions. As a result, they have a very fast response to queries. On the other hand, updating can take a long time depending on the degree of pre-computation. Pre-computation can also lead to what is known as data explosion.
Other MOLAP tools, particularly those that implement the functional database model, do not pre-compute derived data but make all calculations on demand other than those that were previously requested and stored in a cache.
Advantages of MOLAP
MOLAPの欠点
MOLAPを使用する商用製品の例としては、Cognos Powerplay、Oracle Database OLAP Option、MicroStrategy、Microsoft Analysis Services、Essbase、TM1、Jedox、icCubeなどが挙げられます。
ROLAP はリレーショナル データベースと直接連携し、事前計算は不要です。基本データとディメンション テーブルはリレーショナル テーブルとして格納され、集計情報を格納するために新しいテーブルが作成されます。これは特殊なスキーマ設計に依存します。この手法は、リレーショナル データベースに格納されているデータを操作して、従来の OLAP のスライスとダイシング機能の外観を実現します。本質的に、スライスとダイシングの各操作は、SQL ステートメントに「WHERE」句を追加することと同等です。ROLAP ツールは、事前計算されたデータ キューブを使用せず、代わりに標準リレーショナル データベースとそのテーブルにクエリを実行して、質問に答えるために必要なデータを取得します。ROLAP ツールは、手法がキューブの内容に限定されないため、あらゆる質問を実行できます。ROLAP は、データベースの最も低いレベルの詳細までドリルダウンする機能も備えています。
ROLAPはリレーショナルデータベースをソースとして使用しますが、一般的にデータベースはROLAPでの使用を想定して慎重に設計する必要があります。OLTP用に設計されたデータベースは、ROLAPデータベースとしてはうまく機能しません。そのため、ROLAPでは依然としてデータのコピーを作成する必要があります。ただし、データベースであるため、データベースへのデータ投入にはさまざまな技術を使用できます。
OLAP業界では、ROLAPは一般的に、大量のデータに対応できる拡張性を備えているものの、MOLAPに比べてクエリのパフォーマンスが遅いと認識されています。主要なOLAP製品すべてを対象とした最大規模の独立調査であるOLAP Surveyは、6年間(2001年から2006年)にわたって実施され、データ量を考慮した場合でも、ROLAPを使用している企業はMOLAPを使用している企業よりもパフォーマンスが遅いと一貫して報告しています。
しかし、あらゆる調査と同様に、結果を解釈する際には、考慮すべき多くの微妙な問題点が存在する。
既存のリレーショナルデータベーステーブルを再利用することを目的にROLAPを選択する企業もありますが、これらのテーブルはOLAPでの利用に最適な設計になっていない場合が少なくありません。ROLAPツールの優れた柔軟性により、このような最適とは言えない設計でも動作させることは可能ですが、パフォーマンスは低下します。一方、 MOLAPツールでは、データを最適なOLAP設計に再ロードする必要があります。
ETLコストの増加とクエリパフォーマンスの低下という望ましくないトレードオフのため、現在ではほとんどの商用OLAPツールが「ハイブリッドOLAP」(HOLAP)アプローチを採用しており、モデル設計者はデータのどの部分をMOLAPに格納し、どの部分をROLAPに格納するかを決定できるようになっています。
業界全体で「ハイブリッド OLAP」が何であるかについての明確な合意はありませんが、データベースがデータをリレーショナルストレージと専用ストレージに分割するという点だけは共通しています。[ 15 ]例えば、一部のベンダーでは、HOLAP データベースはリレーショナル テーブルを使用して大量の詳細データを保持し、より集計された、または詳細度の低い少量のデータの少なくとも一部の側面には専用ストレージを使用します。HOLAP は、両方のアプローチの機能を組み合わせることで、 MOLAPとROLAPの欠点を解消します。HOLAP ツールは、事前計算されたキューブとリレーショナル データ ソースの両方を利用できます。
このモードでは、HOLAP は高速なクエリ パフォーマンスのために集計をMOLAPに格納し、キューブ処理時間を最適化するために詳細データをROLAPに格納します。
このモードでは、HOLAP は高速クエリ パフォーマンスのために、通常はより新しいデータ (つまり、時間次元でスライスされたもの) をMOLAPに格納し、古いデータはROLAPに格納します。さらに、大きな直方体には密な部分領域と疎な部分領域が存在するという事実を利用して、一部のダイスをMOLAPに、他のダイスをROLAPに格納することもできます。[ 16 ]
HOLAPストレージを提供する最初の製品はHolosでしたが、この技術はMicrosoft Analysis Services、Oracle Database OLAP Option、MicroStrategy、SAP AG BI Acceleratorなどの他の商用製品でも利用可能になりました。ハイブリッドOLAPアプローチはROLAPとMOLAP技術を組み合わせたもので、ROLAPの高い拡張性とMOLAPの高速な計算という利点を享受できます。たとえば、HOLAPサーバーは大量の詳細データをリレーショナルデータベースに格納し、集計データは別のMOLAPストアに格納することができます。Microsoft SQL Server 7.0 OLAP ServicesはハイブリッドOLAPサーバーをサポートしています。
それぞれのタイプには一定の利点があるが、提供者間では具体的な利点について意見の相違がある。
以下の略語も時折使用されますが、上記のものほど広く普及しているわけではありません。
SQL を標準クエリ言語とし、ODBC、JDBC、OLEDBなどのAPI が広く普及していたリレーショナル データベースとは異なり、OLAP の世界では長い間そのような統一がありませんでした。最初の真の標準 API は、1997 年に登場したMicrosoftのOLE DB for OLAP仕様で、 MDXクエリ言語が導入されました。サーバーとクライアントの両方の OLAP ベンダーのいくつかがこれを採用しました。2001 年に Microsoft とHyperion はXML for Analysis仕様を発表し、ほとんどの OLAP ベンダーがこれを支持しました。これもクエリ言語として MDX を使用したため、MDX が事実上の標準となりました。[ 26 ] 2011 年 9 月以降、LINQ を使用してMicrosoft .NET からSSAS OLAP キューブをクエリできるようになりました。 [ 27 ]
OLAPクエリを実行した最初の製品は、 1970年にリリースされたExpress ( 1995年にInformation ResourcesからOracleに買収された)でした。 [ 28 ]しかし、この用語は1993年に「リレーショナルデータベースの父」と呼ばれるEdgar F. Coddによって造語されるまで登場しませんでした。Coddの論文[ 1 ]は、CoddがかつてのArbor Software(後にHyperion Solutionsとなり、2007年にOracleに買収された)のために行った短期のコンサルティング業務から生まれたもので、一種のマーケティング上の成功でした。
同社は1年前に独自のOLAP製品であるEssbaseをリリースしていた。そのため、コッドの「オンライン分析処理の12の法則」はEssbaseに明確に言及していた。その後、論争が起こり、ComputerworldはコッドがArborから報酬を受け取っていたことを知ると、記事を撤回した。OLAP市場は1990年代後半に力強い成長を遂げ、数十の商用製品が市場に投入された。1998年、マイクロソフトは初のOLAPサーバーであるMicrosoft Analysis Servicesをリリースし、OLAPテクノロジーの幅広い採用を促進し、主流へと押し上げた。
OLAPクライアントには、Excelなどのスプレッドシートプログラム、Webアプリケーション、SQL、ダッシュボードツールなど、多くの種類があります。多くのクライアントは、ユーザーが関心のあるディメンションとメジャーを選択できるインタラクティブなデータ探索をサポートしています。一部のディメンションはフィルター(データのスライスとダイシング用)として使用され、その他はピボットテーブルまたはピボットチャートの軸として選択されます。ユーザーは、表示されるビューの集計レベル(ドリルダウンまたはロールアップ用)を変更することもできます。クライアントは、スライダー、地理マップ、ヒートマップなど、さまざまなグラフィカルウィジェットを提供することができ、これらはダッシュボードとしてグループ化および調整できます。OLAPサーバー比較表の視覚化列には、クライアントの詳細なリストが表示されます。