データ分析基盤（概念モデル）におけるサービスレイヤー

## 概要
データ分析基盤（概念モデル）におけるサービスレイヤーに関する整理を実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/55dc0fa4-ed5d-45c2-b9d0-be4b725d6c2c.png)

本記事にて、下記の記事におけるサービスレイヤーの詳細を記載します。

- [最強のデータ分析基盤を目指して～汎用的なデータ分析基盤の選定方法の提案～](https://qiita.com/manabian/private/e689daf5cc006eced737)


## 定義
### サービスレイヤーの定義
データ活用を行う上で最適なクエリを発行できるようにデータを保持する層。

### 物理レイヤー（サービスレイヤー）の定義
物理的にデータを保持することで、最適なクエリを発行できるようにする層。

### 論理レイヤー（サービスレイヤー）の定義
論理的に構造化したデータモデルを保持することで、想定文脈内での意味を結びつけたクエリを発行できるようにする層。

### コンポーネント詳細
| 番号 | データ基盤におけるレイヤー                    | コンポーネント名                                             | 説明                                                         | サービス例                                                   |
| ---- | --------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 14   | サービスレイヤー     （物理レイヤー）         | データウェアハウス（DWH）【分析データストア（コールドパス）】 | バッチレイヤーにて統合されたデータをデータ活用を行うために提供することに最適化したデータストア。          今までは一元的に統合された意思決定支援データベースとして扱われてたが、データレイクの概念の普及によりデータ提供機能が主たる目的となってきた。 | Amazon Redshift  、Azure Synapase Analytics                  |
| 15   | サービスレイヤー     （物理レイヤー）         | 分析データストア（ホットパス）                               | ストリーム処理サービスのターゲットとなり、リアルタイムまたは低レイテンシのデータ処理を取り込み、データ活用レイヤーにデータを提供するデータストア。 | Amazon  DyanamoDB、Azure CosmosDB                            |
| 16   | サービスレイヤー     （論理レイヤー）         | セマンティックデータモデル                                   | 利用者がデータ構造を意識せずにデータ要素の意味の推論を行いながらデータ活用を実施可能となるように、基となるデータモデルをベースとして想定文脈内での意味を結びつけたデータモデルを保持したデータストア。           基となるデータモデリング手法としてはディメンションナルモデリングが多く、スキーマの項目をビジネス用語へ変換やテーブル間のリレーションシップ・メジャー（集計値）の定義を事前に実施しておき、ユーザーはGUIで必要なデータを抽出させることが多い。 | Azure Analytsis  Servcies、SAP BW、Tableau Hyper、Power BI dataset |
| 17   | サービスレイヤー     （論理レイヤー）         | データ仮想化ソリューション                                   | データストアやサービスに対して、データの抽出、変換、統合を仮想的に実行するサービス。 | denodo                                                       |

## 要求要件
### データウェアハウス（DWH）【分析データストア（コールドパス）】
| 番号 | 要否 | 分類                           | 主要要件                                                 | 説明                                                         |
| ---- | ---- | ------------------------------ | -------------------------------------------------------- | ------------------------------------------------------------ |
| 1    | 必須 | データの書き込み               | データの一括書き込み                                     | データを、単一行ごとではなく、複数行で書き込む機能。         |
| 2    | 必須 | データの書き込み               | 差分データ書き込み                                       | データの差分更新（既存データの更新、新規データの取り込み）を行う機能。 |
| 3    | 必須 | データの書き込み               | ストレージからの並列書き込み処理                         | ストレージに配置してあるファイル内のデータを、書き込みを行う機能。 |
| 4    | 任意 | クエリ最適化                   | ワークロード管理                                         | 発行される主体に応じて割り当てるリソースを変動する機能。     |
| 5    | 任意 | クエリ最適化                   | 結果セットキャッシュ                                     | クエリの実行結果を一時的にデータとして保持し、同一のクエリが発行された場合にはその保持データを提供する機能。 |
| 6    | 任意 | クエリ最適化                   | マテリアルビュー（単一テーブルの集計結果を保持）         | 単一テーブルにおける集計データを事前に作成しておき、想定条件に一致するクエリ発行時にはその集計データを用いて処理を行う機能。 |
| 7    | 任意 | クエリ最適化                   | マテリアルビュー（複数テーブルの結合後の集計結果を保持） | 複数テーブルにて結合のみを行ったデータ、あるいは、複数テーブルにて結合と集計を行ったデータを事前に作成しておき、想定条件に一致するクエリ発行時にはその集計データを用いて処理を行う機能。 |
| 8    | 任意 | クエリ最適化                   | マテリアルビュー（外部データストア）                     | 外部データストアにおける集計データを事前に作成しておき、想定条件に一致するクエリ発行時にはその集計データを用いて処理を行う機能。 |
| 9    | 任意 | クエリ最適化                   | パーティション                                           | データを特定の条件に基づきデータを分割を行う機能。           |
| 10   | 必須 | クエリ最適化                   | 列ストアインデックス                                     | 一定量以上のデータに対して、列指向のインデックスを設定する機能。 |
| 11   | 任意 | クエリ最適化                   | セカンダリインデックス                                   | 列ストアインデックスとともに、、検索条件に最適化したインデックスを設定する機能 |
| 12   | 必須 | データ連携                     | ODBCによるエンドポイント                                 | ODBCによるデータ連携を可能とする機能。                       |
| 13   | 必須 | 拡張性                         | クエリ実行のレイテンシー                                 | 想定内の時間でクエリを実行する機能。。BIにて単一ビジュアルの表示する際には3秒以内やダッシュボードを表示する場合には10秒以内など利用用途によって、目標時間が異なる場合が多い。 |
| 14   | 必須 | 拡張性                         | クエリの同時実行性                                       | クエリの実行結果を一時的にデータとして保持し、同一のクエリが発行された場合にはその保持データを提供する |
| 15   | 任意 | 拡張性                         | MPPによるデータ処理                                      | 超並列処理 (MPP)  によるデータ処理を行う機能。               |
| 16   | 任意 | 拡張性                         | クラスターのスケールアウト                               | 同一のエンドポイントを利用可能な状態で、クラスターの数を増減する機能。 |
| 17   | 任意 | 拡張性                         | コンピューティングリソースのマルチ化                     | 同一のストレージに接続可能な状態で、クラスターの数を増減する機能。 |
| 18   | 必須 | セキュリティ                   | 外部IDサービスによる認証                                 | 外部IDサービスによる認証を実施する機能。                     |
| 19   | 必須 | セキュリティ                   | データへの権限付与                                       | データへの権限付与を設定する機能                             |
| 20   | 任意 | 外部データストアへのクエリ発行 | データレイクへのクエリ発行                               | データレイクのデータに対するクエリを発行する機能。           |
| 21   | 任意 | 外部データストアへのクエリ発行 | 分析データストア（ホットパス）に対するクエリ発行         | 分析データストア（ホットパス）から共有を受けたデータに対するクエリを発行する機能。 |

### 分析データストア（ホットパス）
| 番号 | 要否 | 分類           | 主要要件                                                     | 説明                                                         |
| ---- | ---- | -------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1    | 必須 | 接続の提供     | APIの利用                                                    | 特定の接続方法の提供によりデータ連携を可能とする機能。       |
| 2    | 必須 | データ変換     | データの変換                                                 | 保持したデータを変換する機能。                               |
| 3    | 任意 | データ蓄積     | OLTP型データストアにて分析用クエリが利用可能な領域への自動蓄積 | DWHとのデータ共有を行い、DWHにて集計を実施する機能。         |
| 4    | 必須 | データ書き込み | リアルタイム（低レイテンシまたはストリーミング）による書き込み | 連携されたデータを、低レイテンシーで書き込みを行う機能。     |
| 5    | 必須 | 拡張性         | ノードのスケールアウト                                       | 同一のエンドポイントを利用可能な状態で、CPU、メモリなどのリソースを保持したノードの数を増減する機能。 |
| 6    | 任意 | セキュリティ   | データへの権限付与                                           | データへの権限付与を設定する機能                             |

### セマンティックデータモデル
| 番号 | 要否 | 分類                   | 主要要件                 | 説明                                                         |
| ---- | ---- | ---------------------- | ------------------------ | ------------------------------------------------------------ |
| 1    | 必須 | データストアへの接続   | データストアへの接続     | 外部データストアサービスへ接続し、データの入出力を行う機能   |
| 2    | 必須 | データプリパレーション | データプリパレーション   | データを抽出・変換を行い、データモデリングの事前準備を行う機能 |
| 3    | 任意 | データプリパレーション | プッシュダウン           | 設定した処理をデータストア側で実行する機能。                 |
| 4    | 任意 | データモデリング       | データモデリング         | 基となるデータモデルをベースとして想定文脈内での意味を結びつけたデータモデル化にする機能 |
| 5    | 任意 | データモデリング       | データ抽出の利用         | 外部データストアのデータを内部に保持して処理を行う機能。     |
| 6    | 任意 | データモデリング       | ライブ接続の利用         | 外部データストアに実行の都度クエリを発行する処理を行う機能。 |
| 7    | 任意 | データモデリング       | 複合接続の利用           | データ抽出の利用とライブ接続の利用を同時に利用して処理を行う機能。 |
| 8    | 任意 | データモデリング       | クエリ最適化インメモリ型 | データの読み込みに最適化できるようにデータをメモリに保持して処理を行う機能 |
| 9    | 任意 | データモデリング       | 列指向型データベース     | データを列指向に変換して保持して処理を行う機能。             |
| 10   | 必須 | データモデリング       | データの提供             | 他システムにデータ提供を行う機能。                           |
| 11   | 必須 | セキュリティ           | データへの権限付与       | データへの権限付与を設定する機能                             |

### データ仮想化ソリューション
| 番号 | 要否 | 分類         | 主要要件                                 | 説明                                                       |
| ---- | ---- | ------------ | ---------------------------------------- | ---------------------------------------------------------- |
| 1    | 必須 | データ抽出   | データストアへの接続                     | 外部データストアサービスへ接続し、データの入出力を行う機能 |
| 2    | 必須 | データ変換   | 複数データストアのデータによるデータ変換 | 複数データストアのデータを組み合わせる機能                 |
| 3    | 必須 | データ変換   | データ変換のロジック（ビュー）保持       | データ変換を行うためのロジックを設定する機能               |
| 4    | 必須 | データ変換   | 外部データストアによるデータ変換         | Spark等の外部データストアによるデータ変換の実施            |
| 5    | 必須 | データ変換   | データ変換後のデータのキャッシュ         | データ変換後のデータのキャッシュする機能                   |
| 6    | 必須 | データ連携   | ODBCでのデータ提供                       | ODBC経由によるデータ提供を行う機能。                       |
| 7    | 任意 | データ連携   | REST APIによるデータ提供                 | REST API経由によるデータ提供を行う機能。                   |
| 8    | 任意 | ガバナンス   | データカタログ連携機能                   | データカタログと連携する機能。                             |
| 9    | 必須 | セキュリティ | データへの権限付与                       | データへの権限付与を設定する機能                           |

## 参考情報
### データウェアハウス（DWH）【分析データストア（コールドパス）】
DMBOK 2ndにて下記のような記載があり、今までは一元的に統合された意思決定支援データベースとして扱われていたが、データレイクの概念の普及によりデータ（バッチ処理結果のバッチビュー）提供機能が主たる目的となってきた。

>   1.**データウェアハウス**
>   データウェアハウス（DW）は二つの主要コンポーネントの組み合わせである。
>   統合意思決定支援データベースと、その関連ソフトウェアプログラムである。
>   関連ソフトウェアプログラムは様々なオペレーショナルソースや外部ソースからデータを収集し、クレンジングし、変換し、格納するために利用される。
>   データウェアハウスには履歴、分析などのBI要件に対応するための従属データマートも含まれる。

引用元：DMBOK 2nd

### 分析データストア（ホットパス）
特になし

### セマンティックデータモデル
セマンティックデータモデルについては、DAMAにて下記のように定義されている。

>   Data Model, Semantic (SDM) 
>   A conceptual data model that provides structure and defines meaning for non-tabular data, making that meaning explicit enough that a human or software agent can reason about it. SEE ALSO ontology. 

下記は機械翻訳結果。

>   データモデル、セマンティック（SDM）
>   構造を提供し、非表形式データの意味を定義する概念データモデル。その意味を、人間またはソフトウェアエージェントが推論できるように十分に明示的にします。 オントロジーも参照してください。
引用元：The DAMA Dictionary of Data Management, 2nd Edition

マイクロソフト様のドキュメントにて、下記のように紹介されています。
>   セマンティック モデリングは、データベース スキーマに対してある程度の抽象化レベルを提供して、ユーザーが基になるデータ構造を知る必要がないようにします。 これにより、エンド ユーザーは、基になるスキーマに対する集計と結合なしで、データのクエリを実行できるようになります。 また、通常は、データのコンテキストと意味を明確にするために、列にわかりやすい名前が付けられます。
引用元：[オンライン分析処理 (OLAP)](https://docs.microsoft.com/ja-jp/azure/architecture/data-guide/relational-data/online-analytical-processing)

>   BI セマンティック モデル
>   BI セマンティック モデルでは、エンタープライズ モデルに対するセマンティック レイヤーが表されます。 これらは、BI 開発者やビジネス ユーザーによって構築および保守されます。 BI 開発者は、エンタープライズ モデルからデータを調達するコア BI セマンティック モデルを作成します。 ビジネス ユーザーは、小規模の独立したモデルを作成したり、部署や外部のソースを使用してコア BI セマンティック モデルを拡張したりすることができます。 BI セマンティック モデルは、一般に、1 つのサブジェクト領域を対象とし、広く共有されています。

引用元：[Center of Excellence での BI ソリューションのアーキテクチャ](https://docs.microsoft.com/ja-jp/power-bi/guidance/center-of-excellence-business-intelligence-solution-architecture)

### データ仮想化ソリューション
DMBOK 2ndにて下記のように定義されている。

>   データ仮想化サーバーはデータ抽出、変換、統合を仮想的に実行する。

引用元：DMBOK 2nd

## 参考資料
- [DAMA-DMBOK: Data Management Body of Knowledge: 2nd Edition](https://www.amazon.co.jp/DAMA-DMBOK-Data-Management-Body-Knowledge/dp/1634622340)
- [データマネジメント知識体系ガイド 第二版](https://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88%E7%9F%A5%E8%AD%98%E4%BD%93%E7%B3%BB%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC%E4%BA%8C%E7%89%88-DAMA-International/dp/4296100491/ref=pd_lpo_14_t_0/355-0270959-3880927?_encoding=UTF8&pd_rd_i=4296100491&pd_rd_r=6532e6ec-4ebf-491f-8bc4-e1ea0ff00bd6&pd_rd_w=1rgNg&pd_rd_wg=XtJYk&pf_rd_p=4b55d259-ebf0-4306-905a-7762d1b93740&pf_rd_r=EQJ9BB6JE81405JYZVM7&psc=1&refRID=EQJ9BB6JE81405JYZVM7)
- [The DAMA Dictionary of Data Management, 2nd Edition: Over 2,000 Terms Defined for IT and Business Professionals (English Edition)](https://www.amazon.co.jp/DAMA-Dictionary-Data-Management-Professionals-ebook/dp/B01BT0BUCG/ref=sr_1_2?dchild=1&qid=1602683933&refinements=p_27%3ADAMA+International&s=english-books&sr=1-2&text=DAMA+International)
- [Gartner Glossary](https://www.gartner.com/en/information-technology/glossary/business-intelligence-bi)