|
データが一定規模に達し、単一のテーブルや単一のデータベースでは対応できなくなると、データベースシャーディングとテーブルパーティショニングが必要になります。データベースシャーディングとテーブルパーティショニングには様々な手法があり、多くのオープンソースソリューションが利用可能です。いずれもクライアントサイドモードとプロキシモードを基盤としています。 クライアントサイドコンポーネントは数多く存在し、多くの人が利用しています。ここでは、プロキシパターンを利用したオープンソースミドルウェアをいくつか紹介します。 Apache シャーディングスフィアApache ShardingSphereは、あらゆるデータベースを分散データベースに変換し、データシャーディング、エラスティックスケーリング、暗号化を通じて既存のデータベースを拡張できる分散データベースエコシステムです。ShardingSphere-JDBCとShardingSphere-Proxyという2つの製品で構成されており、それぞれ単独でもハイブリッドでも導入可能です。どちらも、データベースをストレージノードとして利用することで標準化された増分機能を提供し、Java同種言語、異種言語、クラウドネイティブ環境など、多様なアプリケーションシナリオに適しています。 ShardingSphere-JDBCは、Java JDBCレイヤーで追加サービスを提供する軽量Javaフレームワークとして位置付けられています。データベースへの直接クライアント接続を使用し、追加のデプロイメントや依存関係を必要としないJARファイル形式でサービスを提供します。 オープンソース アドレス: 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で広く利用されており、注文、コミュニティ、イベントなど、複数のビジネスに活用されています。 特徴:
オープンソースアドレス: 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。 さらに、オープンソースのクライアントソリューションも数多く存在します。もちろん、データベースシャーディングやテーブルパーティショニングの後には、新たな問題も発生します。現在では、多くのベンダーが強力な分散データベースを提供しており、データベースシャーディングやテーブルパーティショニングに伴う問題への対処を支援しています。 |