データプロビジョニングの説明

Objective

After completing this lesson, you will be able to データプロビジョニングのキーコンセプトについて説明します。

データプロビジョニング

概要

データプロビジョニングは非常に幅広い用語であり、ソースシステムからターゲットシステムへのデータ取得を意味します。ターゲットシステムに物理的にロードしなくてもデータを取得できるため、取得という言葉は推奨されますが、データロードは推奨されません。実際、テクノロジーの進歩により、組織内でのデータの移動は一般的ではなくなってきています。多くの場合、データをリモートで読み込む方がはるかに簡単です。

データプロビジョニングが必要な理由は数多くあります。その例を以下に挙げます。

  • ビジネスアプリケーションからデータを抽出し、中央のデータウェアハウスにロードする
  • 分析のためのデータソースへのリアルタイムアクセスの提供
  • セントラルシステムから地域システムへのデータ配信
  • 複数のシステムからセントラルシステムへのデータの統合
  • システムの同期を維持
  • レガシシステムから新規システムへのデータ移行

最も単純なデータプロビジョニングシナリオでは、ソースとターゲットの 2 つのシステムのみが関連します。しかし、多くの場合、複数のシステムが関係しています。たとえば、複数のソースシステムからのデータを単一のターゲットシステムに結合することができます。また、データを複数の対象システムに配信する単一のソースシステムという逆方向に進む場合もあります。最後に、複数のソースシステムによるデータの統合と複数の対象システムへの配信の両方を組み合わせることもできます。

データプロビジョニングの背後にある基本コンセプトの詳細については、以下のビデオを起動してください。

データプロビジョニングのアプリケーションまたはデータベースの制御

データプロビジョニングは、スタンドアロンの特殊なアプリケーション、またはデータベースの組込ツールを使用して制御できます。それぞれのアプローチについて考えてみましょう。

アプリケーション制御のデータプロビジョニングは、専用アプリケーションがデータフローを制御する場合です。これらのアプリケーションには、データソースおよびデータターゲットに接続し、システム間のデータ移動方法を決定するデータフロールールを定義するツールが用意されています。専用のデータプロビジョニングアプリケーションの例として、SAP Data Services、SAP Landscape Transformation、SAP Datasphere などがあります。

このアプリケーション制御アプローチでは、アプリケーションがソースデータベースからデータを抽出し、ターゲットデータベースにロードします。抽出ルール、制御ロジック、およびロード方法は、アプリケーションによって管理されます。データプロビジョニングアプリケーションは、システム間のデータ移動のオーケストレータと考えてください。場合によっては、データプロビジョニングアプリケーションによってソースデータが抽出され、ターゲットシステムに送信される前に一時的に保存されます。これは、複数のデータソースを組み合わせる必要があり、データを同期するためにステージングエリアが必要で、異なる時刻に到達する場合によく見られます。

専用のデータプロビジョニングアプリケーションを使用する主な理由の 1 つは、さまざまなテクノロジーを使用しているか、異なるベンダからの複数のデータソースを使用している場合です。通常、これらの専用アプリケーションでは、データベース、CSV ファイル、JSON ファイル、Web サービスなど、任意のソースのデータを処理することができます。一部は、ビジネスアプリケーションに直接接続することもできます。たとえば、SAP BW/4HANA は、データベーステーブルからではなく、アプリケーションレベルで SAP S/4HANA から抽出します。この場合、データフローロジックは、物理ストレージテクノロジーよりも高いレベルで構築されます。

このスライドは、アプリケーション制御のデータプロビジョニングの動作を示しています。

次に、データベース制御のデータプロビジョニングを見てみましょう。

基本的な要件は、データベースでデータプロビジョニングツールが提供されることです。最も単純なタイプのデータプロビジョニングツールには、あるデータベースから別のデータベースにデータを移動するためのエクスポートおよびインポートツールがあります。ただし、SAP HANA などの一部のデータベースには、データの結合、データのチェック、データの拡張を必要とするものなど、複雑なデータプロビジョニングシナリオを処理するための高度なツールが用意されています。データベースの組込ツールを使用してデータプロビジョニングを管理すると、前述のように、個別のデータプロビジョニングアプリケーションを実装する必要がなくなります。このアプローチでは、よりシンプルなランドスケープがサポートされます。

