SlideShare a Scribd company logo
1 of 22
C3-3 読み出し性能と書き込み性能を選択可能なクラウドストレージ 中村俊介 首藤一幸 東京工業大学
クラウドストレージ:RDBMSに代わる大規模な分散データストア C3-3 NoSQL, key-value store, document-oriented DB 例: memcached, Google BigTable, Amazon Dynamo, Amazon SimpleDB, Apache Cassandra, Voldemort, Ringo, Vpork, MongoDB, CouchDB, Tokyo Cabinet/Tokyo Tyrant, Flare, ROMA, kumofs, Kai, Redis, HadoopHbase, Hypertable, Yahoo! PNUTS, Scalaris, Dynomite, ThruDB, Neo4j, IBM ObjectGrid, Oracle Coherence, Velocity, …. 従来のRDBMSとの比較 主キーのみでのアクセスに制限 Transactionなどの高機能や複雑なデータ構造を扱わない 緩い一貫性 大規模なデータに対してスケールしやすい設計
クラウドストレージとしてのRDBMS C3-3 あらゆるワークロードにおいて新しいクラウドストレージが従来のRDBMSより優れているわけではない Read-HeavyなワークロードはMySQLの方が優れている  Write-Heavyワークロードの更新遅延  Read-Heavyワークロードの参照遅延 NoSQL Better MySQL Better KVS as MySQL NoSQL MySQL KVS as MySQL  YCSB, SOCC ’10
C3-3 永続型クラウドストレージの設計書き込み性能重視 vs. 読み出し性能重視 既存の永続型クラウドストレージは write/read片方の性能に偏っている 同じデータストアで様々なワークロードに対応したい Cassandraの特徴を持った読み出し性能重視クラウドストレージ => 他のソフトウェアとの組合せ・自分で新たに実装が現状
研究の概要 C3-3 成果 同じクラウドストレージ内で書き込み性能と読み出し性能を選択可能にした Apache Cassandraに実装し、実証した 手法 分散データストアを分離 分散の仕組み + ストレージエンジン ストレージエンジンを別のものに選択可能に
Apache Cassandra C3-3 Facebook, Diggに導入されているクラウドストレージ 特徴 単一故障点の無い非集中型分散データストア 高速な書き込み処理 複数データセンターにまたがる数百ノードでの動作を想定 Consistent Hashing(非集中分散アルゴリズム) データの主キーHash値により、そのデータの担当ノードが一意に定まる 全ノードが全部やる ,[object Object]
 DataのPrimary Node
