SlideShare a Scribd company logo
MySQL on 分散FS	
〜NOSQLで構築したファイルシステム上でMySQLを動かす	

Kobe Digital Labo, Inc.
         岩瀬 高博
Twitter: @okuyamaoo
Mail: iwase@kdl.co.jp

http://okuyama-project.com/
自己紹介	
・岩瀬 高博(@okuyamaoo)
 > (株) 神戸デジタル・ラボ所属
	

業務及び活動
>大規模e-コマースサイトのチューニング、運用
>分散処理、データベースの研究及び適応
>(独)情報通信研究機構 特別研究員
     研究領域:大規模Webアーカイブ	

>分散KVS okuyama、CEP Setsuna の開発
  >OSS、Java、DB、車が好き
今日のお話し	
1.ファイルシステム?
2.NOSQLファイルシステム
3.MySQLを動かす
ファイルシステムとは?
ファイルシステム?
・そもそもファイルシステムとは?	
・内蔵のHDDやSSD、外付けディスク、ネットワーク上の
ストレージ(NFS等)などの記憶デバイスを等価的に扱う仕組み。

Wikipediaより
ファイルシステムが利用する機器
・ファイルシステムが利用しているハードは?	
・HDD
最も主流な記憶装置。
内臓する円盤に磁気を散布してそこにデータを記憶。
それを磁気ヘッドと言われる目のようなもので読み込む。

・SSD
徐々に浸透してきている記憶装置
HDDの様に円盤やヘッドなどの稼働部を持たず、
フラッシュメモリにデータを記憶。

・ioDrive
最近特に注目度の高い超高速デバイス。
NANDフラッシュメモリを記憶部に持ち、接続方式を
PCIeとすることでSSDを超える速度を発揮する。
ファイルシステムの動き
・どのようにデータを格納しているか?	
・ではアプリケーションから書き出されたデータは
どのように格納されているか?
ファイルシステムの動き
・どのようにデータを保存しているか?	
・すごくおおざっぱに表現すると巨大な配列として
保存されている。

全てバイトデータとして扱い、先頭からあらかじめ決められた
サイズ分だけ塊として分割しつつ、配列のように保存していく。	

このサイズは最近では4096byteが主流
ファイルシステムの動き
・どのようにデータを取り出すか?	
・先ほどの配列に対して位置を指定して取り出す。
例えば先ほどのファイルの1バイトから2048バイトを取り出す場
合	

ここのデータを取り出す	
5000バイトから12000バイトを取り出す場合は?
	

この2つを取り出す
ファイルシステムが遅い時
・よくHDDが遅いといわれる原因は?	
このように円盤上にデータが
保存されている。
連続してデータを取り出す場合は、
先頭から順にデータを取り出せば
よいので、高速に取り出せる。

ではこのように離れた場所のデータを
読み込みたい場合はどうするか?
円盤とヘッドが動いてデータの場所まで
移動しないといけない。
この移動に時間がかかる
ファイルシステムが遅い時
・SSDはなぜ速い?	

SSDはHDDと違い円盤にデータを保存しない。
データを取り出す際に物理的な位置を意識した
移動などの時間をともなわず、データが保存さて
いる記憶素子上から即取り出せるため高速。
つまり1つのデータの塊に
アクセスするのが凄く速い
分散ファイルシステム
・分散ファイルシステムとは?	
・各筐体の持つファイルシステムを束ねて1つの
ファイルシステムに見せる仕組み。負荷分散、容量拡大が出来る
利用
分散FS
NOSQLファイルシステム
NOSQLの特性
・NOSQL 特にKVSの特性は?	
・KVSは1つのデータへのアクセスが速い。
NOSQLの特性
・例えば分散KVSのokuyamaの性能
・okuyamaは分散しスケールアウトが可能なKVS
ストレージにメモリ、圧縮メモリ、ディスクなどが選べる
サーバ2台で
10万QPS	

