DUICUO

これらのオープンソースのデータベース シャーディングおよびテーブル パーティション ミドルウェアをご存知ですか?

データが一定規模に達し、単一のテーブルや単一のデータベースでは対応できなくなると、データベースシャーディングとテーブルパーティショニングが必要になります。データベースシャーディングとテーブルパーティショニングには様々な手法があり、多くのオープンソースソリューションが利用可能です。いずれもクライアントサイドモードとプロキシモードを基盤としています。

クライアントサイドコンポーネントは数多く存在し、多くの人が利用しています。ここでは、プロキシパターンを利用したオープンソースミドルウェアをいくつか紹介します。

Apache シャーディングスフィア

Apache ShardingSphereは、あらゆるデータベースを分散データベースに変換し、データシャーディング、エラスティックスケーリング、暗号化を通じて既存のデータベースを拡張できる分散データベースエコシステムです。ShardingSphere-JDBCとShardingSphere-Proxyという2つの製品で構成されており、それぞれ単独でもハイブリッドでも導入可能です。どちらも、データベースをストレージノードとして利用することで標準化された増分機能を提供し、Java同種言語、異種言語、クラウドネイティブ環境など、多様なアプリケーションシナリオに適しています。

ShardingSphere-JDBCは、Java JDBCレイヤーで追加サービスを提供する軽量Javaフレームワークとして位置付けられています。データベースへの直接クライアント接続を使用し、追加のデプロイメントや依存関係を必要としないJARファイル形式でサービスを提供します。
ShardingSphere-Proxyは透過的なデータベースプロキシとして位置付けられ、データベースバイナリプロトコルを実装することで異種言語のサポートを提供します。現在、MySQLとPostgreSQLのプロトコルをサポートしており、透過的なデータベース操作を実現し、DBAにとってより使いやすいものとなっています。

オープンソース アドレス: https://github.com/apache/shardingsphere.git。

ヴィテス

Vitessは、MySQLインスタンスの大規模クラスタの導入、スケーリング、管理のためのデータベースソリューションです。Vitessは、MySQLの主要機能の多くとNoSQLデータベースのスケーラビリティを兼ね備えています。そのアーキテクチャにより、パブリッククラウド環境でもプライベートクラウド環境でも、物理マシンと同様に効率的に動作可能です。NoSQLデータベースのスケーラビリティを提供しながら、MySQLの多くの重要な機能を統合・拡張します。

コードアドレス: https://github.com/vitessio/vitess.git。

ガイア

Gaeaは、Xiaomi ChinaのEコマース研究開発部門が開発したMySQLプロトコルをベースとしたデータベースミドルウェアです。現在、中国本土および海外のXiaomi Mallで広く利用されており、注文、コミュニティ、イベントなど、複数のビジネスに活用されています。

特徴:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

マルチクラスタ、マルチテナント
SQL 透過転送、低速 SQL フィンガープリント、SQL フィンガープリント注釈、低速ルーティング、ログの読み取り/書き込み分離、スレーブ負荷分散、カスタム SQL インターセプションとフィルタリング、接続プールの構成、およびホットリロード。
IP/IP 範囲ホワイトリスト、グローバル シーケンス番号データベース シャーディング: MyCat データベース シャーディングをサポートします。KingShard テーブル シャーディングをサポートします。集計関数: max、min、sum、count、group by、order by などをサポートします。
join: シャード テーブルとグローバル テーブル間の結合、および同じルーティング ルールを持つ複数のシャード テーブル間の結合をサポートします。

オープンソースアドレス: https://github.com/XiaoMi/Gaea.git。

マックススケール

MaxScaleは、MariDB が開発したデータ ミドルウェアで、読み取りと書き込みの分離を可能にし、マスターとスレーブの状態に基づいて書き込みデータベースを自動的に切り替えることができます。

オープンソース アドレス: https://github.com/mariadb-corporation/MaxScale.git。

マイキャット

Mycat はオープンソースの Cobar の進化版であり、SQL92 標準をサポートし、ネイティブ MySQL プロトコルに準拠しており、言語間、プラットフォーム間、データベース間のユニバーサル ミドルウェア プロキシです。

ソースコードアドレス: https://github.com/MyCATApache/Mycat-Server.git。

上記のまだメンテナンス中のプロジェクト以外にも、他社のオープンソース ソリューションもいくつかあります。

アリババ コバー: https://github.com/alibaba/cobar.git。

360Atlas:: https://github.com/Qihoo360/Atlas.git.

さらに、オープンソースのクライアントソリューションも数多く存在します。もちろん、データベースシャーディングやテーブルパーティショニングの後には、新たな問題も発生します。現在では、多くのベンダーが強力な分散データベースを提供しており、データベースシャーディングやテーブルパーティショニングに伴う問題への対処を支援しています。