- 背景
- 課題
- 目的
背景
システムへのアクセスが増加する中、データベースのスループットは大きなボトルネックに直面しています。 同時に多数の読み取り操作と少数の書き込み操作を行うアプリケーションシステムでは、データベースをマスターとスレーブに分割し、マスターがトランザクションの追加、削除、変更を処理し、スレーブがクエリ操作を処理することで、データ更新による行ロックを効果的に回避し、システム全体のクエリ性能を大幅に向上させることができます。
マスタ-マルチスレーブ構成では、クエリ要求を複数のデータレプリカに均等に分散させることができるため、システムの処理能力をさらに向上させることができます。 複数のマスタと複数のスレーブを使用することで、システムのスループットが向上するだけでなく、システムの可用性も向上し、データベースがダウンした場合でも、ディスクが物理的に損傷した場合でも、システムの正常な動作に影響を与えません。
シャーディング・キーに基づいてデータを個々のデータ・ノードに分割する水平シャーディングとは異なり、読み書き分離では、SQLのセマンティクスの分析に基づいて、読み取りと書き込みの操作をそれぞれマスターとスレーブのライブラリにルーティングします。
読み書き分離のデータノードのデータ内容は同じですが、水平スライシングの各データノードのデータ内容は同じではありません。水平スライシングと読み書き分離を併用することで、より効果的にシステムのパフォーマンスを向上させることができます。
課題
読み書き分離はシステムのスループットと可用性を向上させますが、データの不整合という問題も発生します。 これには、複数のマスタリポジトリ間のデータ整合性や、マスタリポジトリとスレーブレポジトリ間のデータ整合性が含まれます。 さらに、読み書き分離もデータ・シャーディングと同じ問題を引き起こし、アプリケーション開発者や運用者にとってデータベースの運用や保守がより複雑になります。 次の図は、テーブル・シャーディングとデータベース・シャーディングを読み書き分離とともに使用する場合の、アプリケーションとデータベース・クラスタの複雑なトポロジーを示しています。
目的
マスター・スレーブ・データベース・クラスタをあたかも単一のデータベースであるかのように使用できるように、読み取り/書き込み分離の影響を透明化することが、ShardingSphere 読み取り/書き込み分離モジュールの主な設計目標です。