okuyamaはメモリストレージを利用
メモリで合ってもWALログでデータは永続化される。
NOSQLの特性
・NOSQL特にKVSの特性は?	
・これは先ほどのSSDの良いところに似てませんか?
NOSQLの特性
・KVSは1つのデータの取り出しが高速	
・これは先ほどのSSDの良いところに似てませんか?

そこで、okuyamaを記憶装置として利用できる
ファイルシステムを作ってみました
okuyamaとは?
okuyamaとは?
・okuyamaはJavaで実装されたNOSQLの一種
okuyamaとは?
・どのような機能をもっているか?
okuyamaとは?
・どのような機能をもっているか?	
分散KVS	
・OSS
・完全冗長化(SPOFなし)
・無停止でのスケールアウト
・100台以上のサーバ規模での
稼働実績

ストレージ特性	
・非永続型 or 永続型(WALログ方式)
・メモリ or ディスク or メモリ+ディスク 
特性別ストレージ
・ストレージ間の互換性
・仮想メモリ機能
・独自圧縮機能
・パーティション機能	

アクセス	
・独自プロトコル(Ascii)
Java、PHP、Ruby用が存在
・memcached互換
・CAS、加減算、Multi系も対応
・バックアップ等のクライアントも有り
・Hadoop連携	

データ構造	
・Key-Value構造
・Tagの付与
・有効期限付きデータ
・全文検索用Index
okuyamaとは?
・どのような機能をもっているか?	
分散構成を作ることが可能	
分散KVS	
・OSS
・完全冗長化(SPOFなし)
・無停止でのスケールアウト
・100台以上のサーバ規模での
稼働実績

ストレージ特性	
・非永続型 or 永続型(WALログ方式)
・メモリ or ディスク or メモリ+ディスク 
特性別ストレージ
・ストレージ間の互換性
・仮想メモリ機能
・独自圧縮機能
・パーティション機能	

アクセス	
・独自プロトコル(Ascii)
Java、PHP、Ruby用が存在
・memcached互換
・CAS、加減算、Multi系も対応
・バックアップ等のクライアントも有り
・Hadoop連携	

データ構造	
・Key-Value構造
・Tagの付与
・有効期限付きデータ
・全文検索用Index
okuyamaを利用した分散FS
・分散ファイルシステムとして利用する	
ファイルシステムとしてokuyamaをマウント出来る仕組みを開発
mount
okuyamaFuse
・FUSEを利用してデータ格納先をokuyamaへ
FUSEとはLinux系のファイルシステムを
ユーザプロセスで自由に作成できる仕組み。
okuyamaFs

データは全てokuyamaに
格納され、ファイルのメタ
情報なども全て格納される。
MySQLを動かす
MySQL on okuyamaFuse
・Fuseで実装したファイルシステムは
一般的なファイルシステムとして利用可能
	

okuyamaFuse上でMySQLを動かす

mount
MySQL on okuyamaFuse
・目的は?
・ランダムなアクセスが得意なKVS-FS上で
MySQLを動かした場合の性能を検証。	
・検証結果からMySQLのディスクへの
 アクセスプランに最適なFSの検討
・MySQLでの性能測定
テスト内容
・テスト環境
MySQL稼働環境
・CentOS6.4(64bit)
・MySQL5.5
 > InnoDB
 >O_DIRECTオプション利用
  ・Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz ✕ 2
※物理6Core 仮想 12コア ✕ 2

  ・メモリ64GB
・SATA-7200rpm ✕1 / SSD(Intel DC S3700 Series) ✕ 1
テスト内容
・テスト環境
okuyama稼働環境(3台)
・CentOS6.4(64bit)
  ・Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz ✕ 2
※物理6Core 仮想 12コア ✕ 2

  ・メモリ64GB
・SATA-7200rpm ✕1

 これら全てインテル株式会社様、
