プログラマでありたい

おっさんになっても、プログラマでありつづけたい

MySQL Clusterセミナーまとめ

 先週、「マルチコアシステムを最大限に活かすMySQLのスケーラビリティと高可用性実現セミナー」に行ってきました。遅くなりましたが、簡単にまとめてみます。


アジェンダ(敬称略)

『MySQL Cluster 7.0 ご紹介』 by サン・マイクロシステムズ株式会社 梶山 隆輔
『MySQL Cluster 7.0に最適なSunのx86プラットフォーム 』 by サン・マイクロシステムズ株式会社 的場謙一郎
『MarketSpeedにおけるMySQL-Cluster適用事例紹介』 by 楽天証券株式会社 木川 英一
『MySQL Cluster 導入のケーススタディ』 by 住商情報システム株式会社 廣濱 顕司

MySQL Cluster 7.0紹介

 MySQL Clusterの機能紹介です。私はほとんどMySQL Clusterとはなんぞやという状態だったのですが、僅かな時間で大体の特徴を把握出来て、かなり有り難かったです。MySQL全体の紹介とMySQLの高可用性ソリューションの紹介から始まって、MySQL Clusterの紹介という流れでした。


MySQLの高可用性ソリューション(括弧内は稼働率)
・MySQL Replication(99%)
  マスタ→スレイブで非同期型
  参照性能を向上させる
  マルチマスタ方式も可能だが、データ更新には注意が必要
・MySQL & DRDB(99.9%)
  Active-Passive方式
  同期型
  Heartbeatを使って、データを同期をとる
・MySQL + Shared-Disk(99.99%)
  Active-Passive方式
  共有ディスクをとり、クラスタ構成中の1ノードのみがデータファイルにアクセスする
  更新機能のスケールアウトは出来ない
・MySQL Cluster Standard Edition(99.99〜99.999%)
  Active-Active方式
  単一障害点(single point of failure)なし
  データは複数のノードに記録される
  更新もスケールアウト可能
・MySQL Cluster Carrier Grade Edition(99.999%)
  無停止でノードの追加が出来る


MySQL Clusterの構成ノード
・SQL Node
  標準的なSQLインターフェース
  スケールアウトによる性能向上
  →パース処理を担当するので、基本的には増やせば増やす程、処理性能はあがる?
  レプリケーション構成可能
・Data Node
  データストレージ(ディスク/メモリ)
  →メモリをばかすか積んだ方が良し
  自動的なパーティショニング
  →主キーによるKeyパーティショニング
  ローカル&グローバルチェックポイント
  スケールアウトによる容量と可用性向上
  →増やせば増やす程、容量と可用性は向上する。同期処理があるので、処理性能は若干低下する?
・Management Node
  管理および設定
  "Arbitration"調停役
  2ノードでの可用性
  →あくまで管理サーバなので、複数台あっても性能向上には寄与しない。
   ただし1台だと、そこが単一障害点になる
・NDB API
  高パフォーマンス
  →SQLのパース処理が必要ない
  C++ API
  →Java等からも利用できるようなことを言っていた
  開発ガイドを公開


その他聞いた話
・Joinに弱い
  アーキテクチャ上、Joinの処理が遅い。
  解決策としては、MySQL ClusterからMySQL(MyISAM,InnoDB等)にレプリケーションを行い
  そこで処理をするようにすると良い

MySQL Cluster 7.0に最適なSunのx86プラットフォーム

  アーキテクチャからみたMySQL Cluster。メモリーを一杯積むと幸せになれるということです。
 Sunのx86サーバだと省スペースでメモリも一杯積めるので最適ですよという話(笑)
 大きな声では言えないけど、HPも中々頑張ってるとのこと
 名前は出していないけど、(たぶん)Dellは集積効率はあまりよろしくない模様

MarketSpeedにおけるMySQL-Cluster適用事例紹介

  基本的にセミナー外秘のようです。現状のところ、仮想化環境ではちゃんと動かない模様です。
 Sunの公式なサポートも今の所なし

MySQL Cluster 導入のケーススタディ

  楽天証券の導入事例をベンダー側から紹介



 私が理解した範囲の話なので、多少間違っていることもあるかもしれません。貴重な話が聞けてよかったです。ネット上での評判を聞くと、Joinに弱いというところを問題視する人は多いようです。私は、これからのアプリはJoinを多用せず、アプリ側での処理で済ませる方向に向いていると思うので、特に問題ではないのかなと思います。そうしておけば、スケールアウトもし易いですし、またGoogle App Engineに移植もし易いでしょう。



セミナー関係のエントリー・呟きを探してみました。面白いです。
MySQL Cluster セミナーのレポート | Carpe Diem
MySQLクラスターのセミナーに参加 - sakaikの日々雑感〜(C)編
Twitter検索(時間とともに消えるけど)
@sakaikさん、@chikaramさんの呟きが面白い