概要
データストアの製品選定を行う際に、データストアに求められる機能を分類してみました。
この機能分類を分解していき、製品間で比較することを想定しております。
データストアとは、データベースだけでなく、データレイク(ストレージ)を含めることを想定しております。
私が考えているデータストアとしては、データ分析基盤における概念モデル(リファレンスアーキテクチャ)の下記を含むことを想定しております。
- ストレージ
- オペレーショナルデータストア (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 |
データ書き込み |
データ書き込み |
内部で管理しているストレージにデータを書き込む処理。 |