クリエーションライン株式会社様に
検証用としてご提供頂きました!!
テスト内容
・テスト内容
・sysbenchを用いてOLTPテスト(トランザクション回数)
※OLTPテストとは参照系/更新系両方の混在テスト

・MySQLへの同時接続数を2〜100に増やしながら、
  1分間当たりのトランザクション回数を測定
・MySQLの”datadir”をSATA、SSD、okuyamaFuseに
それぞれに変更し検証
 

sysbench version 0.4.12を利用
 テスト用データは100万件とした
サーバ構成
MySQL on SATA/SSD

MySQL on okuyamaFuse

ローカルディスクを見ない
テスト結果
トランザクション/秒	

SATAに比べると圧倒的に速い。
SSDに比べると約65%程度の性能

同時接続数
考察
・結果から実際にokuyamaFuseをデバッグ
  IOを全てロギング特性を見る
14:38:28.619: read:/mysqldata/ibdata1 offset:109363200 buf.limit:16384
1行がMySQLからのI/O	
14:38:28.627: read:/mysqldata/ibdata1 offset:102596608 buf.limit:16384
14:38:28.633: read:/mysqldata/ibdata1 offset:139051008 buf.limit:16384
14:38:28.634: read:/mysqldata/ibdata1 offset:107429888 buf.limit:16384
14:38:28.639: read:/mysqldata/ibdata1 offset:168738816 buf.limit:16384
14:38:28.648: read:/mysqldata/ibdata1 offset:168755200 buf.limit:16384
14:38:28.653: read:/mysqldata/ibdata1 offset:117489664 buf.limit:16384
14:38:28.653: read:/mysqldata/ibdata1 offset:117522432 buf.limit:16384
14:38:28.658: read:/mysqldata/ibdata1 offset:117506048 buf.limit:16384
14:38:28.661: read:/mysqldata/ibdata1 offset:137396224 buf.limit:16384
14:38:28.668: read:/mysqldata/ibdata1 offset:126484480 buf.limit:16384
14:38:28.669: write path:/mysqldata/ib_logfile0 offset:3025920 isWritepage:false buf.limit:1024
14:38:28.676: write path:/mysqldata/ib_logfile0 offset:3026944 isWritepage:false buf.limit:1024
14:38:28.677: fsync
14:38:28.724: read:/mysqldata/ibdata1 offset:144719872 buf.limit:16384
14:38:28.725: read:/mysqldata/ibdata1 offset:160104448 buf.limit:16384
14:38:28.732: read:/mysqldata/ibdata1 offset:143097856 buf.limit:16384
14:38:28.736: write path:/mysqldata/ib_logfile0 offset:3029504 isWritepage:false buf.limit:1536
14:38:28.743: write path:/mysqldata/ib_logfile0 offset:3031040 isWritepage:false buf.limit:512
14:38:28.744: fsync
考察
・結果から実際にokuyamaFuseをデバッグ
14:38:28.619: read:/mysqldata/ibdata1 offset:109363200 buf.limit:16384
14:38:28.627: read:/mysqldata/ibdata1 offset:102596608 buf.limit:16384

Readが圧倒的に多い

14:38:28.633: read:/mysqldata/ibdata1 offset:139051008 buf.limit:16384
14:38:28.634: read:/mysqldata/ibdata1 offset:107429888 buf.limit:16384
14:38:28.639: read:/mysqldata/ibdata1 offset:168738816 buf.limit:16384