別DataのSecondary Node,[object Object]
Google Bigtable由来のストレージエンジン~読み出し~ C3-3 指定されたkeyに対して,  Memtable上の最新value SSTable上の複数の古いvalueをマージ 読み出し性能は犠牲になる 複数回のDisk I/O CompactionやIndex, Bloom Filterで性能の劣化をカバー Cassandraノード Map <key,ColumnFamily> read Memtable Memory Disk 複数回の Disk Random I/O が必要 SSTable CommitLog <k, CF1> <key, CF2> <key, CF3>
C3-3 MyCassandra~Cassandra with Modular Storage Engines~ 東京工業大学情報理工学研究科数理・計算科学専攻 中村俊介 Cassandraのストレージエンジンを差し替え可能に Cassandraの分散のしくみ/データモデルはそのまま 様々なワークロードに適した分散データストアを構築可能 InnoDB MyISAM Memory MySQL: 用途によってストレージエンジンが差し替え可能なRDBMS MyCassandra: 用途によってストレージエンジンが差し替え可能なクラウドストレージ
MyCassandra: 実装 C3-3 東京工業大学情報理工学研究科数理・計算科学専攻 中村俊介 リクエスト受理と各ストレージエンジンとの間にStorage Engine Interfaceを配置 ストレージエンジンの追加 JDBCなど汎用的なドライバを用いて以下を実装 Connection / Put / Get
性能評価 C3-3 ストレージエンジンの選択によって、読み出し/書き込み性能重視を切り替えられることを確認する 測定手段 YCSB (Yahoo!  Cloud Serving Benchmark) [SOCC ’10] ストレージエンジン Bigtable (original), MySQL (InnoDB), Redis (オンメモリKVS) ベンチマーク内容 MyCassandra×6台、YCSB Client×1台用意 1KBのvalues(100[Bytes]×10[columns])+keyから成るレコードを2,400万件ロード 測定するワークロードでメモリ上キャッシュのウォームアップ YCSBの各ワークロードを実行 YCSB Statでスループットとクエリ種類別のレイテンシを計測
YCSBワークロードの種類 C3-3 以下4種類を測定 Write Heavy Read Heavy (※) Zipfian分布:  データ鮮度とは関係なく人気が持続 一部がヘッド / 大多数がテール
レイテンシ: Bigtable vs. MySQL C3-3 (Original) Write: BigtableがMySQLの41.4% (オンメモリKVS) Better 0% 50% 100% 5% Read: MySQLがBigtableの36.3% Better 0% 50% 95% 100% (ms)
C3-3 スループット: Bigtable vs. MySQL QPS for Read-Heavy: MySQLがBigTableの2.35倍 QPS for Write-Heavy: BigtableがMySQLの5.32倍 (original) (オンメモリ) Better 0:100 50:50 5:95 100:0 想定通り、ストレージエンジンの入れ替えで、書き込み/読み出し性能の性質が大きく変わる (query/sec)  Write Heavy  Read Heavy
まとめと今後の課題 C3-3 クラウドストレージのread/write性能はストレージエンジンに大きく依存することを実証・評価 同一システム上でストレージエンジンの選択によりWorkloadに適したクラウドストレージに 課題 MyCassandra Cluster: 異なるストレージエンジンの組み合わせによるread/write性能の両立
関連研究 Modularなデータストア Modular Data Storage with Anvil, SOSP ’09 1ノードの話で、分散環境を対象としていない Cloudy: A Modular Cloud Storage System, VLDB ’10 実験評価はされていない ストレージエンジンを選択可能なデータストア RDB: MySQLストレージエンジン 分散データストア: Amazon Dynamo, SOSP ’07 全体の性能と永続化の対比はあったが、読み出し vs. 書き込みという観点はなかった C3-3
Any Questions? C3-3 東京工業大学情報理工学研究科数理・計算科学専攻 中村俊介 ,[object Object]
ワークロードに応じて足回りを変更可能
組合せで両立も可能 (今後・評価済),[object Object]
MyCassandra: Storage Engine Interface 【予備2】 各ストレージのJava APIを用いて初期化(DBの接続)とput / get関数を実装するだけ
スループット: HDD vs. SSD 【予備3】 (qps) (qps) ,[object Object],[object Object]

More Related Content

What's hot

MongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDBMongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDBippei_suzuki
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技Yoichi Toyota
 
Cassandra における SSD の活用
Cassandra における SSD の活用Cassandra における SSD の活用
Cassandra における SSD の活用Yuji Ito
 
BdasとSpark概要
BdasとSpark概要BdasとSpark概要
BdasとSpark概要Yu Ishikawa
 
DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析Yuki Morishita
 
分散処理のすゝめ?
分散処理のすゝめ?分散処理のすゝめ?
分散処理のすゝめ?yoshito oe
 
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQLnasa9084
 
Azure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてAzure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてOshitari_kochi
 

What's hot (8)

MongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDBMongoDB概要:金融業界でのMongoDB
MongoDB概要:金融業界でのMongoDB
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
Cassandra における SSD の活用
Cassandra における SSD の活用Cassandra における SSD の活用
Cassandra における SSD の活用
 
BdasとSpark概要
BdasとSpark概要BdasとSpark概要
BdasとSpark概要
 
DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析DataStax Enterpriseによる大規模グラフ解析
DataStax Enterpriseによる大規模グラフ解析
 
分散処理のすゝめ?
分散処理のすゝめ?分散処理のすゝめ?
分散処理のすゝめ?
 
初めてのSQL
初めてのSQL初めてのSQL
初めてのSQL
 
Azure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてAzure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについて
 

Similar to 読み出し性能と書き込み性能を選択可能なクラウドストレージ (DEIM2011-C3-3)

Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlYutuki r
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用Takaaki Suzuki
 
Azure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまでAzure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまでDaisuke Masubuchi
 
Amazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DR
Amazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DRAmazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DR
Amazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DR株式会社クライム
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - Tetsutaro Watanabe
 
Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)CLOUDIAN KK
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Cloudera Japan
 
Red Hat ストレージ製品
Red Hat ストレージ製品Red Hat ストレージ製品
Red Hat ストレージ製品Takuya Utsunomiya
 
Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...
Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...
Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...Takamasa Maejima
 
Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版
Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版
Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版IBM Analytics Japan
 
Dell emc highperformancevirtualinfracommunitymeetup_20180621publish
Dell emc highperformancevirtualinfracommunitymeetup_20180621publishDell emc highperformancevirtualinfracommunitymeetup_20180621publish
Dell emc highperformancevirtualinfracommunitymeetup_20180621publishMakoto Ono
 
NoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure TableNoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure TableTakekazu Omi
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編Takekazu Omi
 
Datrium overview and technology foundations
Datrium overview and technology foundationsDatrium overview and technology foundations
Datrium overview and technology foundations正明 羽鳥
 
Ibm クラウドデータベースの使いどころ
Ibm クラウドデータベースの使いどころIbm クラウドデータベースの使いどころ
Ibm クラウドデータベースの使いどころjapan_db2
 

Similar to 読み出し性能と書き込み性能を選択可能なクラウドストレージ (DEIM2011-C3-3) (20)

Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sqlCassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用
 
20120508 aws meister-rds-public
20120508 aws meister-rds-public20120508 aws meister-rds-public
20120508 aws meister-rds-public
 
Azure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまでAzure上の データベース 機能の選び方。KVSからDWHまで
Azure上の データベース 機能の選び方。KVSからDWHまで
 
About NoSQL
About NoSQLAbout NoSQL
About NoSQL
 
Amazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DR
Amazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DRAmazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DR
Amazon RDS/Azure SQL/Google Cloud SQL 対応DBが多様!異種DBへの移行・連携ならSyniti DR
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
 
Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)Cloudian update (Japanese:日本語)
Cloudian update (Japanese:日本語)
 
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
Impala + Kudu を用いたデータウェアハウス構築の勘所 (仮)
 
Hadoop loves H2
Hadoop loves H2Hadoop loves H2
Hadoop loves H2
 
Red Hat ストレージ製品
Red Hat ストレージ製品Red Hat ストレージ製品
Red Hat ストレージ製品
 
Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...
Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...
Software Defined Storage を実現する次期 Windows Server のストレージ機能 (Microsoft de:code 2...
 
Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版
Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版
Db2 Warehouse on Cloud Flex ご紹介資料 2020年3月版
 
20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db20120409 aws meister-reloaded-dynamo-db
20120409 aws meister-reloaded-dynamo-db
 
Dell emc highperformancevirtualinfracommunitymeetup_20180621publish
Dell emc highperformancevirtualinfracommunitymeetup_20180621publishDell emc highperformancevirtualinfracommunitymeetup_20180621publish
Dell emc highperformancevirtualinfracommunitymeetup_20180621publish
 
Cmdevio2015 devday-g-3
Cmdevio2015 devday-g-3Cmdevio2015 devday-g-3
Cmdevio2015 devday-g-3
 
NoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure TableNoSQL Bigtable and Azure Table
NoSQL Bigtable and Azure Table
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
 
Datrium overview and technology foundations
Datrium overview and technology foundationsDatrium overview and technology foundations
Datrium overview and technology foundations
 
Ibm クラウドデータベースの使いどころ
Ibm クラウドデータベースの使いどころIbm クラウドデータベースの使いどころ
Ibm クラウドデータベースの使いどころ
 

More from Shun Nakamura

MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...
MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...
MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...Shun Nakamura
 
シリコンバレーに行ってきた!
シリコンバレーに行ってきた!シリコンバレーに行ってきた!
シリコンバレーに行ってきた!Shun Nakamura
 
MyCassandra (Full English Version)
MyCassandra (Full English Version)MyCassandra (Full English Version)
MyCassandra (Full English Version)Shun Nakamura
 
第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandraShun Nakamura
 
読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)
読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)
読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)Shun Nakamura
 
読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)
読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)
読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)Shun Nakamura
 

More from Shun Nakamura (9)

