業務データの分解に関するトレードオフ

    ソフトウェアアーキテクチャ・ハードパーツ

    データベースを分けるか?分けないか?もトレードオフである。

    データを分解する要因として以下のようなものがある。

    • 変更制御
      • カラムの変更等の影響が多岐にわたる
    • コネクション管理
      • 1つのデータベースだけを使うとコネクション数の管理が難しい
    • スケーラビリティ
      • コネクション数
      • 容量
      • スループット
      • パフォーマンス
    • 耐障害性
      • 1つのデータベースだけを使うとデータベースが単一障害点となってしまう
    • アーキテクチャ量子
      • 1つのデータベースだけを使うと1つのアーキテクチャ量子となってしまう (つまり独立してデプロイできない、等)
    • データベース種別の最適化
      • 1つのデータベースだけを使うと1つの保存方法だけしか使えない (つまりデータ特性ごとに最適な選択肢が取れない)

    逆に、データを統合する要因としては以下のようなものがある。

    • データ関係
      • 密結合な外部キー等があるか?
    • トランザクション
      • 単一のトランザクション単位が必要か?

    モノリスなデータベースを分解するには5段階のプロセスを踏むと良い。

    1. 分析し、ドメインを特定する
    2. ドメインごとにテーブルを割り当て、移動する
    3. コネクションをドメインごとに分離する
    4. スキーマをそれぞれのデータベースに移動する
    5. コネクションを切り替える