この記事の件ね。
https://atmarkit.itmedia.co.jp/ait/articles/2204/19/news005.html
データベース、関連する情報が相互に矛盾しない状態で維持されていること(整合性)が一つのポイントで、だからこそ便利というのがあります。
これを分散させる場合は、設計にいろいろと工夫がいる。
最初のうちは、なんでも一ヶ所につっこんであった方が簡単で、データの整合性はデータベース任せにしちゃう。
ただ、どんどん複雑になっていく一方で、とめられなくなっていくので、そのうちサービスの成長の足かせになります。
マネーフォワードは、ユーザーアカウント情報の他、銀行とかからデータ引っこ抜いてくる部分を共通して使いたかったようですね。
ゲームの、ログインサーバ(IDなどを管理)と、ゲームのシャードのサーバみたいな分け方をしたり、
共通利用していた基盤を切り出して、各サービスからそれを利用するようにシステムを分離して、データベースもわける、という設計変更をすすめているんだと思います。
(斜め読みです) [参照]
Fedibirdでやっているのは、
- 比較的パワーのあるデータベースサーバを使う
- 遠隔地に待機サーバを用意して、常時複製しておく(レプリケーション/ダメだと思ったら切り替える)
- 1日に一度フルバックアップ、分単位で差分バックアップして、7日分ぐらいとっておく(分単位で任意の時点に戻せるが、ちょっと時間がかかる)
です。
遠隔地においたサーバは、距離の分だけ通信に時間がかかります。これが案外馬鹿にならんのです。
なので、あくまで片方は待機系です。もったいなくて使いたくなるのですがw