HBase at LINE
HBase at LINEHBase at LINE
HBase at LINE
 
MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...
MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...
MyCassandra: A Cloud Storage Supporting both Read Heavy and Write Heavy Workl...
 
シリコンバレーに行ってきた!
シリコンバレーに行ってきた!シリコンバレーに行ってきた!
シリコンバレーに行ってきた!
 
MyCassandra (Full English Version)
MyCassandra (Full English Version)MyCassandra (Full English Version)
MyCassandra (Full English Version)
 
第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra
 
MyCassandra
MyCassandraMyCassandra
MyCassandra
 
読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)
読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)
読み出し性能と書き込み性能を両立させるクラウドストレージ (SACSIS2011-A6-1)
 
読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)
読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)
読み出し性能と書き込み性能を両立させるクラウドストレージ (OS-117-24)
 
Cassandra勉強会
Cassandra勉強会Cassandra勉強会
Cassandra勉強会
 

読み出し性能と書き込み性能を選択可能なクラウドストレージ (DEIM2011-C3-3)

  • 2. クラウドストレージ:RDBMSに代わる大規模な分散データストア C3-3 NoSQL, key-value store, document-oriented DB 例: memcached, Google BigTable, Amazon Dynamo, Amazon SimpleDB, Apache Cassandra, Voldemort, Ringo, Vpork, MongoDB, CouchDB, Tokyo Cabinet/Tokyo Tyrant, Flare, ROMA, kumofs, Kai, Redis, HadoopHbase, Hypertable, Yahoo! PNUTS, Scalaris, Dynomite, ThruDB, Neo4j, IBM ObjectGrid, Oracle Coherence, Velocity, …. 従来のRDBMSとの比較 主キーのみでのアクセスに制限 Transactionなどの高機能や複雑なデータ構造を扱わない 緩い一貫性 大規模なデータに対してスケールしやすい設計
  • 3. クラウドストレージとしてのRDBMS C3-3 あらゆるワークロードにおいて新しいクラウドストレージが従来のRDBMSより優れているわけではない Read-HeavyなワークロードはMySQLの方が優れている  Write-Heavyワークロードの更新遅延  Read-Heavyワークロードの参照遅延 NoSQL Better MySQL Better KVS as MySQL NoSQL MySQL KVS as MySQL YCSB, SOCC ’10
  • 4. C3-3 永続型クラウドストレージの設計書き込み性能重視 vs. 読み出し性能重視 既存の永続型クラウドストレージは write/read片方の性能に偏っている 同じデータストアで様々なワークロードに対応したい Cassandraの特徴を持った読み出し性能重視クラウドストレージ => 他のソフトウェアとの組合せ・自分で新たに実装が現状
  • 5. 研究の概要 C3-3 成果 同じクラウドストレージ内で書き込み性能と読み出し性能を選択可能にした Apache Cassandraに実装し、実証した 手法 分散データストアを分離 分散の仕組み + ストレージエンジン ストレージエンジンを別のものに選択可能に
  • 6.
  • 8.
  • 9. Google Bigtable由来のストレージエンジン~読み出し~ C3-3 指定されたkeyに対して, Memtable上の最新value SSTable上の複数の古いvalueをマージ 読み出し性能は犠牲になる 複数回のDisk I/O CompactionやIndex, Bloom Filterで性能の劣化をカバー Cassandraノード Map <key,ColumnFamily> read Memtable Memory Disk 複数回の Disk Random I/O が必要 SSTable CommitLog <k, CF1> <key, CF2> <key, CF3>
  • 10. C3-3 MyCassandra~Cassandra with Modular Storage Engines~ 東京工業大学情報理工学研究科数理・計算科学専攻 中村俊介 Cassandraのストレージエンジンを差し替え可能に Cassandraの分散のしくみ/データモデルはそのまま 様々なワークロードに適した分散データストアを構築可能 InnoDB MyISAM Memory MySQL: 用途によってストレージエンジンが差し替え可能なRDBMS MyCassandra: 用途によってストレージエンジンが差し替え可能なクラウドストレージ
  • 11. MyCassandra: 実装 C3-3 東京工業大学情報理工学研究科数理・計算科学専攻 中村俊介 リクエスト受理と各ストレージエンジンとの間にStorage Engine Interfaceを配置 ストレージエンジンの追加 JDBCなど汎用的なドライバを用いて以下を実装 Connection / Put / Get
  • 12. 性能評価 C3-3 ストレージエンジンの選択によって、読み出し/書き込み性能重視を切り替えられることを確認する 測定手段 YCSB (Yahoo! Cloud Serving Benchmark) [SOCC ’10] ストレージエンジン Bigtable (original), MySQL (InnoDB), Redis (オンメモリKVS) ベンチマーク内容 MyCassandra×6台、YCSB Client×1台用意 1KBのvalues(100[Bytes]×10[columns])+keyから成るレコードを2,400万件ロード 測定するワークロードでメモリ上キャッシュのウォームアップ YCSBの各ワークロードを実行 YCSB Statでスループットとクエリ種類別のレイテンシを計測
  • 13. YCSBワークロードの種類 C3-3 以下4種類を測定 Write Heavy Read Heavy (※) Zipfian分布: データ鮮度とは関係なく人気が持続 一部がヘッド / 大多数がテール
  • 14. レイテンシ: Bigtable vs. MySQL C3-3 (Original) Write: BigtableがMySQLの41.4% (オンメモリKVS) Better 0% 50% 100% 5% Read: MySQLがBigtableの36.3% Better 0% 50% 95% 100% (ms)
  • 15. C3-3 スループット: Bigtable vs. MySQL QPS for Read-Heavy: MySQLがBigTableの2.35倍 QPS for Write-Heavy: BigtableがMySQLの5.32倍 (original) (オンメモリ) Better 0:100 50:50 5:95 100:0 想定通り、ストレージエンジンの入れ替えで、書き込み/読み出し性能の性質が大きく変わる (query/sec) Write Heavy Read Heavy
  • 16. まとめと今後の課題 C3-3 クラウドストレージのread/write性能はストレージエンジンに大きく依存することを実証・評価 同一システム上でストレージエンジンの選択によりWorkloadに適したクラウドストレージに 課題 MyCassandra Cluster: 異なるストレージエンジンの組み合わせによるread/write性能の両立
  • 17. 関連研究 Modularなデータストア Modular Data Storage with Anvil, SOSP ’09 1ノードの話で、分散環境を対象としていない Cloudy: A Modular Cloud Storage System, VLDB ’10 実験評価はされていない ストレージエンジンを選択可能なデータストア RDB: MySQLストレージエンジン 分散データストア: Amazon Dynamo, SOSP ’07 全体の性能と永続化の対比はあったが、読み出し vs. 書き込みという観点はなかった C3-3
  • 18.
  • 20.
  • 21. MyCassandra: Storage Engine Interface 【予備2】 各ストレージのJava APIを用いて初期化(DBの接続)とput / get関数を実装するだけ
  • 22.
  • 24. RW: メモリベースClient Client Proxy Proxy Write Read RW RW R R W W W W 非同期で整合性をチェック R RW R RW 2ノードの書き込みACKを確認して成功とみなす 整合性をチェックして 結果を返す 非同期書き込み R RW R RW W W W W R R RW RW data担当ノード ストレージの異なるノードを組み合わせてクラスタを構成 異なるストレージノードにレプリカを配置 参照は読み出し性能重視 / 更新は書き込み性能重視に同期的に その他のレプリカには非同期でクエリを実行 非集中分散の為、互いのストレージ情報を定期的に交換し合う
  • 25. MyCassandra Clusterの課題 【予備5】 レプリカの一貫性 Quorum Protocol W(書き込み合意数) + R(読み出し合意数) > N(全レプリカ数) 例: W = R = N/2 + 1 これを満たすにはread/write両方を同期的に行うノードが必要 =>両方速いメモリベースのストレージエンジンを使う 書いてすぐ読むような場合 書き込みの全体の整合性がとれず、読み出しは書き込み性能重視の結果待ち => クライアント側の引数で制御(優先度付きキュー) Network Proximityとの両立 読み出し先のプライマリノード選択 同一ラック/DC内の書き込み性能重視ノード 別ラック/DC内の読み出し性能重視ノード ストレージ依存のアクセスによる負荷不均一 =>各ホストに異なるストレージのノードを複数配置