メインコンテンツまでスキップ
バージョン: 3.17

ScalarDB ベンチマークツール

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

このチュートリアルでは、ScalarDB のベンチマークツールを実行する方法について説明します。データベースベンチマークは、一連の標準データセットワークロードに対するデータベースのパフォーマンスを評価するのに役立ちます。

ベンチマークのワークロード

  • TPC-C
  • YCSB (ワークロード A、C、および F)
  • マルチストレージ YCSB (ワークロード C および F)
    • この YCSB バリアントは、ScalarDB を使用するマルチストレージ環境用です。
    • マルチストレージ YCSB のワーカーは、2つの名前空間 (ycsb_primaryycsb_secondary) で同じ数の読み取り操作と書き込み操作を実行します。

前提条件

  • 次の Java Development Kit (JDK) のいずれか:
  • Gradle
  • Kelpie
    • Kelpie は、システムのベンチマークや検証などのエンドツーエンドのテストを実行するためのフレームワークです。 Kelpie Releases から最新バージョンを入手し、アーカイブファイルを解凍します。
  • ベンチマークツールを実行するクライアント
  • ターゲットデータベース
    • ScalarDB がサポートするデータベースの一覧については、Databases を参照してください。
注記

現在、ベンチマークツールを実行するときに使用できるのは JDK 8のみです。

ベンチマークツールをセットアップする

次のセクションでは、ベンチマークツールのセットアップ方法について説明します。

ScalarDB ベンチマークリポジトリをクローンする

ターミナルを開き、次のコマンドを実行して ScalarDB ベンチマークリポジトリのクローンを作成します。

git clone https://github.com/scalar-labs/scalardb-benchmarks

次に、下記のコマンドを実行して、ベンチマークファイルが含まれるディレクトリに移動します。

cd scalardb-benchmarks

ツールをビルドする

ベンチマークツールをビルドするには、次のコマンドを実行します。

./gradlew shadowJar

スキーマをロードする

初期データをロードする前に、ScalarDB Schema Loader を使用してテーブルを定義する必要があります。ScalarDB Schema Loader は、ScalarDB Releases ページからダウンロードできます。ScalarDB へのアクセス方法に基づいて Schema Loader を選択してください。

  • ScalarDB コアライブラリ (コミュニティエディション) を使用する場合: 使用している ScalarDB のバージョンに応じて scalardb-schema-loader-<VERSION>.jar を選択します。次に、.jar ファイルを scalardb-benchmarks ルートディレクトリに保存します。
  • ScalarDB Cluster (エンタープライズエディション) を使用する場合: 使用している ScalarDB Cluster のバージョンに応じて scalardb-cluster-schema-loader-<VERSION>-all.jar を選択します。次に、.jar ファイルを scalardb-benchmarks ルート ディレクトリに保存します。

さらに、Java CRUD インターフェースを介して ScalarDB にアクセスするためのプロパティファイルも必要です。ScalarDB プロパティファイルの設定の詳細については、ScalarDB 設定または ScalarDB Cluster クライアント設定を参照してください。

スキーマを適用してプロパティファイルを設定したら、ベンチマークを選択し、指示に従ってテーブルを作成します。

TPC-C ベンチマーク用のテーブル (tpcc-schema.json) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。

java -jar scalardb-schema-loader-<VERSION>.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f tpcc-schema.json --coordinator

ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。

java -jar scalardb-cluster-schema-loader-<VERSION>-all.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f tpcc-schema.json --coordinator

ベンチマーク設定ファイルを準備する

ベンチマークを実行するには、まずベンチマーク設定ファイルを準備する必要があります。設定ファイルには、少なくとも実行するワークロードモジュールの場所とデータベース設定が必要です。

以下は、TPC-C ベンチマークを実行するための設定例です。config_file に指定する ScalarDB プロパティファイルは、スキーマをロードするの手順の1つとして設定したプロパティファイルである必要があります。

注記

または、ScalarDB プロパティファイルを使用する代わりに、.toml ファイルで各データベース設定項目を指定することもできます。config_file が指定されている場合、[database_config] の下の他のすべての設定は、コメントが解除されていても無視されます。

[modules]
[modules.preprocessor]
name = "com.scalar.db.benchmarks.tpcc.TpccLoader"
path = "./build/libs/scalardb-benchmarks-all.jar"
[modules.processor]
name = "com.scalar.db.benchmarks.tpcc.TpccBench"
path = "./build/libs/scalardb-benchmarks-all.jar"
[modules.postprocessor]
name = "com.scalar.db.benchmarks.tpcc.TpccReporter"
path = "./build/libs/scalardb-benchmarks-all.jar"

[database_config]
config_file = "<PATH_TO_SCALARDB_PROPERTIES_FILE>"
#contact_points = "localhost"
#contact_port = 9042
#username = "cassandra"
#password = "cassandra"
#storage = "cassandra"

モジュールに渡すパラメータは設定ファイルで定義できます。詳細については、以下のサンプル設定ファイルと 共通パラメータで使用可能なパラメータを参照してください。

ベンチマークを実行する

ベンチマークを選択し、指示に従ってベンチマークを実行します。

TPC-C ベンチマークを実行するには、<PATH_TO_KELPIE> を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。

/<PATH_TO_KELPIE>/bin/kelpie --config tpcc-benchmark-config.toml

さらに、次のオプションが利用可能です。

  • --only-pre。データのみをロードします。
  • --only-process。ベンチマークのみを実行します。
  • --except-pre。データをロードせずにジョブを実行します。
  • --except-process。ベンチマークを実行せずにジョブを実行します。

