blog

ShardingSphere 4.x Read/Write Separation Up

システムへのアクセスが増加する中、データベースのスループットは大きなボトルネックに直面しています。 同時に多数の読み取り操作と少数の書き込み操作を行うアプリケーションでは、データベースをマスターとスレ...

Jul 13, 2020 · 2 min. read
  • 背景
  • 課題
  • 目的

背景

システムへのアクセスが増加する中、データベースのスループットは大きなボトルネックに直面しています。 同時に多数の読み取り操作と少数の書き込み操作を行うアプリケーションシステムでは、データベースをマスターとスレーブに分割し、マスターがトランザクションの追加、削除、変更を処理し、スレーブがクエリ操作を処理することで、データ更新による行ロックを効果的に回避し、システム全体のクエリ性能を大幅に向上させることができます。

マスタ-マルチスレーブ構成では、クエリ要求を複数のデータレプリカに均等に分散させることができるため、システムの処理能力をさらに向上させることができます。 複数のマスタと複数のスレーブを使用することで、システムのスループットが向上するだけでなく、システムの可用性も向上し、データベースがダウンした場合でも、ディスクが物理的に損傷した場合でも、システムの正常な動作に影響を与えません。

シャーディング・キーに基づいてデータを個々のデータ・ノードに分割する水平シャーディングとは異なり、読み書き分離では、SQLのセマンティクスの分析に基づいて、読み取りと書き込みの操作をそれぞれマスターとスレーブのライブラリにルーティングします。

読み書き分離のデータノードのデータ内容は同じですが、水平スライシングの各データノードのデータ内容は同じではありません。水平スライシングと読み書き分離を併用することで、より効果的にシステムのパフォーマンスを向上させることができます。

課題

読み書き分離はシステムのスループットと可用性を向上させますが、データの不整合という問題も発生します。 これには、複数のマスタリポジトリ間のデータ整合性や、マスタリポジトリとスレーブレポジトリ間のデータ整合性が含まれます。 さらに、読み書き分離もデータ・シャーディングと同じ問題を引き起こし、アプリケーション開発者や運用者にとってデータベースの運用や保守がより複雑になります。 次の図は、テーブル・シャーディングとデータベース・シャーディングを読み書き分離とともに使用する場合の、アプリケーションとデータベース・クラスタの複雑なトポロジーを示しています。

目的

マスター・スレーブ・データベース・クラスタをあたかも単一のデータベースであるかのように使用できるように、読み取り/書き込み分離の影響を透明化することが、ShardingSphere 読み取り/書き込み分離モジュールの主な設計目標です。

Read next

フック 問題記録

完全にオプションです。 既存のコードを書き換えることなく、いくつかのコンポーネントでフックを試すことができます。 フックに破壊的な変更はありません。 ②.コードの再利用が容易:カスタムフックによって状態を再利用するため、クラスコンポーネントのロジックを再利用することが難しい場合があるという問題を解決します。 ③.機能的なプログラミングスタイル:機能的なコンポーネントは、状態が実行時環境に保存されます。

Jul 11, 2020 · 1 min read

nginxの設定 wss

Jul 10, 2020 · 2 min read

島の数

Jul 10, 2020 · 2 min read

Javaアノテーションの詳細

Jul 8, 2020 · 2 min read

JavaScriptの誕生

Jul 7, 2020 · 3 min read