offsetがバラバラ
14:38:28.648: read:/mysqldata/ibdata1 offset:168755200 buf.limit:16384 ※offsetは読み込み開始位置
14:38:28.653: read:/mysqldata/ibdata1 offset:117489664 buf.limit:16384
14:38:28.653: read:/mysqldata/ibdata1 offset:117522432 buf.limit:16384
14:38:28.658: read:/mysqldata/ibdata1 offset:117506048 buf.limit:16384
14:38:28.661: read:/mysqldata/ibdata1 offset:137396224 buf.limit:16384
14:38:28.668: read:/mysqldata/ibdata1 offset:126484480 buf.limit:16384
14:38:28.669: write path:/mysqldata/ib_logfile0 offset:3025920 isWritepage:false buf.limit:1024
14:38:28.676: write path:/mysqldata/ib_logfile0 offset:3026944 isWritepage:false buf.limit:1024
14:38:28.677: fsync
14:38:28.724: read:/mysqldata/ibdata1 offset:144719872 buf.limit:16384
14:38:28.725: read:/mysqldata/ibdata1 offset:160104448 buf.limit:16384
14:38:28.732: read:/mysqldata/ibdata1 offset:143097856 buf.limit:16384
14:38:28.736: write path:/mysqldata/ib_logfile0 offset:3029504 isWritepage:false buf.limit:1536
14:38:28.743: write path:/mysqldata/ib_logfile0 offset:3031040 isWritepage:false buf.limit:512
14:38:28.744: fsync
14:38:28.769: read:/mysqldata/ibdata1 offset:134873088 buf.limit:16384
14:38:28.772: read:/mysqldata/ibdata1 offset:103497728 buf.limit:16384
まとめ
・okuyamaをファイルシステムにしてみた結果	
・ランダムな書き込み、読み込みが発生する場合は
SATAよりも高い性能が見込めることはわかった
okuyamaサーバが複数台のためIO分散されている。
・データベースのIOを細かく調査出来るため、
利用シーンに合わせてチューニング出来る可能性がある
※今回のテストではReadが多いため、okuyama側の
Readチューニングが効果的など
 ・NOSQL(分散KVS)を余すこと無く利用するこんな構成も
こんな構成も??
AP
サーバ	

okuyamaFuseをマウントし構築
ローカルディスクレスなども	

mount

アプリケーション
キャッシュ	
APキャッシュとしてMemcached等の
代わりにokuyamaをそのまま利用
最後に
・Information
Web
  http://okuyama-project.com/
Development
http://sourceforge.jp/projects/okuyama/

Facebook
http://www.facebook.com/okuyama.jp
okuyamaとokuyamaFuseは全てオープンソースで公開しています
Thank you!

More Related Content

PDF
NoSQLデータベースと位置情報
PDF
[B32] クイズと都市伝説から見る、ありのままのPostgreSQL by Shigeyuki Tokuhara
PDF
20140418 info talkセミナー資料
PDF
データベース技術の羅針盤
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
PDF
20120913 nosql@hikarie(okuyama fuse)
PPTX
Tuning maniax 2014 Hadoop編
PDF
qpstudy 2013.07 NoSQL
NoSQLデータベースと位置情報
[B32] クイズと都市伝説から見る、ありのままのPostgreSQL by Shigeyuki Tokuhara
20140418 info talkセミナー資料
データベース技術の羅針盤
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
20120913 nosql@hikarie(okuyama fuse)
Tuning maniax 2014 Hadoop編
qpstudy 2013.07 NoSQL

What's hot (20)

PDF
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
PDF
Polybase scale outgroups
PDF
MySQL Cluster 新機能解説 7.5 and beyond
PDF
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
PPT
Webアプリケーションから見たCassandra
 
PPT
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
PDF
便利なHerokuと active recordの 速度改善tips
PPTX
データベース入門
PDF
Shimane2008
PDF
Oratopostgres-hiroshima
PDF
NOSQLの基礎知識(講義資料)
PDF
PHP開発者のためのNoSQL入門
PDF
Chugokudb18_1
PDF
Db tech showcase2015 how to replicate between clusters
PDF
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
PDF
Cassandraとh baseの比較して入門するno sql
PDF
OSSとクラウドによるコンピューティングモデルの変化
PDF
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
PPTX
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
PPTX
NoSQLに関するまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
Polybase scale outgroups
MySQL Cluster 新機能解説 7.5 and beyond
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
Webアプリケーションから見たCassandra
 
