はじめに
フィックスターズは、時系列(Timeseries) データベースであるGridDB と InfluxDB を、CentOS 6.9 imageを使ったAmazon AWSインスタンス上で比較しました。
TimeSeriesデータベースをテストするために、YCSBベンチマークツールのフォークである YCSB-TS フレームワークを使用し、データセットは主にインメモリに収まるデータセット(100Mレコード)と、ディスクI/Oを実行する必要があるデータセット(400Mレコード)の2つを使用して行いました。
ベンチマークの結果
ベンチマークの結果、GridDBのインメモリ指向アーキテクチャーは、InfluxDBの性能を大きく上回りました。 結果は、GridDBがよりTimeSeriesデータ向きのデータベースであるということを示しています。GridDBは、メモリ内外のいずれの操作においても優れたパフォーマンスを提供しました。 結果は以下の通りです。
データベースのサイズが100Mから400Mレコードに増加したとき、GridDBはInfluxDBよりはるかにスケーラブルであることが証明されました。 GridDBは、このレコード数の増加にも関わらず相対的なLOADスループットを維持することができました。 データベースのサイズが大きくなるにつれ、GridDBのLOADスループットはInfluxDBよりも 6倍以上向上しました。 InfluxDBの読み出しスループットが 81%を超えて減少した際、GridDBのスループットの低下は約74%でした。 スキャン性能を比較すると、InfluxDBのスループットが 75%以上低下した際、GridDBのスループットの低下は 60%でした。
注目すべき点として、GridDBでは、クエリ(読み出しとスキャンのクエリ)操作において高いスループットと低いレイテンシを提供するように管理しながらも、InfluxDBよりも使用するCPUリソースが少ないことも挙げられます。
読み出しパフォーマンス
YCSB-TSでのテストの読み出し段階では、特定の TIMESTAMP キーを使用して行を検索する読み出しクエリが実行されました。 これらのタイムスタンプキーは YCSB-TS によって生成されます。
100Mレコードデータセットを使用した読み出し操作を比較すると、GridDBは、InfluxDBよりも8倍以上のスループットを達成しました。 400Mのレコードデータセットの場合、GridDBはInfluxDBのスループットは最大で10倍にもなりました。
また、GridDBの読み出し操作の待ち時間がInfluxDBの約10-11%であることも特筆すべき点です。
スキャンのパフォーマンス
スキャンのワークロードは、一般的なScanクエリまたは集計クエリ(AVERAGE、SUM、COUNTなど)を実行します。 すべてのスキャン操作では、 YCSB-TS によって生成されたランダムなtime-rangeが使用されます。
YCSB-TSを使って、テスト中にすべてのスキャン操作(SCAN、COUNT、AVERAGE、SUM)のスループットを測定しました。 100Mレコードのデータセットで、GridDBのスループットはInfluxDBの約5倍でした。 400Mレコードのデータセットでは、GridDBのスループットはInfluxDBの 4倍となりました。
集約操作ではない一般的なSCAN操作の場合、GridDBのレイテンシはInfluxDBの 13%-26%しかありませんでした。 集約操作の場合、GridDBのレイテンシはInfluxDBの15%〜26%程度でした。
テストの手順
テストのやり方としては、単一のC4.2xLarge AWSインスタンス上で、YCSB-TSとテストするデータベースの両方を実行しました。GridDBとInfluxDBの両方に100Mもしくは400Mの50バイトレコードのデータベースをロードしてベンチマークを行いました。 ロードフェーズが完了すると、YCSB-TSは一連の読み出しまたはスキャン操作を実行します。 データは 128 threadsを使い 8つのコンテナに配信されます。
参照
- ベンチマークテストの結果、方法論、構成などについては、 full whitepaperに詳しく記載されています。
- ベンチマークテストにはGridDB Community Edition を使用しました。InfluxDB databaseはInfluxDB version 1.3.6 Open-Source Edition を使用しました。
- InfluxDB はGoで記述されInfluxDataによって開発された製品です。
- YCSB-TS は、モジュラーフレームワークである YCSB (Yahoo Cloud Serving Benchmark)のフォークで、NoSQL TimeSeries databases (TSDB’s)のパフォーマンスをテストするために開発されました。
- GridDBをYCSB-TSに接続するコネクタは、GridDBの Java APIを使用して開発されました。
- フィックスターズは以前GridDBとCassandraをベンチマーク比較しました。その結果はSummary や、 Full Report でご覧になれます。
ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb
[…] GridDBとInfluxDBのTimeSeriesベンチマーク比較:サマリーと完全なレポートはこちらをご参照ください。 […]