概要
データストアの製品選定を行う際に、データストアに求められる機能を分類してみました。
この機能分類を分解していき、製品間で比較することを想定しております。
データストアとは、データベースだけでなく、データレイク(ストレージ)を含めることを想定しております。
私が考えているデータストアとしては、データ分析基盤における概念モデル(リファレンスアーキテクチャ)の下記を含むことを想定しております。
- ストレージ
- オペレーショナルデータストア (ODS)
- データレイク
- データ統合サービス
- データウェアハウス(DWH)【分析データストア(コールドパス)】
- 分析データストア(ホットパス)
- セマンティックデータモデル
- データ仮想化ソリューション
- クエリエンジン
データ分析基盤における概念モデル(リファレンスアーキテクチャ)については下記の記事をご確認ください。
データストアの機能
データストアの機能分類
| # |
第一分類 |
機能分類 |
| A |
機能要件 |
接続の提供 |
| B |
機能要件 |
メタデータ定義 |
| C |
機能要件 |
データ品質保証 |
| D |
機能要件 |
データ蓄積 |
| E |
機能要件 |
データの問い合わせ |
| F |
機能要件 |
プログラミング |
| G |
機能要件 |
オーケストレーション |
| H |
機能要件 |
クエリ最適化 |
| I |
機能要件 |
データ活用 |
| J |
機能要件 |
データ書き込み |
| K |
機能要件 |
データ取込 |
| V |
非機能要件 |
運用保守性 |
| W |
非機能要件 |
セキュリティ |
| X |
非機能要件 |
拡張性 |
| Y |
非機能要件 |
回復性 |
| Z |
非機能要件 |
可用性 |
データストアの機能詳細
| # |
第一分類 |
機能分類_1 |
機能分類_2 |
機能項目 |
| A010 |
機能要件 |
接続の提供 |
エンドポイントの利用 |
エンドポイントの利用 |
| A020 |
機能要件 |
接続の提供 |
APIの利用 |
ODBCによるデータ処理 |
| A030 |
機能要件 |
接続の提供 |
APIの利用 |
JDBCによるデータ処理 |
| A040 |
機能要件 |
接続の提供 |
APIの利用 |
REST APIによるデータ処理 |
| A050 |
機能要件 |
接続の提供 |
APIの利用 |
SDKによるデータ処理 |
| A060 |
機能要件 |
接続の提供 |
APIの利用 |
CLIによるデータ処理 |
| B010 |
機能要件 |
メタデータ定義 |
DDL(Data Definition Language) |
DDLの利用 |
| B020 |
機能要件 |
メタデータ定義 |
サポートしているデータ型 |
サポートしているデータ型 |
| B030 |
機能要件 |
メタデータ定義 |
動的スキーマ |
動的スキーマの利用 |
| B040 |
機能要件 |
メタデータ定義 |
データカタログから配信されたスキーマの利用 |
データカタログから配信されたスキーマの利用 |
| B050 |
機能要件 |
メタデータ定義 |
データベースオブジェクトの定義 |
複数のインスタンスの定義 |
| B060 |
機能要件 |
メタデータ定義 |
データベースオブジェクトの定義 |
複数のデータベースの定義 |
| B070 |
機能要件 |
メタデータ定義 |
データベースオブジェクトの定義 |
複数のスキーマの定義 |
| B080 |
機能要件 |
メタデータ定義 |
データベースオブジェクトの制約 |
マルチバイト文字のオブジェクトでの利用 |
| B090 |
機能要件 |
メタデータ定義 |
外部データストアオブジェクトの定義 |
外部データストアの参照 |
| C010 |
機能要件 |
データ品質保証 |
制約の利用 |
一意性制約 |
| C020 |
機能要件 |
データ品質保証 |
制約の利用 |
NOT NULL制約 |
| C030 |
機能要件 |
データ品質保証 |
制約の利用 |
主キー制約 |
| C040 |
機能要件 |
データ品質保証 |
制約の利用 |
参照整合性(外部キー)制約 |
| C050 |
機能要件 |
データ品質保証 |
制約の利用 |
チェック制約 |
| C060 |
機能要件 |
データ品質保証 |
制約の利用 |
エッジ制約 |
| C070 |
機能要件 |
データ品質保証 |
データプロファイル |
データプロファイル |
| D010 |
機能要件 |
データ蓄積 |
サポートしているデータストアモデル |
サポートしているデータストアモデル |
| D020 |
機能要件 |
データ蓄積 |
サポートしているデータ保持方針 |
サポートしているデータ保持方針 |
| D030 |
機能要件 |
データ蓄積 |
サポートしているトランザクション分離レベル |
サポートしているトランザクション分離レベル |
| D040 |
機能要件 |
データ蓄積 |
サポートしているデータモデルリング技法 |
サポートしているデータモデルリング技法 |
| D050 |
機能要件 |
データ蓄積 |
サポートしているデータ形式 |
構造化データのデータ蓄積 |
| D060 |
機能要件 |
データ蓄積 |
サポートしているデータ形式 |
半構造化データのデータ蓄積 |
| D070 |
機能要件 |
データ蓄積 |
サポートしているデータ形式 |
非構造化データのデータ蓄積 |
| D080 |
機能要件 |
データ蓄積 |
データの変更管理 |
データのバージョニング(タイムトラベル) |
| D090 |
機能要件 |
データ蓄積 |
データの変更管理 |
変更データキャプチャ |
| D100 |
機能要件 |
データ蓄積 |
HTAP(Hybrid transactional/analytical processing)の対応 |
OLTP型データストアにて分析用クエリが利用可能な領域への自動蓄積 |
| E010 |
機能要件 |
データの問い合わせ |
クエリ実行方法 |
SQLによるクエリ実行方法 |
| E020 |
機能要件 |
データの問い合わせ |
クエリ実行方法 |
REST APIによるクエリ実行方法 |
| E030 |
機能要件 |
データの問い合わせ |
クエリ実行方法 |
GraphQLによるクエリ実行方法 |
| E040 |
機能要件 |
データの問い合わせ |
クエリ実行方法 |
SDKによるクエリ実行方法 |
| E050 |
機能要件 |
データの問い合わせ |
サポートしているデータ形式 |
構造化データへのクエリ |
| E060 |
機能要件 |
データの問い合わせ |
サポートしているデータ形式 |
半構造化データへのクエリ |
| E070 |
機能要件 |
データの問い合わせ |
サポートしているデータ形式 |
非構造化データへのクエリ |
| E080 |
機能要件 |
データの問い合わせ |
外部データストアへのクエリ |
外部データストアへのクエリ実行 |
| E090 |
機能要件 |
データの問い合わせ |
外部データストアへのクエリ |
サポートしている外部データストアのファイル形式 |
| F010 |
機能要件 |
プログラミング |
ユーザー定義関数 |
ユーザー定義関数の利用 |
| F020 |
機能要件 |
プログラミング |
動的SQL |
動的SQLの利用 |
| F030 |
機能要件 |
プログラミング |
ストアードプロシージャ |
ストアードプロシージャの利用 |
| F040 |
機能要件 |
プログラミング |
トリガー |
トリガーの利用 |
| F050 |
機能要件 |
プログラミング |
ビュー |
ビューの利用 |
| F060 |
機能要件 |
プログラミング |
ビュー |
外部テーブルを含むビューの利用 |
| F070 |
機能要件 |
プログラミング |
外部APIの利用 |
外部REST APIの利用 |
| F080 |
機能要件 |
プログラミング |
外部ライブラリーの利用 |
外部ライブラリーの利用 |
| G010 |
機能要件 |
オーケストレーション |
パイプライン定義 |
他プロセス実行 |
| G020 |
機能要件 |
オーケストレーション |
パイプライン定義 |
パイプライン定義 |
| G030 |
機能要件 |
オーケストレーション |
プロセスコントロール |
パイプライントリガー登録 |
| G040 |
機能要件 |
オーケストレーション |
プロセスコントロール |
パイプライン実行ログ保持 |
| G050 |
機能要件 |
オーケストレーション |
プロセスコントロール |
パイプラインアラート |
| G060 |
機能要件 |
オーケストレーション |
プロセスコントロール |
パイプライン処理のエラー時の再実行 |
| H010 |
機能要件 |
クエリ最適化 |
インデックスの利用 |
クラスター化インデックスの設定 |
| H020 |
機能要件 |
クエリ最適化 |
インデックスの利用 |
非クラスター化インデックスの設定 |
| H030 |
機能要件 |
クエリ最適化 |
データ保持方法の最適化 |
列ストアインデックスの設定 |
| H040 |
機能要件 |
クエリ最適化 |
マテリアルビューの利用 |
マテリアルビュー(単一テーブルの集計結果を保持)の設定 |
| H050 |
機能要件 |
クエリ最適化 |
マテリアルビューの利用 |
マテリアルビュー(複数テーブルの結合後の集計結果を保持)の設定 |
| H060 |
機能要件 |
クエリ最適化 |
マテリアルビューの利用 |
マテリアルビュー(外部データストア)の設定 |
| H070 |
機能要件 |
クエリ最適化 |
パーティションの利用 |
水平的パーティション分割(シャーディング)の設定 |
| H080 |
機能要件 |
クエリ最適化 |
パーティションの利用 |
垂直的パーティション分割の設定 |
| H090 |
機能要件 |
クエリ最適化 |
水平的パーティション分割の設定方法 |
レンジ(範囲)パーティションの設定 |
| H100 |
機能要件 |
クエリ最適化 |
水平的パーティション分割の設定方法 |
リストパーティションの設定 |
| H110 |
機能要件 |
クエリ最適化 |
水平的パーティション分割の設定方法 |
ハッシュパーティションの設定 |
| H120 |
機能要件 |
クエリ最適化 |
テーブルの分散方法 |
ラウンドロビン分散テーブル |
| H130 |
機能要件 |
クエリ最適化 |
テーブルの分散方法 |
ハッシュ分散テーブル |
| H140 |
機能要件 |
クエリ最適化 |
テーブルの分散方法 |
レプリケート テーブル |
| H150 |
機能要件 |
クエリ最適化 |
リソースの再利用 |
結果セットキャッシュの利用 |
| H160 |
機能要件 |
クエリ最適化 |
リソースの最適化 |
データの統計情報更新 |
| H170 |
機能要件 |
クエリ最適化 |
リソースの最適化 |
ワークロード管理 |
| H180 |
機能要件 |
クエリ最適化 |
ストレージ最適化 |
インデックスの最適化 |
| H190 |
機能要件 |
クエリ最適化 |
ストレージ最適化 |
データ配置の最適化(VACUUM) |
| H200 |
機能要件 |
クエリ最適化 |
パフォーマンスの自動チューニング |
インデックスの自動設定 |
| H210 |
機能要件 |
クエリ最適化 |
パフォーマンスの自動チューニング |
マテリアルビューの自動設定 |
| H220 |
機能要件 |
クエリ最適化 |
パフォーマンスの自動チューニング |
データの統計情報の自動更新 |
| H230 |
機能要件 |
クエリ最適化 |
パフォーマンスの自動チューニング |
パーティションの自動設定 |
| I010 |
機能要件 |
データ活用 |
可視化 |
可視化の実施 |
| I020 |
機能要件 |
データ活用 |
統計解析 |
統計解析の実施 |
| I030 |
機能要件 |
データ活用 |
シミュレーション |
シミュレーションの実施 |
| J010 |
機能要件 |
データ書き込み |
データの更新方法 |
全件更新 |
| J020 |
機能要件 |
データ書き込み |
データの更新方法 |
差分更新 |
| J030 |
機能要件 |
データ書き込み |
データの更新方法 |
増分更新 |
| J040 |
機能要件 |
データ書き込み |
データの更新方法 |
履歴保持型差分更新 |
| J050 |
機能要件 |
データ書き込み |
連携タイミング(レイテンシー)に応じた処理 |
バッチ処理により書き込み |
| J060 |
機能要件 |
データ書き込み |
連携タイミング(レイテンシー)に応じた処理 |
準リアルタイムとイベント駆動により書き込み |
| J070 |
機能要件 |
データ書き込み |
連携タイミング(レイテンシー)に応じた処理 |
リアルタイム(低レイテンシまたはストリーミング)による書き込み |
| J080 |
機能要件 |
データ書き込み |
データ書き込みの最適化 |
データの一括書き込み |
| J090 |
機能要件 |
データ書き込み |
データ書き込みの最適化 |
ストレージからの並列書き込み |
| K010 |
機能要件 |
データ取込 |
データレプリケーション |
トランザクションレプリケーション |
| K020 |
機能要件 |
データ取込 |
データレプリケーション |
データ同期 |
| K030 |
機能要件 |
データ取込 |
他データストアへのデータ取込 |
外部ストレージへのエクスポート |
| K040 |
機能要件 |
データ取込 |
他データストアへのデータ取込 |
ODBCによるデータ取込 |
| K050 |
機能要件 |
データ取込 |
他データストアへのデータ取込 |
JDBCによるデータ取込 |
| K060 |
機能要件 |
データ取込 |
他データストアへのデータ取込 |
REST APIによるデータ取込 |
| K070 |
機能要件 |
データ取込 |
他データストアへのデータ取込 |
CLIによるデータ取込 |
| V010 |
非機能要件 |
運用保守性 |
運用支援 |
スキーマのバージョン管理 |
| V020 |
非機能要件 |
運用保守性 |
リリース支援 |
スキーマの差分反映 |
| V030 |
非機能要件 |
運用保守性 |
リリース支援 |
データベース定義の自動差分反映 |
| V040 |
非機能要件 |
運用保守性 |
リリース支援 |
ソフトウェアのバージョン管理 |
| V050 |
非機能要件 |
運用保守性 |
パフォーマンス監視 |
クエリの発行履歴の保持 |
| V060 |
非機能要件 |
運用保守性 |
パフォーマンス監視 |
クエリ実行時のリソース利用情報の保持 |
| V070 |
非機能要件 |
運用保守性 |
パフォーマンス監視 |
クエリ実行時の実行計画の保持 |
| V080 |
非機能要件 |
運用保守性 |
パフォーマンス監視 |
パフォーマンスに関するアラート |
| W010 |
非機能要件 |
セキュリティ |
認証 |
基本認証の利用 |
| W020 |
非機能要件 |
セキュリティ |
認証 |
多要素認証の実施 |
| W030 |
非機能要件 |
セキュリティ |
認証 |
多段階認証の実施 |
| W040 |
非機能要件 |
セキュリティ |
認証 |
外部IDサービスの利用 |
| W050 |
非機能要件 |
セキュリティ |
データストアシステムへの権限付与 |
SQL命令(DDL、DCL)相当に対する実行の権限付与 |
| W060 |
非機能要件 |
セキュリティ |
データストアシステムへの権限付与 |
オブジェクト(スキーマ)一覧の閲覧の権限付与 |
| W070 |
非機能要件 |
セキュリティ |
データストアシステムへの権限付与 |
子オブジェクトへの継承の権限付与 |
| W080 |
非機能要件 |
セキュリティ |
データストアシステムへの権限付与 |
データ参照の権限付与 |
| W090 |
非機能要件 |
セキュリティ |
データストアシステムへの権限付与 |
データ挿入・更新・削除の権限付与 |
| W100 |
非機能要件 |
セキュリティ |
データストアシステムへの権限付与 |
データストアに対するデータアクセス者の認証による権限付与 |
| W110 |
非機能要件 |
セキュリティ |
データへの権限付与 |
ルールベースによる行レベルセキュリティ |
| W120 |
非機能要件 |
セキュリティ |
データへの権限付与 |
データ権限(認可)テーブルを利用した行レベルセキュリティ |
| W130 |
非機能要件 |
セキュリティ |
データへの権限付与 |
列への参照権限付与による列レベルセキュリティ |
| W140 |
非機能要件 |
セキュリティ |
データへの権限付与 |
永続データマスキングによる列レベルセキュリティ |
| W150 |
非機能要件 |
セキュリティ |
データへの権限付与 |
動的データマスキングによる列レベルセキュリティ |
| W160 |
非機能要件 |
セキュリティ |
物理的なセキュリティ |
|
| W170 |
非機能要件 |
セキュリティ |
監視 |
監査ログデータの生成 |
| W180 |
非機能要件 |
セキュリティ |
境界 |
セキュリティ監視サービスの利用 |
| W190 |
非機能要件 |
セキュリティ |
ネットワーク |
ファイヤーウォールの設定 |
| W200 |
非機能要件 |
セキュリティ |
アプリケーション |
|
| W210 |
非機能要件 |
セキュリティ |
データ |
データの暗号化 |
| X010 |
非機能要件 |
拡張性 |
データ容量の拡張 |
データ容量の拡張 |
| X020 |
非機能要件 |
拡張性 |
同時実行数 |
同時実行数 |
| X030 |
非機能要件 |
拡張性 |
コンピューティングリソースの拡張 |
スケールアップ (垂直方向のスケーリング) |
| X040 |
非機能要件 |
拡張性 |
コンピューティングリソースの拡張 |
ノードのスケールアウト (水平方向のスケーリング) |
| X050 |
非機能要件 |
拡張性 |
コンピューティングリソースの拡張 |
クラスターのスケールアウト (水平方向のスケーリング) |
| X060 |
非機能要件 |
拡張性 |
コンピューティングリソースの拡張 |
コンピューティングリソースのマルチ化 |
| Y010 |
非機能要件 |
回復性 |
偶発的なリソース削除への対応 |
偶発的なリソース削除への対応 |
| Y020 |
非機能要件 |
回復性 |
データセンターの一部に対する障害対応 |
データセンターの一部に対する障害対応 |
| Y030 |
非機能要件 |
回復性 |
データセンター全体に対する障害対応 |
データセンター全体に対する障害対応 |
| Y040 |
非機能要件 |
回復性 |
バックアップ |
自動バックアップ |
| Y050 |
非機能要件 |
回復性 |
バックアップ |
手動バックアップ |
| Y060 |
非機能要件 |
回復性 |
バックアップ |
バックアップファイルのエクスポート |
| Y070 |
非機能要件 |
回復性 |
バックアップ |
バックアップからの復元 |
| Y080 |
非機能要件 |
回復性 |
バックアップ |
ポイントインタイムリストア |
| Z010 |
非機能要件 |
可用性 |
可用性の最適化 |
フォールトレランス |
| Z020 |
非機能要件 |
可用性 |
サービスレベルアグリーメント |
サービス レベル アグリーメント |
| Z030 |
非機能要件 |
可用性 |
計画的なメンテナンスへの対応 |
計画的なメンテナンスへの対応 |
| Z040 |
非機能要件 |
可用性 |
データセンターの一部に対する障害対応 |
データセンターの一部に対する障害対応 |
| Z050 |
非機能要件 |
可用性 |
データセンター全体に対する障害対応 |
データセンター全体に対する障害対応 |
前提知識
データストアモデル一覧
| # |
データストアモデル |
| 1 |
リレーショナル型データベース |
| 2 |
キーバリュー型データベース |
| 3 |
ドキュメント型データベース |
| 4 |
グラフ型データベース |
| 5 |
データ分析型データベース |
| 6 |
列指向型データベース |
| 7 |
検索エンジン型データベース |
| 8 |
時系列データベース |
| 9 |
空間データベース |
| 10 |
オブジェクトストレージ |
| 11 |
ファイル共有ストレージ |
データモデル一覧
| # |
データモデル |
| 1 |
リレーショナルモデリング(3NF) |
| 2 |
データヴォールトモデリング(DV) |
| 3 |
ディメンションナルモデリング(DM) |
| 4 |
第一正規形(大福帳)モデリング(1NF) |
| 5 |
NoSQL |
データ保持方針
| # |
データの保持方針 |
説明 |
代表的なサービス |
| 1 |
メモリとストレージの最適利用型 |
データをシステムが管理しているストレージに保持しておき、必要に応じてメモリに展開して処理する方法。 |
PostgreSQL、Spark |
| 2 |
OLTP最適化インメモリ型 |
データの書き込みとデータの読み込みに最適化できるようにデータをメモリに保持しておき処理する方法。 |
SAP HANA、Redis |
| 3 |
クエリ最適化インメモリ型 |
データの読み込みに最適化できるようにデータをメモリに保持しておき処理する方法。 |
Power BIデータセット |
| 4 |
ストレージ集中型 |
データをストレージに保持しておき、最小減のメモリのみ利用するように、中間結果をストレージに保存しながら処理する方法。 |
Hadoop |
データ処理の類型
| # |
データ処理分類 |
データ処理分類 |
説明 |
| 1 |
データ抽出 |
データ抽出 |
ソースのデータストアからデータを抽出する処理。 |
| 2 |
データ変換 |
データ変換 |
データを変換する処理。 |
| 3 |
データ変換 |
データのメタデータ変換 |
データのメタデータ(データ型、データの構造化等)を実施する処理。 |
| 4 |
データ変換 |
データのフィルタリング |
指定の条件のみのデータに変換する処理。 |
| 5 |
データ変換 |
データの並び替え |
データの並び替えを実施する処理。 |
| 6 |
データ変換 |
データの結合 |
複数のデータを結合する処理。 |
| 7 |
データ変換 |
データの集計 |
データを集計する処理。 |
| 8 |
データ変換 |
データのユニオン |
データをユニオンする処理。 |
| 9 |
データ変換 |
分析関数(Parttition BY句相当機能)の利用 |
分析関数(Parttition BY句相当機能)を利用する機能。 |
| 10 |
データ変換 |
データクレンジング |
現在のデータの品質を改善する処理 |
| 11 |
データ変換 |
データ強化 |
参照データとのマッピングや変換仕様の実装を行うことで、データの付加によるデータの品質を改善する処理。 |
| 12 |
データ取込 |
データ取込 |
ターゲットのデータストアにデータを取り込む処理。 |
| 13 |
データの問い合わせ |
データの問い合わせ |
内部で管理しているストレージからデータを読み込む処理。 |
| 14 |
データ書き込み |
データ書き込み |
内部で管理しているストレージにデータを書き込む処理。 |