業務データの分解に関するトレードオフ
データベースを分けるか?分けないか?もトレードオフである。
データを分解する要因として以下のようなものがある。
- 変更制御
- カラムの変更等の影響が多岐にわたる
- コネクション管理
- 1つのデータベースだけを使うとコネクション数の管理が難しい
- スケーラビリティ
- コネクション数
- 容量
- スループット
- パフォーマンス
- 耐障害性
- 1つのデータベースだけを使うとデータベースが単一障害点となってしまう
- アーキテクチャ量子
- 1つのデータベースだけを使うと1つのアーキテクチャ量子となってしまう (つまり独立してデプロイできない、等)
- データベース種別の最適化
- 1つのデータベースだけを使うと1つの保存方法だけしか使えない (つまりデータ特性ごとに最適な選択肢が取れない)
逆に、データを統合する要因としては以下のようなものがある。
- データ関係
- 密結合な外部キー等があるか?
- トランザクション
- 単一のトランザクション単位が必要か?
モノリスなデータベースを分解するには5段階のプロセスを踏むと良い。
- 分析し、ドメインを特定する
- ドメインごとにテーブルを割り当て、移動する
- コネクションをドメインごとに分離する
- スキーマをそれぞれのデータベースに移動する
- コネクションを切り替える