共通パラメータ

次のパラメータはすべてのワークロードに共通です。

concurrency

  • 説明: データベースに対してベンチマークトランザクションを同時実行するワーカースレッドの数。このパラメータは、実際のベンチマーク実行フェーズでの並列度レベルを制御します。この値を増加させると、より多くの同時クライアントアクセスとより高いワークロード強度をシミュレートできます。
  • デフォルト値: 1

run_for_sec

  • 説明: ベンチマーク実行フェーズの期間 (秒単位)。このパラメータは、ベンチマークが実行され、データベースにトランザクションを送信する時間を定義します。
  • デフォルト値: 60

ramp_for_sec

  • 説明: ベンチマーク測定フェーズが開始される前のランプアップ期間の期間 (秒単位)。このウォームアップ期間中、システムはトランザクションを実行しますが、パフォーマンスメトリクスは記録しません。これにより、ベンチマーク結果を収集する前にシステムが安定状態に達することができます。
  • デフォルト値: 0

ワークロード固有のパラメータ

ワークロードを選択すると、使用可能なパラメータが表示されます。

num_warehouses

  • 説明: TPC-C ベンチマークワークロード用に作成するウェアハウスの数。この値は、データセットサイズを決定するスケール係数です。この値を増加させると、より大きなワーキングセットが作成され、エンタープライズ規模のテストが可能になります。
  • デフォルト値: 1

load_concurrency

  • 説明: データベースに初期ベンチマークデータをロードするために使用される並列スレッドの数。このパラメータは、データロードフェーズの完了速度を制御します。この値を増加させると、特に多数のウェアハウスの場合、データロード時間を大幅に短縮できます。これは、ベンチマーク実行中に使用される concurrency パラメータとは別のものです。
  • デフォルト値: 1

load_start_warehouse

  • 説明: ロードするウェアハウス範囲の開始 ID。このオプションは、複数のクライアントで大規模データをロードする場合や、追加のウェアハウスを追加する場合に skip_item_load と組み合わせて使用すると便利です。
  • デフォルト値: 1

load_end_warehouse

  • 説明: ロードするウェアハウス範囲の終了 ID。ロードするウェアハウスの数を指定するには、num_warehouses または load_end_warehouse のいずれかを使用できます。
  • デフォルト値: 1

skip_item_load

  • 説明: true に設定されている場合、アイテムテーブルのロードをスキップします。これは、複数のクライアントでデータをロードする場合に役立ちます。アイテムテーブルはすべてのウェアハウスで共有されており、一度だけロードする必要があるためです。
  • デフォルト値: false

use_table_index

  • 説明: true に設定されている場合、ScalarDB のセカンダリインデックスの代わりにテーブルベースのセカンダリインデックスを使用します。テーブルベースのセカンダリインデックスは、通常の ScalarDB テーブルを使用してインデックスを構築し、パーティションキーを介して特定の顧客や注文の効率的な検索を可能にします。対照的に、ScalarDB のセカンダリインデックスは下位のデータベースのネイティブセカンダリインデックス機能を活用するため、その動作は実装に依存します。Cassandra などの NoSQL データベースのセカンダリインデックスはパフォーマンスの観点から慎重な扱いを必要とすることが多いため、このオプションを使用すると、セカンダリインデックスを含むワークロードを実行する際のターゲットデータベースのパフォーマンス特性を観察できます。
  • デフォルト値: false

np_only

  • 説明: true に設定されている場合、他の TPC-C トランザクションタイプを除外して、新規注文と支払いトランザクションのみ (それぞれ 50%) でベンチマークを実行します。この設定は、長時間の読み取り処理をなくし、書き込み中心のワークロードで集中的なパフォーマンステストに役立ちます。
  • デフォルト値: false

rate_new_order

  • 説明: トランザクションミックスでの新規注文トランザクションの割合。ニーズに基づいてこの割合を指定する場合、他のすべてのレートパラメータの割合も指定する必要があります。その場合、すべてのレートパラメータの合計は 100% と等しくなければなりません。
  • デフォルト値: N/A

rate_payment

  • 説明: トランザクションミックスでの支払いトランザクションの割合。ニーズに基づいてこの割合を指定する場合、他のすべてのレートパラメータの割合も指定する必要があります。その場合、すべてのレートパラメータの合計は 100% と等しくなければなりません。
  • デフォルト値: N/A

rate_order_status

  • 説明: トランザクションミックスでの注文ステータストランザクションの割合。ニーズに基づいてこの割合を指定する場合、他のすべてのレートパラメータの割合も指定する必要があります。その場合、すべてのレートパラメータの合計は 100% と等しくなければなりません。
  • デフォルト値: N/A

rate_delivery

  • 説明: トランザクションミックスでの配送トランザクションの割合。ニーズに基づいてこの割合を指定する場合、他のすべてのレートパラメータの割合も指定する必要があります。その場合、すべてのレートパラメータの合計は 100% と等しくなければなりません。
  • デフォルト値: N/A

rate_stock_level

  • 説明: トランザクションミックスでの在庫レベルトランザクションの割合。ニーズに基づいてこの割合を指定する場合、他のすべてのレートパラメータの割合も指定する必要があります。その場合、すべてのレートパラメータの合計は 100% と等しくなければなりません。
  • デフォルト値: N/A

backoff

  • 説明: 競合によってトランザクションが中止された後に挿入されるスリープ時間 (ミリ秒単位)。このパラメータは、失敗したトランザクションを再試行する前に遅延を導入することで競合を減らすのに役立ちます。
  • デフォルト値: 0