*このブログは、 GridDBとMariaDBを使用したセンサー課金アプリケーションのベンチマーク のホワイトペーパーの要約です。
はじめに
本稿では、GridDBが良く使われるIoTのシナリオから、MySQLデータベースであるMariaDB、NoSQLデータベース双方を正確にベンチマークするためのアプリケーションを作成し、比較しました。 このアプリケーションは、センサ情報を収集・解析し、それを基に課金を行うアプリケーションで、IoTにおける典型的なアプリケーションの一つです。この比較で特筆すべきは、このような種類のアプリケーションが伝統的にRDBM(リレーショナルデータベース管理)システム上で実行されてきたということです。 このようなアプリケーションでは様々なタイプのSQLデータベースを使用することができますが、今回は無料のオープンソースであり人気の高いMariaDBに特化して比較を行いました。
テストの方法
まずアプリケーションを負荷(インジェスト)と抽出の2つのテストケースに分けました。 この方法によって、より現実に即したベンチマークテストが可能となり、パフォーマンスを公正かつ正確に評価するためのさまざまな指標を提供できます。
インジェストテストは、各スレッドが各々のセンサデバイスを担当し、できるだけ早く操作を実行します。 抽出テストは、ロードフェーズで生成されたデータのサブセットに対して集約オペレーションを実行します。
ベンチマークの結果
GridDBとMariaDBの2つのデータベースのパフォーマンスを測定するために、いくつかの基準でテストを行いました。上の図では測定基準の1つ(インジェスチョン)でGridDBが優れたパフォーマンスを示していますが、リソースの使用量とデータの抽出に要した時間を測定する際にもGridDBのパフォーマンスが優れていることが分かりました。
NoSQLデータベースが適切にスケールアウトし、必要に応じてノードを追加する機能があることも、このテストでお分かりいただけます。ベンチマークは、マイクロソフトのクラウドベースのWebサービス Azure を使用して実行しています。ベンチマークの結果は、2つのデータベース間でスケーラビリティが著しく異なることを示しています。
インジェスチョン(負荷)テストでは、各データベースが書き込める1秒あたりの更新数を計測しています。 GridDBは、31,916 OPS(1秒あたりの処理数)を処理することができたのに対し、MariaDBは2,423 OPSでした。つまり、13倍もの性能差が観測されています。
抽出については、各デバイスの月次データのSUM集計を測定しました。 私たちは1つのデバイスに対するクエリ実行時間を比較しました。GridDBでは必要に応じてセンサ/デバイスが追加されてもクエリ実行時間は一定のままでした。一方、MariaDBではセンサ・デバイスが増加するにつれてクエリ実行時間は徐々に悪化しました。
また、このテスト中にリソースの使用状況も測定、記録されました。 GridDBはMariaDBに比べて少ないCPUおよびメモリリソースを使用しながら、より高いレベルのパフォーマンスを出すことができることが分かりました。
テスト手順
本ホワイトペーパーでは、米国西部リージョンのMicrosoft Azure仮想マシン上でこのベンチマークを実行しています。当該ベンチマーク環境では、 1つのデータベースサーバ、B2MSインスタンス、3つのB2MSインスタンスと2つのA2クライアントインスタンスが混在しています。
B2MSインスタンスは、2.40GHzで動作するデュアルコアインテル(R)Xeon(R)E5-2673 v3と4GBのメモリを搭載し、A2インスタンスにはデュアルコアインテル(R)Xeon(R)E5-2660 CPUと3.5GB メモリを搭載しています。
クラウドサービスのコンピューティングパワーのパフォーマンスは変動する傾向があるため、可能な限り正確な結果を出すために各テストを3回繰り返し、中央値を取得しています。
参照
- このホワイトペーパーで使用されているソースコードをダウンロードするには、こちらを参照してください。 rdbms-benchmark-master.zip
- ベンチマークテストに使用された結果、方法論、構成、および実践を詳述した完全なレポートは、ホワイトペーパー にあります。
- ベンチマークテストにはGridDB Community Edition を使用しました。MariaDB データベース はMariaDB version 5.5.56 を使用しました。
- Fixstarsは以前GridDBとCassandraのベンチマーク比較を行いました。その比較のサマリーと完全なレポートはこちらをご参照ください。
- GridDBとInfluxDBのTimeSeriesベンチマーク比較:サマリーと完全なレポートはこちらをご参照ください。
ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb