[解決済み] マスター・マスターとマスター・スレーブ、どちらのデータベース・アーキテクチャが良いのか?
質問
2種類のデータベースアーキテクチャについて聞いたことがあります。
-
マスター・マスター
-
マスタ-スレーブ
マスター・マスターはGitのようなもので、すべてのユニットが全データを持ち、1つがダウンしても全く問題ないからです。
マスター・スレーブは、SVN(私は好きではありませんが)を思い出させます。
質問です。
-
それぞれの長所と短所は何ですか?
-
iPhoneなどの携帯電話にローカルデータベースを持たせたい場合、どちらが適切でしょうか?
-
どちらを選ぶかは、十分に検討すべき重要な要素なのでしょうか?
どのように解決するのですか?
私たちは、可用性、一貫性、複雑さをトレードオフしています。最後の質問に最初に取り組むことです。これは重要ですか? はい、とても重要です。データをどのように管理するかという選択は非常に重要であり、その決断を避けるためのベストプラクティスは存在しません。
特定の要件を理解する必要があります。
根本的な緊張感がありますね。
1 つのコピー: 一貫性は簡単ですが、それがたまたまダウンした場合、誰もが水面から出ることになり、人々が遠隔地にいる場合、恐ろしい通信コストを支払うことになります。ポータブル デバイスは、接続を切断して操作する必要があるため、1 つのコピーでは対応できません。
マスター スレーブ: データの各ピースが正確に 1 つのマスターを所有しているため、一貫性はそれほど難しくありません。しかし、そのマスターを見ることができない場合はどうするのでしょうか。何らかの後処理が必要です。
マスター・マスター:もしこれがうまくいくなら、すべてを提供できるように思えます。この場合の問題点は 非常に 絶対的な一貫性を維持することが難しいということです。以下を参照してください。 ウィキペディアの記事 をご覧ください。
ウィキペディアには、メリットとデメリットがうまくまとめられているようです
メリット
1つのマスターに障害が発生しても、他のマスターはデータベースの更新を継続します。 データベースを更新し続けます。
マスターは、複数の物理的なサイト、つまりネットワーク上に分散して配置することができます。 ネットワーク上に分散させることができます。
デメリット
ほとんどのマルチマスターレプリケーションシステムは、緩やかな一貫性しかありません。 すなわち遅延と非同期であり、ACIDの性質に違反しています。
Eagerレプリケーションシステムは複雑で、通信の待ち時間が発生します。 通信の遅延が発生します。
競合の解決などの問題は、関係するノードの数が増え、必要な待ち時間が短くなるにつれて
- 競合の解決などの問題は、関係するノードの数が増え、必要なレイテンシが減少するにつれて、解決不可能になります。
関連
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] mysqlデータベースのサイズを取得する方法は?
-
[解決済み] PostgreSQLデータベースへのSQLダンプのインポート
-
[解決済み] データベース レコードを削除するかしないか
-
[解決済み] 外部キーを主キーにするのは問題ないですか?
-
[解決済み] データベースの設計に外部キーは本当に必要なのか?
-
[解決済み] リレーショナル・データベースにおけるカタログとスキーマの違いは何ですか?
-
[解決済み] データベースに郵便番号を格納する必要があります。カラムの大きさはどのくらいにすればよいでしょうか?
-
[解決済み] SQLITE SQLダンプファイルをPOSTGRESQLに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベース レコードを削除するかしないか
-
[解決済み] 外部キーを主キーにするのは問題ないですか?
-
[解決済み] データベースにはすでにオブジェクト名が存在する
-
[解決済み] データベースの設計に外部キーは本当に必要なのか?
-
[解決済み] SQLite UPSERT / UPDATE OR INSERT
-
[解決済み] リレーショナル・データベースにおけるカタログとスキーマの違いは何ですか?
-
[解決済み] Mavenプラグインを1回だけ実行する?
-
[解決済み] データベースに郵便番号を格納する必要があります。カラムの大きさはどのくらいにすればよいでしょうか?
-
[解決済み] SQLITE SQLダンプファイルをPOSTGRESQLに変換する