分散データベースでレプリケーションがどのように機能するか知りたいのですが。これを徹底的でありながら理解しやすい方法で説明できれば素晴らしいと思います。
また、分散トランザクションと分散レプリケーションを比較できれば便利です。
分散データベースでレプリケーションがどのように機能するか知りたいのですが。これを徹底的でありながら理解しやすい方法で説明できれば素晴らしいと思います。
また、分散トランザクションと分散レプリケーションを比較できれば便利です。
データベースサーバーはエンタープライズシステムの中心的な部分であり、サーバーがダウンすると、サービスの可用性が損なわれる可能性があります。
データベースサーバーが単一サーバーで実行されている場合、単一障害点が発生します。ハードウェアの問題(ディスクドライブの障害など)またはソフトウェアの誤動作(ドライバーの問題、更新の誤動作など)があると、システムが使用できなくなります。
データベースサーバーノードが1つしかない場合、より高いトラフィック負荷に対応する場合は、垂直スケーリングが唯一のオプションです。垂直スケーリング、つまりスケールアップとは、より強力なハードウェアを購入することを意味します。これにより、着信クライアントトランザクションを処理するためのリソース(CPU、メモリ、I / Oなど)が増えます。
特定のハードウェア構成まで、垂直スケーリングは、データベースシステムをスケーリングするための実行可能でシンプルなソリューションになります。問題は、価格性能比が線形ではないため、特定のしきい値を超えると、垂直スケーリングからの収穫逓減が得られることです。
垂直スケーリングのもう1つの問題は、サーバーをアップグレードするために、データベースサービスを停止する必要があることです。そのため、ハードウェアのアップグレード中はアプリケーションを使用できなくなり、基盤となるビジネスオペレーションに影響を与える可能性があります。
単一のデータベースサーバーノードを持つことに関連する前述の問題を克服するために、複数のデータベースサーバーノードを設定できます。ノードが多いほど、着信トラフィックを処理するために必要なリソースが多くなります。
また、データベースサーバーノードがダウンしている場合でも、接続する予備のデータベースノードがある限り、システムは要求を処理できます。このため、特定のデータベースサーバーノードのハードウェアまたはソフトウェアのアップグレードは、システム全体の可用性に影響を与えることなく実行できます。
複数のノードを持つことの課題は、データの一貫性です。すべてのノードが常に同期している場合、システムはですLinearizable
。これは、複数のレジスタ間でのデータの一貫性に関して最も強力な保証です。
すべてのデータベースノード間でデータを同期するプロセスはレプリケーションと呼ばれ、使用できる戦略は複数あります。
シングルプライマリレプリケーションスキームは次のようになります。
マスターノードとも呼ばれるプライマリノードは書き込みを受け入れるノードですが、レプリカノードは読み取り専用トランザクションのみを処理できます。信頼できる唯一の情報源を持つことで、データの競合を回避できます。
レプリカの同期を維持するには、プライマリノードがコミットされたすべてのトランザクションによって行われた変更のリストを提供する必要があります。
リレーショナルデータベースシステムには、正常にコミットされたすべてのデータ変更を含むREDOログがあります。
PostgreSQLは、WAL(ログ先行書き込み)レコードを使用して、トランザクションの耐久性を確保し、レプリケーションをストリーミングします。
ストレージエンジンはMySQLサーバーから分離されているため、MySQLはレプリケーションに個別のバイナリログを使用します。やり直しログはInnoDBストレージエンジンによって生成され、その目標は、バイナリログがMySQLサーバーによって作成されている間、トランザクションの耐久性を提供することであり、やり直しログによって作成された物理ログではなく、論理ログレコードを格納します。
WALまたはバイナリログエントリに記録されたものと同じ変更を適用することにより、レプリカノードはプライマリノードとの同期を維持できます。
シングルプライマリレプリケーションは、読み取り専用トランザクションに水平方向のスケーラビリティを提供します。読み取り専用トランザクションの数が増えると、着信トラフィックに対応するためにレプリカノードをさらに作成できます。
これが、水平方向のスケーリング、つまりスケールアウトのすべてです。より強力なハードウェアを購入する必要がある垂直スケーリングとは異なり、水平スケーリングはコモディティハードウェアを使用して実現できます。
一方、読み取り/書き込みトランザクションは、プライマリノードが1つしかないため、スケールアップ(垂直スケーリング)のみが可能です。
最初は、レプリケーションに関するMySQLドキュメントの確認に時間を費やすことをお勧めします。これは、データベースレプリケーションの良い例です。彼らはここにいます:
http://dev.mysql.com/doc/refman/5.5/en/replication.html
質問の全範囲をカバーすることは、1つの質問には多すぎるように思われます。
ご不明な点がございましたら、お気軽に投稿してください。ありがとう!
Clustrixは、分散トランザクションとレプリケーションの両方をサポートするシェアードナッシングアーキテクチャを備えた分散データベースです。データ分散、分散評価モデル、組み込みのフォールトトレランス、およびアーキテクチャの概要を説明する技術文書がいくつかあります。
MySQLの代替として、ClustrixはMySQLのレプリケーションポリシーを実装し、MySQL形式でbinlogを生成します。これは、ClustrixがMySQLのマスターまたはスレーブとして機能できるようにシリアル化されます。