MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS
MySQL Clusterとは?
MySQL ClusterはMySQLとは開発ツリーの異なる別製品で、共有ディスクを使わずにアクティブ−アクティブのクラスタ構成が組めるリレーショナルデータベースです。単一障害点が無い構成を組むことができ、可用性が高いため、米国海軍の航空母艦における航空機管制システムなど、ミッションクリティカルな分野でも多く利用されています。また、デフォルトではデータをメモリ上に持つインメモリデータベースであり、トランザクションを高速に処理できるため、リアルタイム性が求められるアプリケーションにも向いています(インメモリデータベースであっても、データの永続性は担保されています)。
MySQL Clusterの基礎となっている技術は、通信機器ベンダのエリクソンで携帯通信網の加入者データベース向けに開発された Ericsson Network DataBase(NDB)と呼ばれていた技術です。携帯通信網の加入者データベースは、一つ一つの処理は比較的シンプルですが、処理を大量に実行する必要がありますし、携帯電話の加入者増加に合わせて性能を拡張していく必要があります。また、通信障害が起きると収益機会も逃してしまうため、高可用性が求められます。このような環境に向けて最適化されて設計されたEricsson Network DataBase が、その後MySQLと統合され、現在のMySQL Clusterとなっています。
また、元々はSQLを使わないデータベースだったのですが、MySQLと統合されたことによりSQLも使えるようになったため、現在はNoSQL(KVS)とSQLの両方が使えるデータベースになっています。そして、NoSQLによる処理であっても、ACID準拠のトランザクションに対応しています。
図1のような企業が、MySQL Clusterを使用しています。元々、携帯通信網の加入者データベースで使われていたということもあり、Alcatel Lucent、Juniper Networksといった通信機器ベンダでも広く使われていますし、MySQLと統合されたことにより、オンラインゲームやクラウドサービスなど、Webアプリケーションのバックエンドとしての使用事例も増えています。
NECが通信基盤システムのデータベースにMySQL Clusterを採用しているなど、MySQL Clusterの使用事例は、こちらのページでも紹介しています。
MySQL Clusterの特徴
MySQL Clusterの主な特徴をご紹介します。
読み込み処理だけでなく、書き込み処理に対しても高い拡張性を実現
MySQL Clusterは、内部的に自動的にデータをシャーディング(分解して複数のサーバーに分散)することにより、書き込み処理に対しても高い拡張性を持っています。もちろん、どのような処理でも拡張性が出せる、という訳ではありませんが、MySQL Cluster向きのアプリケーションで使用すれば、図2のベンチマーク結果のように高い拡張性を実現可能です。
このベンチマークでは、更新処理(UPDATE)のスループットを、Data Nodeというサーバーの台数を2台、4台、16台、30台の4つの構成で取得していますが、ベンチマーク結果がほぼ線形であり、Data Nodeの台数を増やすことで性能がリニアに拡張していることが確認できます。
ベンチマークの詳細はこちらの資料で公開しています。また、このベンチマークはMySQL Cluster 7.2 時点でのベンチマークですが、現在の最新バージョンは7.3となっています。MySQL Cluster 7.3では、後述の通り更に性能が向上しています。
99.999%の高可用性(年間5分程度の停止時間)
99.999%の高可用性を達成するための設計がされています。単一障害点が無い構成を組めるだけでなく、カラムの追加やインデックスの追加など各種のメンテナンス処理、ノードの追加/削除などもオンラインで実行できるため、停止時間を最小限に抑えることができます。
リアルタイム処理
インメモリデータベースであるため、トランザクションを高速に実行でき、リアルタイム性が求められるアプリケーションにも適しています。
SQL+NoSQLの柔軟性
より高い性能を出したい場合にはNoSQLを使用し、柔軟にデータにアクセスしたい場合にはSQLを使用する、というNoSQLとSQLのいいとこ取りした使い方ができます。また、NoSQLのAPIをどんどん拡張していて、C++やMemcached、Java、JPA、HTTP/REST、JavaScript / Node.jsと、各種のAPIを取り揃えています。
低いTCO
共有ディスクを使用せずに、コモディティ化しているハードウェアを複数台並べて、スケールアウトにより性能を拡張できるため、トータルコストを下げることができます。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- MySQL Clusterの特徴とアーキテクチャ
- NoSQL&RDBMSクラスタ MySQL Cluster
- MySQL Connect 2013でも発表されたMySQLの最新リリースと、関連ツールの基礎知識
- MySQL Clusterにおけるレプリケーション環境構築例
- MySQL Clusterの主要な設定、設定変更時の注意点
- MySQL Clusterのインストールと基本的な設定および操作
- MySQL5.5- 性能改善と可用性向上
- MySQL Clusterにおけるレプリケーションの基礎
- MySQL Clusterのバックアップ/リストアの具体例
- MySQLをActive-Active構成で使う