Upload
shunsuke-nakamura
View
4.142
Download
6
Embed Size (px)
DESCRIPTION
10/11/01にNoSQL Afternoon@楽天タワーで飛び入りで発表させていただきました。今後ともよろしくお願いします。
Citation preview
東京工業大学 Tokyo Tech. 中村 俊介 Shunsuke Nakamura (@sunsuk7tp)
= Dynamo + Bigtable
Better
Cassandra
MySQL
Cassandra
MySQL
Better
ずばりストレージ部分でRead/Write性能が決まる!! (といっても過言ではないのでは….)
Hbase, Cassandra Sherpa, MySQL
Storage SSTable MySQL
Write Diff Sequential Write Keylookup Update
Read Diff Merge Read Sequential Read
性能 Writeが速い Readが速い
Cassandraのストレージ部分をSSTableを MySQLに差し替えてみました
イメージ ◦ MySQLのストレージエンジン
= Dynamo + Bigtable
= Dynamo + MySQL, etc.
東京工業大学 情報理工学研究科 数理・計算科学専攻 中村 俊介
JDBC経由でMySQLにアクセスするだけ Data ModelやWorkflowはCassandraのまま JDBCサポートされてるものなら差し替え可能 ◦ cf. PostgreSQL, Redis, MongoDB, ….
JDBC
ColumnFamilyStore
SSTable
Request
(CommitLog) (Memtable)
MySQL Redis MongoDB
or
or or
0 1 2 3 4
Update(50:50)
Read(50:50)
Update(10:90)
Read(10:90)
Read(0:100)
MyCassandra(Redis)
MyCassandra(MySQL)
Cassandra
Read差:最大84.7%
Write差:最大76.0%
(ms)
WorkloadA
WorkloadB
WorkloadC
今やっているところです!!(笑) 果たしてノード数 / クライアント数(負荷)に対してスケールするのか否か?!
MySQLをK/Vとしてしか使っていないので、もっとスリムでindexingが充実したRDB/永続型KVSの利用 ◦ VoltDB ? Redis ? ◦ HandlerSocket? ◦ (教えてください!! )
NoSQLは分散の仕掛け+ストレージに分離できる ◦ MySQL: レプリケーション、クエリパース部分+ストレージ部分 ストレージエンジンでTransactionや並行性制御はサポート ◦ MemCache: 分散の仕掛け(cf. Consistent Hashing)を
Client側で実装
分離の利点 ◦ アプリ開発者の要望に柔軟に対応
例) 非集中で参照クエリに適したNoSQLを使いたい 通常: 適切なデータストアを探す、もしくは自分で実装 =>1つの共通システム内で入れ替えが可能
StorageType(SSTable,MySQL,..)ごとにレプリカを用意 リクエストのプライマリノードをStorageTypeで決める ◦ 更新系クエリはSSTableノードに ◦ 参照系クエリはMySQLノードに
課題は一貫性の問題 & v.s. Network Proximity
Proxy Proxy
Read Write
MySQL MySQL SSTable SSTable
Redis Redis
Async Read
Sync Read
Async Write
Sync Write
ご清聴ありがとうございました!!