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

## 概要
データ分析基盤（概念モデル）におけるインタフェースレイヤーに関する整理を実施します。
![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)

## 定義
### インタフェースレイヤーの定義
ソースレイヤーとデータ分析基盤の仲介を行い、必要に応じてデータの一時的保存や処理を行う層。

#### インタフェースレイヤーに含まれるコンポーネント

| 番号 | データ基盤におけるレイヤー                    | コンポーネント名                                             | 説明                                                         | サービス例                                                   |
| ---- | --------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 6    | インタフェースレイヤー                        | ストレージ                                                   | データストアやサービスからのデータの配置、および、コネクター経由で取得したデータの配置を実施するためのデータストア。 | HDFS、Amazon  S3、Azure Storage                              |
| 7    | インタフェースレイヤー                        | コネクター                                                   | データストアやサービスから、データの抽出・ロードを実施する機能。 | ODBC、REST API                                               |
| 8    | インタフェースレイヤー                        | オペレーショナルデータストア (ODS)                           | ソースから抽出したデータに対して、クレンジング・統合・標準形式への変換により品質を保証したデータを、短期間（30日から60日）を保持させる、運用データの統合データストア。          データレイクに連携前に、本コンポーネントにより、データ品質を確認することにより、データスワンプ（沼）化をさけることが可能となる。          インターフェースレイヤーにて、インターフェース側のシステム担当者の仲介を果たすこともある。 | RDB(MySQL、SQL  Server、PostgreSQL)                          |
| 9    | インタフェースレイヤー                        | データレプリケーションサービス                               | あるプライマリーデータストアにおけるデータを１つ以上のセカンダリデータストアへ、定期的にデータを同期するサービス。 | CData Sync、Qlik  Replicate                                  |
| 10   | インタフェースレイヤー                        | リアルタイムインジェスト                                     | メッセジングのエンドポイントとなり、メッセジングとストリーム処理サービスとのデータの仲介を行い、データを一時的に保持するサービス。 | Amazon  Kinesis、Azure IoT Hub、Apatch Kafka                 |

## 要求要件
### コネクター
下記の機能を保持する必要があります。

| 番号 | 要否 | 分類       | 主要要件                                     | 説明                                                         |
| ---- | ---- | ---------- | -------------------------------------------- | ------------------------------------------------------------ |
| 1    | 必須 | データ抽出 | データストアからのデータ抽出                 | ソースとなるデータストアからデータを抽出する機能。           |
| 2    | 必須 | データ抽出 | 標準コネクターによるデータストアへ接続       | システムで保持しているコネクターによるデータストアに接続する機能。 |
| 3    | 必須 | データ抽出 | ODBCによるデータストアへ接続                 | ODBCによるデータストアに接続する機能。                       |
| 4    | 任意 | データ抽出 | JDBCによるデータストアへ接続                 | JDBCによるデータストアに接続する機能。                       |
| 5    | 任意 | データ抽出 | REST APIによるデータストアへ接続             | REST APIによるデータストアに接続する機能。                   |
| 6    | 任意 | データ抽出 | カスタムコネクターによるデータストアへの接続 | 利用者が開発したカスタムコネクターによるデータストアに接続する機能。 |
| 7    | 必須 | データ取込 | データストアへのデータ取込（sink）           | ターゲットとなるデータストアへデータ取込する機能。           |
| 8    | 任意 | 接続の提供 | API利用（FTP）                               | FTP・SFTPによる接続方法の提供によりデータ連携を可能とする機能。 |
| 9    | 任意 | 接続の提供 | API利用（REST API）                          | REST APIにより処理を実行する機能。                           |
| 10   | 任意 | 接続の提供 | API利用（SDK）                               | SDKにより処理を実行する機能。                                |

### ストレージ
下記の機能を保持する必要があります。

| 番号 | 要否 | 分類       | 主要要件                   | 説明                                                         |
| ---- | ---- | ---------- | -------------------------- | ------------------------------------------------------------ |
| 1    | 必須 | データ蓄積 | 構造化データのデータ蓄積   | 構造化データのデータを蓄積する機能。                         |
| 2    | 必須 | データ蓄積 | 半構造化データのデータ蓄積 | 構造化データのデータを蓄積する機能。                         |
| 3    | 必須 | データ蓄積 | 非構造化データのデータ蓄積 | 構造化データのデータを蓄積する機能。                         |
| 4    | 任意 | 接続の提供 | API利用（GUI Tool）        | GUIによる接続方法の提供によりデータ連携を可能とする機能。    |
| 5    | 必須 | 接続の提供 | API利用（CLI Tool）        | CLIによる接続方法の提供によりデータ連携を可能とする機能。    |
| 6    | 任意 | 接続の提供 | API利用（REST API）        | REST  APIによる接続方法の提供によりデータ連携を可能とする機能。 |
| 7    | 任意 | 接続の提供 | API利用（SDK）             | SDK（ソフトウェア開発キット）による接続方法の提供によりデータ連携を可能とする機能。 |