データベース提供ツールの使用とは、データベース制御のデータプロビジョニングを意味します。データフローは、データベースの一部であるツールを使用して制御されます。

このスライドは、データベース制御のデータプロビジョニングの使用方法を示しています。

このコースでは、SAP HANA オンプレミスおよび SAP HANA Cloud の組込データプロビジョニングツールについて説明します。

データ変更のキャプチャ

次のシナリオを考えてみます。SAP HANA データベース上で実行されるレポートアプリケーションを実装しました。レポートアプリケーションは、経営陣が会社の支出を分析するために使用されます。調達アプリケーションから SAP HANA ターゲットデータベースに購買発注トランザクションを毎日ロードすることにしました。まず、購買アプリケーションから注文書レコードのセット全体を抽出し、それらを SAP HANA ターゲットデータベースにロードします。ソースデータとターゲットデータが同期されています。しばらくの間だけこれは、翌日に新規調達レコードがソースデータベースに追加され、一部の既存レコードが変更され、一部のレコードが削除されるためです。

では、ソースデータベースとターゲットデータベースの同期を維持するために、ソースデータベースから次に何をロードする必要がありますか。データセット全体を再度実行しますか、それとも変更のみですか。

もちろん、ターゲットデータベース内のすべてのデータを削除し、すべてのレコードを再ロードすることもできます。つまり、同期に戻ります。しかし、特に非常に大きなデータセットで 1 つまたは 2 つのレコードのみが変更された場合、このアプローチはむしろ無駄になります。レコードが変更されていないと仮定します。テーブルの内容を削除し、リロードすることはあまり賢明ではなく、システムリソースの浪費です。また、リロードで問題が発生した場合、データがなくなる可能性があるため、データセット全体を削除するリスクもあります。

より効率的なアプローチは、レコードの変更のみをキャプチャし、その変更のみでターゲットデータベースを更新することです。レコードに対する変更のキャプチャは、多くの場合、デルタロードと呼ばれます。これは、変更データキャプチャ (CDC) とも呼ばれます。

このスライドは、データ変更のキャプチャの動作を示しています。

では、ソースアプリケーションで変更されたレコードを特定するにはどうすればよいでしょうか。

一部のデータソースでは、組込変更データキャプチャ (CDC) 機能が提供されます。つまり、変更されたレコードを特定する責任はソースシステムにあります。データ抽出メカニズムでは、完全ロードではなく、変更データキャプチャメカニズムからデルタデータが要求されるだけです。ただし、すべてのソースで CDC 機能が提供されているわけではないため、変更されなかったレコードから変更されたレコードを選択する別の方法を見つける必要があります。

以下のようなさまざまな手法を使用することができます。

  • ソースシステムの REDO ログを読み込みます (REDO ログがある場合)。ここで、データベースへの変更が収集されます。
  • レコードの変更時に起動されるソースシステムのテーブルにトリガを設定し、対象システムにレコードを送信できるようにします。
  • レコードの変更時刻を取得するタイムスタンプなど、ソースレコードのフィールドを指定します。これにより、最近変更されたレコードを特定し、不要なレコードをフィルタで除外することができます。多くのアプリケーションには、このような項目がすでに含まれています。
  • データプロビジョニングソフトウェアで頻繁に提供されるデータ比較ツールを使用して、ソーステーブルとターゲットテーブルを比較します。これにより、このツールで差異を分離し、それらのレコードのみが対象システムに更新されるようにすることができます。

最後に、変更データキャプチャのコンテキストでは、スナップショットという用語に注意する必要があります。この用語は、データプロビジョニングを記述するときによく使用されます。

