ScalarDB Cluster の設定
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このドキュメントでは、ScalarDB Cluster の設定について説明します。ScalarDB Cluster は複数のクラスターノードで構成されており、各クラスターノードを設定する必要があります。設定はプロパティファイルで指定する必要があります。
クラスター設定
このセクションでは、ScalarDB Cluster の設定について説明します。
一般的な設定
ScalarDB Cluster では、次の一般的な設定が利用可能です。
トランザクション管理設定
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.transaction_manager | ScalarDB のトランザクションマネージャー。Consensus Commit を使用するには consensus-commit を指定し、非トランザクションストレージ操作を実行する には single-crud-operation を指定します。single-crud-operation を使用する場合、scalar.db.consensus_commit プレフィックスの下の設定は無視されることに注意してください。 | consensus-commit |
scalar.db.consensus_commit.isolation_level | Consensus Commit に使用される分離レベル。SNAPSHOT、SERIALIZABLE または READ_COMMITTED のいずれかを指定できます。 | SNAPSHOT |
scalar.db.consensus_commit.coordinator.namespace | Consensus Commit に使用される Coordinator テーブルの名前空間名。 | coordinator |
ノード設定
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.cluster.membership.type | メンバーシップの種類。現在、KUBERNETES のみ指定できます。 | KUBERNETES |
scalar.db.cluster.membership.kubernetes.endpoint.namespace_name | この設定は、KUBERNETES メンバーシップタイプ用です。endpoint resource の名前空間名。 | default |
scalar.db.cluster.membership.kubernetes.endpoint.name | この設定は、KUBERNETES メンバーシップタイプ用です。メンバーシップ情報を取得するための endpoint resource の名前。 | |
scalar.db.cluster.node.decommissioning_duration_secs | 廃止期間(秒単位)。 | 30 |
scalar.db.cluster.node.grpc.max_inbound_message_size | 受信可能な最大メッセージサイズ。 | gRPCのデフォルト値 |
scalar.db.cluster.node.grpc.max_inbound_metadata_size | 受信できるメタデータの最大サイズ。 | gRPCのデフォルト値 |
scalar.db.cluster.node.port | ScalarDB Cluster ノードのポート番号。 | 60053 |
scalar.db.cluster.node.prometheus_exporter_port | Prometheus エクスポーターのポート番号。 | 9080 |
scalar.db.cluster.grpc.deadline_duration_millis | gRPC の期限期間(ミリ秒単位)。 | 60000 (60秒) |
scalar.db.cluster.node.standalone_mode.enabled | スタンドアロンモードが有効かどうか。スタンドアロンモードが有効になっている場合、メンバーシップ設定 (scalar.db.cluster.membership.*) は無視されることに注意してください。 | false |
パフォーマンス関連の設定
Consensus Commit トランザクションマネージャーでは、次のパフォーマンス関連の設定 が利用できます。
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.consensus_commit.parallel_executor_count | 並列実行のためのエグゼキュータ (スレッド) の数。この数値は、ScalarDB Cluster ノード内または ScalarDB プロセス内のトランザクション全体のスレッド数の合計を示します。 | 128 |
scalar.db.consensus_commit.parallel_preparation.enabled | 準備フェーズが並行して実行されるかどうか。 | true |
scalar.db.consensus_commit.parallel_validation.enabled | 検証フェーズ (EXTRA_READ 内) が並列で実行されるかどうか。 | scalar.db.consensus_commit.parallel_commit.enabled の値 |
scalar.db.consensus_commit.parallel_commit.enabled | コミットフェーズが並列で実行されるかどうか。 | true |
scalar.db.consensus_commit.parallel_rollback.enabled | ロールバックフェーズが並列で実行されるかどうか。 | scalar.db.consensus_commit.parallel_commit.enabled の値 |
scalar.db.consensus_commit.async_commit.enabled | コミットフェーズが非同期で実行されるかどうか。 | false |
scalar.db.consensus_commit.async_rollback.enabled | ロールバックフェーズが非同期に実行されるかどうか。 | scalar.db.consensus_commit.async_commit.enabled の値 |
scalar.db.consensus_commit.parallel_implicit_pre_read.enabled | 暗黙的な事前読み取りが並列で実行されるかどうか。 | true |
scalar.db.consensus_commit.coordinator.group_commit.enabled | トランザクション状態のコミットがバッチモードで実行されるかどうか。この機能は、2フェーズコミットインターフェイスでは使用できません。 | false |
scalar.db.consensus_commit.coordinator.group_commit.slot_capacity | グループコミット機能のグループ内のスロットの最大数。値が大きいとグループコミットの効率は向上しますが、待ち時間が増加し、トランザクションの競合が発生する可能性も高くなります。1 | 20 |
scalar.db.consensus_commit.coordinator.group_commit.group_size_fix_timeout_millis | グループ内のスロットのサイズを固定するためのタイムアウト。値が大きいとグループコミットの効率が向上しますが、待ち時間が増加し、トランザクションの競合が発生する可能性も高くなります。1 | 40 |
scalar.db.consensus_commit.coordinator.group_commit.delayed_slot_move_timeout_millis | 遅延スロットをグループから別の分離グループに移動して、元のグループが遅延トランザクションの影響を受けないようにするためのタイムアウト。値が大きいとグループコミットの効率が向上しますが、待ち時間が増加し、トランザクションの競合が発生する可能性も高くなります。1 | 1200 |
scalar.db.consensus_commit.coordinator.group_commit.old_group_abort_timeout_millis | 進行中の古いグループをアボートするためのタイムアウト。値が小さいと、積極的なアボートによってリソースの消費量が減りますが、長時間実行されるトランザクションで不要なアボートが発生する可能性も高くなります。 | 60000 |
scalar.db.consensus_commit.coordinator.group_commit.timeout_check_interval_millis | グループコミット関連のタイムアウトをチェックする間隔。 | 20 |
scalar.db.consensus_commit.coordinator.group_commit.metrics_monitor_log_enabled | グループコミットのメトリックが定期的にログに記録されるかどうか。 | false |
ストレージ関連の設定
ScalarDB には、複数のストレージ実装をサポートするストレージ(データベース)抽象化レイヤーがあります。scalar.db.storage プロパティを使用してストレージ実装を指定できます。
データベースを選択して、各ストレージで使用可能な設定を確認します。
- JDBC databases
- DynamoDB
- Cosmos DB for NoSQL
- Cassandra
JDBC データベースでは次の設定を使用できます。
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.storage | jdbc を指定する必要があります。 | - |
scalar.db.contact_points | JDBC 接続 URL。 | |
scalar.db.username | データベースにアクセスするためのユーザー名。 | |
scalar.db.password | データベースにアクセスするためのパスワード。 | |
scalar.db.jdbc.connection_pool.min_idle | 接続プール内のアイドル接続の最小数。 | 20 |
scalar.db.jdbc.connection_pool.max_idle | 接続プール内でアイドル状態のままにできる接続の最大数。 | 50 |
scalar.db.jdbc.connection_pool.max_total | 接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | 200 |
scalar.db.jdbc.prepared_statements_pool.enabled | このプロパティを true に設定すると、準備されたステートメントのプールが有効になります。 | false |
scalar.db.jdbc.prepared_statements_pool.max_open | ステートメントプールから同時に割り当てることができるオープンステートメントの最大数。制限がない場合は負の値を使用します。 | -1 |
scalar.db.jdbc.isolation_level | JDBC の分離レベル。READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、または SERIALIZABLE を指定できます。 | 基盤データベース固有 |
scalar.db.jdbc.table_metadata.connection_pool.min_idle | テーブルメタデータの接続プール内のアイドル接続の最小数。 | 5 |
scalar.db.jdbc.table_metadata.connection_pool.max_idle | テーブルメタデータの接続プール内でアイドル状態のままにできる接続の最大数。 | 10 |
scalar.db.jdbc.table_metadata.connection_pool.max_total | テーブルメタデータの接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | 25 |
scalar.db.jdbc.admin.connection_pool.min_idle | 管理者の接続プール内のアイドル接続の最小数。 | 5 |
scalar.db.jdbc.admin.connection_pool.max_idle | 管理者の接続プール内でアイドル状態のままにできる接続の最大数。 | 10 |
scalar.db.jdbc.admin.connection_pool.max_total | 管理者の接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | 25 |
SQLite3 を JDBC データベースとして使用している場合は、scalar.db.contact_points を次のように設定する必要があります。
scalar.db.contact_points=jdbc:sqlite:<SQLITE_DB_FILE_PATH>?busy_timeout=10000
他の JDBC データベースとは異なり、SQLite3 doesn't fully support concurrent access。SQLITE_BUSY によって内部的に頻繁に発生するエラーを回避するには、busy_timeout パラメータを設定することをお勧めします。
DynamoDB では次の設定が利用可能です。
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.storage | dynamo を指定する必要があります。 | - |
scalar.db.contact_points | ScalarDB が通信する AWS リージョン (例: us-east-1)。 | |
scalar.db.username | AWS とやり取りするユーザーを識別するために使用される AWS アクセスキー。 | |
scalar.db.password | AWS と対話するユーザーを認証するために使用される AWS シークレットアクセスキー。 | |
scalar.db.dynamo.endpoint_override | ScalarDB が通信する Amazon DynamoDB エンドポイント。これは主に、AWS サービスではなくローカルインスタンスでのテストに使用されます。 | |
scalar.db.dynamo.namespace.prefix | ユーザー名前空間とメタデータ名前空間名のプレフィックス。AWS では単一の AWS リージョン内で一意のテーブル名を持つ必要があるため、単一の AWS リージョン内で複数の ScalarDB 環境 (開発、本番など) を使用する場合に便利です。 |
CosmosDB for NoSQL では次の設定が利用可能です。
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.storage | cosmos を指定する必要があります。 | - |
scalar.db.contact_points | ScalarDB が通信する NoSQL エンドポイント用の Azure Cosmos DB。 | |
scalar.db.password | Azure Cosmos DB for NoSQL にアクセスするための認証を実行するために使用されるマスターキーまたは読み取り専用キーのいずれか。 | |
scalar.db.cosmos.consistency_level | Cosmos DB 操作に使 用される一貫性レベル。STRONG または BOUNDED_STALENESS を指定できます。 | STRONG |
Cassandra では次の設定が利用可能です。
| 名前 | 説明 | デフォルト |
|---|---|---|
scalar.db.storage | cassandra を指定する必要があります。 | - |
scalar.db.contact_points | カンマで区切られた連絡先。 | |
scalar.db.contact_port | すべての連絡先ポイントのポート番号。 | |
scalar.db.username | データベースにアクセスするためのユーザー名。 | |
scalar.db.password | データベースにアクセスするためのパスワード。 |
マルチストレージのサポート
ScalarDB は、複数のストレージ実装を同時に使用することをサポートしています。scalar.db.storage プロパティの値として multi-storage を指定すると、複数のストレージを使用できます。
複数のストレージの使用の詳細については、マルチストレージトランザクションを参照してください。