Apache ShardingSphere は、オープンソースの分散データベース ミドルウェア ソリューションのセットで構成されるエコシステムであり、JDBC、Proxy、Sidecar (計画中) という 3 つの製品で構成されており、それぞれ独立していますが、一緒に展開して使用することができます。これらはすべて、標準化されたデータ シャーディング、分散トランザクション、データベース管理機能を提供し、Java 同型性、異種言語、クラウド ネイティブなど、さまざまな多様なアプリケーション シナリオに適用できます。
Apache ShardingSphere はリレーショナル データベース ミドルウェアとして位置付けられており、新しいリレーショナル データベースを実装するのではなく、分散シナリオでリレーショナル データベースのコンピューティング機能とストレージ機能を完全かつ合理的に利用することを目的としています。変わらないものに焦点を当て、物事の本質を捉えます。リレーショナル データベースは現在も巨大な市場を占めており、将来的にはそれを揺るがすのは難しいでしょう。私たちは、破壊することよりもむしろ、オリジナルの基盤に基づいた増分に重点を置いています。
Apache ShardingSphere 5.x では、プラグ可能なアーキテクチャに重点が置かれ始めており、プロジェクトの機能コンポーネントはプラグ可能な方法で柔軟に拡張できます。現在、データ シャーディング、読み取りと書き込みの分離、複数のデータ コピー、データ暗号化、シャドウ データベース ストレス テストなどの機能に加え、SQL および MySQL、PostgreSQL、SQLServer、Oracle などのプロトコルのサポートがすべて組み込まれています。プラグインを介してプロジェクトを実行します。開発者は、ビルディングブロックを使用するのと同じように、独自のシステムをカスタマイズできます。 Apache ShardingSphere は現在、システム拡張ポイントとして数十の SPI を提供しており、さらに多くの SPI がまだ追加されています。
ShardingSphere-JDBC
軽量の Java フレームワークとして位置付けられ、Java の JDBC 層で追加のサービスを提供します。クライアントを使用してデータベースに直接接続し、追加の展開や依存関係を必要とせずに、jar パッケージの形式でサービスを提供します。JDBC ドライバーの拡張バージョンとして理解でき、JDBC およびさまざまな ORM フレームワークと完全に互換性があります。
JPA、Hibernate、Mybatis、Spring JDBC Template などの JDBC ベースの ORM フレームワークに適用するか、JDBC を直接使用します。
DBCP、C3P0、BoneCP、Druid、HikariCP などのサードパーティのデータベース接続プールをサポートします。
JDBC 仕様を実装するデータベースをサポートします。現在、MySQL、Oracle、SQLServer、PostgreSQL、および SQL92 標準に準拠するデータベースをサポートしています。
ShardingSphere プロキシ
透過的なデータベース エージェントとして位置付けられ、異種言語をサポートするためにデータベース バイナリ プロトコルをカプセル化するサーバーを提供します。 現在、MySQL と PostgreSQL が提供されており、MySQL/PostgreSQL プロトコルと互換性のあるアクセス クライアント (MySQL Command Client、MySQL Workbench、Navicat など) を使用してデータを操作できるため、DBA にとってより使いやすくなっています。
アプリケーションに対して完全に透過的であり、MySQL/PostgreSQL サーバーとして直接使用できます。
MySQL/PostgreSQL プロトコルと互換性のあるクライアントに適用できます。
ShardingSphere サイドカー (TODO)
Kubernetes のクラウドネイティブ データベース プロキシとして位置付けられ、データベースへのすべてのアクセスをサイドカーの形式でプロキシします。センターレスで侵入ゼロのソリューションは、データベースと対話するエンゲージメント レイヤー、つまりデータベース メッシュ (データベース グリッドとも呼ばれます) を提供します。
Database Mesh は、分散データ アクセス アプリケーションとデータベースを有機的に接続する方法に焦点を当てており、乱雑なアプリケーションとデータベース間の相互作用を効果的に整理することに重点を置いています。データベース メッシュを使用すると、データベースにアクセスするアプリケーションとデータベースは、グリッド システムに登録するだけで、すべてメッシュ レイヤーによって管理されます。
ハイブリッドアーキテクチャ
ShardingSphere-JDBC は分散アーキテクチャを採用しており、Java で開発された高性能軽量 OLTP アプリケーションに適しており、ShardingSphere-Proxy は静的エントリと異種言語のサポートを提供し、OLAP アプリケーションおよびシャード データベースの管理と操作に適しています。
Apache ShardingSphere は、複数のアクセス端末で構成されるエコシステムです。 ShardingSphere-JDBC と ShardingSphere-Proxy を混合し、同じ登録センターを使用してシャーディング戦略を統一的に構成することで、さまざまなシナリオに適したアプリケーション システムを柔軟に構築でき、アーキテクトは現在のビジネス アーキテクチャに最適なシステムをより自由に調整できます。
1. データの断片化
サブライブラリ&サブテーブル
読み取りと書き込みの分離
シャーディング戦略のカスタマイズ
非集中型分散主キー
2. 分散トランザクション
標準化されたトランザクションインターフェイス
XA の強力な一貫性のあるトランザクション
柔軟な対応
3. データベース管理
分散型ガバナンス
柔軟なスケーリング
可観測性 (分散トレース、メトリクス)
データの暗号化と復号化
シャドウゲージ圧力試験