ScalarDB Cluster Configurations
This document describes the configurations for ScalarDB Cluster. ScalarDB Cluster consists of multiple cluster nodes, each of which needs to be configured. The configurations need to be specified in the properties file.
Cluster configurationsβ
This section describes the configurations for ScalarDB Cluster.
General configurationsβ
The following general configurations are available for ScalarDB Cluster.
Transaction management configurationsβ
The following transaction management-related configurations are available for ScalarDB Cluster.
transaction_managerβ
- Field:
scalar.db.transaction_manager - Description: Transaction manager of ScalarDB. Specify
consensus-committo use Consensus Commit orsingle-crud-operationto run non-transactional storage operations. Note that the configurations under thescalar.db.consensus_commitprefix are ignored if you usesingle-crud-operation. - Default value:
consensus-commit
isolation_levelβ
- Field:
scalar.db.consensus_commit.isolation_level - Description: Isolation level used for Consensus Commit. Either
SNAPSHOT,SERIALIZABLE, orREAD_COMMITTEDcan be specified. - Default value:
SNAPSHOT
coordinator.namespaceβ
- Field:
scalar.db.consensus_commit.coordinator.namespace - Description: Namespace name of Coordinator tables used for Consensus Commit.
- Default value:
coordinator
Node configurationsβ
The following node-related configurations are available for ScalarDB Cluster.
cluster.membership.typeβ
- Field:
scalar.db.cluster.membership.type - Description: Membership type. Currently, only
KUBERNETEScan be specified. - Default value:
KUBERNETES
cluster.membership.kubernetes.endpoint.namespace_nameβ
- Field:
scalar.db.cluster.membership.kubernetes.endpoint.namespace_name - Description: This configuration is for the
KUBERNETESmembership type. Namespace name for the endpoint resource. - Default value:
default
cluster.membership.kubernetes.endpoint.nameβ
- Field:
scalar.db.cluster.membership.kubernetes.endpoint.name - Description: This configuration is for the
KUBERNETESmembership type. Name of the endpoint resource to get the membership info. - Default value: empty
cluster.node.decommissioning_duration_secsβ
- Field:
scalar.db.cluster.node.decommissioning_duration_secs - Description: Duration in seconds until a ScalarDB Cluster node is actually decommissioned when shutting down.
- Default value:
30
cluster.node.grpc.max_inbound_message_sizeβ
- Field:
scalar.db.cluster.node.grpc.max_inbound_message_size - Description: Maximum message size allowed to be received.
- Default value: The gRPC default value
cluster.node.grpc.max_inbound_metadata_sizeβ
- Field:
scalar.db.cluster.node.grpc.max_inbound_metadata_size - Description: Maximum size of metadata allowed to be received.
- Default value: The gRPC default value
cluster.node.portβ
- Field:
scalar.db.cluster.node.port - Description: Port number of the ScalarDB Cluster node.
- Default value:
60053
cluster.internal.node.portβ
- Field:
scalar.db.cluster.internal.node.port - Description: Port number of the gRPC server used for internal communication between ScalarDB Cluster nodes.
- Default value:
60054
cluster.node.admin.portβ
- Field:
scalar.db.cluster.node.admin.port - Description: Port number of the administrative gRPC server of the ScalarDB Cluster node. If this property is set, the administrator service (
pause,unpause, andcheckPaused) will run on a dedicated gRPC server on this port, which is useful for isolating administrative operations from other gRPC traffic. If this property is not set, the administrator service will run on the same port as the other gRPC services (scalar.db.cluster.node.port). - Default value: empty (uses
scalar.db.cluster.node.port)
cluster.node.prometheus_exporter_portβ
- Field:
scalar.db.cluster.node.prometheus_exporter_port - Description: Port number of the Prometheus exporter.
- Default value:
9080
cluster.grpc.deadline_duration_millisβ
- Field:
scalar.db.cluster.grpc.deadline_duration_millis - Description: Deadline duration for gRPC in milliseconds.
- Default value:
60000(60 seconds)
cluster.node.standalone_mode.enabledβ
- Field:
scalar.db.cluster.node.standalone_mode.enabled - Description: Whether standalone mode is enabled. Note that if standalone mode is enabled, the membership configurations (
scalar.db.cluster.membership.*) will be ignored. - Default value:
false
transaction.enabledβ
- Field:
scalar.db.transaction.enabled - Description: Whether the transaction feature is enabled. For example, if you use only the embedding feature, you can set this property to
false. - Default value:
true
cluster.node.scanner_management.expiration_time_millisβ
- Field:
scalar.db.cluster.node.scanner_management.expiration_time_millis - Description: ScalarDB Cluster nodes maintain in-progress scanners. This process expires scanners that have been idle for an extended period to prevent resource leaks. This configuration specifies the expiration time of this scanner management feature in milliseconds.
- Default value:
60000(60 seconds)
cluster.node.grpc.max_connection_age_millisβ
- Field:
scalar.db.cluster.node.grpc.max_connection_age_millis - Description: Maximum time that a channel may exist. It helps proactively close and refresh old connections to prevent imbalance across servers.
- Default value:
Integer.MAX_VALUE(Infinite)
cluster.node.grpc.max_connection_age_grace_millisβ
- Field:
scalar.db.cluster.node.grpc.max_connection_age_grace_millis - Description: Grace period after the channel reaches its max age. It provides a grace period for ongoing RPCs to complete before the connection is closed.
- Default value:
Integer.MAX_VALUE(Infinite)
Performance-related configurationsβ
The following performance-related configurations are available for the Consensus Commit transaction manager.
parallel_executor_countβ
- Field:
scalar.db.consensus_commit.parallel_executor_count - Description: Number of executors (threads) for parallel execution. This number refers to the total number of threads across transactions in a ScalarDB Cluster node or a ScalarDB Core process.
- Default value:
128
parallel_preparation.enabledβ
- Field:
scalar.db.consensus_commit.parallel_preparation.enabled - Description: Whether or not the preparation phase is executed in parallel.
- Default value:
true
parallel_validation.enabledβ
- Field:
scalar.db.consensus_commit.parallel_validation.enabled - Description: Whether or not the validation phase (in
EXTRA_READ) is executed in parallel. - Default value: The value of
scalar.db.consensus_commit.parallel_commit.enabled
parallel_commit.enabledβ
- Field:
scalar.db.consensus_commit.parallel_commit.enabled - Description: Whether or not the commit phase is executed in parallel.
- Default value:
true
parallel_rollback.enabledβ
- Field:
scalar.db.consensus_commit.parallel_rollback.enabled - Description: Whether or not the rollback phase is executed in parallel.
- Default value: The value of
scalar.db.consensus_commit.parallel_commit.enabled
async_commit.enabledβ
- Field:
scalar.db.consensus_commit.async_commit.enabled - Description: Whether or not the commit phase is executed asynchronously.
- Default value:
false
async_rollback.enabledβ
- Field:
scalar.db.consensus_commit.async_rollback.enabled - Description: Whether or not the rollback phase is executed asynchronously.
- Default value: The value of
scalar.db.consensus_commit.async_commit.enabled
parallel_implicit_pre_read.enabledβ
- Field:
scalar.db.consensus_commit.parallel_implicit_pre_read.enabled - Description: Whether or not implicit pre-read is executed in parallel.
- Default value:
true
one_phase_commit.enabledβ
- Field:
scalar.db.consensus_commit.one_phase_commit.enabled - Description: Whether or not the one-phase commit optimization is enabled.
- Default value:
false
coordinator.write_omission_on_read_only.enabledβ
- Field:
scalar.db.consensus_commit.coordinator.write_omission_on_read_only.enabled - Description: Whether or not the Coordinator write omission optimization is enabled for read-only transactions. This optimization is useful for read-only transactions that do not modify any data, as it avoids unnecessary writes to the Coordinator tables.
- Default value:
true
coordinator.group_commit.enabledβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.enabled - Description: Whether or not committing the transaction state is executed in batch mode. This feature can't be used with a two-phase commit interface.
- Default value:
false
coordinator.group_commit.slot_capacityβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.slot_capacity - Description: Maximum number of slots in a group for the group commit feature. A large value improves the efficiency of group commit, but may also increase latency and the likelihood of transaction conflicts.1
- Default value:
20
coordinator.group_commit.group_size_fix_timeout_millisβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.group_size_fix_timeout_millis - Description: Timeout to fix the size of slots in a group. A large value improves the efficiency of group commit, but may also increase latency and the likelihood of transaction conflicts.1
- Default value:
40
coordinator.group_commit.delayed_slot_move_timeout_millisβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.delayed_slot_move_timeout_millis - Description: Timeout to move delayed slots from a group to another isolated group to prevent the original group from being affected by delayed transactions. A large value improves the efficiency of group commit, but may also increase the latency and the likelihood of transaction conflicts.1
- Default value:
1200
coordinator.group_commit.old_group_abort_timeout_millisβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.old_group_abort_timeout_millis - Description: Timeout to abort an old ongoing group. A small value reduces resource consumption through aggressive aborts, but may also increase the likelihood of unnecessary aborts for long-running transactions.
- Default value:
60000
coordinator.group_commit.timeout_check_interval_millisβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.timeout_check_interval_millis - Description: Interval for checking the group commitβrelated timeouts.
- Default value:
20
coordinator.group_commit.metrics_monitor_log_enabledβ
- Field:
scalar.db.consensus_commit.coordinator.group_commit.metrics_monitor_log_enabled - Description: Whether or not the metrics of the group commit are logged periodically.
- Default value:
false
Storage-related configurationsβ
ScalarDB has a storage (database) abstraction layer that supports multiple storage implementations. You can specify the storage implementation by using the scalar.db.storage property.
For details about using multiple storages, see Multi-storage configurations.
Select a database to see the configurations available for each storage.
- JDBC databases
- DynamoDB
- Cosmos DB for NoSQL
- Cassandra
- S3
- Blob Storage
- Cloud Storage
The following configurations are available for JDBC databases.
storage
- Field:
scalar.db.storage - Description:
jdbcmust be specified.
contact_points
- Field:
scalar.db.contact_points - Description: JDBC connection URL.
- Default value: empty
username
- Field:
scalar.db.username - Description: Username to access the database.
- Default value: empty
password
- Field:
scalar.db.password - Description: Password to access the database.
- Default value: empty
The following properties have been removed and will be ignored if set. If these properties are still in your configuration, please remove them to avoid warning messages.
scalar.db.jdbc.connection_pool.max_idlescalar.db.jdbc.table_metadata.connection_pool.max_idlescalar.db.jdbc.admin.connection_pool.max_idlescalar.db.jdbc.prepared_statements_pool.enabledscalar.db.jdbc.prepared_statements_pool.max_open
jdbc.connection_pool.min_idle
- Field:
scalar.db.jdbc.connection_pool.min_idle - Description: Minimum number of idle connections in the connection pool.
- Default value:
20
jdbc.connection_pool.max_total
- Field:
scalar.db.jdbc.connection_pool.max_total - Description: Maximum total number of idle and active connections in the connection pool.
- Default value:
200
jdbc.connection_pool.connection_timeout_millis
- Field:
scalar.db.jdbc.connection_pool.connection_timeout_millis - Description: Maximum time in milliseconds to wait for a connection from the pool.
- Default value:
30000
jdbc.connection_pool.idle_timeout_millis
- Field:
scalar.db.jdbc.connection_pool.idle_timeout_millis - Description: Maximum time in milliseconds that a connection is allowed to sit idle in the pool. This setting only applies when
min_idleis less thanmax_total. A value of0means idle connections are never removed. - Default value:
600000
jdbc.connection_pool.max_lifetime_millis
- Field:
scalar.db.jdbc.connection_pool.max_lifetime_millis - Description: Maximum lifetime in milliseconds of a connection in the pool. Connections that exceed this lifetime will be retired. This value should be set to a few seconds shorter than any database or infrastructure-imposed connection timeout. A value of
0means no maximum lifetime. - Default value:
1800000
jdbc.connection_pool.keepalive_time_millis
- Field:
scalar.db.jdbc.connection_pool.keepalive_time_millis - Description: Interval in milliseconds at which the pool will attempt to keep connections alive to prevent them from being timed out by the database or network infrastructure. This value must be less than
max_lifetime_millis. A value of0disables keepalive. - Default value:
0
jdbc.isolation_level
- Field:
scalar.db.jdbc.isolation_level - Description: Isolation level for JDBC.
READ_COMMITTED,REPEATABLE_READ, orSERIALIZABLEcan be specified. - Default value: Underlying-database specific
jdbc.table_metadata.connection_pool.min_idle
- Field:
scalar.db.jdbc.table_metadata.connection_pool.min_idle - Description: Minimum number of idle connections in the connection pool for the table metadata.
- Default value:
5
jdbc.table_metadata.connection_pool.max_total
- Field:
scalar.db.jdbc.table_metadata.connection_pool.max_total - Description: Maximum total number of idle and active connections in the connection pool for the table metadata.
- Default value:
25
jdbc.table_metadata.connection_pool.connection_timeout_millis
- Field:
scalar.db.jdbc.table_metadata.connection_pool.connection_timeout_millis - Description: Same as
jdbc.connection_pool.connection_timeout_millis, but for the table metadata connection pool. - Default value:
30000
jdbc.table_metadata.connection_pool.idle_timeout_millis
- Field:
scalar.db.jdbc.table_metadata.connection_pool.idle_timeout_millis - Description: Same as
jdbc.connection_pool.idle_timeout_millis, but for the table metadata connection pool. - Default value:
600000
jdbc.table_metadata.connection_pool.max_lifetime_millis
- Field:
scalar.db.jdbc.table_metadata.connection_pool.max_lifetime_millis - Description: Same as
jdbc.connection_pool.max_lifetime_millis, but for the table metadata connection pool. - Default value:
1800000
jdbc.table_metadata.connection_pool.keepalive_time_millis
- Field:
scalar.db.jdbc.table_metadata.connection_pool.keepalive_time_millis - Description: Same as
jdbc.connection_pool.keepalive_time_millis, but for the table metadata connection pool. - Default value:
0
jdbc.admin.connection_pool.min_idle
- Field:
scalar.db.jdbc.admin.connection_pool.min_idle - Description: Minimum number of idle connections in the connection pool for admin.
- Default value:
5
jdbc.admin.connection_pool.max_total
- Field:
scalar.db.jdbc.admin.connection_pool.max_total - Description: Maximum total number of idle and active connections in the connection pool for admin.
- Default value:
25
jdbc.admin.connection_pool.connection_timeout_millis
- Field:
scalar.db.jdbc.admin.connection_pool.connection_timeout_millis - Description: Same as
jdbc.connection_pool.connection_timeout_millis, but for the admin connection pool. - Default value:
30000
jdbc.admin.connection_pool.idle_timeout_millis
- Field:
scalar.db.jdbc.admin.connection_pool.idle_timeout_millis - Description: Same as
jdbc.connection_pool.idle_timeout_millis, but for the admin connection pool. - Default value:
600000
jdbc.admin.connection_pool.max_lifetime_millis
- Field:
scalar.db.jdbc.admin.connection_pool.max_lifetime_millis - Description: Same as
jdbc.connection_pool.max_lifetime_millis, but for the admin connection pool. - Default value:
1800000
jdbc.admin.connection_pool.keepalive_time_millis
- Field:
scalar.db.jdbc.admin.connection_pool.keepalive_time_millis - Description: Same as
jdbc.connection_pool.keepalive_time_millis, but for the admin connection pool. - Default value:
0
jdbc.db2.variable_key_column_size
- Field:
scalar.db.jdbc.db2.variable_key_column_size - Description: Column size for TEXT and BLOB columns in IBM Db2 when they are used as a primary key or secondary key. Minimum 64 bytes.
- Default value:
128
jdbc.db2.time_column.default_date_component
- Field:
scalar.db.jdbc.db2.time_column.default_date_component - Description: Value of the date component used for storing
TIMEdata in IBM Db2. Since the IBM Db2 TIMESTAMP type is used to store ScalarDBTIMEtype data because it provides fractional-second precision, ScalarDB storesTIMEdata with the same date component value for ease of comparison and sorting. - Default value:
1970-01-01
jdbc.spanner.time_column.default_date_component
- Field:
scalar.db.jdbc.spanner.time_column.default_date_component - Description: Value of the date component used for storing
TIMEdata in Spanner. Because Spanner's PostgreSQL dialect has no native TIME type, ScalarDB storesTIMEdata as SpannerTIMESTAMP WITH TIME ZONEdata with a fixed date component to enable comparison and sorting. - Default value:
1970-01-01
SQLite3
If you're using SQLite3 as a JDBC database, you must set scalar.db.contact_points as follows:
scalar.db.contact_points=jdbc:sqlite:<SQLITE_DB_FILE_PATH>?busy_timeout=10000&journal_mode=WAL
Unlike other JDBC databases, SQLite3 doesn't fully support concurrent access. To avoid frequent errors caused internally by SQLITE_BUSY, set a busy_timeout parameter. Also set journal_mode=WAL to enable write-ahead logging (WAL), which lets a reader and a writer run at the same time and reduces lock contention. Keep the busy_timeout parameter set as well because SQLite3 still serializes writers in WAL mode.
YugabyteDB
If you're using YugabyteDB as a JDBC database, you can specify multiple endpoints in scalar.db.contact_points as follows:
scalar.db.contact_points=jdbc:yugabytedb://127.0.0.1:5433\\,127.0.0.2:5433\\,127.0.0.3:5433/?load-balance=true
Multiple endpoints should be separated by escaped commas.
For information on YugabyteDB's smart driver and load balancing, see YugabyteDB smart drivers for YSQL.
AlloyDB
If you are using AlloyDB on Google Cloud as a JDBC database and want to connect with the Java connector, you need to add additional properties in scalar.db.contact_points as follows:
scalar.db.contact_points=jdbc:postgresql:///<DATABASE_NAME>?socketFactory=com.google.cloud.alloydb.SocketFactory&alloydbInstanceName=<INSTANCE_NAME>&alloydbIpType=PUBLIC
Spanner
Authentication to Spanner requires using a Google Cloud service account key in JSON format. Set scalar.db.password to the full content of the service account key file as a single line JSON. The scalar.db.username property is unused for Spanner. ScalarDB also sets the JVM system property ENABLE_CREDENTIALS_PROVIDER=true, which is required by the Spanner JDBC driver to authenticate.
For example:
scalar.db.storage=jdbc
scalar.db.contact_points=jdbc:cloudspanner:/projects/<PROJECT_ID>/instances/<INSTANCE_ID>/databases/<DATABASE_ID>
scalar.db.username=
scalar.db.password=<content-of-service-account-key.json>
Amazon Aurora
If you're using Amazon Aurora as a JDBC database, you can add the jdbc:aws-wrapper: prefix to scalar.db.contact_points to connect through the AWS Advanced JDBC Wrapper. The wrapper discovers the cluster topology and reconnects to the new writer after a failover instead of waiting for DNS to propagate. ScalarDB bundles the wrapper, so you don't need to add any JAR files.
For Aurora PostgreSQL, specify the cluster endpoint as follows:
scalar.db.storage=jdbc
scalar.db.contact_points=jdbc:aws-wrapper:postgresql://<CLUSTER_ENDPOINT>:5432/<DATABASE_NAME>
scalar.db.username=<USERNAME>
scalar.db.password=<PASSWORD>
For Aurora MySQL, specify the cluster endpoint as follows:
scalar.db.storage=jdbc
scalar.db.contact_points=jdbc:aws-wrapper:mysql://<CLUSTER_ENDPOINT>:3306/<DATABASE_NAME>
scalar.db.username=<USERNAME>
scalar.db.password=<PASSWORD>
ScalarDB supports the prefix for Aurora PostgreSQL and Aurora MySQL only. If you use it with any other database, ScalarDB fails to start.
To configure the wrapper, add its parameters to the query string of the connection URL. Aside from the Aurora MySQL parameters described below, ScalarDB sets no defaults of its own, so the wrapper's own defaults apply. For example, to shorten the failover timeout:
scalar.db.contact_points=jdbc:aws-wrapper:postgresql://<CLUSTER_ENDPOINT>:5432/<DATABASE_NAME>?failoverTimeoutMs=60000
For Aurora MySQL, ScalarDB adds permitMysqlScheme=true and wrapperTargetDriverDialect=mariadb-connector-j-3 to the URL automatically, because ScalarDB connects to MySQL through MariaDB Connector/J. If you set either parameter yourself, ScalarDB uses your value.
If a failover happens while commit() is running, ScalarDB throws UnknownTransactionStatusException. Check whether the transaction was applied before you retry it. A failover during a CRUD operation throws CrudException, which you can handle as usual. For details, see How to handle exceptions.
This support does not cover the following:
- IAM database authentication and Secrets Manager integration: The wrapper's plugins for these require additional JAR files that ScalarDB doesn't bundle.
- Read-write splitting: ScalarDB doesn't route read operations to reader instances.
- Configurations other than Aurora: ScalarDB doesn't support non-Aurora RDS deployments, or engines other than PostgreSQL and MySQL, through the wrapper. ScalarDB doesn't check whether the endpoint belongs to an Aurora cluster, so a non-Aurora RDS deployment starts without an error.
The following configurations are available for DynamoDB.
storage
- Field:
scalar.db.storage - Description:
dynamomust be specified.
contact_points
- Field:
scalar.db.contact_points - Description: AWS region with which ScalarDB should communicate (for example,
us-east-1). - Default value: empty
username
- Field:
scalar.db.username - Description: AWS access key used to identify the user interacting with AWS.
- Default value: empty
password
- Field:
scalar.db.password - Description: AWS secret access key used to authenticate the user interacting with AWS.
- Default value: empty
dynamo.endpoint_override
- Field:
scalar.db.dynamo.endpoint_override - Description: Amazon DynamoDB endpoint with which ScalarDB should communicate. This is primarily used for testing with a local instance instead of an AWS service.
- Default value: empty
dynamo.namespace.prefix
- Field:
scalar.db.dynamo.namespace.prefix - Description: Prefix for the user namespaces and metadata namespace names. Since AWS requires having unique tables names in a single AWS region, this is useful if you want to use multiple ScalarDB environments (development, production, etc.) in a single AWS region.
- Default value: empty
The following configurations are available for Cosmos DB for NoSQL.
storage
- Field:
scalar.db.storage - Description:
cosmosmust be specified.
contact_points
- Field:
scalar.db.contact_points - Description: Azure Cosmos DB for NoSQL endpoint with which ScalarDB should communicate.
- Default value: empty
password
- Field:
scalar.db.password - Description: Either a master or read-only key used to perform authentication for accessing Azure Cosmos DB for NoSQL.
- Default value: empty
cosmos.consistency_level
- Field:
scalar.db.cosmos.consistency_level - Description: Consistency level used for Cosmos DB operations.
STRONGorBOUNDED_STALENESScan be specified. - Default value:
STRONG
The following configurations are available for Cassandra.
storage
- Field:
scalar.db.storage - Description:
cassandramust be specified.
contact_points
- Field:
scalar.db.contact_points - Description: Comma-separated contact points.
- Default value: empty
contact_port
- Field:
scalar.db.contact_port - Description: Port number for all the contact points.
- Default value: empty
username
- Field:
scalar.db.username - Description: Username to access the database.
- Default value: empty
password
- Field:
scalar.db.password - Description: Password to access the database.
- Default value: empty
The following configurations are available for S3.
storage
- Field:
scalar.db.storage - Description:
s3must be specified.
contact_points
- Field:
scalar.db.contact_points - Description: '/'-separated region and S3 bucket name (for example,
us-east-1/my-bucket). - Default value: empty
username
- Field:
scalar.db.username - Description: AWS access key.
- Default value: empty
password
- Field:
scalar.db.password - Description: AWS secret access key.
- Default value: empty
s3.multipart_upload_part_size_bytes
- Field:
scalar.db.s3.multipart_upload_part_size_bytes - Description: The part size in bytes for multipart upload.
- Default value: The default value of
minimumPartSizeInBytesin the AWS SDK.
s3.multipart_upload_max_concurrency
- Field:
scalar.db.s3.multipart_upload_max_concurrency - Description: The maximum number of concurrent requests allowed for multipart upload.
- Default value: The default value of
maxConcurrencyin the AWS SDK.
s3.multipart_upload_threshold_size_bytes
- Field:
scalar.db.s3.multipart_upload_threshold_size_bytes - Description: The threshold size in bytes to enable multipart upload. If the object size is greater than or equal to this value, multipart upload is used.
- Default value: The default value of
thresholdInBytesin the AWS SDK.
s3.request_timeout_secs
- Field:
scalar.db.s3.request_timeout_secs - Description: The request timeout in seconds for S3 operations set to
apiCallTimeoutin the AWS SDK. - Default value: empty (no timeout)
The following configurations are available for Blob Storage.
storage
- Field:
scalar.db.storage - Description:
blob-storagemust be specified.
contact_points
- Field:
scalar.db.contact_points - Description: Blob Storage endpoint URL including the container name (for example,
https://<ACCOUNT_NAME>.blob.core.windows.net/my-container). - Default value: empty
username
- Field:
scalar.db.username - Description: Azure Storage account name.
- Default value: empty
password
- Field:
scalar.db.password - Description: Azure Storage account key.
- Default value: empty
blob_storage.parallel_upload_block_size_bytes
- Field:
scalar.db.blob_storage.parallel_upload_block_size_bytes - Description: The block size in bytes for parallel upload.
- Default value: The default value of
setBlockSizeLongin the Azure SDK.
blob_storage.parallel_upload_max_concurrency
- Field:
scalar.db.blob_storage.parallel_upload_max_concurrency - Description: The maximum number of concurrent requests allowed for parallel upload.
- Default value: The default value of
setMaxConcurrencyin the Azure SDK.
blob_storage.parallel_upload_threshold_size_bytes
- Field:
scalar.db.blob_storage.parallel_upload_threshold_size_bytes - Description: The threshold size in bytes to enable parallel upload. If the object size is greater than this value, parallel upload is used.
- Default value: The default value of
setMaxSingleUploadSizeLongin the Azure SDK.
blob_storage.request_timeout_secs
- Field:
scalar.db.blob_storage.request_timeout_secs - Description: The request timeout in seconds for Blob Storage operations.
- Default value: empty (no timeout)
The following configurations are available for Cloud Storage.
storage
- Field:
scalar.db.storage - Description:
cloud-storagemust be specified.
contact_points
- Field:
scalar.db.contact_points - Description: Cloud Storage bucket name.
- Default value: empty
username
- Field:
scalar.db.username - Description: Google Cloud project ID.
- Default value: empty
password
- Field:
scalar.db.password - Description: Full content of the Google Cloud service account key file as a single-line JSON.
- Default value: empty
cloud_storage.upload_chunk_size_bytes
- Field:
scalar.db.cloud_storage.upload_chunk_size_bytes - Description: The chunk size in bytes for upload.
- Default value: The default value of
setChunkSizein the Google Cloud SDK.
Multi-storage configurationsβ
ScalarDB supports using multiple storage implementations simultaneously. For details about using multiple storages, see Multi-Storage Transactions.
storageβ
- Field:
scalar.db.storage - Description:
multi-storagemust be specified.
multi_storage.storagesβ
- Field:
scalar.db.multi_storage.storages - Description: Comma-separated storage names (for example,
cassandra,mysql). These storage names will be used in thescalar.db.multi_storage.namespace_mappingproperty to map namespaces to storages. - Default value: empty
multi_storage.default_storageβ
- Field:
scalar.db.multi_storage.default_storage - Description: Default storage name. This storage will be used for any namespace that doesn't have mapping defined in the
scalar.db.multi_storage.namespace_mappingproperty. - Default value: empty
multi_storage.namespace_mappingβ
- Field:
scalar.db.multi_storage.namespace_mapping - Description: Mapping of namespaces to storages (for example,
user:my_cassandra,coordinator:my_mysql). - Default value: empty
The storage names (<STORAGE_NAME_FOR_NAMESPACE>) are arbitrary values that you need to define. You can use any names that you like as long as they are consistent across the multi-storage configurations.
multi_storage.storages.<STORAGE_NAME_FOR_NAMESPACE>.<PROPERTY_NAME>β
For configuring specific storages, use scalar.db.multi_storage.storages.<STORAGE_NAME_FOR_NAMESPACE>.<PROPERTY_NAME>, with <STORAGE_NAME_FOR_NAMESPACE> being one of the storage names specified in the scalar.db.multi_storage.storages property and <PROPERTY_NAME> being the property name for the specific storage.
For example, if you've defined namespace mapping as scalar.db.multi_storage.namespace_mapping=user:my_cassandra,coordinator:my_mysql, with my_cassandra and my_mysql being the storage names for the user and coordinator namespaces, respectively:
- You can specify the contact points for Cassandra by using
scalar.db.multi_storage.storages.my_cassandra.contact_points. - You can specify the minimum number of idle connections in the connection pool for MySQL by using
scalar.db.multi_storage.storages.my_mysql.jdbc.connection_pool.min_idle.
For details about the properties available for each storage, see Storage-related configurations.
Cross-partition scan configurationsβ
By enabling the cross-partition scan option as described below, the Scan operation can retrieve all records across partitions. In addition, you can specify arbitrary conditions and orderings in the cross-partition Scan operation by enabling cross_partition_scan.filtering and cross_partition_scan.ordering, respectively. Currently, the cross-partition scan with ordering option is available only for JDBC databases. To enable filtering and ordering, scalar.db.cross_partition_scan.enabled must be set to true.
For details on how to use cross-partition scan, see Scan operation.
For non-JDBC databases, we do not recommend enabling cross-partition scan with the SERIALIAZABLE isolation level because transactions could be executed at a lower isolation level (that is, SNAPSHOT). When using non-JDBC databases, use cross-partition scan at your own risk only if consistency does not matter for your transactions.
cross_partition_scan.enabledβ
- Field:
scalar.db.cross_partition_scan.enabled - Description: Enable cross-partition scan.
- Default value:
true
cross_partition_scan.filtering.enabledβ
- Field:
scalar.db.cross_partition_scan.filtering.enabled - Description: Enable filtering in cross-partition scan.
- Default value:
false
cross_partition_scan.ordering.enabledβ
- Field:
scalar.db.cross_partition_scan.ordering.enabled - Description: Enable ordering in cross-partition scan.
- Default value:
false
Scan configurationsβ
You can configure the fetch size for storage scan operations by using the following property.
scan_fetch_sizeβ
- Field:
scalar.db.scan_fetch_size - Description: Specifies the number of records to fetch in a single batch during a storage scan operation. A larger value can improve performance for a large result set by reducing round trips to the storage, but it also increases memory usage. A smaller value uses less memory but may increase latency.
- Default value:
10
GraphQL-related configurationsβ
The configurations for ScalarDB Cluster GraphQL are as follows:
graphql.enabledβ
- Field:
scalar.db.graphql.enabled - Description: Whether ScalarDB Cluster GraphQL is enabled.
- Default value:
false
graphql.portβ
- Field:
scalar.db.graphql.port - Description: Port number of the GraphQL server.
- Default value:
8080
graphql.pathβ
- Field:
scalar.db.graphql.path - Description: Path component of the URL of the GraphQL endpoint.
- Default value:
/graphql
graphql.namespacesβ
- Field:
scalar.db.graphql.namespaces - Description: Comma-separated list of namespaces of tables for which the GraphQL server generates a schema. If not specified, the GraphQL server generates a schema for all tables in all ScalarDB-managed namespaces.
- Default value: empty
graphql.graphiqlβ
- Field:
scalar.db.graphql.graphiql - Description: Whether the GraphQL server serves GraphiQL IDE.
- Default value:
true
graphql.schema_checking_interval_millisβ
- Field:
scalar.db.graphql.schema_checking_interval_millis - Description: Interval in milliseconds at which GraphQL server will rebuild the GraphQL schema if any change is detected in the ScalarDB schema.
- Default value:
30000(30 seconds)
Creating or modifying the ScalarDB schema when the server is runningβ
Since the GraphQL schema is statically built at server startup, if the ScalarDB schema is modified (for example, if a table is added, altered, or deleted), then the corresponding GraphQL schema won't reflect the changes unless it is rebuilt. To address this, the GraphQL server provides two mechanisms: a periodic check and an on-demand check.
Run periodic checksβ
The server periodically checks if changes in the ScalarDB schema occur and rebuilds the corresponding GraphQL schema if necessary. By default, the check occurs every 30 seconds, but the interval can be configured by using the scalar.db.graphql.schema_checking_interval_millis property.
If you don't need to run periodic checks, you can disable it by setting the property value to -1.
Run on-demand checksβ
You can also request the server to check changes in the ScalarDB schema and rebuild the corresponding GraphQL schema if necessary by performing a POST request to the /update-graphql-schema endpoint of the HTTP API.
For example, if the HTTP API is running on localhost:8080 and the scalar.db.graphql.path property is set to /graphql, this endpoint can be called by running the following command:
curl -X POST http://localhost:8080/graphql/update-graphql-schema
SQL-related configurationsβ
The configurations for ScalarDB Cluster SQL are as follows:
sql.enabledβ
- Field:
scalar.db.sql.enabled - Description: Whether ScalarDB Cluster SQL is enabled.
- Default value:
false
sql.statement_cache.enabledβ
- Field:
scalar.db.sql.statement_cache.enabled - Description: Enable the statement cache.
- Default value:
false
sql.statement_cache.sizeβ
- Field:
scalar.db.sql.statement_cache.size - Description: Maximum number of cached statements.
- Default value:
100
sql.default_transaction_modeβ
- Field:
scalar.db.sql.default_transaction_mode - Description: Default transaction mode.
TRANSACTIONorTWO_PHASE_COMMIT_TRANSACTIONcan be set. - Default value:
TRANSACTION
sql.default_namespace_nameβ
- Field:
scalar.db.sql.default_namespace_name - Description: Default namespace name. If you don't specify a namespace name in your SQL statement, this value is used.
- Default value: empty
Authentication and authorization configurationsβ
The following shows the authentication and authorization configurations for ScalarDB Cluster.
auth.enabledβ
- Field:
scalar.db.cluster.auth.enabled - Description: Whether authentication and authorization are enabled.
- Default value:
false
auth.cache_expiration_time_millisβ
- Field:
scalar.db.cluster.auth.cache_expiration_time_millis - Description: Cache expiration time for authentication and authorization information in milliseconds. Each cluster node caches this information separately, so if you update authentication and authorization information, for example, by revoking a privilege or dropping a user, you might need to wait until this expiration time is reached for the change to be applied on all cluster nodes.
- Default value:
60000(1 minute)
auth.auth_token_expiration_time_minutesβ
- Field:
scalar.db.cluster.auth.auth_token_expiration_time_minutes - Description: Authentication and authorization token expiration time in minutes.
- Default value:
1440(1 day)
auth.auth_token_gc_thread_interval_minutesβ
- Field:
scalar.db.cluster.auth.auth_token_gc_thread_interval_minutes - Description: Authentication and authorization token garbage collection (GC) thread interval in minutes.
- Default value:
360(6 hours)
auth.pepperβ
- Field:
scalar.db.cluster.auth.pepper - Description: A secret value added to a password before hashing. If not specified, the password is hashed without pepper.
- Default value: empty
OIDC configurationsβ
The following configurations are available for the OIDC integration in ScalarDB Cluster. For details about the OIDC integration, see Control User Access via OIDC-Based JWT Access Tokens.
auth.oidc.trusted_issuersβ
- Field:
scalar.db.cluster.auth.oidc.trusted_issuers - Description: The trusted OIDC issuer URL. ScalarDB Cluster rejects tokens whose
issclaim does not exactly match this value. This property must be specified when using the OIDC integration. Currently, only a single issuer URL is supported. For example,http://localhost:8080/realms/my-realmfor Keycloak. - Default value: empty
auth.oidc.audience.nameβ
- Field:
scalar.db.cluster.auth.oidc.audience.name - Description: The expected value in the JWT
audclaim. ScalarDB Cluster rejects tokens whoseauddoes not contain this value. - Default value:
scalardb
auth.oidc.username.claim_nameβ
- Field:
scalar.db.cluster.auth.oidc.username.claim_name - Description: The JWT claim name used to extract the ScalarDB username. This property must be specified when using the OIDC integration.
- Default value: empty
auth.oidc.jwt.access_token.require_at_jwt_typβ
- Field:
scalar.db.cluster.auth.oidc.jwt.access_token.require_at_jwt_typ - Description: Whether to require the JWT
typheader to beat+jwtorapplication/at+jwtper RFC 9068. Set tofalseonly for development purposes. - Default value:
true
auth.oidc.jwt.jwks.url_cache.expiration_secondsβ
- Field:
scalar.db.cluster.auth.oidc.jwt.jwks.url_cache.expiration_seconds - Description: The cache expiration time, in seconds, for the JWKS URL obtained from the OIDC provider configuration.
- Default value:
86400(24 hours)
auth.oidc.jwt.jwks.content_cache.expiration_secondsβ
- Field:
scalar.db.cluster.auth.oidc.jwt.jwks.content_cache.expiration_seconds - Description: The cache expiration time, in seconds, for the fetched JWKS content.
- Default value:
86400(24 hours)
auth.oidc.jwt.max_clock_skew_secondsβ
- Field:
scalar.db.cluster.auth.oidc.jwt.max_clock_skew_seconds - Description: The maximum clock skew tolerance, in seconds, for JWT expiration validation.
- Default value:
10
Data-at-rest encryption configurationsβ
The following configurations are available for encrypting data at rest in ScalarDB Cluster.
For details about encrypting data at rest, see Encrypt Data at Rest.
cluster.encryption.enabledβ
- Field:
scalar.db.cluster.encryption.enabled - Description: Whether ScalarDB encrypts data at rest.
- Default value:
false
cluster.encryption.typeβ
- Field:
scalar.db.cluster.encryption.type - Description: Encryption implementation type. Either
vault(for HashiCorp Vault encryption) orself(for self-encryption) can be specified. - Default value: empty
cluster.encryption.delete_data_encryption_key_on_drop_table.enabledβ
- Field:
scalar.db.cluster.encryption.delete_data_encryption_key_on_drop_table.enabled - Description: Whether to delete the data encryption key (DEK) when dropping a table.
- Default value:
false
HashiCorp Vault encryption configurationsβ
The following configurations are available when using HashiCorp Vault encryption (scalar.db.cluster.encryption.type=vault).
cluster.encryption.vault.key_typeβ
- Field:
scalar.db.cluster.encryption.vault.key_type - Description: The key type. Currently,
aes128-gcm96,aes256-gcm96, andchacha20-poly1305are supported. For details about the key types, see Key types. - Default value:
aes128-gcm96
cluster.encryption.vault.associated_data_requiredβ
- Field:
scalar.db.cluster.encryption.vault.associated_data_required - Description: Whether associated data is required for AEAD encryption.
- Default value:
false
cluster.encryption.vault.addressβ
- Field:
scalar.db.cluster.encryption.vault.address - Description: The address of the HashiCorp Vault server.
- Default value: empty
cluster.encryption.vault.tokenβ
- Field:
scalar.db.cluster.encryption.vault.token - Description: The token to authenticate with HashiCorp Vault.
- Default value: empty
cluster.encryption.vault.namespaceβ
- Field:
scalar.db.cluster.encryption.vault.namespace - Description: The namespace of the HashiCorp Vault. This configuration is optional.
- Default value: empty
cluster.encryption.vault.transit_secrets_engine_pathβ
- Field:
scalar.db.cluster.encryption.vault.transit_secrets_engine_path - Description: The path of the transit secrets engine.
- Default value:
transit
cluster.encryption.vault.column_batch_sizeβ
- Field:
scalar.db.cluster.encryption.vault.column_batch_size - Description: The number of columns to be included in a single request to the HashiCorp Vault server.
- Default value:
64
Self-encryption configurationsβ
The following configurations are available when using self-encryption (scalar.db.cluster.encryption.type=self).
cluster.encryption.self.key_typeβ
- Field:
scalar.db.cluster.encryption.self.key_type - Description: The key type. Currently,
AES128_GCM,AES256_GCM,AES128_EAX,AES256_EAX,AES128_CTR_HMAC_SHA256,AES256_CTR_HMAC_SHA256,CHACHA20_POLY1305, andXCHACHA20_POLY1305are supported. For details about the key types, see Choose a key type. - Default value:
AES128_GCM
cluster.encryption.self.associated_data_requiredβ
- Field:
scalar.db.cluster.encryption.self.associated_data_required - Description: Whether associated data is required for AEAD encryption.
- Default value:
false
cluster.encryption.self.kubernetes.secret.namespace_nameβ
- Field:
scalar.db.cluster.encryption.self.kubernetes.secret.namespace_name - Description: The namespace name of the Kubernetes Secrets.
- Default value:
default
cluster.encryption.self.data_encryption_key_cache_expiration_timeβ
- Field:
scalar.db.cluster.encryption.self.data_encryption_key_cache_expiration_time - Description: The expiration time of the DEK cache in milliseconds.
- Default value:
60000(60 seconds)
Wire encryption configurationsβ
The following configurations are available for encrypting wire communications in ScalarDB Cluster.
For details about encrypting wire communications, see Encrypt Wire Communications.
cluster.tls.enabledβ
- Field:
scalar.db.cluster.tls.enabled - Description: Whether wire encryption (TLS) is enabled.
- Default value:
false
cluster.tls.ca_root_cert_pemβ
- Field:
scalar.db.cluster.tls.ca_root_cert_pem - Description: The custom CA root certificate (PEM data) for TLS communication.
- Default value: empty
cluster.tls.ca_root_cert_pathβ
- Field:
scalar.db.cluster.tls.ca_root_cert_path - Description: The custom CA root certificate (file path) for TLS communication.
- Default value: empty
cluster.tls.override_authorityβ
- Field:
scalar.db.cluster.tls.override_authority - Description: The custom authority for TLS communication. This doesn't change what host is actually connected. This is intended for testing, but may safely be used outside of tests as an alternative to DNS overrides. For example, you can specify the hostname presented in the certificate chain file that you set for
scalar.db.cluster.node.tls.cert_chain_path. - Default value: empty
cluster.node.tls.cert_chain_pathβ
- Field:
scalar.db.cluster.node.tls.cert_chain_path - Description: The certificate chain file used for TLS communication.
- Default value: empty
cluster.node.tls.private_key_pathβ
- Field:
scalar.db.cluster.node.tls.private_key_path - Description: The private key file used for TLS communication.
- Default value: empty
Embedding-related configurationsβ
The following embedding-related configurations are available for ScalarDB Cluster.
embedding.enabledβ
- Field:
scalar.db.embedding.enabled - Description: Whether the embedding feature is enabled.
- Default value:
false
embedding.storesβ
- Field:
scalar.db.embedding.stores - Description: Comma-separated list of embedding store names that you want to use.
- Default value: empty
embedding.modelsβ
- Field:
scalar.db.embedding.models - Description: Comma-separated list of embedding model names that you want to use.
- Default value: empty
Embedding store configurationsβ
For each embedding store name specified in scalar.db.embedding.stores, you can configure the embedding store by using scalar.db.embedding.stores.<STORE_NAME>. as a prefix.
- In-memory
- OpenSearch
- Azure Cosmos DB for NoSQL
- Azure AI Search
- pgvector
The in-memory embedding store is a basic in-memory implementation. This embedding store is useful for fast prototyping and simple use cases.
type
- Field:
scalar.db.embedding.stores.<STORE_NAME>.type - Description: Must be set to
in-memory. - Default value: N/A
The OpenSearch embedding store uses OpenSearch as the backend.
type
- Field:
scalar.db.embedding.stores.<STORE_NAME>.type - Description: Must be set to
opensearch. - Default value: N/A
server_url
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.server_url - Description: OpenSearch server URL.
- Default value: empty
index_name
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.index_name - Description: OpenSearch index name.
- Default value: empty
api_key (optional)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.api_key - Description: OpenSearch API key for authentication.
- Default value: empty
user_name (optional)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.user_name - Description: OpenSearch username for authentication.
- Default value: empty
password (optional)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.password - Description: OpenSearch password for authentication.
- Default value: empty
service_name (AWS only)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.service_name - Description: AWS signing service name. Either
es(Amazon OpenSearch) oraoss(Amazon OpenSearch Serverless). - Default value: empty
region (AWS only)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.region - Description: AWS region for signing requests.
- Default value: empty
access_key_id (AWS only)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.access_key_id - Description: AWS access key ID.
- Default value: empty
secret_access_key (AWS only)
- Field:
scalar.db.embedding.stores.<STORE_NAME>.opensearch.secret_access_key - Description: AWS secret access key.
- Default value: empty
The Azure Cosmos DB for NoSQL embedding store uses Azure Cosmos DB as the backend.
type
- Field:
scalar.db.embedding.stores.<STORE_NAME>.type - Description: Must be set to
azure-cosmos-nosql. - Default value: N/A
endpoint
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-cosmos-nosql.endpoint - Description: Azure Cosmos DB endpoint URL.
- Default value: empty
key
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-cosmos-nosql.key - Description: Master key or read-only key for authentication.
- Default value: empty
database_name
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-cosmos-nosql.database_name - Description: Azure Cosmos DB database name.
- Default value: empty
container_name
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-cosmos-nosql.container_name - Description: Azure Cosmos DB container name.
- Default value: empty
dimensions
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-cosmos-nosql.dimensions - Description: Dimensions of the embeddings.
- Default value: 1536
The Azure AI Search embedding store uses Azure AI Search as the backend.
type
- Field:
scalar.db.embedding.stores.<STORE_NAME>.type - Description: Must be set to
azure-ai-search. - Default value: N/A
endpoint
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-ai-search.endpoint - Description: Azure AI Search endpoint URL.
- Default value: empty
api_key
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-ai-search.api_key - Description: Azure AI Search API key.
- Default value: empty
index_name
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-ai-search.index_name - Description: Name of the index to be used. If no index is provided, a default index name will be used.
- Default value: empty
dimensions
- Field:
scalar.db.embedding.stores.<STORE_NAME>.azure-ai-search.dimensions - Description: Dimensions of the embeddings.
- Default value: 1536
The pgvector embedding store uses pgvector, a Postgres extension for vector similarity search, as the backend.
type
- Field:
scalar.db.embedding.stores.<STORE_NAME>.type - Description: Must be set to
pgvector. - Default value: N/A
host
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.host - Description: Database host.
- Default value: empty
port
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.port - Description: Database port.
- Default value: 5432
user
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.user - Description: Database user.
- Default value: empty
password
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.password - Description: Database password.
- Default value: empty
database
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.database - Description: Database name.
- Default value: empty
table
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.table - Description: Table name.
- Default value: empty
dimensions
- Field:
scalar.db.embedding.stores.<STORE_NAME>.pgvector.dimensions - Description: Dimensions of the embeddings.
- Default value: 1536
Embedding model configurationsβ
For each embedding model name specified in scalar.db.embedding.models, you can configure the embedding model by using scalar.db.embedding.models.<MODEL_NAME>. as a prefix.
- In-process
- Amazon Bedrock
- Azure OpenAI
- Google Vertex AI
- OpenAI
The in-process embedding model is a local embedding model powered by ONNX runtime and runs in the ScalarDB Cluster process. This embedding model is useful for fast prototyping and simple use cases.
type
- Field:
scalar.db.embedding.models.<MODEL_NAME>.type - Description: Must be set to
in-process. - Default value: N/A
The Amazon Bedrock embedding model uses Amazon Bedrock as the backend.
type
- Field:
scalar.db.embedding.models.<MODEL_NAME>.type - Description: Must be set to
bedrock-titan. - Default value: N/A
region
- Field:
scalar.db.embedding.models.<MODEL_NAME>.bedrock-titan.region - Description: AWS region for signing requests.
- Default value: empty
access_key_id
- Field:
scalar.db.embedding.models.<MODEL_NAME>.bedrock-titan.access_key_id - Description: AWS access key ID.
- Default value: empty
secret_access_key
- Field:
scalar.db.embedding.models.<MODEL_NAME>.bedrock-titan.secret_access_key - Description: AWS secret access key.
- Default value: empty
model
- Field:
scalar.db.embedding.models.<MODEL_NAME>.bedrock-titan.model - Description: Model name. Either
amazon.titan-embed-text-v1oramazon.titan-embed-text-v2:0. - Default value: empty
dimensions
- Field:
scalar.db.embedding.models.<MODEL_NAME>.bedrock-titan.dimensions - Description: Dimensions of the embeddings.
- Default value: empty
The Azure OpenAI embedding model uses Azure OpenAI as the backend.
type
- Field:
scalar.db.embedding.models.<MODEL_NAME>.type - Description: Must be set to
azure-open-ai. - Default value: N/A
endpoint
- Field:
scalar.db.embedding.models.<MODEL_NAME>.azure-open-ai.endpoint - Description: Azure OpenAI endpoint URL.
- Default value: empty
api_key
- Field:
scalar.db.embedding.models.<MODEL_NAME>.azure-open-ai.api_key - Description: Azure OpenAI API key.
- Default value: empty
deployment_name
- Field:
scalar.db.embedding.models.<MODEL_NAME>.azure-open-ai.deployment_name - Description: Deployment name in Azure OpenAI.
- Default value: empty
dimensions
- Field:
scalar.db.embedding.models.<MODEL_NAME>.azure-open-ai.dimensions - Description: Dimensions of the embeddings.
- Default value: empty
The Google Vertex AI embedding model uses Google Vertex AI as the backend.
type
- Field:
scalar.db.embedding.models.<MODEL_NAME>.type - Description: Must be set to
vertex-ai. - Default value: N/A
project
- Field:
scalar.db.embedding.models.<MODEL_NAME>.vertex-ai.project - Description: Google Cloud project ID.
- Default value: empty
location
- Field:
scalar.db.embedding.models.<MODEL_NAME>.vertex-ai.location - Description: Google Cloud location.
- Default value: empty
endpoint
- Field:
scalar.db.embedding.models.<MODEL_NAME>.vertex-ai.endpoint - Description: Endpoint URL.
- Default value: empty
publisher
- Field:
scalar.db.embedding.models.<MODEL_NAME>.vertex-ai.publisher - Description: Publisher name.
- Default value: empty
model_name
- Field:
scalar.db.embedding.models.<MODEL_NAME>.vertex-ai.model_name - Description: Model name.
- Default value: empty
output_dimensionality
- Field:
scalar.db.embedding.models.<MODEL_NAME>.vertex-ai.output_dimensionality - Description: Output dimensionality of the embeddings.
- Default value: empty
The OpenAI embedding model uses OpenAI as the backend.
type
- Field:
scalar.db.embedding.models.<MODEL_NAME>.type - Description: Must be set to
open-ai. - Default value: N/A
api_key
- Field:
scalar.db.embedding.models.<MODEL_NAME>.open-ai.api_key - Description: OpenAI API key.
- Default value: empty
model_name
- Field:
scalar.db.embedding.models.<MODEL_NAME>.open-ai.model_name - Description: Model name.
- Default value: empty
base_url (optional)
- Field:
scalar.db.embedding.models.<MODEL_NAME>.open-ai.base_url - Description: Base URL for the API.
- Default value: empty
organization_id (optional)
- Field:
scalar.db.embedding.models.<MODEL_NAME>.open-ai.organization_id - Description: OpenAI organization ID.
- Default value: empty
dimensions (optional)
- Field:
scalar.db.embedding.models.<MODEL_NAME>.open-ai.dimensions - Description: Dimensions of the embeddings.
- Default value: empty
user (optional)
- Field:
scalar.db.embedding.models.<MODEL_NAME>.open-ai.user - Description: User identifier.
- Default value: empty
Remote replication configurationsβ
The following configurations are available for remote replication in ScalarDB Cluster. Remote replication enables data replication to remote sites for high availability and workload distribution.
For details about using remote replication, see Replicate Data for High Availability.
Base replication configurationsβ
The following configurations apply to the overall remote replication setup in ScalarDB Cluster.
partition_countβ
- Field:
scalar.db.replication.partition_count - Description: Number of partitions for the
transaction_groupstable. The tables in the replication database are partitioned for performance and scalability, and write operations are distributed evenly across partitions. This field must be identical between primary and backup sites. - Default value:
256
Changing the partition count requires restarting ScalarDB Clusters in both sites.
repl_db.namespaceβ
- Field:
scalar.db.replication.repl_db.namespace - Description: Namespace name of replication tables. This field must be identical between primary and backup sites.
- Default value:
replication
record_table_suffixβ
- Field:
scalar.db.replication.record_table_suffix - Description: Suffix for replication record metadata tables.
- Default value:
__records
LogWriter configurations (primary site)β
LogWriter configurations control how write operations are captured and stored in the replication database during transaction commits.
log_writer.enabledβ
- Field:
scalar.db.replication.log_writer.enabled - Description: Enable or disable LogWriter functionality.
- Default value:
false
log_writer.compression_typeβ
- Field:
scalar.db.replication.log_writer.compression_type - Description: Compression type for stored write operations in the replication database. Available values:
NONE,GZIP. - Default value:
GZIP
log_writer.group_commit.retention.time_millisβ
- Field:
scalar.db.replication.log_writer.group_commit.retention.time_millis - Description: Maximum time to wait before committing a transaction group for the replication database.
- Default value:
100(100 milliseconds)
log_writer.group_commit.retention.valuesβ
- Field:
scalar.db.replication.log_writer.group_commit.retention.values - Description: Maximum number of transactions to batch together for the replication database.
- Default value:
32
log_writer.group_commit.timeout_check_interval_millisβ
- Field:
scalar.db.replication.log_writer.group_commit.timeout_check_interval_millis - Description: Interval for checking group commit timeouts for the replication database.
- Default value:
20(20 milliseconds)
log_writer.group_commit.max_thread_pool_sizeβ
- Field:
scalar.db.replication.log_writer.group_commit.max_thread_pool_size - Description: Maximum thread pool size for group commit processing for the replication database.
- Default value:
4096
LogApplier configurations (backup site)β
LogApplier configurations control how replication data is processed and applied to the backup site tables.