Apache ShardingSphereのJDBCとProxyをどう使い分けるか
分散 SQL を使用してデータ インテリジェンスを強化し、すべてのデータベースにわたるシャーディング、スケーラビリティ、セキュリティを実現します。
ひと目でわかる
- これは何?
- Apache ShardingSphereは異種データベースの上に分散SQLとガバナンス機能を置くJavaプロジェクトだ。JDBC組み込み型と独立Proxy型では、導入位置も障害の見え方も異なる。
- 誰に向いている?
- Javaアプリケーション内でSQL処理を組み込みたいチームはShardingSphere-JDBCを、複数言語のクライアントや運用チームで接続点を共有したい場合はShardingSphere-Proxyを候補にできます。単一DBの単純なCRUDに分散ルールを持ち込む必要はありません。
- 商用利用できる?
- できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 1 日前です。
- 何の言語で書かれている?
- 主に Java です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
位置づけと範囲
Apache ShardingSphereはApacheソフトウェア財団が保守するJavaプロジェクトで、Apache License 2.0で公開されている。READMEはこれを異種データベースの上に構築する標準とエコシステムと説明し、Database Plusと呼んでいる。新しいデータベースを作るのではなく、既存のデータベースの上のオペレーティングシステム層として働き、統一的なデータアクセスと追加の計算能力を提供する。このプロジェクトは2020年4月16日にApacheトップレベルプロジェクトとなり、READMEは19,000以上のプロジェクトに採用されていると述べている。リポジトリメタデータには20,771スターと6,902フォークが記載されている。
三つの柱:接続、拡張、プラグイン可能
READMEはプロジェクトを三つの柱で整理している。接続はデータベース上層の標準を構築し、プロトコル、SQL方言、ストレージ形式の柔軟な適応を通じてアプリケーションをマルチモーダルな異種データベースに素早くつなぐこと。拡張は計算拡張エンジンであり、分散計算、データセキュリティ、トラフィック制御、可観測性を提供する。プラグイン可能はマイクロカーネルと三層のプラグイン可能アーキテクチャを指し、カーネル、機能コンポーネント、エコシステム統合を完全に分離して、開発者が構成を組み立てられるようにする。
二つのアクセスエンド
ShardingSphereには二つのアクセスエンドがある。ShardingSphere-JDBCは軽量なJavaフレームワークであり、拡張されたJDBCドライバで、クライアント側から直接接続し、JAR形式で配布され、追加のデプロイや依存を必要としない。ShardingSphere-Proxyは透過的なデータベースプロキシで、独立したサーバーとしてデプロイされ、データベースのバイナリプロトコルをカプセル化するため、MySQLやPostgreSQLに互換性のあるクライアントなら接続できる。READMEによると、この二つは独立してデプロイすることも、同じレジストリセンターでハイブリッドにデプロイすることもできる。
JDBCの詳細とANTLRキャッシュの警告
ShardingSphere-JDBCについて、READMEはMyBatis、JPA、HibernateなどのORMフレームワークとの互換性をうたい、高パフォーマンスのJavaアプリケーション向けとしている。また具体的な警告もある。ANTLRはSQL解析時に内部キャッシュを使ってパフォーマンスを向上させるが、アプリケーションにSQLテンプレートが多すぎるとキャッシュが成長し続け、大量のヒープメモリを占有する可能性がある。READMEはANTLR issue 4232を引用し、この問題はまだ最適化されていないとし、-Xmxで合理的なヒープサイズを設定してメモリ不足エラーを避けるよう推奨している。
Proxyとハイブリッドデプロイ
ShardingSphere-Proxyは異種言語環境とデータベース運用保守チームを対象としており、READMEによると、現在提供されているMariaDB、MySQL、PostgreSQL版はあらゆる種類の端末を使える。ハイブリッド構成では、JDBCとProxyが同じレジストリセンターと統一されたシャーディング戦略を共有し、一つの設定で両端を調整する。READMEはJDBCをJavaで開発された高パフォーマンスで軽量なOLTPアプリケーションに、ProxyをOLAPアプリケーションとシャーディングデータベースの管理運用に対応づけ、JDBCからProxyへのスムーズな移行経路があると述べている。
マイクロカーネルと三層プラグイン可能モデル
READMEの技術アーキテクチャの節は、マイクロカーネルと三層のプラグイン可能モデルを説明している。コア層にはクエリオプティマイザ、分散トランザクション、実行エンジンが含まれる。機能層にはデータシャーディング、読み書き分離、フェデレーションクエリ、データ暗号化、データマスキング、SQL監査、シャドウデータベース、可観測性、トラフィック制御が並ぶ。エコシステム層はMySQL、PostgreSQL、Oracleなどのデータベースプロトコル適応と、ZooKeeper、etcdなどのレジストリセンター統合、加えて構成管理、サービスディスカバリ、モニタリング統合を扱う。READMEは三つの層が完全に分離されていると述べている。
機能マトリクスが挙げる項目
READMEは機能を五つのグループに分けている。分散データベースのコア機能、データセキュリティとガバナンス、データベースゲートウェイ機能、フルリンクのストレステストと可観測性、エンタープライズ向け機能である。挙げられている項目には、水平・垂直シャーディング、読み書き分離、XAおよびBASEトランザクション、フィールドレベル暗号化、マスキング、SQLファイアウォール、SQL方言変換、シャドウデータベース、分散トレーシング、クラスタデプロイ、Kubernetes統合、モニタリングとアラートが含まれる。READMEはこれらの機能についてバージョン番号、デフォルト値、構成の詳細を提供していないため、動作を確認するには公式ドキュメントが必要である。
プロジェクト状況とライセンス
READMEは、バージョン5.5.4-SNAPSHOTが活発に開発中であり、5.5.4には複数のセキュリティ強化とパフォーマンス最適化が含まれると述べ、リリースノートをGitHubで、ビルド手順をプロジェクトWikiで参照するよう案内している。リポジトリのライセンスはApache-2.0である。ライセンスの抜粋は、永続的で無料の著作権ライセンスと、貢献された作業を対象とする特許ライセンスを付与する。抜粋は保証、サポート、セキュリティ態勢については何も述べていない。
編集部の結論
Javaアプリケーション内でSQL処理を組み込みたいチームはShardingSphere-JDBCを、複数言語のクライアントや運用チームで接続点を共有したい場合はShardingSphere-Proxyを候補にできます。単一DBの単純なCRUDに分散ルールを持ち込む必要はありません。まずANTLRキャッシュを含むJDBCのヒープ設定、Proxyの接続方式、利用するシャーディング規則を5.5.4の文書と設定で照合してください。
コミュニティノート