### オペレーショナルデータストア（ODS）
下記の機能を保持する必要があります。

| 番号 | 要否 | 分類           | 主要要件                         | 説明                                                         |
| ---- | ---- | -------------- | -------------------------------- | ------------------------------------------------------------ |
| 1    | 必須 | 接続の提供     | ODBCによるエンドポイント         | ODBCによるデータ連携を可能とする機能。                       |
| 2    | 必須 | データ品質保証 | データ品質保証                   | データ品質を確認する機能。                                   |
| 3    | 必須 | プログラミング | 分析関数（ウインドウ関数）の利用 | 分析関数（特に指定列ごとに連番を付与するROW  NUMBE関数）を利用する機能。 |
| 4    | 任意 | データ取込     | ストレージへの取込               | ストレージにデータの取込を行う機能。                         |

下記のデータ品質の確認を行う必要があります。

| 番号 | 分類   | 項目                             |
| ---- | ------ | -------------------------------- |
| 1    | 正確性 | ソースシステムの承認             |
| 2    | 一貫性 | 差分データの検証                 |
| 3    | 一貫性 | 全文データの検証                 |
| 4    | 整合性 | 一意性制約の検証                 |
| 5    | 整合性 | 参照整合性（外部キー制約）の検証 |
| 6    | 整合性 | NOT NULL制約の検証               |
| 7    | 整合性 | グローバルマスター変換可否の検証 |
| 8    | 適時性 | データ連携処理情報の可視化       |
| 9    | 有効性 | データ型の確認                   |

ソースデータのシステムにてMDMを含めたデータ品質のガバナンスを実施すべきであり、データ分析基盤においてはデータ処理の運用上に必要となる最低限のデータ品質確認にとどめるべきである。データの可視化ツール等によりデータ品質の低さに気づくことがあり、データ分析基盤の担当者に問い合わせが集中するなどの業務のオーバーヘッドが発生することがよくある。そのような課題に対して、ソースのシステムに関する問い合わせ対応が可能なデータスチュアート制の導入が有効である。データスチュアートがソースデータのシステム側でMDM等のツールを用いて調査を行うべきであり、データ分析基盤においてはシステム連携を実施する上でのインタフェース仕様の確認にするのがよい。

### データレプリケーションサービス
下記の機能を保持する必要があります。

| 番号 | 要否 | 分類             | 主要要件             | 説明                                                 |
| ---- | ---- | ---------------- | -------------------- | ---------------------------------------------------- |
| 1    | 任意 | 接続の提供       | 変更データキャプチャ | 追加・削除・更新されたデータを把握する機能。         |
| 2    | 必須 | 差分データの把握 | 差分データの把握     | 特定の条件に基づき差分データを把握する機能。         |
| 3    | 必須 | データ抽出       | データの抽出         | ソースとなるデータストアからデータ抽出を行う機能。   |
| 4    | 必須 | データ取込       | データの取込         | ターゲットとなるデータストアにデータ取込を行う機能。 |

### リアルタイムインジェストサービス
下記の機能を保持する必要があります。

| 番号 | 要否 | 分類             | 主要要件               | 説明                                                         |
| ---- | ---- | ---------------- | ---------------------- | ------------------------------------------------------------ |
| 1    | 必須 | リアルタイム処理 | メッセジングブローカー | ソースから送信されたメッセージをターゲットに仲介する機能     |
| 2    | 任意 | リアルタイム処理 | 先入先出法による配信   | 受信された順番に配信する機能。サービス全体にて保証する場合と各ノードで保証する場合がある。 |
| 3    | 任意 | データ取込       | データの取込           | ターゲットとなるデータストアにデータの取込を行う機能。       |
| 4    | 必須 | 接続の提供       | エンドポイント         | リアルタイム処理を行う際の接続先となる機能。                 |
| 5    | 必須 | 拡張性           | ノードのスケールアウト | 同時実行性を向上させるためにノードのスケールアウトを実施する機能。 |

## 参考情報
### コネクター