スナップショットは、正確なタイミングでのソースシステムからのすべてのデータの完全なキャプチャです。スナップショットを使用する理由の 1 つは、データセットが新しいデータで上書きされる前に一定期間保存することです。たとえば、月末にデータのスナップショットをロードして、オーダーの位置を把握することができます。その後、翌月末にスナップショットを繰り返すことができます。スナップショットにより、作業可能な安定したデータセットが提供されます。履歴を構築するために、スナップショットを保持することもあります。ただし、スナップショットを保持する場合は、特にスナップショットに完全なデータセットが含まれている場合は、データの増加を考慮する必要があります。

このコースでは、変更データキャプチャに関する SAP HANA の機能について学習します。

データプロビジョニングのタイプ

データの仮想化

前述のように、データプロビジョニングは、ターゲットシステムにデータをロードする必要があることを必ずしも意味するわけではありません。データをソースシステムから読み込み、データが必要になった時点でターゲットシステムに提供することができます。対象システムでデータの読込が終了すると、接続は強制終了され、データは移動されません。これはデータ仮想化と呼ばれます。また、特にこの手法を使用して接続されたシステムのネットワークがある場合は、データフェデレーションと呼ばれることもあります。

このスライドでは、データの視覚化について説明します。

このアプローチを検討する主な理由の 1 つは、データが頻繁に変更され、最新バージョンのデータのみが読み込まれるようにする場合です。また、ソースデータが非常に時々しか読み込まれない場合もあるため、ソースデータを継続的にロードし、対象システムに書き込むことでコピーを作成しても意味がありません。

データ仮想化に関する懸念事項の 1 つは、ターゲットアプリケーションで必要になるたびにネットワーク全体にデータを移動する必要があるため、パフォーマンスが満足できない可能性があることです。これは、データ量が少ない間は問題にはならないかもしれませんが、通常、データボリュームは時間の経過とともに増加するため、有効なソリューションとして開始されるものはすぐに機能しなくなる可能性があります。ただし、データを対象システムに移動する決定を下す前に、常にデータ仮想化を考慮する必要があります。

データレプリケーション

システム間でデータを同期する必要がある場合、これはデータ複製を実装する場合です。データは、通常は変更なしで 1 つのシステムから別のシステムにコピーされます。これは、ターゲットシステムで実行されているアプリケーションで常に最新のデータが使用されるように、ターゲットシステムではソースシステムの変更時にデータがキャプチャされるという考え方です。複製は、リアルタイム (同期) またはほぼリアルタイム (非同期) で行われます。

このスライドでは、データ複製について説明します。

レプリケーションは、仮想化が適切な選択ではない場合と、ターゲットシステムにロードされる前にデータが変換または集計を必要としない場合によく使用されるオプションです。

データを複製する場合は、データボリュームを注意深く監視する必要があります。これは、大量のデータを生成するシステムから複製すると、対象システムに非常に迅速に入力できるためです。これは特に、ソースデータの粒度が非常に高い場合に当てはまります。レプリケーションでは、通常、レコードのフィルタリングや集計を行わずに 1 対 1 でデータが抽出されるためです。

データ変換

ターゲットシステムにロードする前に抽出されたデータを変更する必要がある場合は、データ変換と呼ばれます。変換は非常に幅広い用語であり、必要なもののみをロードするためにデータにフィルタを適用するのと同じくらい単純な意味があります。また、ソースデータから新しい値を生成することも意味します。たとえば、販売価格と原価を提供する各レコードの利益を計算します。変換は、欠落している項目の入力および値のチェックを参照する場合もあります。変換では、複数のシステムからのデータをマージすることができます。また、データを分割し、複数の対象システムに配信する方法を決定するルールを定義することもできます。

このスライドでは、データ変換について説明します。

複製と同様に、データ変換では 1 つまたは複数のソースシステムからデータが取得され、ターゲットシステムにロードされます。主な違いは、通常、レプリケーションではデータが変更されないのに対し、変換ではデータが変更されないことです。

複製の変換の利点の 1 つは、大量の個別トランザクションをロードするのではなく、集計ルールを適用してデータを集計できることです。そのため、データの増加を制御できます。ただし、データランドスケープが変更されるにつれて、変換はすぐに複雑になり、保守が困難になる可能性があります。