MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS

2014年2月25日(火)
山﨑 由章

MySQL Cluster 7.3の特徴

2013年6月に、最新バージョンのMySQL Cluster 7.3がリリースされました。MySQL Cluster 7.3では、性能を大幅に向上している他、インストール&設定を自動的に行うAuto-Installerや、新しいNoSQL APIとしてNode.js APIなどが追加されていますので、主要な機能強化点について解説します。

Auto-Installer

MySQL Clusterの環境を簡単にセットアップできるインストーラーを用意しました。MySQL Clusterを使用する場合、複数のノードで1つのデータベースを構成するため、セットアップ時に複数のノードを操作する必要があります。この作業を簡素化するために、ブラウザベースのインストーラーを提供しています。

Auto-Installerを使用すると、ウィザード形式でセットアップ対象のサーバー情報や各種設定を入力することで、自動的にMySQL Clusterの環境を構築できます。リモートサーバーへのデプロイもできるので、インストール時の複数台のサーバーを触ってサーバー毎に作業する必要もありません。また、サーバーのリソース情報を検出して、ある程度最適化された暫定的なパラメーター値も設定しますので、セットアップ時のパラメーター設定も簡素化されます。

下の資料では、Auto-Installerを使用してMySQL Clusterの環境をセットアップし、簡単な稼働確認をする方法を画面キャプチャ付きで紹介しています。1台のサーバー上でテスト環境を作るぐらいであれば、5分程度で環境構築できるので、資料を参考にして是非MySQL Clusterを試してみてください。

外部キーを実現

MySQL Cluster 7.3では外部キーが実装されました。「RDBMSなのだから外部キーが使えて当たり前でしょ」、と突っ込まれてしまうかもしれませんが、前述の通りMySQL Clusterは元々NoSQLのデータストアだったため、MySQL Cluster 7.2まではRDBMSとして重要な機能がまだ実装できていませんでした。しかし、現在のバージョンでは外部キーも実装されたため、RDBMSとして完全な状態になっています。

また、MySQL Clusterのユニークな点としては、「SQLだけではなくNoSQLでのデータ操作についても外部キーが有効である」、ということです。

今まで外部キーが使えないためにMySQL Clusterの使用を断念していた方は、この機会に試して頂ければと思います。

性能の向上(Connection Thread Scalability)

MySQL Cluster 7.3では、内部的なロックの粒度を細かくしたことにより、SQLノードの性能が劇的に向上しています。以下はMySQL Cluster 7.2と7.3でのTPM(Transactions Per Minute)をDBT2とSysbenchで比較した結果ですが、7.3ではNDB API Connectionsが少ない場合でも(≒SQLノードの数が少ない場合でも)、高い性能が出ていることが確認できます。

図5:MySQL Cluster 7.2と7.3との比較(DBT2)(クリックで拡大)
図6:MySQL Cluster 7.2と7.3との比較(Sysbench)(クリックで拡大)

MySQL 5.6との統合

MySQL Clusterは、MySQL 5.6と統合されています。そのため、これまでの連載で紹介してきたオプティマイザの改善やレプリケーションの強化、といったMySQL 5.6での機能強化点は、MySQL Cluster 7.3にも当てはまります。

※MySQL Clusterを使用する場合は、InnoDBとは異なるNDBというストレージエンジンを使用するため、InnoDBに関する機能強化点はMySQL Cluster には当てはまりません (InnoDBとNDBを併用することは可能です)。

例えば、MySQL 5.6でのオプティマイザの改善の中にはBatched Key Access(BKA)とマルチ・レンジ・リード(MRR)というJOIN処理を高速化するアルゴリズムがあります。MySQL Clusterはデータを水平分割して複数のノードに分散しているため、アーキテクチャ上JOINが得意ではありませんが、このアルゴリズムが採用されたことによりJOINが高速化されるため、弱点が克服されています。

新たなNoSQL API(JavaScript / Node.js API)

MySQL ClusterはC++、Memcached、Java、JPA、HTTP/REST、と各種のNoSQL APIを搭載していますが、7.3では新しくJavaScript / Node.jsのAPIが追加されました。以下の記事でこのAPIの使い方を解説していますので、参考にしてください。

> Using JavaScript and Node.js with MySQL Cluster - First steps

MySQL Clusterを触ってみよう!!

SQLだけではなくNoSQLも使えて、単一障害点が無い高可用性構成を実現できるMySQL Clusterをご紹介してきましたが、いかがでしょうか? MySQL Clusterのことをもっと深く知りたい、という方には、MySQL / MySQL Clusterのサポートエンジニアである奥野氏が執筆している『MySQL Cluster構築・運用バイブル 〜仕組みからわかる基礎と実践のノウハウ〜』がお勧めです。こちらの書籍では、インストールから運用方法、アプリケーション設計時の注意事項など、MySQL Clusterを使用する上でのノウハウが一通り解説されています。

MySQL Clusterに興味を持って頂けた方は、この機会に是非MySQL Clusterを試してみてください!!

※本稿において示されている見解は、私自身の見解であって、私の所属するオラクルの見解を必ずしも反映したものではありません。

日本オラクル株式会社

MySQLのセールスコンサルタント。元々はOracleデータベースのコンサルティング、サポート等に従事していたが、オープンソースとフリーソフトウェア(自由なソフトウェア)の世界に興味を持ち、MySQLの仕事を始める。趣味は旅行と美味しいものを食べること。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています