データ ストアの選択条件

この記事では、データ ストアを評価するときに使用する比較条件について説明します。 目標は、どの種類のデータ ストレージがソリューションの要件に見合うかを判断する際に役立つことです。

一般的な考慮事項

選択するときは、以下の点に注意してください。

機能の要件

  • データ形式: どのような種類のデータを格納する予定ですか。 一般的な種類として、トランザクション データ、JSON オブジェクト、利用統計情報、検索インデックス、またはフラット ファイルがあります。
  • データ サイズ: 格納する必要があるデータの大きさは、どのくらいですか。 これらのエンティティは単一のドキュメントとして維持する必要がありますか、それとも複数のドキュメント、テーブル、コレクションに分割できますか。
  • スケールと構造: 必要なストレージ容量は全体でどのくらいの量ですか。 データをパーティション分割する予定ですか。
  • データ リレーションシップ: データでは、一対多または多対多のリレーションシップをサポートする必要がありますか。 リレーションシップ自体はデータの重要な部分ですか。 同じデータセット内、または外部のデータセットのデータを結合あるいは連結する必要はありますか。
  • 整合性モデル: 次の変更を加える前に 1 つのノードで行われた更新が他のノードに反映されていることが、どのくらい重要ですか。 結果として整合性があればよいですか。 トランザクションの ACID 保証は必要ですか。
  • スキーマの柔軟性: どの種類のスキーマをデータに適用しますか。 固定スキーマ、書き込み時スキーマの手法、または読み取り時スキーマの手法を使用しますか。
  • コンカレンシー: データを更新して同期するときに、どの種類のコンカレンシー メカニズムを使用しますか。 アプリケーションは、潜在的に競合する可能性がある多数の更新を実行しますか。 その場合、レコード ロックとペシミスティック コンカレンシー制御が必要になることがあります。 代わりに、オプティミスティック コンカレンシーをサポートすることはできますか。 その場合、簡単なタイムスタンプに基づくコンカレンシー制御で十分ですか、あるいは、追加機能として複数バージョンのコンカレンシー制御が必要ですか。
  • データ移動: ソリューションでは、ETL タスクを実行して他のストアやデータ ウェアハウスにデータを移動する必要はありますか。
  • データ ライフサイクル: データは 1 回だけ書き込んで、複数回読み取りますか。 クールまたはコールド ストレージに移動できますか。
  • その他のサポート機能: スキーマ検証、集計、インデックス作成、フルテキスト検索、MapReduce、その他のクエリ機能など、他の特定の機能が必要ですか。

非機能要件

  • パフォーマンスとスケーラビリティ: どのようなデータ パフォーマンス要件がありますか。 データ取り込み率およびデータ処理率に関する特定の要件はありますか。 データが取り込まれた後のクエリ実行と集計で許容できる応答時間はどのくらいですか。 データ ストアはどのくらいの規模にスケールアップする必要がありますか。 ワークロードの負荷がより高いのは、読み取りまたは書き込みのどちらですか。
  • 信頼性: 全体でどのようなサービス レベル アグリーメントをサポートする必要がありますか。 データ コンシューマーに対してどのようなレベルのフォールト トレランスを提供する必要がありますか。 どのような種類のバックアップおよび復元の機能が必要ですか。
  • レプリケーション: 複数のレプリカまたはリージョンにデータを配布する必要はありますか。 どのような種類のデータ レプリケーション機能が必要ですか。
  • 制限: 特定のデータ ストアの制限値で、スケール、接続数、およびスループットの要件に対応する予定ですか。

管理とコスト

  • 管理サービス: サービスとしてのインフラストラクチャ (IaaS) でホストされるデータ ストアにしかない特定の機能が必要な場合以外は、可能であれば、マネージド データ サービスを使用してください。
  • 利用可能なリージョン: 管理サービスの場合、すべての Azure リージョンでそのサービスを利用できますか。 ソリューションは、特定の Azure リージョンでホストする必要がありますか。
  • 移植性: オンプレミス、外部のデータセンター、またはその他のクラウド ホスティング環境にデータを移行する必要はありますか。
  • ライセンス: 専用のライセンスまたは OSS ライセンスのどちらかで、種類の希望はありますか。 使用できるライセンスの種類について、他の外部的な制約はありますか。
  • 総コスト: ソリューション内でサービスを使用する総コストは、どのくらいですか。 アップタイムとスループットの要件をサポートするために、どのくらいの数のインスタンスを実行する必要がありますか この計算では、運用コストを考慮してください。 管理されたサービスが好まれる 1 つの理由に、運用コストの削減があります。
  • コスト効率: より高いコスト効率でデータを格納するために、データをパーティション分割できますか。 たとえば、高価なリレーショナル データベースからオブジェクト ストアへ大規模なオブジェクトを移動できますか。

Security

  • セキュリティ: どの種類の暗号化が必要ですか。 保存時に暗号化は必要ですか。 データへの接続に使用する認証メカニズムは何ですか。
  • 監査: どの種類の監査ログを生成する必要がありますか。
  • ネットワーク要件: 他のネットワーク リソースからのデータへのアクセスを制限したり、あるいは管理したりする必要はありますか。 データは、Azure 環境の内部からだけアクセスできればよいですか。 データは特定の IP アドレスやサブネットからアクセスできる必要がありますか。 オンプレミスまたは外部の他のデータセンターでホストされているアプリケーションやサービスから、データにアクセスする必要はありますか。

DevOps

  • スキル セット: チームが使い慣れている特定のプログラミング言語、オペレーティング システム、その他のテクノロジはありますか。 チームで使用することが難しいテクノロジは、他にありますか。
  • クライアント: ご使用の開発言語に適したクライアント サポートはありますか。

次の手順