Devsumi2013【15-e-5】NoSQLの野心的な使い方 ~Apache Cassandra編~
便利なHerokuと active recordの 速度改善tips
データベース入門
Shimane2008
Oratopostgres-hiroshima
NOSQLの基礎知識(講義資料)
PHP開発者のためのNoSQL入門
Chugokudb18_1
Db tech showcase2015 how to replicate between clusters
[db tech showcase Tokyo 2016] B31: Spark Summit 2016@SFに参加してきたので最新事例などを紹介しつつデ...
Cassandraとh baseの比較して入門するno sql
OSSとクラウドによるコンピューティングモデルの変化
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
NoSQLに関するまとめ
Ad

Similar to 20131113_mysql_on_分散fsセミナー資料 (20)

PDF
20121205 nosql(okuyama fs)セミナー資料
PPTX
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
PPTX
Osc spring 20220311
PDF
経済学のための実践的データ分析 4.SQL ことはじめ
PDF
PDF版 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう Db tech showcase2020
PPTX
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
PPTX
Microsoft Azure 最新 Update 2014/06/05
PDF
iOS/Androidにも対応した SQL Anywhere 12の魅力
PPTX
Glueの開発環境(zeppelin)をrancherで作ってみる
PPTX
20151205 中国地方db勉強会 dbm_fs
PPTX
Oracleがnode.jsをやり始めたというのだが!
PDF
【IVS CTO Night & Day】AWSにおけるビッグデータ活用
PDF
研究室紹介(2014年度卒研生募集)
PDF
ビッグデータ関連Oss動向調査とニーズ分析
PDF
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
PPTX
2012 0623-x-road-tokyo-xoops-x(ten)
PDF
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
PDF
Add PLEASE clause to Oracle Database
PPTX
管理部門の仕事をチームから組織にした話
PDF
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20121205 nosql(okuyama fs)セミナー資料
uroboroSQLの紹介 (OSC2017 Tokyo/Spring)
Osc spring 20220311
経済学のための実践的データ分析 4.SQL ことはじめ
PDF版 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう Db tech showcase2020
PPT Full version: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
Microsoft Azure 最新 Update 2014/06/05
iOS/Androidにも対応した SQL Anywhere 12の魅力
Glueの開発環境(zeppelin)をrancherで作ってみる
20151205 中国地方db勉強会 dbm_fs
Oracleがnode.jsをやり始めたというのだが!
【IVS CTO Night & Day】AWSにおけるビッグデータ活用
研究室紹介(2014年度卒研生募集)
ビッグデータ関連Oss動向調査とニーズ分析
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
2012 0623-x-road-tokyo-xoops-x(ten)
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
Add PLEASE clause to Oracle Database
管理部門の仕事をチームから組織にした話
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
Ad

More from Takahiro Iwase (10)

PPTX
Re port aws_reinvent_161213_slideshare
PDF
20120405 setsunaセミナー
PDF
20120317 IT系勉強会 in 神戸
PPTX
Okuyama説明資料 20120119 ss
PDF
Kvs okuyama-20110818
PDF
20110708 dist_study okuyama
PDF
20110519 okuyama tokyo_linuxstudy
PDF
20110517 okuyama ソーシャルメディアが育てた技術勉強会
PDF
okuyama_20101101_nosqlafternoon
PDF
2010/07/09 osc kansai-kvsokuyama
Re port aws_reinvent_161213_slideshare
20120405 setsunaセミナー
20120317 IT系勉強会 in 神戸
Okuyama説明資料 20120119 ss
Kvs okuyama-20110818
20110708 dist_study okuyama
20110519 okuyama tokyo_linuxstudy
20110517 okuyama ソーシャルメディアが育てた技術勉強会
okuyama_20101101_nosqlafternoon
2010/07/09 osc kansai-kvsokuyama

20131113_mysql_on_分散fsセミナー資料