ScalarDB ベンチマークツール
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチュートリアルでは、ScalarDB のベンチマークツールを実行する方法について説明します。データベースベンチマークは、一連の標準データセットワークロードに対するデータベースのパフォーマンスを評価するのに役立ちます。
ベンチマークのワークロード
- TPC-C
- YCSB (ワークロード A、C、および F)
- マルチストレージ YCSB (ワークロード C および F)
- この YCSB バリ アントは、ScalarDB を使用するマルチストレージ環境用です。
- マルチストレージ YCSB のワーカーは、2つの名前空間 (
ycsb_primaryとycsb_secondary) で同じ数の読み取り操作と書き込み操作を実行します。
前提条件
- 以下のいずれかの Java Development Kit (JDK):
- Oracle JDK: 8、11、17、または 21 (LTS バージョン)
- OpenJDK ディストリビューション (Eclipse Temurin、Amazon Corretto、または Microsoft Build of OpenJDK): 8、11、17、または 21 (LTS バージョン)
- Gradle
- Kelpie
- Kelpie は、システムのベンチマークや検証などのエンドツーエンドのテストを実行するためのフレームワークです。 Kelpie Releases から最新バージョンを入手し、アーカイブファイルを解凍します。
- ベンチマークツールを実行するクライアント
- ターゲットデータベース
- ScalarDB がサポートするデータベースの一覧については、Databases を参照してください。
ベンチマークツールをセットアップする
次のセクションでは、ベンチマークツールのセットアップ方法について説明します。
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 Core の設定または ScalarDB Cluster の設定の Java Client SDK 設定セクションを参照してください。
スキーマを適用してプロパティファイルを設定したら、ベンチマークを選択し、指示に従ってテーブルを作成します。
- TPC-C
- YCSB
- マルチストレージ YCSB
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
YCSB ベンチマーク用のテーブル (ycsb-schema.json) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。
java -jar scalardb-schema-loader-<VERSION>.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f ycsb-schema.json --coordinator
ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。
java -jar scalardb-cluster-schema-loader-<VERSION>-all.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f ycsb-schema.json --coordinator
マルチストレージ YCSB ベンチマーク用のテーブル (ycsb-multi-storage-schema.json) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。
java -jar scalardb-schema-loader-<VERSION>.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f ycsb-multi-storage-schema.json --coordinator
ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。
java -jar scalardb-cluster-schema-loader-<VERSION>-all.jar --config <PATH_TO_SCALARDB_PROPERTIES_FILE> -f ycsb-multi-storage-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:
tpcc-benchmark-config.toml - YCSB:
ycsb-benchmark-config.toml - マルチストレージ YCSB:
ycsb-multi-storage-benchmark-config.toml
ベンチマークを実行する
ベンチマークを選択し、指示に従ってベンチマークを実行します。
- TPC-C
- YCSB
- マルチストレージ YCSB
TPC-C ベンチマークを実行するには、<PATH_TO_KELPIE> を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。
/<PATH_TO_KELPIE>/bin/kelpie --config tpcc-benchmark-config.toml
YCSB ベンチマークを実行するには、<PATH_TO_KELPIE> を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。
/<PATH_TO_KELPIE>/bin/kelpie --config ycsb-benchmark-config.toml
マルチストレージ YCSB ベンチマークを実行するには、<PATH_TO_KELPIE> を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。
/<PATH_TO_KELPIE>/bin/kelpie --config ycsb-multi-storage-benchmark-config.toml
さらに、次のオプションが利用可能です。
--only-pre。データのみをロードします。--only-process。ベンチマークのみを実行します。--except-pre。データをロードせずにジョブを実行します。--except-process。ベンチマークを実行せずにジョブを実行します。
共通パラメータ
次のパラメータはすべてのワークロードに共通です。
concurrency
- 説明: データベースに対してベンチマークトランザクションを同時実行するワーカースレッドの数。このパラメータは、実際のベンチマーク実行フェーズでの並列度レベルを制御します。この値を増加させると、より多くの同時クライアントアクセスとより高いワークロード強度をシミュレートできます。
- デフォルト値:
1
run_for_sec
- 説明: ベンチマーク実行フェーズの期間 (秒単位)。このパラメータは、ベンチマークが実行され、データベースにトランザクションを送信する時間を定義します。
- デフォルト値:
60
ramp_for_sec
- 説明: ベンチマーク測定フェーズが開始される前のランプアップ期間の期間 (秒単位)。このウォームアップ期間中、システムはトランザクションを実行しますが、パフォーマンスメトリクスは記録しません。これにより、ベンチマーク結果を収集する前にシステムが安定状態に達することができます。
- デフォルト値:
0
ワークロード固有のパラメータ
ワークロードを選択すると、使用可能なパラメータが表示されます。
- TPC-C
- YCSB とマルチストレージ YCSB
num_warehouses
- 説明: TPC-C ベンチマークワークロード用に作成するウェアハウスの数。この値は、データセットサイズを決定するスケール係数です。この値を増加させると、より大きなワーキングセットが作成され、エンタープライズ規模のテストが可能になります。