DAMAにおいてはETLを下記のように定義しており、コネクターはETLの抽出機能のみをさす。
> Extract-Transform-Load (ETL) 
1 Generally, an approach to data integration  from multiple source databases to integrated target databases (Operational Data Stores, Data  Warehouses, or Data Marts). 
2 Commonly, a software product or tool that ex-tracts data from a data source, converts data to a new format, and loads the data to a target data-base. SEE ALSO data integration. 

下記は機械翻訳結果

>　抽出-変換-ロード（ETL）
　1一般に、複数のソースデータベースから統合されたターゲットデータベース（運用データストア、データウェアハウス、またはデータマート）へのデータ統合へのアプローチ。
2一般に、データソースからデータを抽出し、データを新しい形式に変換し、データをターゲットデータベースにロードするソフトウェア製品またはツール。 データ統合も参照してください。

引用元：The DAMA Dictionary of Data Management, 2nd Edition

### オペレーショナルデータストア (ODS)
オペレーショナルデータストア (ODS)とは、DAMAにより下記のような定義をされておりますが、本概念モデルではデータ品質確認の機能に特化させております。

>   Operational Data Store (ODS)
>   An integrated database of operational data. Its sources include legacy databases and other operational databases. An ODS contains current or near term data. An ODS may contain 3o to 6o days of information, while a Data Warehouse typically contains years of data. Like a Data Warehouse, data in an ODS is extracted from sources, cleansed, consolidated ,and transformed into a standard format. An ODS supports enterprise reporting, Master Data Management and application integration as the enterprise source for shared operational data. An ODS may serve as the primary source for a Data Warehouse, or be used to audit a Data Warehouse. 

下記は機能翻訳結果

>   オペレーショナルデータストア（ODS）
>   運用データの統合データベース。そのソースには、レガシーデータベースやその他の運用データベースが含まれます。 ODSには、現在または短期のデータが含まれています。 ODSには30日から60日の情報が含まれる場合がありますが、データウェアハウスには通常何年ものデータが含まれます。データウェアハウスと同様に、ODSのデータはソースから抽出され、クレンジングされ、統合され、標準形式に変換されます。 ODSは、共有運用データのエンタープライズソースとして、エンタープライズレポート、マスターデータ管理、およびアプリケーション統合をサポートします。 ODSは、データウェアハウスの主要なソースとして機能する場合もあれば、データウェアハウスの監査に使用される場合もあります。

引用元：The DAMA Dictionary of Data Management, 2nd Edition

### データレプリケーションサービス
データレプリケーションをDAMAでは下記のように定義されており、本概念モデルにおける認識と相違はあまりないです。

>   data replication
>   The consistent copying of data from one primary data site to one or more secondary data sites. The copied data are kept in synch with the primary data on a regular basis. (Brackett 2011) 

下記は機械翻訳結果

>   データ複製
>   1つのプライマリデータサイトから1つ以上のセカンダリデータサイトへのデータの一貫したコピー。 コピーされたデータは、定期的にプライマリデータと同期されます。 （Brackett 2011）

引用元：The DAMA Dictionary of Data Management, 2nd Edition

### リアルタイムインジェストサービス
リアルタイムインジェストサービスには、メッセージ・ブローカー機能を保持しており、DAMAが下記のように定義している。

>   Message Broker
>   A message broker is a logical hub that copies and resends messages to one or more destinations. As a value-adding third party between information sources and information consumers, it can complement a service-oriented architecture (SOA). Like an SOA, a broker is a design abstraction that may be implemented using component software for some or all of the connections. The interface from a message broker to the application may use an object request broker (ORB) or object transaction monitor (OTM); a request to the message broker may be implemented as a series of method calls to participating components.

>   メッセージ ブローカー
>   メッセージ・ブローカーは、1 つ以上の宛先にメッセージをコピーして再送信する論理ハブです。情報ソースと情報利用者の間で付加価値を持つ第三者として、サービス指向アーキテクチャ(SOA)を補完することができます。SOA と同様に、ブローカーは、一部またはすべての接続にコンポーネント ソフトウェアを使用して実装できる設計の抽象化です。メッセージ・ブローカーからアプリケーションへのインターフェースは、オブジェクト・リクエスト・ブローカー (ORB) またはオブジェクト・トランザクション・モニター (OTM) を使用できます。メッセージ ブローカへの要求は、参加コンポーネントへの一連のメソッド呼び出しとして実装される場合があります。

引用元：[Gartner Glossary Message Broker](https://www.gartner.com/en/information-technology/glossary/message-broker)


### 

## 参考資料
- [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)