Amazon DynamoDB ドライバーの比較



この記事のメトリクスは、2019年7月時点で入手可能な最新のドライバーに基づいています。

この記事では、CData JDBC Driver for Amazon DynamoDB のパフォーマンスを、他社(競合製品1)が提供する同種の製品と比較しています。テストの結果、CData ドライバーは競合ドライバーを上回り、データのクエリと処理が5倍高速であることがわかりました。このパフォーマンスの差は、主にクライアント側およびサーバー側のリソースをより効率的に使用していることに起因しています。以下で比較の詳細をご紹介します。

ドライバーを並べて比較しているため、マシン自体のパフォーマンスは比較的重要ではありません。重要なのは、ドライバー同士の相対的な比較です。

データ



再現可能な比較を行うために、MongoDB, Inc. が公開しているサンプルの restaurants データセットを使用しました。大規模なデータセット(約1,000万レコード)を作成するために、元のデータセットを Amazon DynamoDB に複数回追加しました。

テーブル 行数
restaurants 25,360
restaurants_2 10,020,921

JDBC ドライバーの読み取りパフォーマンス



まず、シンプルな Java アプリケーションで JDBC ドライバーを使用し、各ドライバーで同じクエリを実行してパフォーマンスを比較しました。実際のデータ処理をシミュレートするために、各行のすべてのフィールドの値を読み取って処理しました。テストしたクエリは以下のとおりです:

  1. SELECT borough, restaurant_id, cuisine, name FROM restaurants
  2. SELECT borough, restaurant_id, cuisine, name FROM restaurants_2

テスト期間中、DynamoDB のクエリ対象テーブルのプロビジョニングされた読み取りキャパシティを1000に設定しました。クエリ結果の処理結果は以下のとおりです。

JDBC クエリ時間(ミリ秒)
クエリ CData Software 競合製品1
1(約25,000行) 2728 (+217.9%) 8673
2(約1,000万行) 139818 (+462.4%) 786368

これらのパフォーマンス数値は、競合ドライバーのデフォルト以外の設定で取得したものです。デフォルトでは、競合ドライバーは各クエリを単一のスレッドで実行します。一方、CData ドライバーはデフォルトで最大4つのスレッドを使用し、必要に応じてさらに多くのスレッドを使用するように設定できます。インストール時のデフォルト設定では、CData ドライバーはこのテストが示す以上のパフォーマンス差を示します。この記事では、CData ドライバーのデフォルト設定に合わせて競合ドライバーのスレッド数を4に増やした後にのみテストしました。結果からわかるように、CData ドライバーは競合ドライバーよりも大幅に高速に結果セットを取得して処理します。

JDBC ドライバーのリソース使用量



読み取りパフォーマンスのテスト中に、クライアント側およびサーバー側のリソース使用量も測定しました。具体的には、クライアント側のメモリと CPU 使用量、および割り当てられた読み取りキャパシティユニット(RU)の消費量を確認しました。以下のグラフは、サンプル Java プログラムを実行し、Java VisualVM を使用して CPU とメモリ使用量をキャプチャして得られたものです。Java バージョン8 アップデート211を使用し、最大ヒープサイズは4.27ギガバイトでした。

高い読み取りキャパシティでのクエリ実行

この比較では、DynamoDB テーブルに高い読み取りキャパシティを割り当てた状態で、大量の行をクエリしました:SELECT borough, restaurant_id, cuisine, name FROM restaurants_2

CData ドライバー

競合製品1 ドライバー

高い読み取りキャパシティ(1000読み取りユニット)をプロビジョニングした場合、各ドライバーが利用可能なクライアント側リソースをどのように活用するかに明確な違いがあります。グラフに基づくと、CData ドライバーは高いクライアント側リソース使用量を維持し、約37%の CPU を使用し、平均で約700MB のヒープを使用しています。

一方、競合ドライバーは約4%の CPU しか使用せず、平均で約110MB の RAM を使用しています。クライアント側リソースをより効率的に活用することで、CData ドライバーは競合ドライバーの5倍以上の速度でデータをリクエストして処理します。読み取りプロセスを早く完了することで、時間を節約できるだけでなく、DynamoDB テーブルにプロビジョニングされたリソースを最大限に活用できます。

DynamoDB 読み取りキャパシティの消費量

クライアント側のリソース使用量をテストする際に、各ドライバーの読み取りキャパシティ消費量も記録しました(1000読み取りユニットをプロビジョニング)。以下のグラフは、同じクエリに対する各ドライバーの読み取りキャパシティ消費量を示しています。消費された読み取りキャパシティの最初のスパイクは CData ドライバーを表し、2番目の上昇は競合ドライバーを表しています。

DynamoDB CloudWatch メトリクス

グラフから、CData ドライバーはプロビジョニングされた読み取りキャパシティを大幅に効率的に活用し、利用可能な読み取りキャパシティユニットの約70%を使用していることがわかります。一方、競合ドライバーは(JDBC URL で100%を使用するように設定されているにもかかわらず)利用可能な読み取りキャパシティの20%未満しか使用しておらず、これが競合ドライバーがテーブルデータのリクエストと処理に時間がかかる理由をさらに説明しています。

結論



CData Software ドライバーは、特に大規模なデータセットを扱う際に、同等の競合製品よりも高速であることが定期的に証明されています。速度は1つの指標に過ぎないことは承知していますが、ドライバーのパフォーマンスは、すべてのドライバーとデータアクセステクノロジーに組み込まれた深さと技術力の信頼できる指標です。当社の開発者は、DynamoDB データベースから返される結果の処理パフォーマンスを最適化するために数え切れないほどの時間を費やしており、ドライバーの制約はウェブトラフィックとサーバー処理時間のみであるように見えます。

CData DynamoDB ドライバーの30日間の無料トライアルをダウンロードして、CData の違いをぜひご体験ください。

始める準備はできましたか?

無料トライアルをダウンロード:

今すぐダウンロード

詳細:

Amazon DynamoDB JDBC Driver

Java アプリケーションをDynamoDB のリアルタイムNoSQL クラウドデータベースサービスに接続できます。Java / J2EE アプリケーションの要となるビッグデータバックエンドとして、Amazon DynamoDB を使用できます。