diff --git a/docs/_develop-run-analytical-queries-overview.mdx b/docs/_develop-run-analytical-queries-overview.mdx index dfcf5fdb..e2be771f 100644 --- a/docs/_develop-run-analytical-queries-overview.mdx +++ b/docs/_develop-run-analytical-queries-overview.mdx @@ -2,7 +2,6 @@ tags: - Community - Enterprise Option - - Public Preview displayed_sidebar: docsEnglish --- diff --git a/docs/api-guide.mdx b/docs/api-guide.mdx index 242455f1..f79ffe58 100644 --- a/docs/api-guide.mdx +++ b/docs/api-guide.mdx @@ -313,7 +313,7 @@ You can import an existing table to ScalarDB as follows: ```java // Import the table "ns.tbl". If the table is already managed by ScalarDB, the target table does not // exist, or the table does not meet the requirements of the ScalarDB table, an exception will be thrown. -admin.importTable("ns", "tbl", options); +admin.importTable("ns", "tbl", options, overrideColumnsType); ``` :::warning @@ -572,6 +572,18 @@ ByteBuffer blobValue = result.getBlob(""); // Get the BLOB value of a column as a `byte` array. byte[] blobValueAsBytes = result.getBlobAsBytes(""); + +// Get the DATE value of a column as a `LocalDate`. +LocalDate dateValue = result.getDate(""); + +// Get the TIME value of a column as a `LocalTime`. +LocalTime timeValue = result.getTime(""); + +// Get the TIMESTAMP value of a column as a `LocalDateTime`. +LocalDateTime timestampValue = result.getTimestamp(""); + +// Get the TIMESTAMPTZ value of a column as a `Instant`. +Instant timestampTZValue = result.getTimestampTZ(""); ``` And if you need to check if a value of a column is null, you can use the `isNull("")` method. @@ -581,7 +593,7 @@ And if you need to check if a value of a column is null, you can use the `isNull boolean isNull = result.isNull(""); ``` -For more details, see the `Result` page in the [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) of the version of ScalarDB that you're using. +For more details, see the `Result` page in the [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/index.html) of the version of ScalarDB that you're using. ###### Execute `Get` by using a secondary index diff --git a/docs/configurations.mdx b/docs/configurations.mdx index 0b4488d5..d13c4a25 100644 --- a/docs/configurations.mdx +++ b/docs/configurations.mdx @@ -75,26 +75,26 @@ Select a database to see the configurations available for each storage. The following configurations are available for JDBC databases: - | Name | Description | Default | - |-----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------| - | `scalar.db.storage` | `jdbc` must be specified. | - | - | `scalar.db.contact_points` | JDBC connection URL. | | - | `scalar.db.username` | Username to access the database. | | - | `scalar.db.password` | Password to access the database. | | - | `scalar.db.jdbc.connection_pool.min_idle` | Minimum number of idle connections in the connection pool. | `20` | - | `scalar.db.jdbc.connection_pool.max_idle` | Maximum number of connections that can remain idle in the connection pool. | `50` | - | `scalar.db.jdbc.connection_pool.max_total` | Maximum total number of idle and borrowed connections that can be active at the same time for the connection pool. Use a negative value for no limit. | `100` | - | `scalar.db.jdbc.prepared_statements_pool.enabled` | Setting this property to `true` enables prepared-statement pooling. | `false` | - | `scalar.db.jdbc.prepared_statements_pool.max_open` | Maximum number of open statements that can be allocated from the statement pool at the same time. Use a negative value for no limit. | `-1` | - | `scalar.db.jdbc.isolation_level` | Isolation level for JDBC. `READ_UNCOMMITTED`, `READ_COMMITTED`, `REPEATABLE_READ`, or `SERIALIZABLE` can be specified. | Underlying-database specific | - | `scalar.db.jdbc.table_metadata.schema` | Schema name for the table metadata used for ScalarDB. | `scalardb` | - | `scalar.db.jdbc.table_metadata.connection_pool.min_idle` | Minimum number of idle connections in the connection pool for the table metadata. | `5` | - | `scalar.db.jdbc.table_metadata.connection_pool.max_idle` | Maximum number of connections that can remain idle in the connection pool for the table metadata. | `10` | - | `scalar.db.jdbc.table_metadata.connection_pool.max_total` | Maximum total number of idle and borrowed connections that can be active at the same time for the connection pool for the table metadata. Use a negative value for no limit. | `25` | - | `scalar.db.jdbc.admin.connection_pool.min_idle` | Minimum number of idle connections in the connection pool for admin. | `5` | - | `scalar.db.jdbc.admin.connection_pool.max_idle` | Maximum number of connections that can remain idle in the connection pool for admin. | `10` | - | `scalar.db.jdbc.admin.connection_pool.max_total` | Maximum total number of idle and borrowed connections that can be active at the same time for the connection pool for admin. Use a negative value for no limit. | `25` | - + | Name | Description | Default | + |------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------| + | `scalar.db.storage` | `jdbc` must be specified. | - | + | `scalar.db.contact_points` | JDBC connection URL. | | + | `scalar.db.username` | Username to access the database. | | + | `scalar.db.password` | Password to access the database. | | + | `scalar.db.jdbc.connection_pool.min_idle` | Minimum number of idle connections in the connection pool. | `20` | + | `scalar.db.jdbc.connection_pool.max_idle` | Maximum number of connections that can remain idle in the connection pool. | `50` | + | `scalar.db.jdbc.connection_pool.max_total` | Maximum total number of idle and borrowed connections that can be active at the same time for the connection pool. Use a negative value for no limit. | `100` | + | `scalar.db.jdbc.prepared_statements_pool.enabled` | Setting this property to `true` enables prepared-statement pooling. | `false` | + | `scalar.db.jdbc.prepared_statements_pool.max_open` | Maximum number of open statements that can be allocated from the statement pool at the same time. Use a negative value for no limit. | `-1` | + | `scalar.db.jdbc.isolation_level` | Isolation level for JDBC. `READ_UNCOMMITTED`, `READ_COMMITTED`, `REPEATABLE_READ`, or `SERIALIZABLE` can be specified. | Underlying-database specific | + | `scalar.db.jdbc.table_metadata.schema` | Schema name for the table metadata used for ScalarDB. | `scalardb` | + | `scalar.db.jdbc.table_metadata.connection_pool.min_idle` | Minimum number of idle connections in the connection pool for the table metadata. | `5` | + | `scalar.db.jdbc.table_metadata.connection_pool.max_idle` | Maximum number of connections that can remain idle in the connection pool for the table metadata. | `10` | + | `scalar.db.jdbc.table_metadata.connection_pool.max_total` | Maximum total number of idle and borrowed connections that can be active at the same time for the connection pool for the table metadata. Use a negative value for no limit. | `25` | + | `scalar.db.jdbc.admin.connection_pool.min_idle` | Minimum number of idle connections in the connection pool for admin. | `5` | + | `scalar.db.jdbc.admin.connection_pool.max_idle` | Maximum number of connections that can remain idle in the connection pool for admin. | `10` | + | `scalar.db.jdbc.admin.connection_pool.max_total` | Maximum total number of idle and borrowed connections that can be active at the same time for the connection pool for admin. Use a negative value for no limit. | `25` | + | `scalar.db.jdbc.oracle.time_column.default_date_component` | Value of the date component used for storing `TIME` data in Oracle. Since Oracle has no data type to only store a time without a date component, ScalarDB stores `TIME` data with the same date component value for ease of comparison and sorting. | `1970-01-01` | :::note #### SQLite3 diff --git a/docs/index.mdx b/docs/index.mdx index aeb5499c..fe59265f 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -8,7 +8,7 @@ displayed_sidebar: docsEnglish # ScalarDB -import { CardRowAbout, CardRowQuickstart, CardRowDevelop, CardRowDeploy, CardRowMigrate, CardRowManage, CardRowReference } from '/src/components/Cards/3.14'; +import { CardRowAbout, CardRowQuickstart, CardRowDevelop, CardRowDeploy, CardRowMigrate, CardRowManage, CardRowReference } from '/src/components/Cards/3.15'; ScalarDB is a cross-database HTAP engine. It achieves ACID transactions and real-time analytics across diverse databases to simplify the complexity of managing multiple databases. diff --git a/docs/quickstart-overview.mdx b/docs/quickstart-overview.mdx index f7a71e52..50647c79 100644 --- a/docs/quickstart-overview.mdx +++ b/docs/quickstart-overview.mdx @@ -37,6 +37,5 @@ For an overview of this sub-category, see [ScalarDB Analytics Quickstart Overvie :::note - ScalarDB Analytics with PostgreSQL is available only under the Apache 2 License and doesn't require a commercial license. -- ScalarDB Analytics with Spark is in public preview. ::: diff --git a/docs/quickstart-scalardb-analytics-overview.mdx b/docs/quickstart-scalardb-analytics-overview.mdx index c81e0be3..6b3bc3ec 100644 --- a/docs/quickstart-scalardb-analytics-overview.mdx +++ b/docs/quickstart-scalardb-analytics-overview.mdx @@ -2,7 +2,6 @@ tags: - Community - Enterprise Option - - Public Preview displayed_sidebar: docsEnglish --- diff --git a/docs/releases/release-notes.mdx b/docs/releases/release-notes.mdx index 561a3bb8..be5cbe88 100644 --- a/docs/releases/release-notes.mdx +++ b/docs/releases/release-notes.mdx @@ -6,93 +6,33 @@ tags: displayed_sidebar: docsEnglish --- -# ScalarDB 3.14 Release Notes +# ScalarDB 3.15 Release Notes -This page includes a list of release notes for ScalarDB 3.14. +This page includes a list of release notes for ScalarDB 3.15. -## v3.14.1 +## v3.15.1 -**Release date:** January 23, 2025 +**Release date:** February 20, 2025 ### Summary -This release has several improvements and bug fixes. +This release includes numerous enhancements, improvements, and bug fixes. The [3.15.0 release](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.0) has been discarded, making this the first official release for 3.15. -### Community edition +### Enhancements -#### Improvements +- Introduced operation attributes, providing the capability to include additional key-value information in operations. ([#2333](https://github.com/scalar-labs/scalardb/pull/2333)) +- Add the new time-related data types DATE, TIME, TIMESTAMP, and TIMESTAMPTZ. ([#2468](https://github.com/scalar-labs/scalardb/pull/2468) [#2491](https://github.com/scalar-labs/scalardb/pull/2491)) -- ScalarDB now supports MySQL 8.4 and 8.0; PostgreSQL 17, 16, 15, 14, and 13; Amazon Aurora PostgreSQL 16, 15, 14, and 13; and Amazon Aurora MySQL 3 and 2. (#2302) +### Improvements -#### Bug fixes +- ScalarDB now supports MySQL 8.4, 8.0; PostgreSQL 17, 16, 15, 14, and 13; Amazon Aurora PostgreSQL 16, 15, 14, and 13; Amazon Aurora MySQL 3, and 2. ([#2302](https://github.com/scalar-labs/scalardb/pull/2302)) +- Use the MariaDB Connector/J JDBC driver for any connection URL starting with `jdbc:mariadb` ([#2391](https://github.com/scalar-labs/scalardb/pull/2391)) +- Removed unnecessary loggings in the statement handlers for Cassandra and Cosmos DB. ([#2469](https://github.com/scalar-labs/scalardb/pull/2469)) -- Added validation for primary key columns in the Cosmos DB adapter. The validation ensures that the text values of the primary key columns do not contain illegal characters (`:`, `/`, `\`, `#`, and `?`). (#2292) -- Fixed the behavior of multiple mutations for the same record in a transaction in Consensus Commit. (#2340) -- Fixed the behavior when deleting a non-existing record in the Cosmos adapter. (#2341) -- Fixed bugs in GetBuilder and ScanBuilder. (#2352) +### Bug fixes -### Enterprise edition - -#### Bug fixes - -##### ScalarDB SQL - -- [Spring Data JDBC For ScalarDB] Fixed a bug regarding the `existsById()` API not working. - -## v3.14.0 - -**Release date:** November 22, 2024 - -### Summary - -This release includes a lot of enhancements, improvements, bug fixes, and vulnerability fixes. - -### Community edition - -#### Enhancements - -- Added the encrypted column concept to ScalarDB. ([#1907](https://github.com/scalar-labs/scalardb/pull/1907) [#1975](https://github.com/scalar-labs/scalardb/pull/1975)) -- Added support for MariaDB 11.4 and Oracle 19. ([#2061](https://github.com/scalar-labs/scalardb/pull/2061)) - -#### Improvements - -- Added options for changing the key column size for MySQL and Oracle and used 128 bytes as the default. ([#2245](https://github.com/scalar-labs/scalardb/pull/2245)) -- Changed the default value of the metadata cache expiration time (`scalar.db.metadata.cache_expiration_time_secs`) to 60 seconds. ([#2274](https://github.com/scalar-labs/scalardb/pull/2274)) - -#### Bug fixes - -- Fixed a bug where `NullPointerException` when a table specified in a Get/Scan object is not found in Consensus Commit. ([#2083](https://github.com/scalar-labs/scalardb/pull/2083)) -- Fixed a corner case issue that causes inconsistent Coordinator states when lazy recovery happens before group commit ([#2135](https://github.com/scalar-labs/scalardb/pull/2135)) -- Upgraded the mysql driver to fix security issues. [CVE-2023-22102](https://github.com/advisories/GHSA-m6vm-37g8-gqvh "CVE-2023-22102") ([#2238](https://github.com/scalar-labs/scalardb/pull/2238)) - -### Enterprise edition - -#### Enhancements - -##### ScalarDB Cluster - -- Added support for encrypted columns introduced in [#1907](https://github.com/scalar-labs/scalardb/pull/1907). -- Added support for the group commit feature for the Coordinator table. -- Added support for encryption. -- Added support for `getCurrentUser()` in `DistributedTransactionAdmin` and `Metadata` to retrieve the current logged-in user. - -##### ScalarDB SQL - -- Added support for encrypted columns introduced in [#1907](https://github.com/scalar-labs/scalardb/pull/1907) for the Metadata API. -- Added support for encrypted columns for `CREATE TABLE` and `ALTER TABLE ADD COLUMN` statements. -- Added `SHOW USERS` and `SHOW GRANTS` commands, which list users and privileges for a specified user, respectively. - -#### Improvements - -##### ScalarDB GraphQL - -- With this update, if `scalar.db.graphql.namespaces` is not specified, GraphQL server generates a GraphQL schema for all tables in all ScalarDB-managed namespaces. - -#### Bug fixes - -##### ScalarDB Cluster - -- Fixed a bug where `NullPointerException` occurs when catching an exception without message. -- Upgraded `grpc_health_probe` to fix a security issue. [CVE-2024-34156](https://github.com/advisories/GHSA-crqm-pwhx-j97f "CVE-2024-34156") -- Upgraded `scalar-admin` to fix a security issue. [CVE-2024-25638](https://github.com/advisories/GHSA-cfxw-4h78-h7fw "CVE-2024-25638") -- Upgraded the Protobuf Java library to fix a security issue. [CVE-2024-7254](https://github.com/advisories/GHSA-735f-pc8j-v9w8 "CVE-2024-7254") +- Fixed a bug where the scan with a limit doesn't work correctly when the scan results exceed 1 MB and require multiple requests to DynamoDB. ([#2291](https://github.com/scalar-labs/scalardb/pull/2291)) +- Added validation for primary key columns in the Cosmos DB adapter. The validation ensures that the text values of the primary key columns do not contain illegal characters (`:`, `/`, `\`, `#`, and `?`). ([#2292](https://github.com/scalar-labs/scalardb/pull/2292)) +- Fixed the behavior of multiple mutations for the same record in a transaction in Consensus Commit. ([#2340](https://github.com/scalar-labs/scalardb/pull/2340)) +- Fixed the behavior when deleting a non-existing record in the Cosmos adapter. ([#2341](https://github.com/scalar-labs/scalardb/pull/2341)) +- Fixed bugs in GetBuilder and ScanBuilder. ([#2352](https://github.com/scalar-labs/scalardb/pull/2352)) diff --git a/docs/releases/release-support-policy.mdx b/docs/releases/release-support-policy.mdx index cad426ea..650c1ccd 100644 --- a/docs/releases/release-support-policy.mdx +++ b/docs/releases/release-support-policy.mdx @@ -29,12 +29,19 @@ This page describes Scalar's support policy for major and minor version releases - 3.14 - 2024-11-22 + 3.15 + 2025-02-20 TBD* TBD* Contact us + + 3.14 + 2024-11-22 + 2026-02-20 + 2026-08-18 + Contact us + 3.13 2024-07-08 diff --git a/docs/run-non-transactional-storage-operations-through-library.mdx b/docs/run-non-transactional-storage-operations-through-library.mdx index 87f365eb..59e2f537 100644 --- a/docs/run-non-transactional-storage-operations-through-library.mdx +++ b/docs/run-non-transactional-storage-operations-through-library.mdx @@ -237,7 +237,7 @@ Select your build tool, and follow the instructions to add the build dependency ```gradle dependencies { - implementation 'com.scalar-labs:scalardb:3.14.1' + implementation 'com.scalar-labs:scalardb:3.15.1' } ``` @@ -248,7 +248,7 @@ Select your build tool, and follow the instructions to add the build dependency com.scalar-labs scalardb - 3.14.1 + 3.15.1 ``` @@ -269,4 +269,4 @@ The following limitations apply to non-transactional storage operations: ### Learn more -- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) +- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/index.html) diff --git a/docs/scalardb-analytics-spark/README.mdx b/docs/scalardb-analytics-spark/README.mdx index d12f5987..ca069b62 100644 --- a/docs/scalardb-analytics-spark/README.mdx +++ b/docs/scalardb-analytics-spark/README.mdx @@ -1,7 +1,6 @@ --- tags: - Enterprise Option - - Public Preview displayed_sidebar: docsEnglish --- diff --git a/docs/scalardb-analytics-spark/version-compatibility.mdx b/docs/scalardb-analytics-spark/version-compatibility.mdx index 428d3e6e..48a17c94 100644 --- a/docs/scalardb-analytics-spark/version-compatibility.mdx +++ b/docs/scalardb-analytics-spark/version-compatibility.mdx @@ -1,7 +1,6 @@ --- tags: - Enterprise Option - - Public Preview displayed_sidebar: docsEnglish --- diff --git a/docs/scalardb-cluster/authorize-with-abac.mdx b/docs/scalardb-cluster/authorize-with-abac.mdx new file mode 100644 index 00000000..f84af545 --- /dev/null +++ b/docs/scalardb-cluster/authorize-with-abac.mdx @@ -0,0 +1,25 @@ +--- +tags: + - Enterprise Premium Option + - Private Preview +displayed_sidebar: docsEnglish +--- + +# Control User Access in a Fine-Grained Manner + +ScalarDB Cluster can authorize users in a fine-grained manner with a mechanism called attributed-based access control (ABAC). This page explains what ABAC is and why it is beneficial to users. + +## What is ABAC? + +ABAC is a fine-grained access control mechanism in ScalarDB Cluster, allowing for record-level access control instead of just table-level access control, done through [simple authorization](./scalardb-auth-with-sql.mdx). With ABAC, a user can access a particular record only if the user's attributes and the record's attributes match. For example, you can restrict access to some highly confidential records to only users with the required privileges. This mechanism is also useful when multiple applications share the same table but need to access different segments based on their respective privileges. + +## Why use ABAC? + +Enterprise databases often provide row-level security or similar alternatives to allow for controlling access to rows in a database table. However, if a system comprises several databases, you need to configure each database one by one in the same way. If different kinds of databases are used, you have to configure each database by understanding the differences in the capabilities of each database. Such configuration causes too much burden and is error-prone. With ABAC, you can just configure it once, even though you manage several databases under ScalarDB. + +Row-level security features in most databases often require you to implement matching logic through functions like stored procedures. This can sometimes lead to writing lots of code to achieve the desired logic, which can become burdensome. In contrast, ABAC allows you to configure matching logic by using attributes known as tags. With ABAC, you only need to define these tags and assign them to users and records, eliminating the need for coding. Tags consist of several components that enable you to specify matching logic in a flexible and straightforward manner. + +## Additional details + +The ABAC feature is currently in Private Preview. For more details, please [contact us](https://www.scalar-labs.com/contact) or wait for this feature to become publicly available in a future version. + diff --git a/docs/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx b/docs/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx index 32edf384..c7059e0b 100644 --- a/docs/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx +++ b/docs/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx @@ -18,7 +18,7 @@ To add a dependency on the ScalarDB Cluster Java Client SDK by using Gradle, use ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -28,7 +28,7 @@ To add a dependency by using Maven, use the following: com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -121,11 +121,11 @@ scalar.db.contact_points=direct-kubernetes:ns/scalardb-cluster To load a schema via ScalarDB Cluster, you need to use the dedicated Schema Loader for ScalarDB Cluster (Schema Loader for Cluster). Using the Schema Loader for Cluster is basically the same as using the [ScalarDB Schema Loader](../schema-loader.mdx) except the name of the JAR file is different. -You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). +You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can run Schema Loader for Cluster with the following command: ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config -f --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config -f --coordinator ``` ## ScalarDB Cluster SQL @@ -165,8 +165,8 @@ To add the dependencies on the ScalarDB Cluster JDBC driver by using Gradle, use ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql-jdbc:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql-jdbc:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -177,12 +177,12 @@ To add the dependencies by using Maven, use the following: com.scalar-labs scalardb-sql-jdbc - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -200,8 +200,8 @@ To add the dependencies by using Gradle, use the following: ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql-spring-data:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql-spring-data:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -212,12 +212,12 @@ To add the dependencies by using Maven, use the following: com.scalar-labs scalardb-sql-spring-data - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -262,10 +262,10 @@ For details about how to configure Spring Data JDBC for ScalarDB, see [Configura Like other SQL databases, ScalarDB SQL also provides a CLI tool where you can issue SQL statements interactively in a command-line shell. -You can download the SQL CLI for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). After downloading the JAR file, you can run the SQL CLI with the following command: +You can download the SQL CLI for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can run the SQL CLI with the following command: ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config ``` #### Usage @@ -273,7 +273,7 @@ java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config You can see the CLI usage with the `-h` option as follows: ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar -h +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar -h Usage: scalardb-sql-cli [-hs] -c=PROPERTIES_FILE [-e=COMMAND] [-f=FILE] [-l=LOG_FILE] [-o=] [-p=PASSWORD] [-u=USERNAME] @@ -304,6 +304,6 @@ For details about the ScalarDB Cluster gRPC API, refer to the following: JavaDocs are also available: -* [ScalarDB Cluster Java Client SDK](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-java-client-sdk/3.14.1/index.html) -* [ScalarDB Cluster Common](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-common/3.14.1/index.html) -* [ScalarDB Cluster RPC](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-rpc/3.14.1/index.html) +* [ScalarDB Cluster Java Client SDK](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-java-client-sdk/3.15.1/index.html) +* [ScalarDB Cluster Common](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-common/3.15.1/index.html) +* [ScalarDB Cluster RPC](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-rpc/3.15.1/index.html) diff --git a/docs/scalardb-cluster/encrypt-data-at-rest.mdx b/docs/scalardb-cluster/encrypt-data-at-rest.mdx index 68d39a5f..cbcba6cb 100644 --- a/docs/scalardb-cluster/encrypt-data-at-rest.mdx +++ b/docs/scalardb-cluster/encrypt-data-at-rest.mdx @@ -172,7 +172,7 @@ services: scalardb-cluster-standalone: container_name: "scalardb-cluser-node" - image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.14.1" + image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.15.1" ports: - 60053:60053 - 9080:9080 @@ -230,7 +230,7 @@ scalar.db.sql.cluster_mode.contact_points=indirect:localhost Then, start the SQL CLI by running the following command. ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-cluster-sql-cli.properties ``` To begin, create the Coordinator tables required for ScalarDB transaction execution. diff --git a/docs/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx b/docs/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx index 9674a82b..ab462bd1 100644 --- a/docs/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx +++ b/docs/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx @@ -106,11 +106,11 @@ For details about the client modes, see [Developer Guide for ScalarDB Cluster wi To load a schema via ScalarDB Cluster, you need to use the dedicated Schema Loader for ScalarDB Cluster (Schema Loader for Cluster). Using the Schema Loader for Cluster is basically the same as using the [Schema Loader for ScalarDB](../schema-loader.mdx) except the name of the JAR file is different. -You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). +You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can run the Schema Loader for Cluster with the following command: ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` ## Step 4. Run operations from GraphiQL @@ -187,7 +187,7 @@ You should get the following result in the right pane: ### Mappings between GraphQL API and ScalarDB Java API The automatically generated GraphQL schema defines queries, mutations, and object types for input/output to allow you to run CRUD operations for all the tables in the target namespaces. -These operations are designed to match the ScalarDB APIs defined in the [`DistributedTransaction`](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/com/scalar/db/api/DistributedTransaction.html) interface. +These operations are designed to match the ScalarDB APIs defined in the [`DistributedTransaction`](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/com/scalar/db/api/DistributedTransaction.html) interface. Assuming you have an `account` table in a namespace, the following queries and mutations will be generated: diff --git a/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx b/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx index c4529a7b..5d3fa30f 100644 --- a/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx +++ b/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx @@ -86,10 +86,10 @@ For details about the client modes, see [Developer Guide for ScalarDB Cluster wi ## Step 3. Load a schema -To load a schema, you need to use [the SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli). You can download the SQL CLI from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). After downloading the JAR file, you can use SQL CLI for Cluster by running the following command: +To load a schema, you need to use [the SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli). You can download the SQL CLI from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can use SQL CLI for Cluster by running the following command: ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-sql.properties --file schema.sql +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-sql.properties --file schema.sql ``` ## Step 4. Load the initial data diff --git a/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx b/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx index 0b074674..23e34318 100644 --- a/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx +++ b/docs/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx @@ -86,10 +86,10 @@ For details about the client modes, see [Developer Guide for ScalarDB Cluster wi ## Step 3. Load a schema -To load a schema, you need to use [the SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli). You can download the SQL CLI from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). After downloading the JAR file, you can use SQL CLI for Cluster by running the following command: +To load a schema, you need to use [the SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli). You can download the SQL CLI from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can use SQL CLI for Cluster by running the following command: ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-sql.properties --file schema.sql +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-sql.properties --file schema.sql ``` ## Step 4. Modify `application.properties` diff --git a/docs/scalardb-cluster/getting-started-with-scalardb-cluster.mdx b/docs/scalardb-cluster/getting-started-with-scalardb-cluster.mdx index 7598863b..8caecb4d 100644 --- a/docs/scalardb-cluster/getting-started-with-scalardb-cluster.mdx +++ b/docs/scalardb-cluster/getting-started-with-scalardb-cluster.mdx @@ -120,7 +120,7 @@ To use ScalarDB Cluster, open `build.gradle` in your preferred text editor. Then dependencies { ... - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -166,12 +166,12 @@ For details about the client modes, see [Developer Guide for ScalarDB Cluster wi The database schema (the method in which the data will be organized) for the sample application has already been defined in [`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-sample/schema.json). -To apply the schema, go to [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) and download the ScalarDB Cluster Schema Loader to the `scalardb-samples/scalardb-sample` folder. +To apply the schema, go to [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1) and download the ScalarDB Cluster Schema Loader to the `scalardb-samples/scalardb-sample` folder. Then, run the following command: ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` #### Schema details diff --git a/docs/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx b/docs/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx index c3981818..bf089c4b 100644 --- a/docs/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx +++ b/docs/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx @@ -73,10 +73,10 @@ For details about the client modes, see [Developer Guide for ScalarDB Cluster wi ## Step 3. Load a schema -To load a schema via ScalarDB Cluster, you need to use the dedicated Schema Loader for ScalarDB Cluster (Schema Loader for Cluster). Using the Schema Loader for Cluster is basically the same as using the [Schema Loader for ScalarDB](../schema-loader.mdx) except the name of the JAR file is different. You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). After downloading the JAR file, you can run the Schema Loader for Cluster with the following command: +To load a schema via ScalarDB Cluster, you need to use the dedicated Schema Loader for ScalarDB Cluster (Schema Loader for Cluster). Using the Schema Loader for Cluster is basically the same as using the [Schema Loader for ScalarDB](../schema-loader.mdx) except the name of the JAR file is different. You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can run the Schema Loader for Cluster with the following command: ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` ## Step 4. Set up a Go environment diff --git a/docs/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx b/docs/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx index 7f1e5488..14e9b0e5 100644 --- a/docs/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx +++ b/docs/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx @@ -73,10 +73,10 @@ For details about the client modes, see [Developer Guide for ScalarDB Cluster wi ## Step 3. Load a schema -To load a schema via ScalarDB Cluster, you need to use the dedicated Schema Loader for ScalarDB Cluster (Schema Loader for Cluster). Using the Schema Loader for Cluster is basically the same as using the [Schema Loader for ScalarDB](../schema-loader.mdx) except the name of the JAR file is different. You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1). After downloading the JAR file, you can run the Schema Loader for Cluster with the following command: +To load a schema via ScalarDB Cluster, you need to use the dedicated Schema Loader for ScalarDB Cluster (Schema Loader for Cluster). Using the Schema Loader for Cluster is basically the same as using the [Schema Loader for ScalarDB](../schema-loader.mdx) except the name of the JAR file is different. You can download the Schema Loader for Cluster from [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1). After downloading the JAR file, you can run the Schema Loader for Cluster with the following command: ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` ## Step 4. Set up a Python environment diff --git a/docs/scalardb-cluster/getting-started-with-vector-search.mdx b/docs/scalardb-cluster/getting-started-with-vector-search.mdx new file mode 100644 index 00000000..97871551 --- /dev/null +++ b/docs/scalardb-cluster/getting-started-with-vector-search.mdx @@ -0,0 +1,41 @@ +--- +tags: + - Enterprise Premium + - Private Preview +displayed_sidebar: docsEnglish +--- + +# Getting Started with ScalarDB Cluster for Vector Search + +ScalarDB Cluster provides a vector store abstraction to help applications interact with vector stores (embedding stores) in a unified way. This page explains what the feature is and why it is beneficial to users. + +## What is the vector store abstraction? + +ScalarDB Cluster provides an abstraction for various vector stores, similar to how it abstracts different types of databases, including relational databases, NoSQL databases, and NewSQL databases. With this vector store abstraction, you can develop applications that interact with vector stores in a unified manner, making your applications independent of specific vector store implementations and ensuring their portability. Additionally, since the integration of vector stores is built into ScalarDB Cluster, your applications can take advantage of its scalability. + +The current implementation of the vector store abstraction leverages [LangChain4j](https://docs.langchain4j.dev/) and supports the following vector stores and embedding models. + +Vector stores: +- In-memory +- OpenSearch +- Azure Cosmos DB NoSQL +- Azure AI Search +- pgvector + +Embedding models: +- In-process +- Amazon Bedrock +- Azure OpenAI +- Google Vertex AI +- OpenAI + +## Why use the vector store abstraction? + +In the era of generative AI, one of the challenges organizations face when deploying large language models (LLMs) is enabling these models to understand their enterprise data. Retrieval-augmented generation (RAG) is a key technique used to enhance LLMs with specific enterprise knowledge. For example, to ensure that chatbots powered by LLMs provide accurate and relevant responses, companies use RAG to integrate domain-specific information from user manuals and support documents. + +RAG relies on vector stores, which are typically created by extracting data from databases, converting that data into vectors, and then loading those vectors. By using vector store and database abstraction in ScalarDB Cluster, you can implement the entire process seamlessly. This approach significantly simplifies the workflow and code, eliminating the need to write complex applications that depend on specific vector stores and databases. + +## Additional details + +The vector search feature is currently in Private Preview. For more details, please [contact us](https://www.scalar-labs.com/contact) or wait for this feature to become publicly available in a future version. + diff --git a/docs/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx b/docs/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx index ed6daa90..2d810d83 100644 --- a/docs/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx +++ b/docs/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx @@ -271,7 +271,7 @@ Select your build tool, and follow the instructions to add the build dependency ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -282,7 +282,7 @@ Select your build tool, and follow the instructions to add the build dependency com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -307,5 +307,5 @@ The following limitations apply to non-transactional storage operations: ### Learn more -- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) +- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/index.html) - [Developer Guide for ScalarDB Cluster with the Java API](developer-guide-for-scalardb-cluster-with-java-api.mdx) diff --git a/docs/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx b/docs/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx index 3598f394..09225b5d 100644 --- a/docs/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx +++ b/docs/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx @@ -276,8 +276,8 @@ Also, for a list of supported DDLs, see [ScalarDB SQL Grammar](../scalardb-sql/g ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql-jdbc:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql-jdbc:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -289,12 +289,12 @@ Also, for a list of supported DDLs, see [ScalarDB SQL Grammar](../scalardb-sql/g com.scalar-labs scalardb-sql-jdbc - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -341,8 +341,8 @@ The following limitations apply to non-transactional storage operations: ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -354,12 +354,12 @@ The following limitations apply to non-transactional storage operations: com.scalar-labs scalardb-sql - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -387,7 +387,7 @@ The following limitations apply to non-transactional storage operations:

Learn more

- - [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.14.1/index.html) + - [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.15.1/index.html) diff --git a/docs/scalardb-cluster/scalardb-abac-status-codes.mdx b/docs/scalardb-cluster/scalardb-abac-status-codes.mdx new file mode 100644 index 00000000..35df2526 --- /dev/null +++ b/docs/scalardb-cluster/scalardb-abac-status-codes.mdx @@ -0,0 +1,726 @@ +--- +tags: + - Enterprise Premium Option + - Private Preview +displayed_sidebar: docsEnglish +--- + +# Attribute-Based Access Control Error Codes + +This page provides a list of error codes related to attribute-based access control. + +## Error code classes and descriptions + +| Class | Description | +|:----------------|:----------------------------------------------| +| `DB-ABAC-1xxxx` | Errors for the user error category | +| `DB-ABAC-2xxxx` | Errors for the concurrency error category | +| `DB-ABAC-3xxxx` | Errors for the internal error category | + +## `DB-ABAC-1xxxx` status codes + +The following are status codes and messages for the user error category. + +### `DB-ABAC-10000` + +**Message** + +```markdown +The put operation is not supported. Use insert, upsert, or update instead +``` + +### `DB-ABAC-10001` + +**Message** + +```markdown +The default level must be less than or equal to the level. Default-level short name: %s; Default-level number: %d; Level short name: %s; Level number: %d +``` + +### `DB-ABAC-10002` + +**Message** + +```markdown +The row level must be less than or equal to the level. Row-level short name: %s; Row-level number: %d; Level short name: %s; Level number: %d +``` + +### `DB-ABAC-10003` + +**Message** + +```markdown +The operation does not have the target namespace or table name. Operation: %s +``` + +### `DB-ABAC-10004` + +**Message** + +```markdown +The policy does not exist. Policy: %s +``` + +### `DB-ABAC-10005` + +**Message** + +```markdown +The level does not exist. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-10006` + +**Message** + +```markdown +The compartment does not exist. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-10007` + +**Message** + +```markdown +The group does not exist. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-10008` + +**Message** + +```markdown +The policy already exists. Policy: %s +``` + +### `DB-ABAC-10009` + +**Message** + +```markdown +The data tag column name is already in use in the policy %s. Policy: %s; Data tag column name: %s +``` + +### `DB-ABAC-10010` + +**Message** + +```markdown +The level already exists. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-10011` + +**Message** + +```markdown +The compartment already exists. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-10012` + +**Message** + +```markdown +The group already exists. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-10013` + +**Message** + +```markdown +The parent group does not exist. Policy: %s; Group short name: %s; Parent-group short name: %s +``` + +### `DB-ABAC-10014` + +**Message** + +```markdown +The parent group is the same as the child group. Policy: %s; Group short name: %s; Parent-group short name: %s +``` + +### `DB-ABAC-10015` + +**Message** + +```markdown +The group has child groups. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-10016` + +**Message** + +```markdown +The compartment cannot be a row compartment for read-only access mode. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-10017` + +**Message** + +```markdown +The compartment is already assigned to the user. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-10018` + +**Message** + +```markdown +The group cannot be a row group for read-only access mode. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-10019` + +**Message** + +```markdown +The group is already assigned to the user. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-10020` + +**Message** + +```markdown +The namespace does not exist. Namespace: %s +``` + +### `DB-ABAC-10021` + +**Message** + +```markdown +The namespace policy already exists. NamespacePolicy: %s +``` + +### `DB-ABAC-10022` + +**Message** + +```markdown +The namespace policy does not exist. NamespacePolicy: %s +``` + +### `DB-ABAC-10023` + +**Message** + +```markdown +The table does not exist. Table: %s +``` + +### `DB-ABAC-10024` + +**Message** + +```markdown +The table policy already exists. TablePolicy: %s +``` + +### `DB-ABAC-10025` + +**Message** + +```markdown +The table policy does not exist. TablePolicy: %s +``` + +### `DB-ABAC-10026` + +**Message** + +```markdown +The short name must not be empty. Short name: %s +``` + +### `DB-ABAC-10027` + +**Message** + +```markdown +The short name must be 30 characters or less. Short name: %s +``` + +### `DB-ABAC-10028` + +**Message** + +```markdown +The short name must not contain a colon. Short name: %s +``` + +### `DB-ABAC-10029` + +**Message** + +```markdown +The short name must not contain a comma. Short name: %s +``` + +### `DB-ABAC-10030` + +**Message** + +```markdown +The data tag is invalid. Data tag: %s +``` + +### `DB-ABAC-10031` + +**Message** + +```markdown +The level must be specified in the data tag. Data tag: %s +``` + +### `DB-ABAC-10032` + +**Message** + +```markdown +The user tag is invalid. User tag: %s +``` + +### `DB-ABAC-10033` + +**Message** + +```markdown +The level must be specified in the user tag. User tag: %s +``` + +### `DB-ABAC-10034` + +**Message** + +```markdown +The specified user tag is not allowed. User tag: %s +``` + +### `DB-ABAC-10035` + +**Message** + +```markdown +The data tag column type should be TEXT. Policy: %s; Data tag column: %s +``` + +### `DB-ABAC-10036` + +**Message** + +```markdown +The specified data tag is not allowed. Data tag: %s +``` + +### `DB-ABAC-10037` + +**Message** + +```markdown +The data tag column cannot be used in conditions. Operation: %s; Data tag column: %s +``` + +### `DB-ABAC-10038` + +**Message** + +```markdown +The operation is not allowed for the policy. Policy: %s; Operation: %s +``` + +### `DB-ABAC-10039` + +**Message** + +```markdown +Access denied: Invalid auth token +``` + +### `DB-ABAC-10040` + +**Message** + +```markdown +The authentication and authorization feature must be enabled to use the attribute-based access control feature +``` + +### `DB-ABAC-10041` + +**Message** + +```markdown +The single CRUD operation transaction manager does not support the attribute-based access control feature +``` + +### `DB-ABAC-10042` + +**Message** + +```markdown +The data tag column cannot be used in ordering. Operation: %s; Data tag column: %s +``` + +### `DB-ABAC-10043` + +**Message** + +```markdown +The namespace policy for the policy and namespace already exists. Policy: %s; Namespace: %s +``` + +### `DB-ABAC-10044` + +**Message** + +```markdown +The table policy for the policy and table already exists. Policy: %s; Table: %s +``` + +## `DB-ABAC-2xxxx` status codes + +The following are status codes and messages for the concurrency error category. + +### `DB-ABAC-20000` + +**Message** + +```markdown +The record does not exist, so the %s condition is not satisfied +``` + +## `DB-ABAC-3xxxx` status codes + +The following are status codes and messages for the internal error category. + +### `DB-ABAC-30000` + +**Message** + +```markdown +Creating a policy failed. Policy: %s; Data tag column: %s +``` + +### `DB-ABAC-30001` + +**Message** + +```markdown +Enabling the policy failed. Policy: %s +``` + +### `DB-ABAC-30002` + +**Message** + +```markdown +Disabling the policy failed. Policy: %s +``` + +### `DB-ABAC-30003` + +**Message** + +```markdown +Getting the policy failed. Policy: %s +``` + +### `DB-ABAC-30004` + +**Message** + +```markdown +Getting the policies failed +``` + +### `DB-ABAC-30005` + +**Message** + +```markdown +Creating a level failed. Policy: %s; Level short name: %s; Level long name: %s; Level number: %d +``` + +### `DB-ABAC-30006` + +**Message** + +```markdown +Dropping the level failed. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-30007` + +**Message** + +```markdown +Getting the level failed. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-30008` + +**Message** + +```markdown +Getting the levels failed. Policy: %s +``` + +### `DB-ABAC-30009` + +**Message** + +```markdown +Creating a compartment failed. Policy: %s; Compartment short name: %s; Compartment long name: %s +``` + +### `DB-ABAC-30010` + +**Message** + +```markdown +Dropping the compartment failed. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-30011` + +**Message** + +```markdown +Getting the compartment failed. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-30012` + +**Message** + +```markdown +Getting the compartments failed. Policy: %s +``` + +### `DB-ABAC-30013` + +**Message** + +```markdown +Creating a group failed. Policy: %s; Group short name: %s; Group long name: %s; Parent-group short name: %s +``` + +### `DB-ABAC-30014` + +**Message** + +```markdown +Dropping the group failed. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-30015` + +**Message** + +```markdown +Getting the group failed. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-30016` + +**Message** + +```markdown +Getting groups failed. Policy: %s +``` + +### `DB-ABAC-30017` + +**Message** + +```markdown +Getting child groups failed. Policy: %s; Parent-group short name: %s +``` + +### `DB-ABAC-30018` + +**Message** + +```markdown +Setting the levels to the user failed. Policy: %s; User: %s; Level short name: %s; Default-level short name: %s; Row-level short name: %s +``` + +### `DB-ABAC-30019` + +**Message** + +```markdown +Adding the compartment to the user failed. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-30020` + +**Message** + +```markdown +Removing the compartment from the user failed. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-30021` + +**Message** + +```markdown +Adding the group to the user failed. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-30022` + +**Message** + +```markdown +Removing the group from the user failed. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-30023` + +**Message** + +```markdown +Dropping the user tag information from the user failed. Policy: %s; User: %s +``` + +### `DB-ABAC-30024` + +**Message** + +```markdown +Getting the user tag information failed. Policy: %s; User: %s +``` + +### `DB-ABAC-30025` + +**Message** + +```markdown +Creating a namespace policy failed. NamespacePolicy: %s; Policy: %s; Namespace: %s +``` + +### `DB-ABAC-30026` + +**Message** + +```markdown +Enabling the namespace policy failed. NamespacePolicy: %s +``` + +### `DB-ABAC-30027` + +**Message** + +```markdown +Disabling the namespace policy failed. NamespacePolicy: %s +``` + +### `DB-ABAC-30028` + +**Message** + +```markdown +Removing the namespace policies assigned to the namespace failed. Namespace: %s +``` + +### `DB-ABAC-30029` + +**Message** + +```markdown +Getting the namespace policies failed +``` + +### `DB-ABAC-30030` + +**Message** + +```markdown +Creating a table policy failed. TablePolicy: %s; Policy: %s; Table: %s +``` + +### `DB-ABAC-30031` + +**Message** + +```markdown +Enabling the table policy failed. TablePolicy: %s +``` + +### `DB-ABAC-30032` + +**Message** + +```markdown +Disabling the table policy failed. TablePolicy: %s +``` + +### `DB-ABAC-30033` + +**Message** + +```markdown +Removing the table policies assigned to the table failed. Table: %s +``` + +### `DB-ABAC-30034` + +**Message** + +```markdown +Getting the table policies failed +``` + +### `DB-ABAC-30035` + +**Message** + +```markdown +Getting the policies assigned to the namespace failed. Namespace: %s +``` + +### `DB-ABAC-30036` + +**Message** + +```markdown +Getting the policies assigned to the table failed. Table: %s +``` + +### `DB-ABAC-30037` + +**Message** + +```markdown +Registering the data tag failed. Policy: %s; Data tag: %s +``` + +### `DB-ABAC-30038` + +**Message** + +```markdown +Getting the data tags failed. Policy: %s +``` + +### `DB-ABAC-30039` + +**Message** + +```markdown +Getting the namespace policy failed. NamespacePolicy: %s +``` + +### `DB-ABAC-30040` + +**Message** + +```markdown +Getting the table policy failed. TablePolicy: %s +``` diff --git a/docs/scalardb-cluster/scalardb-auth-status-codes.mdx b/docs/scalardb-cluster/scalardb-auth-status-codes.mdx index 670566f7..00ef8e73 100644 --- a/docs/scalardb-cluster/scalardb-auth-status-codes.mdx +++ b/docs/scalardb-cluster/scalardb-auth-status-codes.mdx @@ -11,14 +11,16 @@ This page provides a list of error codes related to authentication and authoriza ## Error code classes and descriptions -| Class | Description | -|:-------------|:---------------------------------------| -| `AUTH-1xxxx` | Errors for the user error category | -| `AUTH-3xxxx` | Errors for the internal error category | +| Class | Description | +|:----------------|:---------------------------------------| +| `DB-AUTH-1xxxx` | Errors for the user error category | +| `DB-AUTH-3xxxx` | Errors for the internal error category | -## `AUTH-1xxxx` status codes +## `DB-AUTH-1xxxx` status codes -### `AUTH-10000` +The following are status codes and messages for the user error category. + +### `DB-AUTH-10000` **Message** @@ -26,7 +28,7 @@ This page provides a list of error codes related to authentication and authoriza The user already exists. Username: %s ``` -### `AUTH-10001` +### `DB-AUTH-10001` **Message** @@ -34,7 +36,7 @@ The user already exists. Username: %s The user does not exist. Username: %s ``` -### `AUTH-10003` +### `DB-AUTH-10003` **Message** @@ -42,7 +44,7 @@ The user does not exist. Username: %s The namespace does not exist. Namespace: %s ``` -### `AUTH-10004` +### `DB-AUTH-10004` **Message** @@ -50,7 +52,7 @@ The namespace does not exist. Namespace: %s The table does not exist. Table: %s ``` -### `AUTH-10005` +### `DB-AUTH-10005` **Message** @@ -58,7 +60,7 @@ The table does not exist. Table: %s Invalid username or password ``` -### `AUTH-10006` +### `DB-AUTH-10006` **Message** @@ -66,7 +68,7 @@ Invalid username or password Access denied: Invalid auth token ``` -### `AUTH-10007` +### `DB-AUTH-10007` **Message** @@ -74,7 +76,7 @@ Access denied: Invalid auth token Access denied: You need the %s privilege on the namespace %s to execute this operation ``` -### `AUTH-10008` +### `DB-AUTH-10008` **Message** @@ -82,7 +84,7 @@ Access denied: You need the %s privilege on the namespace %s to execute this ope Access denied: You need the %s privilege on the table %s to execute this operation ``` -### `AUTH-10009` +### `DB-AUTH-10009` **Message** @@ -90,7 +92,7 @@ Access denied: You need the %s privilege on the table %s to execute this operati Access denied: You must be a superuser to execute this operation ``` -### `AUTH-10010` +### `DB-AUTH-10010` **Message** @@ -98,7 +100,7 @@ Access denied: You must be a superuser to execute this operation Access denied: You can't access information about the user %s ``` -### `AUTH-10011` +### `DB-AUTH-10011` **Message** @@ -106,7 +108,7 @@ Access denied: You can't access information about the user %s Access denied: You can't alter the user %s ``` -### `AUTH-10012` +### `DB-AUTH-10012` **Message** @@ -114,7 +116,7 @@ Access denied: You can't alter the user %s Access denied: You must be a superuser to change the SUPERUSER attribute ``` -### `AUTH-10013` +### `DB-AUTH-10013` **Message** @@ -122,7 +124,7 @@ Access denied: You must be a superuser to change the SUPERUSER attribute You can't change the SUPERUSER attribute for the current user %s ``` -### `AUTH-10014` +### `DB-AUTH-10014` **Message** @@ -130,7 +132,7 @@ You can't change the SUPERUSER attribute for the current user %s You can't drop the current user %s ``` -### `AUTH-10015` +### `DB-AUTH-10015` **Message** @@ -138,7 +140,7 @@ You can't drop the current user %s Access denied: You can't grant the %s privilege because you don't have the same privilege on the table %s ``` -### `AUTH-10016` +### `DB-AUTH-10016` **Message** @@ -146,7 +148,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't grant the %s privilege because you don't have the same privilege on the namespace %s ``` -### `AUTH-10017` +### `DB-AUTH-10017` **Message** @@ -154,7 +156,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the table %s ``` -### `AUTH-10018` +### `DB-AUTH-10018` **Message** @@ -162,7 +164,7 @@ Access denied: You can't revoke the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the namespace %s ``` -### `AUTH-10019` +### `DB-AUTH-10019` **Message** @@ -170,9 +172,11 @@ Access denied: You can't revoke the %s privilege because you don't have the same The operation does not have the target namespace or table name. Operation: %s ``` -## `AUTH-3xxxx` status codes +## `DB-AUTH-3xxxx` status codes + +The following are status codes and messages for the internal error category. -### `AUTH-30000` +### `DB-AUTH-30000` **Message** @@ -180,7 +184,7 @@ The operation does not have the target namespace or table name. Operation: %s Getting auth token information failed ``` -### `AUTH-30001` +### `DB-AUTH-30001` **Message** @@ -188,7 +192,7 @@ Getting auth token information failed Getting the user failed. Username: %s ``` -### `AUTH-30002` +### `DB-AUTH-30002` **Message** @@ -196,7 +200,7 @@ Getting the user failed. Username: %s Creating a user failed. Username: %s ``` -### `AUTH-30003` +### `DB-AUTH-30003` **Message** @@ -204,7 +208,7 @@ Creating a user failed. Username: %s Altering the user failed. Username: %s ``` -### `AUTH-30004` +### `DB-AUTH-30004` **Message** @@ -212,7 +216,7 @@ Altering the user failed. Username: %s Dropping the user failed. Username: %s ``` -### `AUTH-30005` +### `DB-AUTH-30005` **Message** @@ -220,7 +224,7 @@ Dropping the user failed. Username: %s Granting privileges failed. Username: %s; Namespace: %s; Privileges: %s ``` -### `AUTH-30006` +### `DB-AUTH-30006` **Message** @@ -228,7 +232,7 @@ Granting privileges failed. Username: %s; Namespace: %s; Privileges: %s Granting privileges failed. Username: %s; Table: %s; Privileges: %s ``` -### `AUTH-30007` +### `DB-AUTH-30007` **Message** @@ -236,7 +240,7 @@ Granting privileges failed. Username: %s; Table: %s; Privileges: %s Revoking privileges failed. Username: %s; Namespace: %s; Privileges: %s ``` -### `AUTH-30008` +### `DB-AUTH-30008` **Message** @@ -244,7 +248,7 @@ Revoking privileges failed. Username: %s; Namespace: %s; Privileges: %s Revoking privileges failed. Username: %s; Table: %s; Privileges: %s ``` -### `AUTH-30009` +### `DB-AUTH-30009` **Message** @@ -252,7 +256,7 @@ Revoking privileges failed. Username: %s; Table: %s; Privileges: %s Getting users failed ``` -### `AUTH-30010` +### `DB-AUTH-30010` **Message** @@ -260,7 +264,7 @@ Getting users failed Getting privileges failed. Username: %s; Namespace: %s ``` -### `AUTH-30011` +### `DB-AUTH-30011` **Message** @@ -268,7 +272,7 @@ Getting privileges failed. Username: %s; Namespace: %s Getting privileges failed. Username: %s; Table: %s ``` -### `AUTH-30012` +### `DB-AUTH-30012` **Message** @@ -276,7 +280,7 @@ Getting privileges failed. Username: %s; Table: %s Deleting privileges failed. Namespace: %s ``` -### `AUTH-30013` +### `DB-AUTH-30013` **Message** @@ -284,7 +288,7 @@ Deleting privileges failed. Namespace: %s Deleting privileges failed. Table: %s ``` -### `AUTH-30014` +### `DB-AUTH-30014` **Message** @@ -292,7 +296,7 @@ Deleting privileges failed. Table: %s Logging in failed. Username: %s ``` -### `AUTH-30015` +### `DB-AUTH-30015` **Message** diff --git a/docs/scalardb-cluster/scalardb-auth-with-sql.mdx b/docs/scalardb-cluster/scalardb-auth-with-sql.mdx index ef9e93b2..0452a4f7 100644 --- a/docs/scalardb-cluster/scalardb-auth-with-sql.mdx +++ b/docs/scalardb-cluster/scalardb-auth-with-sql.mdx @@ -190,7 +190,7 @@ services: scalardb-cluster-standalone: container_name: "scalardb-cluser-node" - image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.14.1" + image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.15.1" ports: - 60053:60053 - 9080:9080 @@ -228,7 +228,7 @@ scalar.db.cluster.auth.enabled=true Then, start the SQL CLI by running the following command. ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-cluster-sql-cli.properties ``` Enter the username and password as `admin` and `admin`, respectively. @@ -317,7 +317,7 @@ You can see that `user1` has been granted the `SELECT`, `INSERT`, and `UPDATE` p Log in as `user1` and execute SQL statements. ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-cluster-sql-cli.properties ``` Enter the username and password as `user1` and `user1`, respectively. diff --git a/docs/scalardb-cluster/scalardb-cluster-status-codes.mdx b/docs/scalardb-cluster/scalardb-cluster-status-codes.mdx index 14098bdc..0005c1fa 100644 --- a/docs/scalardb-cluster/scalardb-cluster-status-codes.mdx +++ b/docs/scalardb-cluster/scalardb-cluster-status-codes.mdx @@ -11,15 +11,17 @@ This page provides a list of error codes in ScalarDB Cluster. ## Error code classes and descriptions -| Class | Description | -|:----------------|:------------------------------------------| -| `CLUSTER-1xxxx` | Errors for the user error category | -| `CLUSTER-2xxxx` | Errors for the concurrency error category | -| `CLUSTER-3xxxx` | Errors for the internal error category | +| Class | Description | +|:-------------------|:------------------------------------------| +| `DB-CLUSTER-1xxxx` | Errors for the user error category | +| `DB-CLUSTER-2xxxx` | Errors for the concurrency error category | +| `DB-CLUSTER-3xxxx` | Errors for the internal error category | -## `CLUSTER-1xxxx` status codes +## `DB-CLUSTER-1xxxx` status codes -### `CLUSTER-10000` +The following are status codes and messages for the user error category. + +### `DB-CLUSTER-10000` **Message** @@ -27,7 +29,7 @@ This page provides a list of error codes in ScalarDB Cluster. The namespace does not exist. Namespace: %s ``` -### `CLUSTER-10001` +### `DB-CLUSTER-10001` **Message** @@ -35,7 +37,7 @@ The namespace does not exist. Namespace: %s The table does not exist. Table: %s ``` -### `CLUSTER-10002` +### `DB-CLUSTER-10002` **Message** @@ -43,7 +45,7 @@ The table does not exist. Table: %s The user does not exist. User: %s ``` -### `CLUSTER-10003` +### `DB-CLUSTER-10003` **Message** @@ -51,7 +53,7 @@ The user does not exist. User: %s ClusterConfig is not specified ``` -### `CLUSTER-10004` +### `DB-CLUSTER-10004` **Message** @@ -59,7 +61,7 @@ ClusterConfig is not specified The get type is unspecified ``` -### `CLUSTER-10005` +### `DB-CLUSTER-10005` **Message** @@ -67,7 +69,7 @@ The get type is unspecified The get type is unrecognized ``` -### `CLUSTER-10006` +### `DB-CLUSTER-10006` **Message** @@ -75,7 +77,7 @@ The get type is unrecognized The value of the column is not set. Column: %s ``` -### `CLUSTER-10007` +### `DB-CLUSTER-10007` **Message** @@ -83,7 +85,7 @@ The value of the column is not set. Column: %s The scan type is unspecified ``` -### `CLUSTER-10008` +### `DB-CLUSTER-10008` **Message** @@ -91,7 +93,7 @@ The scan type is unspecified The scan type is unrecognized ``` -### `CLUSTER-10009` +### `DB-CLUSTER-10009` **Message** @@ -99,7 +101,7 @@ The scan type is unrecognized The order is unspecified ``` -### `CLUSTER-10010` +### `DB-CLUSTER-10010` **Message** @@ -107,7 +109,7 @@ The order is unspecified The order is unrecognized ``` -### `CLUSTER-10011` +### `DB-CLUSTER-10011` **Message** @@ -115,7 +117,7 @@ The order is unrecognized The clustering order is unspecified ``` -### `CLUSTER-10012` +### `DB-CLUSTER-10012` **Message** @@ -123,7 +125,7 @@ The clustering order is unspecified The clustering order is unrecognized ``` -### `CLUSTER-10013` +### `DB-CLUSTER-10013` **Message** @@ -131,7 +133,7 @@ The clustering order is unrecognized The put condition type is unspecified ``` -### `CLUSTER-10014` +### `DB-CLUSTER-10014` **Message** @@ -139,7 +141,7 @@ The put condition type is unspecified The put condition type is unrecognized ``` -### `CLUSTER-10015` +### `DB-CLUSTER-10015` **Message** @@ -147,7 +149,7 @@ The put condition type is unrecognized The delete condition type is unspecified ``` -### `CLUSTER-10016` +### `DB-CLUSTER-10016` **Message** @@ -155,7 +157,7 @@ The delete condition type is unspecified The delete condition type is unrecognized ``` -### `CLUSTER-10017` +### `DB-CLUSTER-10017` **Message** @@ -163,7 +165,7 @@ The delete condition type is unrecognized The operator is unspecified ``` -### `CLUSTER-10018` +### `DB-CLUSTER-10018` **Message** @@ -171,7 +173,7 @@ The operator is unspecified The operator is unrecognized ``` -### `CLUSTER-10019` +### `DB-CLUSTER-10019` **Message** @@ -179,7 +181,7 @@ The operator is unrecognized The mutation is not set ``` -### `CLUSTER-10020` +### `DB-CLUSTER-10020` **Message** @@ -187,7 +189,7 @@ The mutation is not set The data type is unspecified ``` -### `CLUSTER-10021` +### `DB-CLUSTER-10021` **Message** @@ -195,7 +197,7 @@ The data type is unspecified The data type is unrecognized ``` -### `CLUSTER-10022` +### `DB-CLUSTER-10022` **Message** @@ -203,7 +205,7 @@ The data type is unrecognized The user option is unspecified ``` -### `CLUSTER-10023` +### `DB-CLUSTER-10023` **Message** @@ -211,7 +213,7 @@ The user option is unspecified The user option is unrecognized ``` -### `CLUSTER-10024` +### `DB-CLUSTER-10024` **Message** @@ -219,7 +221,7 @@ The user option is unrecognized The privilege is unspecified ``` -### `CLUSTER-10025` +### `DB-CLUSTER-10025` **Message** @@ -227,7 +229,7 @@ The privilege is unspecified The privilege is unrecognized ``` -### `CLUSTER-10026` +### `DB-CLUSTER-10026` **Message** @@ -235,7 +237,7 @@ The privilege is unrecognized The username is not set ``` -### `CLUSTER-10027` +### `DB-CLUSTER-10027` **Message** @@ -243,7 +245,7 @@ The username is not set This feature is not supported in ScalarDB Cluster ``` -### `CLUSTER-10028` +### `DB-CLUSTER-10028` **Message** @@ -251,7 +253,7 @@ This feature is not supported in ScalarDB Cluster The property 'scalar.db.contact_points' must not be empty ``` -### `CLUSTER-10029` +### `DB-CLUSTER-10029` **Message** @@ -259,7 +261,7 @@ The property 'scalar.db.contact_points' must not be empty The property 'scalar.db.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' ``` -### `CLUSTER-10030` +### `DB-CLUSTER-10030` **Message** @@ -267,7 +269,7 @@ The property 'scalar.db.contact_points' must be prefixed with 'indirect:' or 'di The format of the property 'scalar.db.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' ``` -### `CLUSTER-10031` +### `DB-CLUSTER-10031` **Message** @@ -275,7 +277,7 @@ The format of the property 'scalar.db.contact_points' for direct-kubernetes clie The property 'scalar.db.sql.cluster_mode.contact_points' must not be empty ``` -### `CLUSTER-10032` +### `DB-CLUSTER-10032` **Message** @@ -283,7 +285,7 @@ The property 'scalar.db.sql.cluster_mode.contact_points' must not be empty The property 'scalar.db.sql.cluster_mode.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' ``` -### `CLUSTER-10033` +### `DB-CLUSTER-10033` **Message** @@ -291,7 +293,7 @@ The property 'scalar.db.sql.cluster_mode.contact_points' must be prefixed with ' The format of the property 'scalar.db.sql.cluster_mode.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' ``` -### `CLUSTER-10034` +### `DB-CLUSTER-10034` **Message** @@ -299,7 +301,7 @@ The format of the property 'scalar.db.sql.cluster_mode.contact_points' for direc ClusterNodeManagerFactory is not specified ``` -### `CLUSTER-10035` +### `DB-CLUSTER-10035` **Message** @@ -307,7 +309,7 @@ ClusterNodeManagerFactory is not specified The update condition type is unspecified ``` -### `CLUSTER-10036` +### `DB-CLUSTER-10036` **Message** @@ -315,7 +317,7 @@ The update condition type is unspecified The update condition type is unrecognized ``` -### `CLUSTER-10037` +### `DB-CLUSTER-10037` **Message** @@ -323,9 +325,163 @@ The update condition type is unrecognized The two-phase commit interface is not supported ``` -## `CLUSTER-2xxxx` status codes +### `DB-CLUSTER-10038` + +**Message** + +```markdown +Membership is not specified +``` + +### `DB-CLUSTER-10039` + +**Message** + +```markdown +The policy state is unspecified +``` + +### `DB-CLUSTER-10040` + +**Message** + +```markdown +The policy state is unrecognized +``` + +### `DB-CLUSTER-10041` + +**Message** + +```markdown +The access mode is unspecified +``` + +### `DB-CLUSTER-10042` + +**Message** + +```markdown +The access mode is unrecognized +``` -### `CLUSTER-20000` +### `DB-CLUSTER-10043` + +**Message** + +```markdown +The service does not exist. Service Class: %s +``` + +### `DB-CLUSTER-10044` + +**Message** + +```markdown +The policy does not exist. Policy: %s +``` + +### `DB-CLUSTER-10045` + +**Message** + +```markdown +The property 'scalar.db.embedding.client.contact_points' must not be empty +``` + +### `DB-CLUSTER-10046` + +**Message** + +```markdown +The property 'scalar.db.embedding.client.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' +``` + +### `DB-CLUSTER-10047` + +**Message** + +```markdown +The format of the property 'scalar.db.embedding.client.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' +``` + +### `DB-CLUSTER-10048` + +**Message** + +```markdown +The embeddings must be provided +``` + +### `DB-CLUSTER-10049` + +**Message** + +```markdown +Only one embedding can be added with an embedding ID +``` + +### `DB-CLUSTER-10050` + +**Message** + +```markdown +Text segments cannot be provided when adding an embedding with an embedding ID +``` + +### `DB-CLUSTER-10051` + +**Message** + +```markdown +Both embedding IDs and a filter cannot be provided +``` + +### `DB-CLUSTER-10052` + +**Message** + +```markdown +Unsupported embedding store type. Type: %s +``` + +### `DB-CLUSTER-10053` + +**Message** + +```markdown +Unsupported embedding model type. Type: %s +``` + +### `DB-CLUSTER-10054` + +**Message** + +```markdown +The filter is not set +``` + +### `DB-CLUSTER-10055` + +**Message** + +```markdown +Unsupported metadata value type. Type: %s +``` + +### `DB-CLUSTER-10056` + +**Message** + +```markdown +The metadata value is not set +``` + +## `DB-CLUSTER-2xxxx` status codes + +The following are status codes and messages for the concurrency error category. + +### `DB-CLUSTER-20000` **Message** @@ -333,7 +489,7 @@ The two-phase commit interface is not supported The hop limit is exceeded ``` -### `CLUSTER-20001` +### `DB-CLUSTER-20001` **Message** @@ -341,9 +497,11 @@ The hop limit is exceeded A transaction associated with the specified transaction ID is not found. The transaction might have expired, or the cluster node that handled the transaction might have been restarted. Transaction ID: %s ``` -## `CLUSTER-3xxxx` status codes +## `DB-CLUSTER-3xxxx` status codes + +The following are status codes and messages for the internal error category. -### `CLUSTER-30000` +### `DB-CLUSTER-30000` **Message** @@ -351,7 +509,7 @@ A transaction associated with the specified transaction ID is not found. The tra Getting local IP addresses failed ``` -### `CLUSTER-30001` +### `DB-CLUSTER-30001` **Message** @@ -359,7 +517,7 @@ Getting local IP addresses failed Getting a cluster node object from the cache failed. Cluster Node IP Address: %s ``` -### `CLUSTER-30002` +### `DB-CLUSTER-30002` **Message** @@ -367,7 +525,7 @@ Getting a cluster node object from the cache failed. Cluster Node IP Address: %s The ring is empty ``` -### `CLUSTER-30003` +### `DB-CLUSTER-30003` **Message** @@ -375,7 +533,7 @@ The ring is empty Getting the Kubernetes API client failed ``` -### `CLUSTER-30004` +### `DB-CLUSTER-30004` **Message** @@ -383,7 +541,7 @@ Getting the Kubernetes API client failed Reading the Kubernetes endpoint failed. Namespace: %s; Name: %s; Code: %d; Response Headers: %s; Response Body: %s ``` -### `CLUSTER-30005` +### `DB-CLUSTER-30005` **Message** @@ -391,7 +549,7 @@ Reading the Kubernetes endpoint failed. Namespace: %s; Name: %s; Code: %d; Respo Configuring TLS failed ``` -### `CLUSTER-30006` +### `DB-CLUSTER-30006` **Message** diff --git a/docs/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx b/docs/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx index 8d95c44a..12bd2ad5 100644 --- a/docs/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx +++ b/docs/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx @@ -170,7 +170,7 @@ You can deploy PostgreSQL on the Kubernetes cluster as follows. 5. Set the chart version of ScalarDB Cluster. ```console - SCALAR_DB_CLUSTER_VERSION=3.14.1 + SCALAR_DB_CLUSTER_VERSION=3.15.1 SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) ``` diff --git a/docs/scalardb-core-status-codes.mdx b/docs/scalardb-core-status-codes.mdx index 85cf7db3..1bac0c42 100644 --- a/docs/scalardb-core-status-codes.mdx +++ b/docs/scalardb-core-status-codes.mdx @@ -12,16 +12,18 @@ This page provides a list of error codes in ScalarDB Core. ## Error code classes and descriptions -| Class | Description | -|:-------------|:---------------------------------------------------------| -| `CORE-1xxxx` | Errors for the user error category | -| `CORE-2xxxx` | Errors for the concurrency error category | -| `CORE-3xxxx` | Errors for the internal error category | -| `CORE-4xxxx` | Errors for the unknown transaction status error category | +| Class | Description | +|:----------------|:---------------------------------------------------------| +| `DB-CORE-1xxxx` | Errors for the user error category | +| `DB-CORE-2xxxx` | Errors for the concurrency error category | +| `DB-CORE-3xxxx` | Errors for the internal error category | +| `DB-CORE-4xxxx` | Errors for the unknown transaction status error category | -## `CORE-1xxxx` status codes +## `DB-CORE-1xxxx` status codes -### `CORE-10000` +The following are status codes and messages for the user error category. + +### `DB-CORE-10000` **Message** @@ -29,7 +31,7 @@ This page provides a list of error codes in ScalarDB Core. Only a single-column index is supported. Operation: %s ``` -### `CORE-10001` +### `DB-CORE-10001` **Message** @@ -37,7 +39,7 @@ Only a single-column index is supported. Operation: %s The column of the specified index key is not indexed. Operation: %s ``` -### `CORE-10002` +### `DB-CORE-10002` **Message** @@ -45,7 +47,7 @@ The column of the specified index key is not indexed. Operation: %s The index key is not properly specified. Operation: %s ``` -### `CORE-10003` +### `DB-CORE-10003` **Message** @@ -53,7 +55,7 @@ The index key is not properly specified. Operation: %s Clustering keys cannot be specified when using an index. Operation: %s ``` -### `CORE-10004` +### `DB-CORE-10004` **Message** @@ -61,7 +63,7 @@ Clustering keys cannot be specified when using an index. Operation: %s Orderings cannot be specified when using an index. Operation: %s ``` -### `CORE-10005` +### `DB-CORE-10005` **Message** @@ -69,7 +71,7 @@ Orderings cannot be specified when using an index. Operation: %s The limit cannot be negative. Operation: %s ``` -### `CORE-10006` +### `DB-CORE-10006` **Message** @@ -77,7 +79,7 @@ The limit cannot be negative. Operation: %s Cross-partition scan is not enabled. Operation: %s ``` -### `CORE-10007` +### `DB-CORE-10007` **Message** @@ -85,7 +87,7 @@ Cross-partition scan is not enabled. Operation: %s Cross-partition scan ordering is not enabled. Operation: %s ``` -### `CORE-10008` +### `DB-CORE-10008` **Message** @@ -93,7 +95,7 @@ Cross-partition scan ordering is not enabled. Operation: %s Cross-partition scan filtering is not enabled. Operation: %s ``` -### `CORE-10009` +### `DB-CORE-10009` **Message** @@ -101,7 +103,7 @@ Cross-partition scan filtering is not enabled. Operation: %s The specified projection is not found. Projection: %s, Operation: %s ``` -### `CORE-10010` +### `DB-CORE-10010` **Message** @@ -109,7 +111,7 @@ The specified projection is not found. Projection: %s, Operation: %s The clustering key boundary is not properly specified. Operation: %s ``` -### `CORE-10011` +### `DB-CORE-10011` **Message** @@ -117,7 +119,7 @@ The clustering key boundary is not properly specified. Operation: %s The start clustering key is not properly specified. Operation: %s ``` -### `CORE-10012` +### `DB-CORE-10012` **Message** @@ -125,7 +127,7 @@ The start clustering key is not properly specified. Operation: %s The end clustering key is not properly specified. Operation: %s ``` -### `CORE-10013` +### `DB-CORE-10013` **Message** @@ -133,7 +135,7 @@ The end clustering key is not properly specified. Operation: %s Orderings are not properly specified. Operation: %s ``` -### `CORE-10014` +### `DB-CORE-10014` **Message** @@ -141,7 +143,7 @@ Orderings are not properly specified. Operation: %s The specified ordering column is not found. Ordering: %s, Operation: %s ``` -### `CORE-10015` +### `DB-CORE-10015` **Message** @@ -149,7 +151,7 @@ The specified ordering column is not found. Ordering: %s, Operation: %s The condition is not properly specified. Operation: %s ``` -### `CORE-10016` +### `DB-CORE-10016` **Message** @@ -157,7 +159,7 @@ The condition is not properly specified. Operation: %s The table does not exist. Table: %s ``` -### `CORE-10017` +### `DB-CORE-10017` **Message** @@ -165,7 +167,7 @@ The table does not exist. Table: %s The column value is not properly specified. Column: %s, Operation: %s ``` -### `CORE-10018` +### `DB-CORE-10018` **Message** @@ -173,7 +175,7 @@ The column value is not properly specified. Column: %s, Operation: %s The mutations are empty ``` -### `CORE-10019` +### `DB-CORE-10019` **Message** @@ -181,7 +183,7 @@ The mutations are empty Mutations that span multiple partitions are not supported. Mutations: %s ``` -### `CORE-10020` +### `DB-CORE-10020` **Message** @@ -189,7 +191,7 @@ Mutations that span multiple partitions are not supported. Mutations: %s The partition key is not properly specified. Operation: %s ``` -### `CORE-10021` +### `DB-CORE-10021` **Message** @@ -197,7 +199,7 @@ The partition key is not properly specified. Operation: %s The clustering key is not properly specified. Operation: %s ``` -### `CORE-10022` +### `DB-CORE-10022` **Message** @@ -205,7 +207,7 @@ The clustering key is not properly specified. Operation: %s The authentication and authorization feature is not enabled. To use this feature, you must enable it. Note that this feature is supported only in the ScalarDB Enterprise edition ``` -### `CORE-10023` +### `DB-CORE-10023` **Message** @@ -213,7 +215,7 @@ The authentication and authorization feature is not enabled. To use this feature This condition is not allowed for the PutIf operation. Condition: %s ``` -### `CORE-10024` +### `DB-CORE-10024` **Message** @@ -221,7 +223,7 @@ This condition is not allowed for the PutIf operation. Condition: %s This condition is not allowed for the DeleteIf operation. Condition: %s ``` -### `CORE-10025` +### `DB-CORE-10025` **Message** @@ -229,7 +231,7 @@ This condition is not allowed for the DeleteIf operation. Condition: %s Operator must be LIKE or NOT_LIKE. Operator: %s ``` -### `CORE-10026` +### `DB-CORE-10026` **Message** @@ -237,7 +239,7 @@ Operator must be LIKE or NOT_LIKE. Operator: %s An escape character must be a string of a single character or an empty string ``` -### `CORE-10027` +### `DB-CORE-10027` **Message** @@ -245,7 +247,7 @@ An escape character must be a string of a single character or an empty string The LIKE pattern must not be null ``` -### `CORE-10028` +### `DB-CORE-10028` **Message** @@ -253,7 +255,7 @@ The LIKE pattern must not be null The LIKE pattern must not include only an escape character ``` -### `CORE-10029` +### `DB-CORE-10029` **Message** @@ -261,7 +263,7 @@ The LIKE pattern must not include only an escape character The LIKE pattern must not end with an escape character ``` -### `CORE-10030` +### `DB-CORE-10030` **Message** @@ -269,7 +271,7 @@ The LIKE pattern must not end with an escape character The column %s does not exist ``` -### `CORE-10031` +### `DB-CORE-10031` **Message** @@ -277,7 +279,7 @@ The column %s does not exist This operation is not supported when getting records of a database without using an index ``` -### `CORE-10032` +### `DB-CORE-10032` **Message** @@ -285,7 +287,7 @@ This operation is not supported when getting records of a database without using This operation is not supported when getting records of a database by using an index ``` -### `CORE-10033` +### `DB-CORE-10033` **Message** @@ -293,7 +295,7 @@ This operation is not supported when getting records of a database by using an i This operation is not supported when scanning all the records of a database or scanning records of a database by using an index ``` -### `CORE-10034` +### `DB-CORE-10034` **Message** @@ -301,7 +303,7 @@ This operation is not supported when scanning all the records of a database or s This operation is supported only when scanning records of a database by using an index ``` -### `CORE-10035` +### `DB-CORE-10035` **Message** @@ -309,7 +311,7 @@ This operation is supported only when scanning records of a database by using an This operation is not supported when scanning records of a database by using an index ``` -### `CORE-10037` +### `DB-CORE-10037` **Message** @@ -317,7 +319,7 @@ This operation is not supported when scanning records of a database by using an This operation is supported only when no conditions are specified. If you want to modify a condition, please use clearConditions() to remove all existing conditions first ``` -### `CORE-10038` +### `DB-CORE-10038` **Message** @@ -325,7 +327,7 @@ This operation is supported only when no conditions are specified. If you want t One or more columns must be specified. ``` -### `CORE-10039` +### `DB-CORE-10039` **Message** @@ -333,7 +335,7 @@ One or more columns must be specified. One or more partition keys must be specified. ``` -### `CORE-10040` +### `DB-CORE-10040` **Message** @@ -341,7 +343,7 @@ One or more partition keys must be specified. The column definition must be specified since %s is specified as a partition key ``` -### `CORE-10041` +### `DB-CORE-10041` **Message** @@ -349,7 +351,7 @@ The column definition must be specified since %s is specified as a partition key The column definition must be specified since %s is specified as a clustering key ``` -### `CORE-10042` +### `DB-CORE-10042` **Message** @@ -357,7 +359,7 @@ The column definition must be specified since %s is specified as a clustering ke Invalid ID specified. ID: %d ``` -### `CORE-10043` +### `DB-CORE-10043` **Message** @@ -365,7 +367,7 @@ Invalid ID specified. ID: %d The transaction is not active. Status: %s ``` -### `CORE-10044` +### `DB-CORE-10044` **Message** @@ -373,7 +375,7 @@ The transaction is not active. Status: %s The transaction has already been committed or rolled back. Status: %s ``` -### `CORE-10045` +### `DB-CORE-10045` **Message** @@ -381,7 +383,7 @@ The transaction has already been committed or rolled back. Status: %s The transaction has not been prepared. Status: %s ``` -### `CORE-10046` +### `DB-CORE-10046` **Message** @@ -389,7 +391,7 @@ The transaction has not been prepared. Status: %s The transaction has not been prepared or validated. Status: %s ``` -### `CORE-10047` +### `DB-CORE-10047` **Message** @@ -397,7 +399,7 @@ The transaction has not been prepared or validated. Status: %s The transaction already exists ``` -### `CORE-10048` +### `DB-CORE-10048` **Message** @@ -405,7 +407,7 @@ The transaction already exists A transaction associated with the specified transaction ID is not found. The transaction might have expired ``` -### `CORE-10049` +### `DB-CORE-10049` **Message** @@ -413,7 +415,7 @@ A transaction associated with the specified transaction ID is not found. The tra %s is the system namespace name ``` -### `CORE-10050` +### `DB-CORE-10050` **Message** @@ -421,7 +423,7 @@ A transaction associated with the specified transaction ID is not found. The tra The namespace already exists. Namespace: %s ``` -### `CORE-10051` +### `DB-CORE-10051` **Message** @@ -429,7 +431,7 @@ The namespace already exists. Namespace: %s The namespace does not exist. Namespace: %s ``` -### `CORE-10052` +### `DB-CORE-10052` **Message** @@ -437,7 +439,7 @@ The namespace does not exist. Namespace: %s The table already exists. Table: %s ``` -### `CORE-10053` +### `DB-CORE-10053` **Message** @@ -445,7 +447,7 @@ The table already exists. Table: %s The namespace is not empty. Namespace: %s; Tables in the namespace: %s ``` -### `CORE-10054` +### `DB-CORE-10054` **Message** @@ -453,7 +455,7 @@ The namespace is not empty. Namespace: %s; Tables in the namespace: %s The column does not exist. Table: %s; Column: %s ``` -### `CORE-10055` +### `DB-CORE-10055` **Message** @@ -461,7 +463,7 @@ The column does not exist. Table: %s; Column: %s The index already exists. Table: %s; Column: %s ``` -### `CORE-10056` +### `DB-CORE-10056` **Message** @@ -469,7 +471,7 @@ The index already exists. Table: %s; Column: %s The index does not exist. Table: %s; Column: %s ``` -### `CORE-10057` +### `DB-CORE-10057` **Message** @@ -477,7 +479,7 @@ The index does not exist. Table: %s; Column: %s The column already exists. Table: %s; Column: %s ``` -### `CORE-10058` +### `DB-CORE-10058` **Message** @@ -485,7 +487,7 @@ The column already exists. Table: %s; Column: %s The operation does not have the target namespace or table name. Operation: %s ``` -### `CORE-10059` +### `DB-CORE-10059` **Message** @@ -493,7 +495,7 @@ The operation does not have the target namespace or table name. Operation: %s The specified value of the property '%s' is not a number. Value: %s ``` -### `CORE-10060` +### `DB-CORE-10060` **Message** @@ -501,7 +503,7 @@ The specified value of the property '%s' is not a number. Value: %s The specified value of the property '%s' is not a boolean. Value: %s ``` -### `CORE-10061` +### `DB-CORE-10061` **Message** @@ -509,7 +511,7 @@ The specified value of the property '%s' is not a boolean. Value: %s Reading the file failed. File: %s ``` -### `CORE-10062` +### `DB-CORE-10062` **Message** @@ -517,7 +519,7 @@ Reading the file failed. File: %s The property 'scalar.db.cross_partition_scan.enabled' must be set to true to use cross-partition scan with filtering or ordering ``` -### `CORE-10063` +### `DB-CORE-10063` **Message** @@ -525,7 +527,7 @@ The property 'scalar.db.cross_partition_scan.enabled' must be set to true to use This column value is out of range for BigInt. Value: %s ``` -### `CORE-10064` +### `DB-CORE-10064` **Message** @@ -533,7 +535,7 @@ This column value is out of range for BigInt. Value: %s This type is not supported. Name: %s, Type: %s ``` -### `CORE-10065` +### `DB-CORE-10065` **Message** @@ -541,7 +543,7 @@ This type is not supported. Name: %s, Type: %s Storage '%s' is not found ``` -### `CORE-10066` +### `DB-CORE-10066` **Message** @@ -549,7 +551,7 @@ Storage '%s' is not found Transaction manager '%s' is not found ``` -### `CORE-10068` +### `DB-CORE-10068` **Message** @@ -557,7 +559,7 @@ Transaction manager '%s' is not found Please use scan() for non-exact match selection. Operation: %s ``` -### `CORE-10069` +### `DB-CORE-10069` **Message** @@ -565,7 +567,7 @@ Please use scan() for non-exact match selection. Operation: %s Import-related functionality is not supported in Cassandra ``` -### `CORE-10070` +### `DB-CORE-10070` **Message** @@ -573,7 +575,7 @@ Import-related functionality is not supported in Cassandra The %s network strategy does not exist ``` -### `CORE-10071` +### `DB-CORE-10071` **Message** @@ -581,7 +583,7 @@ The %s network strategy does not exist The property 'scalar.db.contact_port' must be greater than or equal to zero ``` -### `CORE-10073` +### `DB-CORE-10073` **Message** @@ -589,7 +591,7 @@ The property 'scalar.db.contact_port' must be greater than or equal to zero The BLOB type is not supported for clustering keys in Cosmos DB. Column: %s ``` -### `CORE-10074` +### `DB-CORE-10074` **Message** @@ -597,7 +599,7 @@ The BLOB type is not supported for clustering keys in Cosmos DB. Column: %s Import-related functionality is not supported in Cosmos DB ``` -### `CORE-10075` +### `DB-CORE-10075` **Message** @@ -605,7 +607,7 @@ Import-related functionality is not supported in Cosmos DB The property 'scalar.db.contact_points' must not be empty ``` -### `CORE-10076` +### `DB-CORE-10076` **Message** @@ -613,7 +615,7 @@ The property 'scalar.db.contact_points' must not be empty Cosmos DB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BLOB type in conditions. Mutation: %s ``` -### `CORE-10077` +### `DB-CORE-10077` **Message** @@ -621,7 +623,7 @@ Cosmos DB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BLOB The specified consistency level is not supported. Consistency level: %s ``` -### `CORE-10078` +### `DB-CORE-10078` **Message** @@ -629,7 +631,7 @@ The specified consistency level is not supported. Consistency level: %s 0x00 bytes are not accepted in BLOB values in DESC order ``` -### `CORE-10079` +### `DB-CORE-10079` **Message** @@ -637,7 +639,7 @@ The specified consistency level is not supported. Consistency level: %s Cannot encode a Text value that contains '\u0000' ``` -### `CORE-10081` +### `DB-CORE-10081` **Message** @@ -645,7 +647,7 @@ Cannot encode a Text value that contains '\u0000' An index column cannot be set to null or an empty value for Text or Blob in DynamoDB. Operation: %s ``` -### `CORE-10082` +### `DB-CORE-10082` **Message** @@ -653,7 +655,7 @@ An index column cannot be set to null or an empty value for Text or Blob in Dyna DynamoDB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BOOLEAN type in conditions. Mutation: %s ``` -### `CORE-10083` +### `DB-CORE-10083` **Message** @@ -661,7 +663,7 @@ DynamoDB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BOOLE Nested multi-storage definitions are not supported. Storage: %s ``` -### `CORE-10084` +### `DB-CORE-10084` **Message** @@ -669,7 +671,7 @@ Nested multi-storage definitions are not supported. Storage: %s Storage not found. Storage: %s ``` -### `CORE-10085` +### `DB-CORE-10085` **Message** @@ -677,7 +679,7 @@ Storage not found. Storage: %s The namespace name is not acceptable. Namespace: %s ``` -### `CORE-10086` +### `DB-CORE-10086` **Message** @@ -685,7 +687,7 @@ The namespace name is not acceptable. Namespace: %s The table name is not acceptable. Table: %s ``` -### `CORE-10087` +### `DB-CORE-10087` **Message** @@ -693,7 +695,7 @@ The table name is not acceptable. Table: %s Importing tables is not allowed in the RDB engine. RDB engine: %s ``` -### `CORE-10088` +### `DB-CORE-10088` **Message** @@ -701,7 +703,7 @@ Importing tables is not allowed in the RDB engine. RDB engine: %s The %s table must have a primary key ``` -### `CORE-10089` +### `DB-CORE-10089` **Message** @@ -709,7 +711,7 @@ The %s table must have a primary key The RDB engine is not supported. JDBC connection URL: %s ``` -### `CORE-10090` +### `DB-CORE-10090` **Message** @@ -717,7 +719,7 @@ The RDB engine is not supported. JDBC connection URL: %s Data type %s(%d) is not supported: %s ``` -### `CORE-10091` +### `DB-CORE-10091` **Message** @@ -725,7 +727,7 @@ Data type %s(%d) is not supported: %s Data type %s is not supported: %s ``` -### `CORE-10092` +### `DB-CORE-10092` **Message** @@ -733,7 +735,7 @@ Data type %s is not supported: %s Getting a transaction state is not supported in JDBC transactions ``` -### `CORE-10093` +### `DB-CORE-10093` **Message** @@ -741,7 +743,7 @@ Getting a transaction state is not supported in JDBC transactions Rolling back a transaction is not supported in JDBC transactions ``` -### `CORE-10094` +### `DB-CORE-10094` **Message** @@ -749,7 +751,7 @@ Rolling back a transaction is not supported in JDBC transactions Coordinator tables already exist ``` -### `CORE-10095` +### `DB-CORE-10095` **Message** @@ -757,7 +759,7 @@ Coordinator tables already exist Coordinator tables do not exist ``` -### `CORE-10096` +### `DB-CORE-10096` **Message** @@ -765,7 +767,7 @@ Coordinator tables do not exist The namespace %s is reserved. Any operations on this namespace are not allowed ``` -### `CORE-10097` +### `DB-CORE-10097` **Message** @@ -773,7 +775,7 @@ The namespace %s is reserved. Any operations on this namespace are not allowed Mutating transaction metadata columns is not allowed. Table: %s; Column: %s ``` -### `CORE-10098` +### `DB-CORE-10098` **Message** @@ -781,7 +783,7 @@ Mutating transaction metadata columns is not allowed. Table: %s; Column: %s A %s condition is not allowed on Put operations ``` -### `CORE-10099` +### `DB-CORE-10099` **Message** @@ -789,7 +791,7 @@ A %s condition is not allowed on Put operations A %s condition is not allowed on Delete operations ``` -### `CORE-10100` +### `DB-CORE-10100` **Message** @@ -797,7 +799,7 @@ A %s condition is not allowed on Delete operations The condition is not allowed to target transaction metadata columns. Column: %s ``` -### `CORE-10101` +### `DB-CORE-10101` **Message** @@ -805,7 +807,7 @@ The condition is not allowed to target transaction metadata columns. Column: %s The column '%s' is reserved as transaction metadata ``` -### `CORE-10102` +### `DB-CORE-10102` **Message** @@ -813,7 +815,7 @@ The column '%s' is reserved as transaction metadata Non-primary key columns with the 'before_' prefix, '%s', are reserved as transaction metadata ``` -### `CORE-10103` +### `DB-CORE-10103` **Message** @@ -821,7 +823,7 @@ Non-primary key columns with the 'before_' prefix, '%s', are reserved as transac Put cannot have a condition when the target record is unread and implicit pre-read is disabled. Please read the target record beforehand or enable implicit pre-read: %s ``` -### `CORE-10104` +### `DB-CORE-10104` **Message** @@ -829,7 +831,7 @@ Put cannot have a condition when the target record is unread and implicit pre-re Writing already-deleted data is not allowed ``` -### `CORE-10105` +### `DB-CORE-10105` **Message** @@ -837,7 +839,7 @@ Writing already-deleted data is not allowed Getting data neither in the read set nor the delete set is not allowed ``` -### `CORE-10106` +### `DB-CORE-10106` **Message** @@ -845,7 +847,7 @@ Getting data neither in the read set nor the delete set is not allowed Reading already-written data is not allowed ``` -### `CORE-10107` +### `DB-CORE-10107` **Message** @@ -853,7 +855,7 @@ Reading already-written data is not allowed The transaction is not validated. When using the EXTRA_READ serializable strategy, you need to call validate() before calling commit() ``` -### `CORE-10108` +### `DB-CORE-10108` **Message** @@ -861,7 +863,7 @@ The transaction is not validated. When using the EXTRA_READ serializable strateg DynamoDB cannot batch more than 100 mutations at once ``` -### `CORE-10109` +### `DB-CORE-10109` **Message** @@ -869,7 +871,7 @@ DynamoDB cannot batch more than 100 mutations at once The partition keys of the table %s.%s were modified, but altering partition keys is not supported ``` -### `CORE-10110` +### `DB-CORE-10110` **Message** @@ -877,7 +879,7 @@ The partition keys of the table %s.%s were modified, but altering partition keys The clustering keys of the table %s.%s were modified, but altering clustering keys is not supported ``` -### `CORE-10111` +### `DB-CORE-10111` **Message** @@ -885,7 +887,7 @@ The clustering keys of the table %s.%s were modified, but altering clustering ke The clustering ordering of the table %s.%s were modified, but altering clustering ordering is not supported ``` -### `CORE-10112` +### `DB-CORE-10112` **Message** @@ -893,7 +895,7 @@ The clustering ordering of the table %s.%s were modified, but altering clusterin The column %s of the table %s.%s has been deleted. Column deletion is not supported when altering a table ``` -### `CORE-10113` +### `DB-CORE-10113` **Message** @@ -901,7 +903,7 @@ The column %s of the table %s.%s has been deleted. Column deletion is not suppor The data type of the column %s of the table %s.%s was modified, but altering data types is not supported ``` -### `CORE-10114` +### `DB-CORE-10114` **Message** @@ -909,7 +911,7 @@ The data type of the column %s of the table %s.%s was modified, but altering dat Specifying the '--schema-file' option is required when using the '--repair-all' option ``` -### `CORE-10115` +### `DB-CORE-10115` **Message** @@ -917,7 +919,7 @@ Specifying the '--schema-file' option is required when using the '--repair-all' Specifying the '--schema-file' option is required when using the '--alter' option ``` -### `CORE-10116` +### `DB-CORE-10116` **Message** @@ -925,7 +927,7 @@ Specifying the '--schema-file' option is required when using the '--alter' optio Specifying the '--schema-file' option is required when using the '--import' option ``` -### `CORE-10117` +### `DB-CORE-10117` **Message** @@ -933,7 +935,7 @@ Specifying the '--schema-file' option is required when using the '--import' opti Specifying the '--coordinator' option with the '--import' option is not allowed. Create Coordinator tables separately ``` -### `CORE-10118` +### `DB-CORE-10118` **Message** @@ -941,7 +943,7 @@ Specifying the '--coordinator' option with the '--import' option is not allowed. Reading the configuration file failed. File: %s ``` -### `CORE-10119` +### `DB-CORE-10119` **Message** @@ -949,7 +951,7 @@ Reading the configuration file failed. File: %s Reading the schema file failed. File: %s ``` -### `CORE-10120` +### `DB-CORE-10120` **Message** @@ -957,7 +959,7 @@ Reading the schema file failed. File: %s Parsing the schema JSON failed. Details: %s ``` -### `CORE-10121` +### `DB-CORE-10121` **Message** @@ -965,7 +967,7 @@ Parsing the schema JSON failed. Details: %s The table name must contain the namespace and the table. Table: %s ``` -### `CORE-10122` +### `DB-CORE-10122` **Message** @@ -973,7 +975,7 @@ The table name must contain the namespace and the table. Table: %s The partition key must be specified. Table: %s ``` -### `CORE-10123` +### `DB-CORE-10123` **Message** @@ -981,7 +983,7 @@ The partition key must be specified. Table: %s Invalid clustering-key format. The clustering key must be in the format of 'column_name' or 'column_name ASC/DESC'. Table: %s; Clustering key: %s ``` -### `CORE-10124` +### `DB-CORE-10124` **Message** @@ -989,7 +991,7 @@ Invalid clustering-key format. The clustering key must be in the format of 'colu Columns must be specified. Table: %s ``` -### `CORE-10125` +### `DB-CORE-10125` **Message** @@ -997,7 +999,7 @@ Columns must be specified. Table: %s Invalid column type. Table: %s; Column: %s; Type: %s ``` -### `CORE-10126` +### `DB-CORE-10126` **Message** @@ -1005,7 +1007,7 @@ Invalid column type. Table: %s; Column: %s; Type: %s The mutation type is not supported. Only the Put or Delete type is supported. Mutation: %s ``` -### `CORE-10127` +### `DB-CORE-10127` **Message** @@ -1013,7 +1015,7 @@ The mutation type is not supported. Only the Put or Delete type is supported. Mu This condition is not allowed for the UpdateIf operation. Condition: %s ``` -### `CORE-10128` +### `DB-CORE-10128` **Message** @@ -1021,7 +1023,7 @@ This condition is not allowed for the UpdateIf operation. Condition: %s Cross-partition scan with ordering is not supported in Cassandra ``` -### `CORE-10129` +### `DB-CORE-10129` **Message** @@ -1029,7 +1031,7 @@ Cross-partition scan with ordering is not supported in Cassandra Cross-partition scan with ordering is not supported in Cosmos DB ``` -### `CORE-10130` +### `DB-CORE-10130` **Message** @@ -1037,7 +1039,7 @@ Cross-partition scan with ordering is not supported in Cosmos DB Cross-partition scan with ordering is not supported in DynamoDB ``` -### `CORE-10131` +### `DB-CORE-10131` **Message** @@ -1045,7 +1047,7 @@ Cross-partition scan with ordering is not supported in DynamoDB The directory '%s' does not have write permissions. Please ensure that the current user has write access to the directory. ``` -### `CORE-10132` +### `DB-CORE-10132` **Message** @@ -1053,7 +1055,7 @@ The directory '%s' does not have write permissions. Please ensure that the curre Failed to create the directory '%s'. Please check if you have sufficient permissions and if there are any file system restrictions. Details: %s ``` -### `CORE-10133` +### `DB-CORE-10133` **Message** @@ -1061,7 +1063,7 @@ Failed to create the directory '%s'. Please check if you have sufficient permiss Directory path cannot be null or empty. ``` -### `CORE-10134` +### `DB-CORE-10134` **Message** @@ -1069,7 +1071,7 @@ Directory path cannot be null or empty. No file extension was found on the provided file name %s. ``` -### `CORE-10135` +### `DB-CORE-10135` **Message** @@ -1077,7 +1079,7 @@ No file extension was found on the provided file name %s. Invalid file extension: %s. Allowed extensions are: %s ``` -### `CORE-10136` +### `DB-CORE-10136` **Message** @@ -1085,7 +1087,7 @@ Invalid file extension: %s. Allowed extensions are: %s Getting a transaction state is not supported in single CRUD operation transactions ``` -### `CORE-10137` +### `DB-CORE-10137` **Message** @@ -1093,7 +1095,7 @@ Getting a transaction state is not supported in single CRUD operation transactio Rolling back a transaction is not supported in single CRUD operation transactions ``` -### `CORE-10138` +### `DB-CORE-10138` **Message** @@ -1101,7 +1103,7 @@ Rolling back a transaction is not supported in single CRUD operation transaction Multiple mutations are not supported in single CRUD operation transactions ``` -### `CORE-10139` +### `DB-CORE-10139` **Message** @@ -1109,7 +1111,7 @@ Multiple mutations are not supported in single CRUD operation transactions Beginning a transaction is not allowed in single CRUD operation transactions ``` -### `CORE-10140` +### `DB-CORE-10140` **Message** @@ -1117,7 +1119,7 @@ Beginning a transaction is not allowed in single CRUD operation transactions Resuming a transaction is not allowed in single CRUD operation transactions ``` -### `CORE-10141` +### `DB-CORE-10141` **Message** @@ -1125,7 +1127,7 @@ Resuming a transaction is not allowed in single CRUD operation transactions Using the group commit feature on the Coordinator table with a two-phase commit interface is not allowed ``` -### `CORE-10142` +### `DB-CORE-10142` **Message** @@ -1133,7 +1135,7 @@ Using the group commit feature on the Coordinator table with a two-phase commit This operation is supported only when no conditions are specified. If you want to modify a condition, please use clearConditions() to remove all existing conditions first ``` -### `CORE-10143` +### `DB-CORE-10143` **Message** @@ -1141,7 +1143,7 @@ This operation is supported only when no conditions are specified. If you want t The encryption feature is not enabled. To encrypt data at rest, you must enable this feature. Note that this feature is supported only in the ScalarDB Enterprise edition ``` -### `CORE-10144` +### `DB-CORE-10144` **Message** @@ -1149,7 +1151,7 @@ The encryption feature is not enabled. To encrypt data at rest, you must enable The variable key column size must be greater than or equal to 64 ``` -### `CORE-10145` +### `DB-CORE-10145` **Message** @@ -1157,7 +1159,7 @@ The variable key column size must be greater than or equal to 64 The value of the column %s in the primary key contains an illegal character. Primary-key columns must not contain any of the following characters in Cosmos DB: ':', '/', '\', '#', '?'. Value: %s ``` -### `CORE-10146` +### `DB-CORE-10146` **Message** @@ -1165,7 +1167,7 @@ The value of the column %s in the primary key contains an illegal character. Pri Inserting already-written data is not allowed ``` -### `CORE-10147` +### `DB-CORE-10147` **Message** @@ -1173,7 +1175,7 @@ Inserting already-written data is not allowed Deleting already-inserted data is not allowed ``` -### `CORE-10148` +### `DB-CORE-10148` **Message** @@ -1181,7 +1183,7 @@ Deleting already-inserted data is not allowed Invalid key: Column %s does not exist in the table %s in namespace %s. ``` -### `CORE-10149` +### `DB-CORE-10149` **Message** @@ -1189,7 +1191,7 @@ Invalid key: Column %s does not exist in the table %s in namespace %s. Invalid base64 encoding for blob value for column %s in table %s in namespace %s ``` -### `CORE-10150` +### `DB-CORE-10150` **Message** @@ -1197,7 +1199,7 @@ Invalid base64 encoding for blob value for column %s in table %s in namespace %s Invalid number specified for column %s in table %s in namespace %s ``` -### `CORE-10151` +### `DB-CORE-10151` **Message** @@ -1205,9 +1207,211 @@ Invalid number specified for column %s in table %s in namespace %s Method null argument not allowed ``` -## `CORE-2xxxx` status codes +### `DB-CORE-10152` + +**Message** + +```markdown +The attribute-based access control feature is not enabled. To use this feature, you must enable it. Note that this feature is supported only in the ScalarDB Enterprise edition +``` + +### `DB-CORE-10153` + +**Message** + +```markdown +The provided clustering key %s was not found +``` + +### `DB-CORE-10154` + +**Message** + +```markdown +The column '%s' was not found +``` + +### `DB-CORE-10155` + +**Message** + +```markdown +The provided partition key is incomplete. Required key: %s +``` + +### `DB-CORE-10156` + +**Message** + +```markdown +The provided clustering key order does not match the table schema. Required order: %s +``` + +### `DB-CORE-10157` + +**Message** + +```markdown +The provided partition key order does not match the table schema. Required order: %s +``` + +### `DB-CORE-10158` + +**Message** + +```markdown +This DATE column value is out of the valid range. It must be between 1000-01-01 and 9999-12-12. Value: %s +``` + +### `DB-CORE-10159` + +**Message** + +```markdown +This TIME column value precision cannot be shorter than one microsecond. Value: %s +``` + +### `DB-CORE-10160` + +**Message** + +```markdown +This TIMESTAMP column value is out of the valid range. It must be between 1000-01-01T00:00:00.000 and 9999-12-31T23:59:59.999. Value: %s +``` + +### `DB-CORE-10161` + +**Message** + +```markdown +This TIMESTAMP column value precision cannot be shorter than one millisecond. Value: %s +``` + +### `DB-CORE-10162` + +**Message** + +```markdown +This TIMESTAMPTZ column value is out of the valid range. It must be between 1000-01-01T00:00:00.000Z to 9999-12-31T23:59:59.999Z. Value: %s +``` + +### `DB-CORE-10163` + +**Message** + +```markdown +This TIMESTAMPTZ column value precision cannot be shorter than one millisecond. Value: %s +``` + +### `DB-CORE-10164` + +**Message** + +```markdown +The underlying-storage data type %s is not supported as the ScalarDB %s data type: %s +``` + +### `DB-CORE-10165` + +**Message** + +```markdown +Missing namespace or table: %s, %s +``` + +### `DB-CORE-10166` + +**Message** + +```markdown +Failed to retrieve table metadata. Details: %s +``` + +### `DB-CORE-10167` + +**Message** + +```markdown +Duplicate data mappings found for table '%s' in the control file +``` + +### `DB-CORE-10168` + +**Message** + +```markdown +No mapping found for column '%s' in table '%s' in the control file. Control file validation set at 'FULL'. All columns need to be mapped. +``` + +### `DB-CORE-10169` + +**Message** + +```markdown +The control file is missing data mappings +``` + +### `DB-CORE-10170` + +**Message** + +```markdown +The target column '%s' for source field '%s' could not be found in table '%s' +``` + +### `DB-CORE-10171` + +**Message** + +```markdown +The required partition key '%s' is missing in the control file mapping for table '%s' +``` + +### `DB-CORE-10172` + +**Message** + +```markdown +The required clustering key '%s' is missing in the control file mapping for table '%s' +``` + +### `DB-CORE-10173` + +**Message** + +```markdown +Duplicated data mappings found for column '%s' in table '%s' +``` + +### `DB-CORE-10174` + +**Message** + +```markdown +Missing required field or column mapping for clustering key %s +``` + +### `DB-CORE-10175` + +**Message** + +```markdown +Missing required field or column mapping for partition key %s +``` -### `CORE-20000` +### `DB-CORE-10176` + +**Message** + +```markdown +Missing field or column mapping for %s +``` + +## `DB-CORE-2xxxx` status codes + +The following are status codes and messages for the concurrency error category. + +### `DB-CORE-20000` **Message** @@ -1215,7 +1419,7 @@ Method null argument not allowed No mutation was applied ``` -### `CORE-20001` +### `DB-CORE-20001` **Message** @@ -1223,7 +1427,7 @@ No mutation was applied Logging failed in the batch ``` -### `CORE-20002` +### `DB-CORE-20002` **Message** @@ -1231,7 +1435,7 @@ Logging failed in the batch The operation failed in the batch with type %s ``` -### `CORE-20003` +### `DB-CORE-20003` **Message** @@ -1239,7 +1443,7 @@ The operation failed in the batch with type %s An error occurred in the batch. Details: %s ``` -### `CORE-20004` +### `DB-CORE-20004` **Message** @@ -1247,7 +1451,7 @@ An error occurred in the batch. Details: %s A Paxos phase in the CAS operation failed ``` -### `CORE-20005` +### `DB-CORE-20005` **Message** @@ -1255,7 +1459,7 @@ A Paxos phase in the CAS operation failed The learn phase in the CAS operation failed ``` -### `CORE-20006` +### `DB-CORE-20006` **Message** @@ -1263,7 +1467,7 @@ The learn phase in the CAS operation failed A simple write operation failed ``` -### `CORE-20007` +### `DB-CORE-20007` **Message** @@ -1271,7 +1475,7 @@ A simple write operation failed An error occurred in the mutation. Details: %s ``` -### `CORE-20008` +### `DB-CORE-20008` **Message** @@ -1279,7 +1483,7 @@ An error occurred in the mutation. Details: %s A RetryWith error occurred in the mutation. Details: %s ``` -### `CORE-20009` +### `DB-CORE-20009` **Message** @@ -1287,7 +1491,7 @@ A RetryWith error occurred in the mutation. Details: %s A transaction conflict occurred in the mutation. Details: %s ``` -### `CORE-20010` +### `DB-CORE-20010` **Message** @@ -1295,7 +1499,7 @@ A transaction conflict occurred in the mutation. Details: %s A transaction conflict occurred in the mutation. Details: %s ``` -### `CORE-20011` +### `DB-CORE-20011` **Message** @@ -1303,7 +1507,7 @@ A transaction conflict occurred in the mutation. Details: %s A conflict occurred. Please try restarting the transaction. Details: %s ``` -### `CORE-20012` +### `DB-CORE-20012` **Message** @@ -1311,7 +1515,7 @@ A conflict occurred. Please try restarting the transaction. Details: %s The %s condition of the %s operation is not satisfied. Targeting column(s): %s ``` -### `CORE-20013` +### `DB-CORE-20013` **Message** @@ -1319,7 +1523,7 @@ The %s condition of the %s operation is not satisfied. Targeting column(s): %s The record being prepared already exists ``` -### `CORE-20014` +### `DB-CORE-20014` **Message** @@ -1327,7 +1531,7 @@ The record being prepared already exists A conflict occurred when preparing records ``` -### `CORE-20015` +### `DB-CORE-20015` **Message** @@ -1335,7 +1539,7 @@ A conflict occurred when preparing records The committing state in the coordinator failed. The transaction has been aborted ``` -### `CORE-20016` +### `DB-CORE-20016` **Message** @@ -1343,7 +1547,7 @@ The committing state in the coordinator failed. The transaction has been aborted A conflict occurred during implicit pre-read ``` -### `CORE-20017` +### `DB-CORE-20017` **Message** @@ -1351,7 +1555,7 @@ A conflict occurred during implicit pre-read This record needs to be recovered ``` -### `CORE-20018` +### `DB-CORE-20018` **Message** @@ -1359,7 +1563,7 @@ This record needs to be recovered The record does not exist, so the %s condition is not satisfied ``` -### `CORE-20019` +### `DB-CORE-20019` **Message** @@ -1367,7 +1571,7 @@ The record does not exist, so the %s condition is not satisfied The record exists, so the %s condition is not satisfied ``` -### `CORE-20020` +### `DB-CORE-20020` **Message** @@ -1375,7 +1579,7 @@ The record exists, so the %s condition is not satisfied The condition on the column '%s' is not satisfied ``` -### `CORE-20021` +### `DB-CORE-20021` **Message** @@ -1383,7 +1587,7 @@ The condition on the column '%s' is not satisfied Reading empty records might cause a write skew anomaly, so the transaction has been aborted for safety purposes ``` -### `CORE-20022` +### `DB-CORE-20022` **Message** @@ -1391,7 +1595,7 @@ Reading empty records might cause a write skew anomaly, so the transaction has b An anti-dependency was found. The transaction has been aborted ``` -### `CORE-20023` +### `DB-CORE-20023` **Message** @@ -1399,7 +1603,7 @@ An anti-dependency was found. The transaction has been aborted A transaction conflict occurred in the Insert operation ``` -### `CORE-20024` +### `DB-CORE-20024` **Message** @@ -1407,7 +1611,7 @@ A transaction conflict occurred in the Insert operation The %s condition of the %s operation is not satisfied. Targeting column(s): %s ``` -### `CORE-20025` +### `DB-CORE-20025` **Message** @@ -1415,9 +1619,11 @@ The %s condition of the %s operation is not satisfied. Targeting column(s): %s A transaction conflict occurred in the Insert operation ``` -## `CORE-3xxxx` status codes +## `DB-CORE-3xxxx` status codes + +The following are status codes and messages for the internal error category. -### `CORE-30000` +### `DB-CORE-30000` **Message** @@ -1425,7 +1631,7 @@ A transaction conflict occurred in the Insert operation Creating the namespace failed. Namespace: %s ``` -### `CORE-30001` +### `DB-CORE-30001` **Message** @@ -1433,7 +1639,7 @@ Creating the namespace failed. Namespace: %s Dropping the namespace failed. Namespace: %s ``` -### `CORE-30002` +### `DB-CORE-30002` **Message** @@ -1441,7 +1647,7 @@ Dropping the namespace failed. Namespace: %s Creating the table failed. Table: %s ``` -### `CORE-30003` +### `DB-CORE-30003` **Message** @@ -1449,7 +1655,7 @@ Creating the table failed. Table: %s Dropping the table failed. Table: %s ``` -### `CORE-30004` +### `DB-CORE-30004` **Message** @@ -1457,7 +1663,7 @@ Dropping the table failed. Table: %s Truncating the table failed. Table: %s ``` -### `CORE-30005` +### `DB-CORE-30005` **Message** @@ -1465,7 +1671,7 @@ Truncating the table failed. Table: %s Creating the index failed. Table: %s, Column: %s ``` -### `CORE-30006` +### `DB-CORE-30006` **Message** @@ -1473,7 +1679,7 @@ Creating the index failed. Table: %s, Column: %s Dropping the index failed. Table: %s, Column: %s ``` -### `CORE-30007` +### `DB-CORE-30007` **Message** @@ -1481,7 +1687,7 @@ Dropping the index failed. Table: %s, Column: %s Getting the table metadata failed. Table: %s ``` -### `CORE-30008` +### `DB-CORE-30008` **Message** @@ -1489,7 +1695,7 @@ Getting the table metadata failed. Table: %s Getting the table names in the namespace failed. Namespace: %s ``` -### `CORE-30009` +### `DB-CORE-30009` **Message** @@ -1497,7 +1703,7 @@ Getting the table names in the namespace failed. Namespace: %s Checking the namespace existence failed. Namespace: %s ``` -### `CORE-30010` +### `DB-CORE-30010` **Message** @@ -1505,7 +1711,7 @@ Checking the namespace existence failed. Namespace: %s Checking the table existence failed. Table: %s ``` -### `CORE-30011` +### `DB-CORE-30011` **Message** @@ -1513,7 +1719,7 @@ Checking the table existence failed. Table: %s Checking the index existence failed. Table: %s; Column: %s ``` -### `CORE-30012` +### `DB-CORE-30012` **Message** @@ -1521,7 +1727,7 @@ Checking the index existence failed. Table: %s; Column: %s Repairing the namespace failed. Namespace: %s ``` -### `CORE-30013` +### `DB-CORE-30013` **Message** @@ -1529,7 +1735,7 @@ Repairing the namespace failed. Namespace: %s Repairing the table failed. Table: %s ``` -### `CORE-30014` +### `DB-CORE-30014` **Message** @@ -1537,7 +1743,7 @@ Repairing the table failed. Table: %s Adding a new column to the table failed. Table: %s; Column: %s; ColumnType: %s ``` -### `CORE-30015` +### `DB-CORE-30015` **Message** @@ -1545,7 +1751,7 @@ Adding a new column to the table failed. Table: %s; Column: %s; ColumnType: %s Getting the namespace names failed ``` -### `CORE-30016` +### `DB-CORE-30016` **Message** @@ -1553,7 +1759,7 @@ Getting the namespace names failed Getting the table metadata of the table being imported failed. Table: %s ``` -### `CORE-30017` +### `DB-CORE-30017` **Message** @@ -1561,7 +1767,7 @@ Getting the table metadata of the table being imported failed. Table: %s Importing the table failed. Table: %s ``` -### `CORE-30018` +### `DB-CORE-30018` **Message** @@ -1569,7 +1775,7 @@ Importing the table failed. Table: %s Adding the raw column to the table failed. Table: %s; Column: %s; ColumnType: %s ``` -### `CORE-30019` +### `DB-CORE-30019` **Message** @@ -1577,7 +1783,7 @@ Adding the raw column to the table failed. Table: %s; Column: %s; ColumnType: %s Upgrading the ScalarDB environment failed ``` -### `CORE-30020` +### `DB-CORE-30020` **Message** @@ -1585,7 +1791,7 @@ Upgrading the ScalarDB environment failed Something wrong because WriteType is neither CAS nor SIMPLE ``` -### `CORE-30021` +### `DB-CORE-30021` **Message** @@ -1593,7 +1799,7 @@ Something wrong because WriteType is neither CAS nor SIMPLE An error occurred in the selection. Details: %s ``` -### `CORE-30022` +### `DB-CORE-30022` **Message** @@ -1601,7 +1807,7 @@ An error occurred in the selection. Details: %s An error occurred in the mutation. Details: %s ``` -### `CORE-30023` +### `DB-CORE-30023` **Message** @@ -1609,7 +1815,7 @@ An error occurred in the mutation. Details: %s An error occurred in the selection. Details: %s ``` -### `CORE-30024` +### `DB-CORE-30024` **Message** @@ -1617,7 +1823,7 @@ An error occurred in the selection. Details: %s An error occurred in the mutation. Details: %s ``` -### `CORE-30025` +### `DB-CORE-30025` **Message** @@ -1625,7 +1831,7 @@ An error occurred in the mutation. Details: %s An error occurred in the selection. Details: %s ``` -### `CORE-30026` +### `DB-CORE-30026` **Message** @@ -1633,7 +1839,7 @@ An error occurred in the selection. Details: %s An error occurred in the mutation. Details: %s ``` -### `CORE-30027` +### `DB-CORE-30027` **Message** @@ -1641,7 +1847,7 @@ An error occurred in the mutation. Details: %s An error occurred in the selection. Details: %s ``` -### `CORE-30028` +### `DB-CORE-30028` **Message** @@ -1649,7 +1855,7 @@ An error occurred in the selection. Details: %s Fetching the next result failed ``` -### `CORE-30029` +### `DB-CORE-30029` **Message** @@ -1657,7 +1863,7 @@ Fetching the next result failed Rolling back the transaction failed. Details: %s ``` -### `CORE-30030` +### `DB-CORE-30030` **Message** @@ -1665,7 +1871,7 @@ Rolling back the transaction failed. Details: %s Committing the transaction failed. Details: %s ``` -### `CORE-30031` +### `DB-CORE-30031` **Message** @@ -1673,7 +1879,7 @@ Committing the transaction failed. Details: %s The Get operation failed. Details: %s ``` -### `CORE-30032` +### `DB-CORE-30032` **Message** @@ -1681,7 +1887,7 @@ The Get operation failed. Details: %s The Scan operation failed. Details: %s ``` -### `CORE-30033` +### `DB-CORE-30033` **Message** @@ -1689,7 +1895,7 @@ The Scan operation failed. Details: %s The Put operation failed. Details: %s ``` -### `CORE-30034` +### `DB-CORE-30034` **Message** @@ -1697,7 +1903,7 @@ The Put operation failed. Details: %s The Delete operation failed. Details: %s ``` -### `CORE-30035` +### `DB-CORE-30035` **Message** @@ -1705,7 +1911,7 @@ The Delete operation failed. Details: %s Beginning a transaction failed. Details: %s ``` -### `CORE-30036` +### `DB-CORE-30036` **Message** @@ -1713,7 +1919,7 @@ Beginning a transaction failed. Details: %s Preparing records failed ``` -### `CORE-30037` +### `DB-CORE-30037` **Message** @@ -1721,7 +1927,7 @@ Preparing records failed Validation failed ``` -### `CORE-30038` +### `DB-CORE-30038` **Message** @@ -1729,7 +1935,7 @@ Validation failed Executing implicit pre-read failed ``` -### `CORE-30039` +### `DB-CORE-30039` **Message** @@ -1737,7 +1943,7 @@ Executing implicit pre-read failed Reading a record from the underlying storage failed ``` -### `CORE-30040` +### `DB-CORE-30040` **Message** @@ -1745,7 +1951,7 @@ Reading a record from the underlying storage failed Scanning records from the underlying storage failed ``` -### `CORE-30041` +### `DB-CORE-30041` **Message** @@ -1753,7 +1959,7 @@ Scanning records from the underlying storage failed Rollback failed because the transaction has already been committed ``` -### `CORE-30042` +### `DB-CORE-30042` **Message** @@ -1761,7 +1967,7 @@ Rollback failed because the transaction has already been committed Rollback failed ``` -### `CORE-30043` +### `DB-CORE-30043` **Message** @@ -1769,7 +1975,7 @@ Rollback failed The Insert operation failed. Details: %s ``` -### `CORE-30044` +### `DB-CORE-30044` **Message** @@ -1777,7 +1983,7 @@ The Insert operation failed. Details: %s The Upsert operation failed. Details: %s ``` -### `CORE-30045` +### `DB-CORE-30045` **Message** @@ -1785,9 +1991,35 @@ The Upsert operation failed. Details: %s The Update operation failed. Details: %s ``` -## `CORE-4xxxx` status codes +### `DB-CORE-30046` + +**Message** + +```markdown +Handling the before-preparation snapshot hook failed. Details: %s +``` + +### `DB-CORE-30047` + +**Message** + +```markdown +Something went wrong while trying to save the data. Details: %s +``` + +### `DB-CORE-30048` + +**Message** + +```markdown +Something went wrong while scanning. Are you sure you are running in the correct transaction mode? Details: %s +``` + +## `DB-CORE-4xxxx` status codes + +The following are status codes and messages for the unknown transaction status error category. -### `CORE-40000` +### `DB-CORE-40000` **Message** @@ -1795,7 +2027,7 @@ The Update operation failed. Details: %s Rolling back the transaction failed. Details: %s ``` -### `CORE-40001` +### `DB-CORE-40001` **Message** @@ -1803,7 +2035,7 @@ Rolling back the transaction failed. Details: %s Committing state failed with NoMutationException, but the coordinator status does not exist ``` -### `CORE-40002` +### `DB-CORE-40002` **Message** @@ -1811,7 +2043,7 @@ Committing state failed with NoMutationException, but the coordinator status doe The state cannot be retrieved ``` -### `CORE-40003` +### `DB-CORE-40003` **Message** @@ -1819,7 +2051,7 @@ The state cannot be retrieved The coordinator status is unknown ``` -### `CORE-40004` +### `DB-CORE-40004` **Message** diff --git a/docs/scalardb-data-loader/getting-started-export.mdx b/docs/scalardb-data-loader/getting-started-export.mdx new file mode 100644 index 00000000..9cea0e4f --- /dev/null +++ b/docs/scalardb-data-loader/getting-started-export.mdx @@ -0,0 +1,62 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsEnglish +--- + +# Getting started with Export + +This document explains how you can get started with the ScalarDB Data Loader Export function. + +## Features + +The ScalarDB Data Loader allows you to export data in the following formats: + +- JSON +- JSONLines +- CSV + +Each export will run a ScalarDB scan operation based on the provided CLI arguments when running data loader. + +## Usage + +The data loader export function can be started with the following minimal configuration: + +```console +./scalardb-data-loader export --config scalardb.properties --namespace namespace --table tableName +``` + + + +- --config: the path to the scalardb connection properties file +- --namespace: the namespace of the table that contains the data +- --table: name of the table that contains the data + +By default, the data loader will create the output file in the working directory if the `--output-file` argument is omitted as well. + +### Command-line flags + +Here is a list of flags (options) that can be used with the scalardb data loader. + +| Flag | Description | Usage | +| ----------------- | ------------------------------------------------------------ | ------------------------------------------------------ | +| --config | The path to the scalardb.properties file. If omitted the tool looks for a file named `scalardb.properties` in the current folder | `scalardb-data-loader --config scalardb.properties` | +| --namespace | Namespace to export table data from. Required. | `scalardb-data-loader --namespace namespace` | +| --table | Name of table to export data from. Required. | `scalardb-data-loader --table tableName` | +| --key | Export data of specific Partition key. By default, it exports all data from the specified table. | `scalardb-data-loader --key columnName=value` | +| --sort | Specify a column to sort on. The column needs to be a clustering key. The argument can be repeated to provide multiple sortings. This flag is only applicable to `--key`. | `scalardb-data-loader --sort columnName=desc` | +| --projection | Limit the columns that are exported by providing a projection. The argument can be repeated to provide multiple projections. | `scalardb-data-loader --projection columnName` | +| --start | Clustering key to mark scan start. This flag is only applicable to `--key`. | `scalardb-data-loader --start columnName=value` | +| --start-exclusive | Is the scan start exclusive or not. If omitted, the default value is `false`. This flag is only applicable to `--key` | `scalardb-data-loader --start-exclusive` | +| --end | Clustering key to mark scan end. This flag is only applicable to `--key`. | `scalardb-data-loader --end columnName=value` | +| --end-exclusive | Is the scan start exclusive or not. If omitted, the default value is `false`. This flag is only applicable to `--key` | `scalardb-data-loader --end-exclusive` | +| --limit | Limit the results of the scan. If omitted, the default value is `0` which means their is no limit. | `scalardb-data-loader --limit 1000` | +| --output-file | The name and path of the output file. If omitted, the tool will save the file in the current folder with the following name format:
`export_namespace.tableName_timestamp.json` or `export_namespace.tableName_timestamp.csv`

The ouput folder needs to exists. The dataloader does not create the output folder for you. | `scalardb-data-loader --output-file ./out/output.json` | +| --format | The output format. By default `json` is selected. | `scalardb-data-loader --format json` | +| --metadata | When set to true the transaction metadata is included in the export. By default this is set to `false` | `scalardb-data-loader --metadata` | +| --delimiter | The delimiter used in CSV files. Default value is `;` | `scalardb-data-loader --delimiter ;` | +| --no-headers | Exclude header row in CSV file. Default is `false` | `scalardb-data-loader --no-headers` | +| --threads | Thread count for concurrent processing | `scalardb-data-loader --threads 500` | + diff --git a/docs/scalardb-data-loader/getting-started-import.mdx b/docs/scalardb-data-loader/getting-started-import.mdx new file mode 100644 index 00000000..d93e5ec2 --- /dev/null +++ b/docs/scalardb-data-loader/getting-started-import.mdx @@ -0,0 +1,293 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsEnglish +--- + +# Getting started with Import + +This document explains how you can get started with the ScalarDB Data Loader Import function. + +## Features + +- Import data from JSON or JSONLines files +- Automatic data mapping based on source field name mapping +- Custom Data mapping via a JSON control file +- Import data from one record or line into multiple tables +- Support for INSERT, UPDATE and UPSERT + +## Usage + +The data loader import function can be started with the following minimal configuration: + +```console +./scalardb-data-loader import --config scalardb.properties --namespace namespace --table tableName +``` + +The above configuration starts an import process where no control file is used and the data mapping is applied automatically. + + + +Execute the following steps to successfully import new or existing data + +- Prepare a source file containing data that needs to be imported. + +- Choose the right import mode. By default, the import is done in `upsert` mode which means that data + will be inserted if new or updated if the partition key and/or clustering key is found. Other + options are `insert` mode or `update` mode. + +- Find the correct `namespace` and `table` name to import data to. + +- Determine if you want to run an `all required columns` check for each data row. If enabled data + rows with missing columns will be treated as failed and not imported. + +- Specify the pathnames for the `success` and `failed` output files. By default the data loader + creates the files in the working directory. + +- When dealing with JSON data, determine if you want the JSON output for the success or failed log files to + be in `pretty print` or not. By default, this option is disabled for performance + +- Optionally specify the `threads` argument to tweak performance + +- Run the import from the command line to start importing your data. Make sure to run the ScalarDB Data + Loader in the correct `storage` or `transaction` mode depending on your running ScalarDB instance. + +### Command-line flags + +Here is a list of flags (options) that can be used with the data loader: + +| Flag | Description | Usage | +|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------| +| --mode | The mode in which ScalarDB is running. If omitted, the default value is `storage` | `scalardb-data-loader --mode transaction` | +| --config | the path to the scalardb.properties file. If omitted the tool looks for a file named `scalardb.properties` in the current folder | `scalardb-data-loader --config scalardb.properties` | +| --namespace | Namespace to export table data from. Required when no control file is provided. | `scalardb-data-loader --namespace namespace` | +| --table | name of the table to export data from. Required when no control file is provided. | `scalardb-data-loader --table tableName` | +| --import-mode | Mode to import the data into the ScalarDB table. Supported modes are `insert`, `update` and `upsert`. Optional. Default the value is set to `upsert` | `scalardb-data-loader --import-mode=upsert` | +| --all-columns-required | If set, data rows cannot be imported if they are missing columns. Optional. By default, the check is not executed. | `scalardb-data-loader --all-columns-required` | +| --file | Specify the path to the file that will be imported. Required | `scalardb-data-loader --file ` | +| --success | The path to the file that is created to write the succeed import results to. Both succeed and failed import results will be written to a different file.
Optional. By default, the a new file will be created in the current working directory.

Note: if the file already exists, it will be overridden. | `scalardb-data-loader --success ` | +| --failed | The path to the file that will be created to write the failed import results to.
Optional. By default, the a new file will be created in the current working directory.

Note: if the file already exists, it will be overridden. | `scalardb-data-loader --failed ` | +| --threads | Thread count for concurrent processing | `scalardb-data-loader --threads 500` | +| --format | The format of the import file. `json` and `jsonl` files are supported. Optional, default the value `json` is selected. | `scalardb-data-loader --format json` | +| --ignore-null | The null values in the source file will be ignored, which means that the existing data will not be overwritten. Optional, default the value is `false`. | `scalardb-data-loader --ignore-null` | +| --pretty | When set, the output to the success and failed files is done in `pretty print` mode. By default the option is not enabled. | `scalardb-data-loader --pretty` | +| --control-file | The path to the JSON control file specifying the rules for the custom data mapping and/or multi-table import. | `scalardb-data-loader --control-file control.json` | +| --control-file-validation-level | The validation level for the control file. `MAPPED`, `KEYS` or` FULL`.

Optional and by default the level is set to `MAPPED` | `scalardb-data-loader --control-file-validation-level FULL` | +| --log-put-value | Wether the value that was used in the ScalarDB `PUT` operation is included in the log files or not.
Optional and disabled by default. | `scalardb-data-loader --log-put-value` | +| --error-file-required | To export an optional error file of type JSON when the import file contains CSV data. By default, this option is disabled. | `scalardb-data-loader --error-file-required` | +| --error | To specify an optional error file when the import file contains CSV data. | `scalardb-data-loader --error ` | +| --delimiter | To specify a custom delimiter if the import file contains CSV data. | `scalardb-data-loader --delimiter ` | +| --header | To specify the header row data if the import file contains CSV data and does not have a header row. | `scalardb-data-loader --header ` | + +## Import mode + +The data loader supports the following import modes: + +| Mode | Description | +| ------ | ------------------------------------------------------------ | +| INSERT | Each source record is treated as new data. If the data already exists in the ScalarDB table, based on the partition and clustering key, the import for this source data will fail. | +| UPDATE | Each source record is treated as an update for existing data in the ScalarDB table. If the data does not exist in the table, based on the partition key and clustering key, the import for this source data will fail. | +| UPSERT | If the target ScalarDB table already contains the data, the import will be done via an UPDATE. If the target data is missing, it will be treated as an INSERT. | + +*Note*: + + In the case of `INSERT`, it is required to have matching fields in the source files for each target column via automatic or custom mapping via the control file. This also applies to an `UPSERT` that turns into an `INSERT`. + +## Data mapping + +### Automatic mapping + +When no control file is provided, the data loader will automatically map the fields in the source JSON data to the available columns in the ScalarDB table. If the name does not match, and if all columns are required, it will be treated as a validation error. In this case, the import for this record will fail and the result will be added to the failed output log. + +### Custom mapping + +When the source fields do not match the target column name, it is necessary to use a control file. In this control, file you can specify the custom mapping rules for the field names. + +e.g. the following control file to map the field `custom_id` in the source file to `id` in the target table. + +```json +{ + "tables": [{ + "namespace": "sample", + "table_name": "table1", + "mappings": [{ + "source_field": "custom_id", + "target_column": "id" + }] + } + ] +} +``` + +## Control file + +To allow for custom data mapping or multi-table importing, the data loader supports configuration via a JSON control file. This file needs to be passed in via the `--control-file` argument when starting the data loader. + +### Control file validation levels + +To enforce validation on the control file, the data loader allows you to specify the validation level. Based on the set level, the data loader will run a pre-check and validate the control file based on the level rules. + +The following levels are supported: + +| Level | Description | +| ------ | ------------------------------------------------------------ | +| FULL | This validation makes sure that the control file has mappings for each column in the target ScalarDB table. | +| KEYS | This validation makes sure that mappings are available for each ScalarDB table partition and, if available, clustering keys columns in the control file mappings. | +| MAPPED | The validation makes sure that the provided source fields and target columns exist for only the mappings that are provided in the control file.
No other fields are checked. | + +The validation level is optional and can be set via the `--control-file-validation-level` argument when starting the data loader. + +*Note*: + +This validation is run as a pre-check and does not mean the import process will automatically succeed. + +e.g. If the level is set to mapped and the control file does not contain mappings for each column for an INSERT, the import process will still fail as all columns are required to be mapped for an INSERT. + +## Multi-table import + +The data loader supports multi-table target importing. + +One single row in a JSON or JSONLine file can be imported into multiple tables by specifying table mapping rules in the control file. Currently, multi-table import is not supported without a control file. + +When using multi-table import in ScalarDB transaction mode, a transaction is created for each table import. e.g. If the source record is mapped to 3 tables in the control file, 3 separate transactions are created. + +e.g. The import the following source record into `table1` and `table2` we execute the following steps: + +| Table1 | Table2 | +| ------ | ------ | +| Id | Id | +| price | amount | + +**Source record** + +```json +[{ + "custom_id": 1, + "custom_price": 1000, + "custom_amount": 100 + +}] +``` + +**Control file** + +```json +{ + "tables": [{ + "namespace": "sample", + "table_name": "table1", + "mappings": [{ + "source_field": "custom_id", + "target_column": "id" + }, { + "source_field": "custom_price", + "target_column": "price" + }] + }, + { + "namespace": "sample", + "table_name": "table2", + "mappings": [{ + "source_field": "custom_id", + "target_column": "id" + }, { + "source_field": "custom_amount", + "target_column": "amount" + }] + } + ] +} +``` + + + +## Output logs + +When starting an import task, the data loader logs the import results in two files. One file contains the import data that is successfully imported and one file contains the data that cannot be imported. The failed data will contain an added field that explains why the data could not be imported. This field is called `data_loader_import_status`. + +The file containing the failed imports can be edited to correct the problems and used as the source file for a new import task as is. It is not required to first remove the `data_loader_import_status` field containing the error. This field will be ignored during the import process and the original value will not be included in the new version of the success or failed output file. + +The file with the successfully imported data also contains the `data_loader_import_status` field. In this file, each imported data row has a status message for the data. Whether a new row was created or existing data was updated. + +### Log format + +| Field | Description | +| -------------- | ------------------------------------------------------------ | +| action | The result of the import process for the data record. UPDATE, INSERT or FAILED_DURING_VALIDATION | +| namespace | The name of the namespace of the table that the data is imported in | +| tablename | The name of the table that the data is imported in | +| is_data_mapped | Whether custom data mapping was applied or not based on an available control file. | +| tx_id | The id of the transaction. Only available if the data loader is run in `transaction` mode. | +| value | The final value, after optional data mapping, that the data loader uses in the `PUT` operation. | +| row_number | The line number or record number of the source data. | +| Errors | A list of validation or other errors for things that went wrong during the import process. | + +Example of a JSON formatted success log file: + +```json +[{ + "column_1": 1, + "column_2": 2, + "column_n": 3, + "data_loader_import_status": { + "results": [{ + "action": "UPDATE", + "namespace": "namespace1", + "tableName": "table1", + "is_data_mapped": true, + "tx_id": "value", + "value": "value", + "row_number": "value" + }] + } +}] +``` + + + +Example of a JSON formatted failed log file: + +```json +[{ + "column_1": 1, + "column_2": 2, + "column_n": 3, + "data_loader_import_status": { + "results": [{ + "action": "FAILED_DURING_VALIDATION", + "namespace": "namespace1", + "tableName": "table1", + "is_data_mapped": false, + "value": "value", + "row_number": "value", + "errors": [ + "missing columns found during validation" + ] + }] + } +}] +``` + +## Data duplicates + +The data loader does not handle duplicates by itself. In ScalarDB transaction mode, trying to +update the same target data in fast succession will cause `No Mutation` errors and these are not +handled by the data loader. These failed data rows will be added to the failed import result output +file and can be re-tried for import later. + +However, it is recommended to make sure the import file does not contain updates or inserts on the +same partition keys and/or clustering keys as the correct state cannot be guaranteed by the data +loader. + + + +## Storage vs transaction mode + +ScalarDB supports both storage and transaction mode and this support is included in the data loader import process. + +When the loader is started in storage mode, each import is executed in a non-transactional way. + +Starting the loader in transaction mode will use transactions to import the data. Currently, each row is imported via a separate transaction. When importing a single record into multiple tables, a separate transaction is created for each table import. + diff --git a/docs/scalardb-graphql/scalardb-graphql-status-codes.mdx b/docs/scalardb-graphql/scalardb-graphql-status-codes.mdx index 5db42eca..db653dbc 100644 --- a/docs/scalardb-graphql/scalardb-graphql-status-codes.mdx +++ b/docs/scalardb-graphql/scalardb-graphql-status-codes.mdx @@ -10,13 +10,15 @@ This page provides a list of error codes in ScalarDB GraphQL. ## Error code classes and descriptions -| Class | Description | -|:----------------|:-----------------------------------| -| `GRAPHQL-1xxxx` | Errors for the user error category | +| Class | Description | +|:-------------------|:-----------------------------------| +| `DB-GRAPHQL-1xxxx` | Errors for the user error category | -## `GRAPHQL-1xxxx` status codes +## `DB-GRAPHQL-1xxxx` status codes -### `GRAPHQL-10000` +The following are status codes and messages for the user error category. + +### `DB-GRAPHQL-10000` **Message** @@ -24,7 +26,7 @@ This page provides a list of error codes in ScalarDB GraphQL. A long value was expected ``` -### `GRAPHQL-10001` +### `DB-GRAPHQL-10001` **Message** @@ -32,7 +34,7 @@ A long value was expected The value is out of range for BigIntValue ``` -### `GRAPHQL-10002` +### `DB-GRAPHQL-10002` **Message** @@ -40,7 +42,7 @@ The value is out of range for BigIntValue A long, integer, or string value was expected ``` -### `GRAPHQL-10003` +### `DB-GRAPHQL-10003` **Message** @@ -48,7 +50,7 @@ A long, integer, or string value was expected The AST type `IntValue` was expected ``` -### `GRAPHQL-10004` +### `DB-GRAPHQL-10004` **Message** @@ -56,7 +58,7 @@ The AST type `IntValue` was expected A float value was expected ``` -### `GRAPHQL-10005` +### `DB-GRAPHQL-10005` **Message** @@ -64,7 +66,7 @@ A float value was expected An integer or float value was expected ``` -### `GRAPHQL-10006` +### `DB-GRAPHQL-10006` **Message** @@ -72,7 +74,7 @@ An integer or float value was expected The AST type `IntValue` or `FloatValue` was expected ``` -### `GRAPHQL-10007` +### `DB-GRAPHQL-10007` **Message** @@ -80,7 +82,7 @@ The AST type `IntValue` or `FloatValue` was expected The type is not supported. Type: %s ``` -### `GRAPHQL-10008` +### `DB-GRAPHQL-10008` **Message** @@ -88,7 +90,7 @@ The type is not supported. Type: %s The field `%s` requires a `@transaction` or `@twoPhaseCommit` directive with proper arguments ``` -### `GRAPHQL-10009` +### `DB-GRAPHQL-10009` **Message** @@ -96,7 +98,7 @@ The field `%s` requires a `@transaction` or `@twoPhaseCommit` directive with pro The field `%s` cannot be used together with other fields ``` -### `GRAPHQL-10010` +### `DB-GRAPHQL-10010` **Message** @@ -104,7 +106,7 @@ The field `%s` cannot be used together with other fields The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the transaction ``` -### `GRAPHQL-10011` +### `DB-GRAPHQL-10011` **Message** @@ -112,7 +114,7 @@ The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the t `%s` and `prepare` cannot be run simultaneously ``` -### `GRAPHQL-10012` +### `DB-GRAPHQL-10012` **Message** @@ -120,7 +122,7 @@ The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the t `%s` and `join` cannot be run simultaneously ``` -### `GRAPHQL-10013` +### `DB-GRAPHQL-10013` **Message** @@ -128,7 +130,7 @@ The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the t The `@transaction` directive with the `id` argument is required to `%s` the transaction ``` -### `GRAPHQL-10014` +### `DB-GRAPHQL-10014` **Message** @@ -136,7 +138,7 @@ The `@transaction` directive with the `id` argument is required to `%s` the tran `%s` and `commit` cannot be run simultaneously ``` -### `GRAPHQL-10015` +### `DB-GRAPHQL-10015` **Message** @@ -144,7 +146,7 @@ The `@transaction` directive with the `id` argument is required to `%s` the tran An object cannot be annotated with both `@transaction` and `@twoPhaseCommit` directives ``` -### `GRAPHQL-10016` +### `DB-GRAPHQL-10016` **Message** @@ -152,7 +154,7 @@ An object cannot be annotated with both `@transaction` and `@twoPhaseCommit` dir The `join` argument of the `@twoPhaseCommit` directive requires a transaction `id` argument ``` -### `GRAPHQL-10017` +### `DB-GRAPHQL-10017` **Message** @@ -160,7 +162,7 @@ The `join` argument of the `@twoPhaseCommit` directive requires a transaction `i `%s` requires the mutation object to be annotated with a `@twoPhaseCommit` directive ``` -### `GRAPHQL-10018` +### `DB-GRAPHQL-10018` **Message** @@ -168,7 +170,7 @@ The `join` argument of the `@twoPhaseCommit` directive requires a transaction `i The `%s` clustering key must have only one of the following: %s ``` -### `GRAPHQL-10019` +### `DB-GRAPHQL-10019` **Message** @@ -176,7 +178,7 @@ The `%s` clustering key must have only one of the following: %s A string variable is expected but got %s ``` -### `GRAPHQL-10020` +### `DB-GRAPHQL-10020` **Message** @@ -184,7 +186,7 @@ A string variable is expected but got %s Unexpected value of id: %s ``` -### `GRAPHQL-10021` +### `DB-GRAPHQL-10021` **Message** @@ -192,7 +194,7 @@ Unexpected value of id: %s A Boolean variable is expected but got %s ``` -### `GRAPHQL-10022` +### `DB-GRAPHQL-10022` **Message** @@ -200,7 +202,7 @@ A Boolean variable is expected but got %s Unexpected value of %s: %s ``` -### `GRAPHQL-10023` +### `DB-GRAPHQL-10023` **Message** @@ -208,7 +210,7 @@ Unexpected value of %s: %s Invalid column. Column: %s; Type: %s ``` -### `GRAPHQL-10024` +### `DB-GRAPHQL-10024` **Message** @@ -216,7 +218,7 @@ Invalid column. Column: %s; Type: %s Unexpected value of type: %s ``` -### `GRAPHQL-10025` +### `DB-GRAPHQL-10025` **Message** @@ -224,7 +226,7 @@ Unexpected value of type: %s Only one of the following can be specified: %s ``` -### `GRAPHQL-10026` +### `DB-GRAPHQL-10026` **Message** @@ -232,7 +234,7 @@ Only one of the following can be specified: %s Unexpected mutation field: %s ``` -### `GRAPHQL-10027` +### `DB-GRAPHQL-10027` **Message** diff --git a/docs/scalardb-samples/scalardb-analytics-spark-sample/README.mdx b/docs/scalardb-samples/scalardb-analytics-spark-sample/README.mdx index 0898b31d..93581b2e 100644 --- a/docs/scalardb-samples/scalardb-analytics-spark-sample/README.mdx +++ b/docs/scalardb-samples/scalardb-analytics-spark-sample/README.mdx @@ -1,7 +1,6 @@ --- tags: - Enterprise Option - - Public Preview displayed_sidebar: docsEnglish --- diff --git a/docs/scalardb-sql/grammar.mdx b/docs/scalardb-sql/grammar.mdx index 53080d80..84182505 100644 --- a/docs/scalardb-sql/grammar.mdx +++ b/docs/scalardb-sql/grammar.mdx @@ -48,6 +48,10 @@ displayed_sidebar: docsEnglish - [RESUME](#resume) - [SHOW USERS](#show-users) - [SHOW GRANTS](#show-grants) +- Literal + - [Text](#text) + - [Numeric](#numeric) + - [Date and time](#date-and-time) ## DDL @@ -116,7 +120,7 @@ CREATE TABLE [IF NOT EXISTS] [.] ( ... ) [WITH creation_options] -data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB +data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB | DATE | TIME | TIMESTAMP | TIMESTAMPTZ creation_options:
ADD [COLUMN] data_type [ENCRYPTED] -data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB +data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB | DATE | TIME | TIMESTAMP | TIMESTAMPTZ ``` - You can specify `ENCRYPTED` for the column to encrypt the data in that column. @@ -581,7 +585,7 @@ The `SELECT` command retrieves records from the database. ScalarDB SQL creates a 1. If you fully specify the primary-key columns in the `WHERE` clause, the `SELECT` command will use a `Get` operation for a single record in a single partition. 2. If you fully specify the partition key and properly specify the clustering key and order in the `WHERE` and `ORDER BY` clauses, the `SELECT` command will use a `Scan` operation for records in a single partition. For more details, see the [Examples of partition scans and index scans](#examples-of-partition-scans-and-index-scans). -3. If you specify the indexed column value with the `equal to` (`=`) operator in the `WHERE` clause without the `ORDER BY` clause, the `SELECT` command will use an index `Scan` operation. +3. If you specify the indexed column value literal with the `equal to` (`=`) operator in the `WHERE` clause without the `ORDER BY` clause, the `SELECT` command will use an index `Scan` operation. 4. For other cases, the `SELECT` command will be converted to a cross-partition `Scan` operation. You need to enable the cross-partition scan option and the cross-partition scan with filtering and ordering options if you want to flexibly retrieve records across partitions with arbitrary conditions and orderings. Currently, the ordering option is available only for JDBC databases. For details about configurations, see [Cross-partition scan configurations](../configurations.mdx#cross-partition-scan-configurations) and [ScalarDB Cluster SQL configurations](../scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx#scalardb-cluster-sql-client-configurations). @@ -606,7 +610,7 @@ join_specification: [INNER] JOIN [.]
[AS ] ON join_predicate: identifier = identifier and_predicates: predicate | (predicate [AND predicate ...]) or_predicates: predicate | (predicate [OR predicate ...]) -predicate: identifier operator | identifier BETWEEN AND | identifier [NOT] LIKE [ESCAPE ] | identifier IS [NOT] NULL +predicate: identifier operator | identifier BETWEEN AND | identifier [NOT] LIKE [ESCAPE ] | identifier IS [NOT] NULL identifier: [[.]
.] | [alias.] operator: = | <> | != | > | >= | < | <= order: ASC | DESC @@ -629,7 +633,7 @@ order: ASC | DESC - You can use arbitrary predicates for any columns in the `WHERE` clause. - In the `WHERE` clause, predicates must be an OR-wise of `and_predicates` (known as disjunctive normal form) or an AND-wise of `or_predicates` (known as conjunctive normal form). - When connecting multiple `and_predicates` or `or_predicates`, which have more than one predicate, you need to put parentheses around `and_predicates` and `or_predicates`. -- You can specify `` to a bind marker (positional `?` and named `:`). +- You can specify `` to a bind marker (positional `?` and named `:`). See the [Literal](#literal) section for the literal syntax. - You cannot specify encrypted columns in the `WHERE` clause. `LIKE` predicate: @@ -1079,11 +1083,11 @@ This command returns the following column: ```sql INSERT INTO [.]
[( [, ] ...)] - VALUES ( [, ] ...) [, ( [, ] ...)] ... + VALUES ( [, ] ...) [, ( [, ] ...)] ... ``` - You must specify a full primary key in `INSERT`. -- You can specify `` to a bind marker (positional `?` and named `:`). +- You can specify `` to a bind marker (positional `?` and named `:`). See the [Literal](#literal) section for the literal syntax. #### Examples @@ -1149,11 +1153,11 @@ This command returns the following column: ```sql UPSERT INTO [.]
[( [, ] ...)] - VALUES ( [, ] ...) [, ( [, ] ...)] ... + VALUES ( [, ] ...) [, ( [, ] ...)] ... ``` - You must specify a full primary key in `UPSERT`. -- You can specify `` to a bind marker (positional `?` and named `:`). +- You can specify `` to a bind marker (positional `?` and named `:`). See the [Literal](#literal) section for the literal syntax. #### Examples @@ -1227,13 +1231,13 @@ This command returns the following column: ```sql UPDATE [.]
[AS ] - SET = [, = ] ... + SET = [, = ] ... [WHERE and_predicates [OR and_predicates ...] | or_predicates [AND or_predicates ...]] identifier: [[.]
.] | [alias.] and_predicates: predicate | (predicate [AND predicate ...]) or_predicates: predicate | (predicate [OR predicate ...]) -predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL +predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL operator: = | <> | != | > | >= | < | <= ``` @@ -1244,7 +1248,7 @@ operator: = | <> | != | > | >= | < | <= - You can use arbitrary predicates for any columns in the `WHERE` clause. - In the `WHERE` clause, predicates must be an OR-wise of `and_predicates` (known as disjunctive normal form) or an AND-wise of `or_predicates` (known as conjunctive normal form). - When connecting multiple `and_predicates` or `or_predicates`, which have more than one predicate, you need to put parentheses around `and_predicates` and `or_predicates`. -- You can specify `` to a bind marker (positional `?` and named `:`). +- You can specify `` to a bind marker (positional `?` and named `:`). See the [Literal](#literal) section for the literal syntax. - You cannot specify encrypted columns in the `WHERE` clause. `LIKE` predicate: @@ -1460,7 +1464,7 @@ DELETE FROM [.]
[AS ] identifier: [[.]
.] | [alias.] and_predicates: predicate | (predicate [AND predicate ...]) or_predicates: predicate | (predicate [OR predicate ...]) -predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL +predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL operator: = | <> | != | > | >= | < | <= ``` @@ -1471,7 +1475,7 @@ operator: = | <> | != | > | >= | < | <= - You can use arbitrary predicates for any columns in the `WHERE` clause. - In the `WHERE` clause, predicates must be an OR-wise of `and_predicates` (known as disjunctive normal form) or an AND-wise of `or_predicates` (known as conjunctive normal form). - When connecting multiple `and_predicates` or `or_predicates`, which have more than one predicate, you need to put parentheses around `and_predicates` and `or_predicates`. -- You can specify `` to a bind marker (positional `?` and named `:`). +- You can specify `` to a bind marker (positional `?` and named `:`). See the [Literal](#literal) section for the literal syntax. - You cannot specify encrypted columns in the `WHERE` clause. `LIKE` predicate: @@ -2350,3 +2354,30 @@ ShowGrantsStatement statement1 = StatementBuilder.showGrants().build(); // Show privileges granted to user1 ShowGrantsStatement statement2 = StatementBuilder.showGrants().forUser("user1").build(); ``` + +## Literal + +Literal and column values are synonymous and refer to a fixed data value used when writing SQL statements. For example, `1`, `'abc'`, `1.23`, and `'2024-05-19'` are literals. + +### Text + +A text literal is a sequence of characters enclosed in single quotes `'`, such as `'abc'` and `'abc def'`. + +### Numeric + +Numeric literals include exact-value (INTEGER and BIGINT) and approximate-value (FLOAT and DOUBLE) literals. + +An exact-value literal is a sequence of digits, such as `123` and `-5`. + +An approximate-value literal is a sequence of digits with a decimal point, such as `4.754` and `-1.2`. + +### Date and time + +Date and time literals are text literals that follow a specific format to represents DATE, TIME, TIMESTAMP, and TIMESTAMPTZ values. + +| ScalarDB type | Format | Note | Example | +|---------------|-------------------------------------|------------------------------------------------------------------|----------------------------------------------------------------------------------| +| DATE | **'YYYY-MM-DD'** | | `'2024-05-19'` | +| TIME | **'HH:MM:[SS[.FFFFFF]]'** | Second and fractional second (up to 1 microsecond) are optional. | `'12:34'`, `'12:34:56'`, `'12:34:56.789123'` | +| TIMESTAMP | **'YYYY-MM-DD HH:MM:[SS[.FFF]]'** | Second and fractional second (up to 1 millisecond) are optional. | `'2024-05-19 12:34'`, `'2024-05-19 12:34:56'`, `'2024-05-19 12:34:56.789'` | +| TIMESTAMPTZ | **'YYYY-MM-DD HH:MM:[SS[.FFF]] Z'** | Second and fractional second (up to 1 millisecond) are optional. | '`2024-05-19 12:34 Z'`, `'2024-05-19 12:34:56 Z'`, `'2024-05-19 12:34:56.789 Z'` | diff --git a/docs/scalardb-sql/jdbc-guide.mdx b/docs/scalardb-sql/jdbc-guide.mdx index ec4e69e4..8aaa0dd7 100644 --- a/docs/scalardb-sql/jdbc-guide.mdx +++ b/docs/scalardb-sql/jdbc-guide.mdx @@ -82,15 +82,19 @@ Since ScalarDB doesn't support all the data types defined in JDBC, the following The data type mapping between ScalarDB and JDBC is as follows: -| ScalarDB Type | JDBC (Java) Type | -|---------------|--------------------| -| BOOLEAN | boolean or Boolean | -| INT | int or Integer | -| BIGINT | long or Long | -| FLOAT | float or Float | -| DOUBLE | double or Double | -| TEXT | String | -| BLOB | byte[] | +| ScalarDB Type | JDBC (Java) Type | +|---------------|-------------------------| +| BOOLEAN | boolean or Boolean | +| INT | int or Integer | +| BIGINT | long or Long | +| FLOAT | float or Float | +| DOUBLE | double or Double | +| TEXT | String | +| BLOB | byte[] | +| DATE | java.time.LocalDate | +| TIME | java.time.LocalTime | +| TIMESTAMP | java.time.LocalDateTime | +| TIMESTAMPTZ | java.time.Instant | How to get the data from a `java.sql.ResultSet` object for each data type is as follows: @@ -118,6 +122,18 @@ try (ResultSet resultSet = ...) { // Get a BLOB value of a column byte[] blobValue = resultSet.getBytes(""); + + // Get a DATE value of a column + LocalDate dateValue = resultSet.getObject("", LocalDate.class); + + // Get a TIME value of a column + LocalTime timeValue = resultSet.getObject("", LocalTime.class); + + // Get a TIMESTAMP value of a column + LocalDateTime timestampValue = resultSet.getObject("", LocalDateTime.class); + + // Get a TIMESTAMPTZ value of a column + Instant timestampTZValue = resultSet.getObject("", Instant.class); } ``` @@ -145,6 +161,18 @@ try (PreparedStatement preparedStatement = ...) { // Set a BLOB value as parameter preparedStatement.setBytes(8, ); + + //Set a DATE value as parameter + preparedStatement.setObject(9, ); + + //Set a TIME value as parameter + preparedStatement.setObject(10, ); + + //Set a TIMESTAMP value as parameter + preparedStatement.setObject(11, ); + + //Set a TIMESTAMPTZ value as parameter + preparedStatement.setObject(12, ); preparedStatement.execute(); } @@ -192,4 +220,4 @@ Please see also [ScalarDB SQL API Guide](sql-api-guide.mdx) for more details on - [Java JDBC API](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) - [ScalarDB SQL API Guide](sql-api-guide.mdx) -- [Javadoc for ScalarDB JDBC](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-jdbc/3.14.1/index.html) +- [Javadoc for ScalarDB JDBC](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-jdbc/3.15.1/index.html) diff --git a/docs/scalardb-sql/scalardb-sql-status-codes.mdx b/docs/scalardb-sql/scalardb-sql-status-codes.mdx index f14e8231..8dbe6bf5 100644 --- a/docs/scalardb-sql/scalardb-sql-status-codes.mdx +++ b/docs/scalardb-sql/scalardb-sql-status-codes.mdx @@ -10,13 +10,15 @@ This page provides a list of error codes in ScalarDB SQL. ## Error code classes and descriptions -| Class | Description | -|:------------|:-----------------------------------| -| `SQL-1xxxx` | Errors for the user error category | +| Class | Description | +|:---------------|:-----------------------------------| +| `DB-SQL-1xxxx` | Errors for the user error category | -## `SQL-1xxxx` status codes +## `DB-SQL-1xxxx` status codes -### `SQL-10000` +The following are status codes and messages for the user error category. + +### `DB-SQL-10000` **Message** @@ -24,7 +26,7 @@ This page provides a list of error codes in ScalarDB SQL. The namespace does not exist. Namespace: %s ``` -### `SQL-10001` +### `DB-SQL-10001` **Message** @@ -32,7 +34,7 @@ The namespace does not exist. Namespace: %s The table does not exist. Table: %s ``` -### `SQL-10002` +### `DB-SQL-10002` **Message** @@ -40,7 +42,7 @@ The table does not exist. Table: %s The column %s does not exist ``` -### `SQL-10003` +### `DB-SQL-10003` **Message** @@ -48,7 +50,7 @@ The column %s does not exist The column does not exist. Table: %s; Column: %s ``` -### `SQL-10004` +### `DB-SQL-10004` **Message** @@ -56,7 +58,7 @@ The column does not exist. Table: %s; Column: %s The column index is out of bounds. Index: %d; Size: %d ``` -### `SQL-10005` +### `DB-SQL-10005` **Message** @@ -64,7 +66,7 @@ The column index is out of bounds. Index: %d; Size: %d A positional bind marker is not allowed when binding named values ``` -### `SQL-10006` +### `DB-SQL-10006` **Message** @@ -72,7 +74,7 @@ A positional bind marker is not allowed when binding named values A named bind marker is not allowed when binding positional values ``` -### `SQL-10007` +### `DB-SQL-10007` **Message** @@ -80,7 +82,7 @@ A named bind marker is not allowed when binding positional values Cannot convert BLOB values to SQL. Please use a bind marker for a BLOB value and bind it separately ``` -### `SQL-10008` +### `DB-SQL-10008` **Message** @@ -88,7 +90,7 @@ Cannot convert BLOB values to SQL. Please use a bind marker for a BLOB value and No namespace name has been specified. Set a default namespace name, or explicitly specify a namespace name ``` -### `SQL-10009` +### `DB-SQL-10009` **Message** @@ -96,7 +98,7 @@ No namespace name has been specified. Set a default namespace name, or explicitl Zero bytes may not occur in string parameters ``` -### `SQL-10010` +### `DB-SQL-10010` **Message** @@ -104,7 +106,7 @@ Zero bytes may not occur in string parameters Mixing positional values and named values is not allowed ``` -### `SQL-10011` +### `DB-SQL-10011` **Message** @@ -112,7 +114,7 @@ Mixing positional values and named values is not allowed Preparing a transaction is supported only in two-phase commit transaction mode ``` -### `SQL-10012` +### `DB-SQL-10012` **Message** @@ -120,7 +122,7 @@ Preparing a transaction is supported only in two-phase commit transaction mode Validating a transaction is supported only in two-phase commit transaction mode ``` -### `SQL-10013` +### `DB-SQL-10013` **Message** @@ -128,7 +130,7 @@ Validating a transaction is supported only in two-phase commit transaction mode The previous transaction is still in progress. Commit, roll back, or suspend the previous transaction first ``` -### `SQL-10014` +### `DB-SQL-10014` **Message** @@ -136,7 +138,7 @@ The previous transaction is still in progress. Commit, roll back, or suspend the This SQL session has already been closed ``` -### `SQL-10015` +### `DB-SQL-10015` **Message** @@ -144,7 +146,7 @@ This SQL session has already been closed A transaction has not begun ``` -### `SQL-10016` +### `DB-SQL-10016` **Message** @@ -152,7 +154,7 @@ A transaction has not begun The type %s is not supported ``` -### `SQL-10017` +### `DB-SQL-10017` **Message** @@ -160,7 +162,7 @@ The type %s is not supported No connection mode implementations are found. Please add a connection mode implementation to the classpath ``` -### `SQL-10018` +### `DB-SQL-10018` **Message** @@ -168,7 +170,7 @@ No connection mode implementations are found. Please add a connection mode imple The connection mode is not specified, but multiple connection mode implementations are found. Specify one of the following connection modes: %s ``` -### `SQL-10019` +### `DB-SQL-10019` **Message** @@ -176,7 +178,7 @@ The connection mode is not specified, but multiple connection mode implementatio The connection mode '%s' is not found. Specify one of the following connection modes: %s ``` -### `SQL-10020` +### `DB-SQL-10020` **Message** @@ -184,7 +186,7 @@ The connection mode '%s' is not found. Specify one of the following connection m Access denied: You need the %s privilege on the namespace %s to execute this operation ``` -### `SQL-10021` +### `DB-SQL-10021` **Message** @@ -192,7 +194,7 @@ Access denied: You need the %s privilege on the namespace %s to execute this ope Access denied: You need the %s privilege on the table %s to execute this operation ``` -### `SQL-10022` +### `DB-SQL-10022` **Message** @@ -200,7 +202,7 @@ Access denied: You need the %s privilege on the table %s to execute this operati Access denied: You can't grant the %s privilege because you don't have the same privilege on the table %s ``` -### `SQL-10023` +### `DB-SQL-10023` **Message** @@ -208,7 +210,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't grant the %s privilege because you don't have the same privilege on the namespace %s ``` -### `SQL-10024` +### `DB-SQL-10024` **Message** @@ -216,7 +218,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the table %s ``` -### `SQL-10025` +### `DB-SQL-10025` **Message** @@ -224,7 +226,7 @@ Access denied: You can't revoke the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the namespace %s ``` -### `SQL-10026` +### `DB-SQL-10026` **Message** @@ -232,7 +234,7 @@ Access denied: You can't revoke the %s privilege because you don't have the same Syntax error. Line %d:%d %s ``` -### `SQL-10027` +### `DB-SQL-10027` **Message** @@ -240,7 +242,7 @@ Syntax error. Line %d:%d %s Syntax error. Multiple PRIMARY KEYs specified (exactly one required) ``` -### `SQL-10028` +### `DB-SQL-10028` **Message** @@ -248,7 +250,7 @@ Syntax error. Multiple PRIMARY KEYs specified (exactly one required) Cannot grant the INSERT privilege if the user doesn't have the UPDATE privilege ``` -### `SQL-10029` +### `DB-SQL-10029` **Message** @@ -256,7 +258,7 @@ Cannot grant the INSERT privilege if the user doesn't have the UPDATE privilege Cannot grant the UPDATE privilege if the user doesn't have the INSERT privilege ``` -### `SQL-10030` +### `DB-SQL-10030` **Message** @@ -264,7 +266,7 @@ Cannot grant the UPDATE privilege if the user doesn't have the INSERT privilege Cannot grant the UPDATE privilege if the user doesn't have the SELECT privilege ``` -### `SQL-10031` +### `DB-SQL-10031` **Message** @@ -272,7 +274,7 @@ Cannot grant the UPDATE privilege if the user doesn't have the SELECT privilege Cannot grant the DELETE privilege if the user doesn't have the SELECT privilege ``` -### `SQL-10032` +### `DB-SQL-10032` **Message** @@ -280,7 +282,7 @@ Cannot grant the DELETE privilege if the user doesn't have the SELECT privilege Cannot revoke the SELECT privilege if the user has the UPDATE privilege ``` -### `SQL-10033` +### `DB-SQL-10033` **Message** @@ -288,7 +290,7 @@ Cannot revoke the SELECT privilege if the user has the UPDATE privilege Cannot revoke the SELECT privilege if the user has the DELETE privilege ``` -### `SQL-10034` +### `DB-SQL-10034` **Message** @@ -296,7 +298,7 @@ Cannot revoke the SELECT privilege if the user has the DELETE privilege Cannot revoke the INSERT privilege if the user has the UPDATE privilege ``` -### `SQL-10035` +### `DB-SQL-10035` **Message** @@ -304,7 +306,7 @@ Cannot revoke the INSERT privilege if the user has the UPDATE privilege Cannot revoke the UPDATE privilege if the user has the INSERT privilege ``` -### `SQL-10036` +### `DB-SQL-10036` **Message** @@ -312,7 +314,7 @@ Cannot revoke the UPDATE privilege if the user has the INSERT privilege A non-clustering-key column is specified in the CLUSTERING ORDER directive. Column: %s ``` -### `SQL-10037` +### `DB-SQL-10037` **Message** @@ -320,7 +322,7 @@ A non-clustering-key column is specified in the CLUSTERING ORDER directive. Colu The order of the columns in the CLUSTERING ORDER directive must match the order for the clustering key (%s must appear before %s) ``` -### `SQL-10038` +### `DB-SQL-10038` **Message** @@ -328,7 +330,7 @@ The order of the columns in the CLUSTERING ORDER directive must match the order The CLUSTERING ORDER is missing for the column %s ``` -### `SQL-10039` +### `DB-SQL-10039` **Message** @@ -336,7 +338,7 @@ The CLUSTERING ORDER is missing for the column %s Empty SQL is specified ``` -### `SQL-10040` +### `DB-SQL-10040` **Message** @@ -344,7 +346,7 @@ Empty SQL is specified Multiple SQLs are not allowed ``` -### `SQL-10041` +### `DB-SQL-10041` **Message** @@ -352,7 +354,7 @@ Multiple SQLs are not allowed The column %s is ambiguous ``` -### `SQL-10042` +### `DB-SQL-10042` **Message** @@ -360,7 +362,7 @@ The column %s is ambiguous The column %s cannot be specified in the %s clause. Only the columns in the table %s can be specified in the %s clause ``` -### `SQL-10043` +### `DB-SQL-10043` **Message** @@ -368,7 +370,7 @@ The column %s cannot be specified in the %s clause. Only the columns in the tabl An unbound bind marker is still in the escape character of the LIKE predicate for the column %s ``` -### `SQL-10044` +### `DB-SQL-10044` **Message** @@ -376,7 +378,7 @@ An unbound bind marker is still in the escape character of the LIKE predicate fo The escape character must be a TEXT value for the LIKE predicate for the column %s ``` -### `SQL-10045` +### `DB-SQL-10045` **Message** @@ -384,7 +386,7 @@ The escape character must be a TEXT value for the LIKE predicate for the column The value of the predicate must not be null unless the operator is 'IS NULL' or 'IS NOT NULL'. Predicate: %s ``` -### `SQL-10046` +### `DB-SQL-10046` **Message** @@ -392,7 +394,7 @@ The value of the predicate must not be null unless the operator is 'IS NULL' or An unbound bind marker is still in the LIMIT clause ``` -### `SQL-10047` +### `DB-SQL-10047` **Message** @@ -400,7 +402,7 @@ An unbound bind marker is still in the LIMIT clause The LIMIT must be an INT value ``` -### `SQL-10048` +### `DB-SQL-10048` **Message** @@ -408,7 +410,7 @@ The LIMIT must be an INT value Unmatched column names or values ``` -### `SQL-10049` +### `DB-SQL-10049` **Message** @@ -416,7 +418,7 @@ Unmatched column names or values The column %s is specified twice ``` -### `SQL-10050` +### `DB-SQL-10050` **Message** @@ -424,7 +426,7 @@ The column %s is specified twice All primary key columns must be specified in the INSERT or UPSERT statement ``` -### `SQL-10051` +### `DB-SQL-10051` **Message** @@ -432,7 +434,7 @@ All primary key columns must be specified in the INSERT or UPSERT statement An unbound bind marker is still in the value of the column %s ``` -### `SQL-10052` +### `DB-SQL-10052` **Message** @@ -440,7 +442,7 @@ An unbound bind marker is still in the value of the column %s Unmatched column type. The type of the column %s should be %s, but a boolean value (BOOLEAN) is specified ``` -### `SQL-10053` +### `DB-SQL-10053` **Message** @@ -448,7 +450,7 @@ Unmatched column type. The type of the column %s should be %s, but a boolean val Unmatched column type. The type of the column %s should be %s, but a decimal number (INT or BIGINT) is specified ``` -### `SQL-10054` +### `DB-SQL-10054` **Message** @@ -456,15 +458,15 @@ Unmatched column type. The type of the column %s should be %s, but a decimal num Unmatched column type. The type of the column %s should be %s, but a floating point number (FLOAT or DOUBLE) is specified ``` -### `SQL-10055` +### `DB-SQL-10055` **Message** ```markdown -Unmatched column type. The type of the column %s should be %s, but a string (TEXT) is specified +Unmatched column type. The type of the column %s should be %s, but a string (TEXT, DATE, TIME, TIMESTAMP, or TIMESTAMPTZ) is specified ``` -### `SQL-10056` +### `DB-SQL-10056` **Message** @@ -472,7 +474,7 @@ Unmatched column type. The type of the column %s should be %s, but a string (TEX Unmatched column type. The type of the column %s should be %s, but a BOOLEAN value is specified ``` -### `SQL-10057` +### `DB-SQL-10057` **Message** @@ -480,7 +482,7 @@ Unmatched column type. The type of the column %s should be %s, but a BOOLEAN val Unmatched column type. The type of the column %s should be %s, but an INT value is specified ``` -### `SQL-10058` +### `DB-SQL-10058` **Message** @@ -488,7 +490,7 @@ Unmatched column type. The type of the column %s should be %s, but an INT value Unmatched column type. The type of the column %s should be %s, but a BIGINT value is specified ``` -### `SQL-10059` +### `DB-SQL-10059` **Message** @@ -496,7 +498,7 @@ Unmatched column type. The type of the column %s should be %s, but a BIGINT valu Unmatched column type. The type of the column %s should be %s, but a FLOAT value is specified ``` -### `SQL-10060` +### `DB-SQL-10060` **Message** @@ -504,7 +506,7 @@ Unmatched column type. The type of the column %s should be %s, but a FLOAT value Unmatched column type. The type of the column %s should be %s, but a DOUBLE value is specified ``` -### `SQL-10061` +### `DB-SQL-10061` **Message** @@ -512,7 +514,7 @@ Unmatched column type. The type of the column %s should be %s, but a DOUBLE valu Unmatched column type. The type of the column %s should be %s, but a TEXT value is specified ``` -### `SQL-10062` +### `DB-SQL-10062` **Message** @@ -520,7 +522,7 @@ Unmatched column type. The type of the column %s should be %s, but a TEXT value Unmatched column type. The type of the column %s should be %s, but a BLOB value is specified ``` -### `SQL-10063` +### `DB-SQL-10063` **Message** @@ -528,7 +530,7 @@ Unmatched column type. The type of the column %s should be %s, but a BLOB value RIGHT OUTER JOIN can only be specified as the first join ``` -### `SQL-10064` +### `DB-SQL-10064` **Message** @@ -536,7 +538,7 @@ RIGHT OUTER JOIN can only be specified as the first join The JOIN predicate is not specified properly. Predicate: %s ``` -### `SQL-10065` +### `DB-SQL-10065` **Message** @@ -544,7 +546,7 @@ The JOIN predicate is not specified properly. Predicate: %s The data types of the columns in the JOIN predicate do not match. Predicate: %s ``` -### `SQL-10066` +### `DB-SQL-10066` **Message** @@ -552,7 +554,7 @@ The data types of the columns in the JOIN predicate do not match. Predicate: %s The column %s is specified twice in the JOIN predicates. Predicates: %s ``` -### `SQL-10067` +### `DB-SQL-10067` **Message** @@ -560,7 +562,7 @@ The column %s is specified twice in the JOIN predicates. Predicates: %s Either all primary key columns or an indexed column for the table %s must be specified in the JOIN predicates. Predicates: %s ``` -### `SQL-10068` +### `DB-SQL-10068` **Message** @@ -568,7 +570,7 @@ Either all primary key columns or an indexed column for the table %s must be spe Cannot issue mutation DML SQLs such as INSERT, UPDATE or DELETE with executeQuery() ``` -### `SQL-10069` +### `DB-SQL-10069` **Message** @@ -576,7 +578,7 @@ Cannot issue mutation DML SQLs such as INSERT, UPDATE or DELETE with executeQuer Cannot issue SELECT SQLs with executeUpdate() ``` -### `SQL-10070` +### `DB-SQL-10070` **Message** @@ -584,7 +586,7 @@ Cannot issue SELECT SQLs with executeUpdate() The TWO_PHASE_COMMIT_TRANSACTION mode is not supported in the current transaction manager ``` -### `SQL-10071` +### `DB-SQL-10071` **Message** @@ -592,10 +594,50 @@ The TWO_PHASE_COMMIT_TRANSACTION mode is not supported in the current transactio The encrypted column %s is not allowed in the %s clause ``` -### `SQL-10072` +### `DB-SQL-10072` **Message** ```markdown The user %s does not exist ``` + +### `DB-SQL-10073` + +**Message** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a DATE value is specified +``` + +### `DB-SQL-10074` + +**Message** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a TIME value is specified +``` + +### `DB-SQL-10075` + +**Message** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a TIMESTAMP value is specified +``` + +### `DB-SQL-10076` + +**Message** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a TIMESTAMPTZ value is specified +``` + +### `DB-SQL-10077` + +**Message** + +```markdown +The policy %s does not exist +``` diff --git a/docs/scalardb-sql/spring-data-guide.mdx b/docs/scalardb-sql/spring-data-guide.mdx index 1ae85d9a..5cb673f1 100644 --- a/docs/scalardb-sql/spring-data-guide.mdx +++ b/docs/scalardb-sql/spring-data-guide.mdx @@ -814,4 +814,4 @@ In order to use Spring Data JDBC for ScalarDB, the following features are implem - [Spring Data JDBC - Reference Documentation](https://docs.spring.io/spring-data/jdbc/docs/3.0.x/reference/html/) - [ScalarDB JDBC Guide](jdbc-guide.mdx) -- [Javadoc for Spring Data JDBC for ScalarDB](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-spring-data/3.14.1/index.html) +- [Javadoc for Spring Data JDBC for ScalarDB](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-spring-data/3.15.1/index.html) diff --git a/docs/scalardb-sql/sql-api-guide.mdx b/docs/scalardb-sql/sql-api-guide.mdx index f74e5e65..048355c3 100644 --- a/docs/scalardb-sql/sql-api-guide.mdx +++ b/docs/scalardb-sql/sql-api-guide.mdx @@ -111,7 +111,7 @@ ResultSet resultSet = sqlSession.execute(statement); ``` `Statement` objects can be built by `StatementBuilder` that has factory methods for corresponding SQLs. -Please see [the Javadoc of `StatementBuilder`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/statement/builder/StatementBuilder.html) and [ScalarDB SQL Grammar](grammar.mdx) for more details. +Please see [the Javadoc of `StatementBuilder`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/statement/builder/StatementBuilder.html) and [ScalarDB SQL Grammar](grammar.mdx) for more details. ### Handle ResultSet objects @@ -142,7 +142,7 @@ If you want to get the metadata of the `ResultSet` object, you can use the `getC ColumnDefinitions columnDefinitions = resultSet.getColumnDefinitions(); ``` -Please see [the Javadoc of `ColumnDefinitions`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/ColumnDefinition.html) for more details. +Please see [the Javadoc of `ColumnDefinitions`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/ColumnDefinition.html) for more details. ### Handle Record objects @@ -182,6 +182,22 @@ ByteBuffer blobValueGottenByIndex = record.getBlob(); // Get a BLOB value of a column as a byte array byte[] blobValueAsBytesGottenByName = record.getBlobAsBytes(""); byte[] blobValueAsBytesGottenByIndex = record.getBlobAsBytes(); + +// Get a DATE value of a column as a LocalDate +LocalDate dateValueGottenByName = record.getDate(""); +LocalDate dateValueGottenByName = record.getDate(); + +// Get a TIME value of a column as a LocalTime +LocalTime timeValueGottenByName = record.getTime(""); +LocalTime timeValueGottenByName = record.getTime(); + +// Get a TIMESTAMP value of a column as a LocalDateTime +LocalDateTime timestampValueGottenByName = record.getTimestamp(""); +LocalDateTime timestampValueGottenByName = record.getTimestamp(); + +// Get a TIMESTAMPTZ value of a column as an Instant +Instant timestampTZValueGottenByName = record.getTimestampTZ(""); +Instant timestampTZValueGottenByName = record.getTimestampTZ(); ``` And if you need to check if a value of a column is null, you can use the `isNull("")` or `isNull()` method. @@ -192,7 +208,7 @@ boolean isNullGottenByName = record.isNull(""); boolean isNullGottenByIndex = record.isNull(); ``` -Please see also [the Javadoc of `Record`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/Record.html) for more details. +Please see also [the Javadoc of `Record`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/Record.html) for more details. ### Prepared Statements @@ -237,7 +253,7 @@ preparedStatement2 .execute(); ``` -Please see also [the Javadoc of `PreparedStatement`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/PreparedStatement.html) for more details. +Please see also [the Javadoc of `PreparedStatement`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/PreparedStatement.html) for more details. ## Execute transactions @@ -351,10 +367,10 @@ You can get metadata with the `SqlSession.getMetadata()` method as follows: Metadata metadata = sqlSession.getMetadata(); ``` -Please see [the Javadoc of `Metadata`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/metadata/Metadata.html) for the details. +Please see [the Javadoc of `Metadata`](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/metadata/Metadata.html) for the details. ## References - [ScalarDB SQL Grammar](grammar.mdx) - [Two-phase Commit Transactions](../two-phase-commit-transactions.mdx) -- [Javadoc for ScalarDB SQL](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.14.1/index.html) +- [Javadoc for ScalarDB SQL](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.15.1/index.html) diff --git a/docs/schema-loader-import.mdx b/docs/schema-loader-import.mdx index 7be02965..48246901 100644 --- a/docs/schema-loader-import.mdx +++ b/docs/schema-loader-import.mdx @@ -67,7 +67,11 @@ The following is a sample schema for importing tables. For the sample schema fil ```json { "sample_namespace1.sample_table1": { - "transaction": true + "transaction": true, + "override-columns-type": { + "c3": "TIME", + "c5": "TIMESTAMP" + } }, "sample_namespace1.sample_table2": { "transaction": true @@ -78,69 +82,75 @@ The following is a sample schema for importing tables. For the sample schema fil } ``` -The import table schema consists of a namespace name, a table name, and a `transaction` field. The `transaction` field indicates whether the table will be imported for transactions or not. If you set the `transaction` field to `true` or don't specify the `transaction` field, this tool creates a table with transaction metadata if needed. If you set the `transaction` field to `false`, this tool imports a table without adding transaction metadata (that is, for a table using the [Storage API](run-non-transactional-storage-operations-through-primitive-crud-interface.mdx)). +The import table schema consists of a namespace name, a table name, a `transaction` field, and an optional `override-columns-type` field: +- The `transaction` field indicates whether or not the table will be imported for transactions. If you set the `transaction` field to `true` or don't specify the `transaction` field, this tool will create a table with transaction metadata, if needed. If you set the `transaction` field to `false`, this tool will import a table without adding transaction metadata (that is, for a table using the [Storage API](run-non-transactional-storage-operations-through-primitive-crud-interface.mdx)). +- The `override-columns-type` field indicates the columns for which you wish to override the default data-type mapping. This field is optional and only needs to be set with the columns requiring a type override. ## Data-type mapping from JDBC databases to ScalarDB The following table shows the supported data types in each JDBC database and their mapping to the ScalarDB data types. Select your database and check if your existing tables can be imported. - - | MySQL | ScalarDB | Notes | - |--------------|----------|----------------------------| - | bigint | BIGINT | See warning [1](#1) below. | - | binary | BLOB | | - | bit | BOOLEAN | | - | blob | BLOB | See warning [2](#2) below. | - | char | TEXT | See warning [2](#2) below. | - | double | DOUBLE | | - | float | FLOAT | | - | int | INT | | - | int unsigned | BIGINT | See warning [2](#2) below. | - | integer | INT | | - | longblob | BLOB | | - | longtext | TEXT | | - | mediumblob | BLOB | See warning [2](#2) below. | - | mediumint | INT | See warning [2](#2) below. | - | mediumtext | TEXT | See warning [2](#2) below. | - | smallint | INT | See warning [2](#2) below. | - | text | TEXT | See warning [2](#2) below. | - | tinyblob | BLOB | See warning [2](#2) below. | - | tinyint | INT | See warning [2](#2) below. | - | tinyint(1) | BOOLEAN | | - | tinytext | TEXT | See warning [2](#2) below. | - | varbinary | BLOB | See warning [2](#2) below. | - | varchar | TEXT | See warning [2](#2) below. | + + | MySQL | ScalarDB | Notes | + |--------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------| + | bigint | BIGINT | See warning [1](#1) below. | + | binary | BLOB | | + | bit | BOOLEAN | | + | blob | BLOB | See warning [2](#2) below. | + | char | TEXT | See warning [2](#2) below. | + | date | DATE | | + | datetime | TIMESTAMP (default) and TIMESTAMPTZ | When importing as TIMESTAMPTZ, ScalarDB will assume the data to be on the UTC time zone. See warning [6](#6) below. | + | double | DOUBLE | | + | float | FLOAT | | + | int | INT | | + | int unsigned | BIGINT | See warning [2](#2) below. | + | integer | INT | | + | longblob | BLOB | | + | longtext | TEXT | | + | mediumblob | BLOB | See warning [2](#2) below. | + | mediumint | INT | See warning [2](#2) below. | + | mediumtext | TEXT | See warning [2](#2) below. | + | smallint | INT | See warning [2](#2) below. | + | text | TEXT | See warning [2](#2) below. | + | time | TIME | | + | timestamp | TIMESTAMPTZ | | + | tinyblob | BLOB | See warning [2](#2) below. | + | tinyint | INT | See warning [2](#2) below. | + | tinyint(1) | BOOLEAN | | + | tinytext | TEXT | See warning [2](#2) below. | + | varbinary | BLOB | See warning [2](#2) below. | + | varchar | TEXT | See warning [2](#2) below. | Data types not listed in the above are not supported. The following are some common data types that are not supported: - bigint unsigned - bit(n) (n > 1) - - date - - datetime - decimal - enum - geometry - json - numeric - set - - time - - timestamp - year - | PostgreSQL/YugabyteDB | ScalarDB | Notes | - |-----------------------|----------|----------------------------| - | bigint | BIGINT | See warning [1](#1) below. | - | boolean | BOOLEAN | | - | bytea | BLOB | | - | character | TEXT | See warning [2](#2) below. | - | character varying | TEXT | See warning [2](#2) below. | - | double precision | DOUBLE | | - | integer | INT | | - | real | FLOAT | | - | smallint | INT | See warning [2](#2) below. | - | text | TEXT | | + | PostgreSQL/YugabyteDB | ScalarDB | Notes | + |--------------------------|-------------|----------------------------| + | bigint | BIGINT | See warning [1](#1) below. | + | boolean | BOOLEAN | | + | bytea | BLOB | | + | character | TEXT | See warning [2](#2) below. | + | character varying | TEXT | See warning [2](#2) below. | + | date | DATE | | + | double precision | DOUBLE | | + | integer | INT | | + | real | FLOAT | | + | smallint | INT | See warning [2](#2) below. | + | text | TEXT | | + | time | TIME | | + | timestamp | TIMESTAMP | | + | timestamp with time zone | TIMESTAMPTZ | | Data types not listed in the above are not supported. The following are some common data types that are not supported: @@ -149,7 +159,6 @@ The following table shows the supported data types in each JDBC database and the - box - cidr - circle - - date - inet - interval - json @@ -165,10 +174,9 @@ The following table shows the supported data types in each JDBC database and the - pg_snapshot - point - polygon + - serial - smallserial - - serial - - time - - timestamp + - time with time zone - tsquery - tsvector - txid_snapshot @@ -176,27 +184,29 @@ The following table shows the supported data types in each JDBC database and the - xml - | Oracle | ScalarDB | Notes | - |---------------|-----------------|----------------------------| - | binary_double | DOUBLE | | - | binary_float | FLOAT | | - | blob | BLOB | See warning [3](#3) below. | - | char | TEXT | See warning [2](#2) below. | - | clob | TEXT | | - | float | DOUBLE | See warning [4](#4) below. | - | long | TEXT | | - | long raw | BLOB | | - | nchar | TEXT | See warning [2](#2) below. | - | nclob | TEXT | | - | number | BIGINT / DOUBLE | See warning [5](#5) below. | - | nvarchar2 | TEXT | See warning [2](#2) below. | - | raw | BLOB | See warning [2](#2) below. | - | varchar2 | TEXT | See warning [2](#2) below. | + | Oracle | ScalarDB | Notes | + |--------------------------------|-------------------------------------|----------------------------| + | binary_double | DOUBLE | | + | binary_float | FLOAT | | + | blob | BLOB | See warning [3](#3) below. | + | char | TEXT | See warning [2](#2) below. | + | clob | TEXT | | + | date | DATE (default), TIME, and TIMESTAMP | See warning [6](#6) below. | + | float | DOUBLE | See warning [4](#4) below. | + | long | TEXT | | + | long raw | BLOB | | + | nchar | TEXT | See warning [2](#2) below. | + | nclob | TEXT | | + | number | BIGINT / DOUBLE | See warning [5](#5) below. | + | nvarchar2 | TEXT | See warning [2](#2) below. | + | raw | BLOB | See warning [2](#2) below. | + | timestamp | TIMESTAMP (default) and TIME | See warning [6](#6) below. | + | timestamp with time zone | TIMESTAMPTZ | | + | timestamp with local time zone | TIMESTAMPTZ | | + | varchar2 | TEXT | See warning [2](#2) below. | Data types not listed in the above are not supported. The following are some common data types that are not supported: - - date - - timestamp - interval - rowid - urowid @@ -204,32 +214,34 @@ The following table shows the supported data types in each JDBC database and the - json - | SQL Server | ScalarDB | Notes | - |------------|----------|----------------------------| - | bigint | BIGINT | See warning [1](#1) below. | - | binary | BLOB | See warning [2](#2) below. | - | bit | BOOLEAN | | - | char | TEXT | See warning [2](#2) below. | - | float | DOUBLE | | - | image | BLOB | | - | int | INT | | - | nchar | TEXT | See warning [2](#2) below. | - | ntext | TEXT | | - | nvarchar | TEXT | See warning [2](#2) below. | - | real | FLOAT | | - | smallint | INT | See warning [2](#2) below. | - | text | TEXT | | - | tinyint | INT | See warning [2](#2) below. | - | varbinary | BLOB | See warning [2](#2) below. | - | varchar | TEXT | See warning [2](#2) below. | + | SQL Server | ScalarDB | Notes | + |----------------|-------------|----------------------------| + | bigint | BIGINT | See warning [1](#1) below. | + | binary | BLOB | See warning [2](#2) below. | + | bit | BOOLEAN | | + | char | TEXT | See warning [2](#2) below. | + | date | DATE | | + | datetime | TIMESTAMP | + | datetime2 | TIMESTAMP | | + | float | DOUBLE | | + | image | BLOB | | + | int | INT | | + | nchar | TEXT | See warning [2](#2) below. | + | ntext | TEXT | | + | nvarchar | TEXT | See warning [2](#2) below. | + | offsetdatetime | TIMESTAMPTZ | | + | real | FLOAT | | + | smalldatetime | TIMESTAMP | | + | smallint | INT | See warning [2](#2) below. | + | text | TEXT | | + | time | TIME | | + | tinyint | INT | See warning [2](#2) below. | + | varbinary | BLOB | See warning [2](#2) below. | + | varchar | TEXT | See warning [2](#2) below. | Data types not listed in the above are not supported. The following are some common data types that are not supported: - cursor - - date - - datetime - - datetime2 - - datetimeoffset - decimal - geography - geometry @@ -237,10 +249,8 @@ The following table shows the supported data types in each JDBC database and the - money - numeric - rowversion - - smalldatetime - smallmoney - sql_variant - - time - uniqueidentifier - xml @@ -264,6 +274,9 @@ The following table shows the supported data types in each JDBC database and the
  • ScalarDB does not support Oracle `numeric(p, s)` columns (`p` is precision and `s` is scale) when `p` is larger than 15 due to the maximum size of the data type in ScalarDB. Note that ScalarDB maps the column to `BIGINT` if `s` is zero; otherwise ScalarDB will map the column to `DOUBLE`. For the latter case, be aware that round-up or round-off can happen in the underlying database since the floating-point value will be cast to a fixed-point value.
  • +
  • + The underlying storage type can be mapped to several ScalarDB data types. To override the default mapping, use the `override-columns-type` field in the import schema file. For an example, see [Sample import schema file](#sample-import-schema-file). +
  • ::: diff --git a/docs/schema-loader.mdx b/docs/schema-loader.mdx index 65070200..7a34000a 100644 --- a/docs/schema-loader.mdx +++ b/docs/schema-loader.mdx @@ -532,24 +532,42 @@ Auto-scaling for Cosmos DB for NoSQL is enabled only when this option is set to The following table shows the supported data types in ScalarDB and their mapping to the data types of other databases. -| ScalarDB | Cassandra | Cosmos DB for NoSQL | DynamoDB | MySQL | PostgreSQL/YugabyteDB | Oracle | SQL Server | SQLite | -|-----------|-----------|---------------------|----------|----------|-----------------------|----------------|-----------------|---------| -| BOOLEAN | boolean | boolean (JSON) | BOOL | boolean | boolean | number(1) | bit | boolean | -| INT | int | number (JSON) | N | int | int | number(10) | int | int | -| BIGINT | bigint | number (JSON) | N | bigint | bigint | number(19) | bigint | bigint | -| FLOAT | float | number (JSON) | N | real | real | binary_float | float(24) | float | -| DOUBLE | double | number (JSON) | N | double | double precision | binary_double | float | double | -| TEXT | text | string (JSON) | S | longtext | text | varchar2(4000) | varchar(8000) | text | -| BLOB | blob | string (JSON) | B | longblob | bytea | RAW(2000) | varbinary(8000) | blob | +| ScalarDB | Cassandra | Cosmos DB for NoSQL | DynamoDB | MySQL/MariaDB | PostgreSQL/YugabyteDB | Oracle | SQL Server | SQLite | +|-------------|----------------------|---------------------|----------|---------------|--------------------------|--------------------------|-----------------|---------| +| BOOLEAN | boolean | boolean (JSON) | BOOL | boolean | boolean | number(1) | bit | boolean | +| INT | int | number (JSON) | N | int | int | number(10) | int | int | +| BIGINT | bigint | number (JSON) | N | bigint | bigint | number(19) | bigint | bigint | +| FLOAT | float | number (JSON) | N | real | real | binary_float | float(24) | float | +| DOUBLE | double | number (JSON) | N | double | double precision | binary_double | float | double | +| TEXT | text | string (JSON) | S | longtext | text | varchar2(4000) | varchar(8000) | text | +| BLOB | blob | string (JSON) | B | longblob | bytea | RAW(2000) | varbinary(8000) | blob | +| DATE | date | number (JSON) | N | date | date | date | date | int | +| TIME | time | number (JSON) | N | time | time | timestamp | time | bigint | +| TIMESTAMP | Unsupported | number (JSON) | N | datetime | timestamp | timestamp | datetime2 | bigint | +| TIMESTAMPTZ | timestamp | number (JSON) | N | datetime | timestamp with time zone | timestamp with time zone | datetimeoffset | bigint | + +:::note + +TIMESTAMP represents a date-time without time zone information, while TIMESTAMPTZ represents a date-time on the UTC time zone. + +::: However, the following data types in JDBC databases are converted differently when they are used as a primary key or a secondary index key. This is due to the limitations of RDB data types. -| ScalarDB | MySQL | PostgreSQL/YugabyteDB | Oracle | +| ScalarDB | MySQL/MariaDB | PostgreSQL/YugabyteDB | Oracle | |----------|---------------|-----------------------|--------------| | TEXT | VARCHAR(64) | VARCHAR(10485760) | VARCHAR2(64) | | BLOB | VARBINARY(64) | | RAW(64) | -The value range of `BIGINT` in ScalarDB is from -2^53 to 2^53, regardless of the underlying database. +The following data types have a value range and precision regardless of the underlying database. + +| Type | Minimum | Maximum | Precision | +|-------------|---------------------------|---------------------------|---------------| +| BIGINT | -2^53 | 2^53 | - | +| DATE | 1000-01-01 | 9999-12-31 | 1 day | +| TIME | 00:00:00.000000 | 23:59:59.999999 | 1 microsecond | +| TIMESTAMP | 1000-01-01 00:00:00.000 | 9999-12-31 23:59:59.999 | 1 millisecond | +| TIMESTAMPTZ | 1000-01-01 00:00:00.000 Z | 9999-12-31 23:59:59.999 Z | 1 millisecond | :::note diff --git a/docusaurus.config.js b/docusaurus.config.js index 4e4fd327..426bc46b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -73,9 +73,15 @@ const config = { }, */ current: { // When a new version is released and this is no longer the current version, change this to the version number and then delete this comment. - label: '3.14', + label: '3.15', path: 'latest', // When a new version is released and this is no longer the current version, change this to the version number and then delete this comment. banner: 'none', + className: '3.15.1', + }, + "3.14": { // When a new version is released and this is no longer the current version, change this to the version number and then delete this comment. + label: '3.14', + path: '3.14', // When a new version is released and this is no longer the current version, change this to the version number and then delete this comment. + banner: 'none', className: '3.14.1', }, "3.13": { @@ -155,7 +161,7 @@ const config = { // The following versions have Japanese docs, so the language dropdown should be displayed only when visitors are reading these versions of docs. customFields: { - allowedLanguageDropdownVersions: ["current", "latest", "3.13"], + allowedLanguageDropdownVersions: ["current", "latest", "3.14", "3.13"], }, plugins: [ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current.json b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current.json index 64f8ccdb..c38fe261 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current.json +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current.json @@ -1,6 +1,6 @@ { "version.label": { - "message": "3.14", + "message": "3.15", "description": "The label for version current" } } diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/_develop-run-analytical-queries-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/_develop-run-analytical-queries-overview.mdx index 388617ff..2a5ed4e9 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/_develop-run-analytical-queries-overview.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/_develop-run-analytical-queries-overview.mdx @@ -2,7 +2,6 @@ tags: - Community - Enterprise Option - - Public Preview displayed_sidebar: docsJapanese --- diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/api-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/api-guide.mdx index b6e875d0..ee43751f 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/api-guide.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/api-guide.mdx @@ -335,7 +335,7 @@ admin.dropCoordinatorTables(ifExist); ```java // Import the table "ns.tbl". If the table is already managed by ScalarDB, the target table does not // exist, or the table does not meet the requirements of the ScalarDB table, an exception will be thrown. -admin.importTable("ns", "tbl", options); +admin.importTable("ns", "tbl", options, overrideColumnsType); ``` :::warning @@ -593,6 +593,18 @@ ByteBuffer blobValue = result.getBlob(""); // Get the BLOB value of a column as a `byte` array. byte[] blobValueAsBytes = result.getBlobAsBytes(""); + +// Get the DATE value of a column as a `LocalDate`. +LocalDate dateValue = result.getDate(""); + +// Get the TIME value of a column as a `LocalTime`. +LocalTime timeValue = result.getTime(""); + +// Get the TIMESTAMP value of a column as a `LocalDateTime`. +LocalDateTime timestampValue = result.getTimestamp(""); + +// Get the TIMESTAMPTZ value of a column as a `Instant`. +Instant timestampTZValue = result.getTimestampTZ(""); ``` 列の値が null かどうかを確認する必要がある場合は、`isNull("")` メソッドを使用できます。 @@ -602,7 +614,7 @@ byte[] blobValueAsBytes = result.getBlobAsBytes(""); boolean isNull = result.isNull(""); ``` -詳細については、使用している ScalarDB のバージョンの [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) の `Result` ページを参照してください。 +詳細については、使用している ScalarDB のバージョンの [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/index.html) の `Result` ページを参照してください。 ###### セカンダリインデックスを使用して `Get` を実行する diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/configurations.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/configurations.mdx index 410032a1..e400686c 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/configurations.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/configurations.mdx @@ -78,24 +78,25 @@ Consensus Commit にはストレージ抽象化レイヤーがあり、複数の 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` | 接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | `100` | - | `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` | + | 名前 | 説明 | デフォルト | + |-----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------| + | `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` | 接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | `100` | + | `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` | + | `scalar.db.jdbc.oracle.time_column.default_date_component` | Oracle で `TIME` データを格納するために使用される日付コンポーネントの値。Oracle には日付コンポーネントなしで時間のみを格納するデータ型がないため、ScalarDB は比較と並べ替えを容易にするために、同じ日付コンポーネント値を持つ `TIME` データを保存します。 | `1970-01-01` | :::note diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/index.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/index.mdx index c554090b..7d69dc3c 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/index.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/index.mdx @@ -8,7 +8,7 @@ displayed_sidebar: docsJapanese # ScalarDB -import { CardRowAbout, CardRowQuickstart, CardRowDevelop, CardRowDeploy, CardRowMigrate, CardRowManage, CardRowReference } from '/src/components/Cards/ja-jp/3.14'; +import { CardRowAbout, CardRowQuickstart, CardRowDevelop, CardRowDeploy, CardRowMigrate, CardRowManage, CardRowReference } from '/src/components/Cards/ja-jp/3.15'; ScalarDB は、さまざまなデータベース向けのハイブリッドトランザクション/分析処理 (HTAP) エンジンです。データベース上でミドルウェアとして実行され、ACID トランザクションとリアルタイム分析を実現することでさまざまなデータベースを仮想的に統合し、複数のデータベースまたは単一のデータベースの複数のインスタンスの管理の複雑さを簡素化します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-overview.mdx index 30de2164..1e9d5741 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-overview.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-overview.mdx @@ -41,6 +41,5 @@ ScalarDB Cluster は Enterprise エディションでのみ利用できます。 :::note - ScalarDB Analytics with PostgreSQL は Apache 2 ライセンスでのみ利用可能で、商用ライセンスは必要ありません。 -- ScalarDB Analytics with Spark はパブリックプレビュー中です。 ::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-scalardb-analytics-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-scalardb-analytics-overview.mdx index 612fc4b7..082d9be0 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-scalardb-analytics-overview.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/quickstart-scalardb-analytics-overview.mdx @@ -2,7 +2,6 @@ tags: - Community - Enterprise Option - - Public Preview displayed_sidebar: docsJapanese --- diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-notes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-notes.mdx index c4ae1631..9a66d2ca 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-notes.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-notes.mdx @@ -6,97 +6,37 @@ tags: displayed_sidebar: docsJapanese --- -# ScalarDB 3.14 リリースノート +# ScalarDB 3.15 リリースノート import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; -このページには、ScalarDB 3.14 のリリースノートのリストが含まれています。 +このページには、ScalarDB 3.15 のリリースノートのリストが含まれています。 -## v3.14.1 +## v3.15.1 -**発売日:** 2025年01月23日 +**発売日:** 2025年02月20日 ### まとめ -このリリースには、いくつかの改善とバグ修正が含まれています。 +このリリースには、多数の機能強化、改善、バグ修正が含まれています。[3.15.0 リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.0)は破棄され、これが 3.15 の最初の公式リリースとなります。 -### Community edition +### 機能強化 -#### 改善点 +- 操作属性が導入され、操作に追加のキー値情報を含める機能が提供されました。([#2333](https://github.com/scalar-labs/scalardb/pull/2333)) +- 新しい時間関連のデータ型 DATE、TIME、TIMESTAMP、および TIMESTAMPTZ が追加されました。 ([#2468](https://github.com/scalar-labs/scalardb/pull/2468) [#2491](https://github.com/scalar-labs/scalardb/pull/2491)) -- ScalarDB は、MySQL 8.4 および 8.0、PostgreSQL 17、16、15、14、13、Amazon Aurora PostgreSQL 16、15、14、13、Amazon Aurora MySQL 3 および 2 をサポートするようになりました。(#2302) +### 改善点 -#### バグの修正 +- ScalarDB は、MySQL 8.4、8.0、PostgreSQL 17、16、15、14、13、Amazon Aurora PostgreSQL 16、15、14、13 をサポートするようになりました。 Amazon Aurora MySQL 3、および 2。([#2302](https://github.com/scalar-labs/scalardb/pull/2302)) +- `jdbc:mariadb` で始まる接続 URL には MariaDB Connector/J JDBC ドライバーを使用します。([#2391](https://github.com/scalar-labs/scalardb/pull/2391)) +- Cassandra および Cosmos DB のステートメントハンドラーで不要なログ記録を削除しました。([#2469](https://github.com/scalar-labs/scalardb/pull/2469)) -- Cosmos DB アダプターの主鍵列の検証を追加しました。検証により、主鍵列のテキスト値に不正な文字 (`:`、`/`、`\`、`#`、`?`) が含まれていないことが保証されます。(#2292) -- Consensus Commit のトランザクションで同じレコードに対して複数のミューテーションが発生する動作を修正しました。 (#2340) -- Cosmos アダプターで存在しないレコードを削除するときの動作を修正しました。(#2341) -- GetBuilder と ScanBuilder のバグを修正しました。(#2352) +### バグの修正 -### Enterprise edition - -#### バグの修正 - -##### ScalarDB SQL - -- [Spring Data JDBC For ScalarDB] `existsById()` API が動作しないというバグを修正しました。 - -## v3.14.0 - -**発売日:** 2024年11月22日 - -### まとめ - -このリリースには、多くの機能強化、改善、バグ修正、脆弱性修正が含まれています。 - -### Community edition - -#### 機能強化 - -- ScalarDB に暗号化された列の概念を追加しました。([#1907](https://github.com/scalar-labs/scalardb/pull/1907) [#1975](https://github.com/scalar-labs/scalardb/pull/1975)) -- MariaDB 11.4 および Oracle 19 のサポートを追加しました。([#2061](https://github.com/scalar-labs/scalardb/pull/2061)) - -#### 改善点 - -- MySQL および Oracle の鍵列サイズを変更するオプションを追加し、デフォルトとして 128 バイトを使用しました。([#2245](https://github.com/scalar-labs/scalardb/pull/2245)) -- メタデータキャッシュの有効期限 (`scalar.db.metadata.cache_expiration_time_secs`) のデフォルト値を 60 秒に変更しました。([#2274](https://github.com/scalar-labs/scalardb/pull/2274)) - -#### バグの修正 - -- Get/Scan オブジェクトで指定されたテーブルが Consensus Commit で見つからない場合に `NullPointerException` が発生するバグを修正しました。([#2083](https://github.com/scalar-labs/scalardb/pull/2083)) -- グループコミットの前に遅延リカバリが発生すると、Coordinator の状態が不整合になるという稀なケースの問題を修正しました。([#2135](https://github.com/scalar-labs/scalardb/pull/2135)) -- セキュリティの問題を修正するために、mysql ドライバーをアップグレードしました。[CVE-2023-22102](https://github.com/advisories/GHSA-m6vm-37g8-gqvh "CVE-2023-22102") ([#2238](https://github.com/scalar-labs/scalardb/pull/2238)) - -### Enterprise edition - -#### 機能強化 - -##### ScalarDB Cluster - -- [#1907](https://github.com/scalar-labs/scalardb/pull/1907) で導入された暗号化された列のサポートを追加しました。 -- Coordinator テーブルのグループコミット機能のサポートを追加しました。 -- 暗号化のサポートを追加しました。 -- 現在ログインしているユーザーを取得するための `DistributedTransactionAdmin` および `Metadata` の `getCurrentUser()` のサポートを追加しました。 - -##### ScalarDB SQL - -- メタデータ API の [#1907](https://github.com/scalar-labs/scalardb/pull/1907) で導入された暗号化された列のサポートを追加しました。 -- `CREATE TABLE` および `ALTER TABLE ADD COLUMN` ステートメントの暗号化された列のサポートを追加しました。 -- 指定されたユーザーのユーザーと権限をそれぞれ一覧表示する `SHOW USERS` コマンドと `SHOW GRANTS` コマンドを追加しました。 - -#### 改善点 - -##### ScalarDB GraphQL - -- このアップデートにより、`scalar.db.graphql.namespaces` が指定されていない場合、GraphQL サーバーは、すべての ScalarDB 管理名前空間内のすべてのテーブルに対して GraphQL スキーマを生成します。 - -#### バグの修正 - -##### ScalarDB Cluster - -- メッセージのない例外をキャッチすると `NullPointerException` が発生するバグを修正しました。 -- セキュリティ問題を修正するため、`grpc_health_probe` をアップグレードしました。[CVE-2024-34156](https://github.com/advisories/GHSA-crqm-pwhx-j97f "CVE-2024-34156") -- セキュリティ問題を修正するため、`scalar-admin` をアップグレードしました。[CVE-2024-25638](https://github.com/advisories/GHSA-cfxw-4h78-h7fw "CVE-2024-25638") -- セキュリティ問題を修正するため、Protobuf Java ライブラリをアップグレードしました。[CVE-2024-7254](https://github.com/advisories/GHSA-735f-pc8j-v9w8 "CVE-2024-7254") +- スキャン結果が 1 MB を超え、DynamoDB への複数のリクエストが必要な場合に、制限付きスキャンが正しく機能しないバグを修正しました。 ([#2291](https://github.com/scalar-labs/scalardb/pull/2291)) +- Cosmos DB アダプタの主キー列の検証を追加しました。検証により、主キー列のテキスト値に不正な文字 (`:`、`/`、`\`、`#`、`?`) が含まれていないことが保証されます。([#2292](https://github.com/scalar-labs/scalardb/pull/2292)) +- Consensus Commit のトランザクションで同じレコードに対して複数のミューテーションが発生する動作を修正しました。([#2340](https://github.com/scalar-labs/scalardb/pull/2340)) +- Cosmos アダプタで存在しないレコードを削除するときの動作を修正しました。 ([#2341](https://github.com/scalar-labs/scalardb/pull/2341)) +- GetBuilder と ScanBuilder のバグを修正しました。([#2352](https://github.com/scalar-labs/scalardb/pull/2352)) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-support-policy.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-support-policy.mdx index f696842d..07faec6b 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-support-policy.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/releases/release-support-policy.mdx @@ -33,12 +33,19 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx';
    - - + + + + + + + + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/run-non-transactional-storage-operations-through-library.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/run-non-transactional-storage-operations-through-library.mdx index e1b2be79..0982d2c1 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/run-non-transactional-storage-operations-through-library.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/run-non-transactional-storage-operations-through-library.mdx @@ -240,7 +240,7 @@ ScalarDB ライブラリは、[Maven Central Repository](https://mvnrepository.c ```gradle dependencies { - implementation 'com.scalar-labs:scalardb:3.14.1' + implementation 'com.scalar-labs:scalardb:3.15.1' } ``` @@ -251,7 +251,7 @@ ScalarDB ライブラリは、[Maven Central Repository](https://mvnrepository.c com.scalar-labs scalardb - 3.14.1 + 3.15.1 ``` @@ -272,4 +272,4 @@ Java API の詳細については、[ScalarDB Java API ガイド](api-guide.mdx) ### 詳細はこちら -- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) +- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/README.mdx index 0d8029d7..e740926c 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/README.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/README.mdx @@ -1,7 +1,6 @@ --- tags: - Enterprise Option - - Public Preview displayed_sidebar: docsJapanese --- diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/version-compatibility.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/version-compatibility.mdx index dd210fbb..23e0ba1b 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/version-compatibility.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-analytics-spark/version-compatibility.mdx @@ -1,7 +1,6 @@ --- tags: - Enterprise Option - - Public Preview displayed_sidebar: docsJapanese --- diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/authorize-with-abac.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/authorize-with-abac.mdx new file mode 100644 index 00000000..a447c9e6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/authorize-with-abac.mdx @@ -0,0 +1,29 @@ +--- +tags: + - Enterprise Premium Option + - Private Preview +displayed_sidebar: docsJapanese +--- + +# ユーザーアクセスをきめ細かく制御する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster は、属性ベースのアクセス制御 (ABAC) と呼ばれるメカニズムを使用して、ユーザーをきめ細かく認証できます。このページでは、ABAC とは何か、またそれがユーザーにとってなぜ有益であるかについて説明します。 + +## ABAC とは? + +ABAC は ScalarDB Cluster のきめ細かいアクセス制御メカニズムであり、[単純な認証](./scalardb-auth-with-sql.mdx)によって実行されるテーブルレベルのアクセス制御だけでなく、レコードレベルのアクセス制御を可能にします。ABAC を使用すると、ユーザーは、ユーザーの属性とレコードの属性が一致する場合にのみ、特定のレコードにアクセスできます。たとえば、機密性の高いレコードへのアクセスを、必要な権限を持つユーザーのみに制限できます。このメカニズムは、複数のアプリケーションが同じテーブルを共有しているが、それぞれの権限に基づいて異なるセグメントにアクセスする必要がある場合にも役立ちます。 + +## ABAC を使用する理由 + +エンタープライズデータベースでは、多くの場合、行レベルのセキュリティまたは同様の代替手段が提供され、データベーステーブル内の行へのアクセスを制御できます。ただし、システムが複数のデータベースで構成されている場合は、各データベースを1つずつ同じ方法で設定する必要があります。異なる種類のデータベースを使用する場合は、各データベースの機能の違いを理解した上で各データベースを設定する必要があります。このような設定は負担が大きすぎ、エラーが発生しやすくなります。ABAC を使用すると、ScalarDB で複数のデータベースを管理する場合でも、1回設定するだけで済みます。 + +ほとんどのデータベースの行レベルのセキュリティ機能では、ストアドプロシージャなどの関数を使用してマッチングロジックを実装する必要があります。これにより、必要なロジックを実現するために大量のコードを記述することになり、負担が大きくなることがあります。対照的に、ABAC では、タグと呼ばれる属性を使用してマッチングロジックを構成できます。ABAC では、これらのタグを定義してユーザーとレコードに割り当てるだけでよいため、コーディングの必要がありません。タグは、柔軟かつ簡単な方法でマッチングロジックを指定できる複数のコンポーネントで構成されています。 + +## 追加の詳細 + +ABAC 機能は現在、プライベートプレビュー中です。詳細については、[お問い合わせ](https://www.scalar-labs.com/contact)いただくか、この機能が将来のバージョンで一般公開されるまでお待ちください。 + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx index 6e38df1f..08532a5b 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx @@ -21,7 +21,7 @@ Gradle を使用して ScalarDB Cluster Java Client SDK への依存関係を追 ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -31,7 +31,7 @@ Maven を使用して依存関係を追加するには、以下を使用しま com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -118,10 +118,10 @@ scalar.db.contact_points=direct-kubernetes:ns/scalardb-cluster ### クラスター用 Schema Loader -ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (クラスター用 Schema Loader) を使用する必要があります。クラスター用Schema Loader の使用方法は、JAR ファイルの名前が異なることを除いて、[ScalarDB Schema Loader](../schema-loader.mdx) の使用方法と基本的に同じです。クラスター用 Schema Loader は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドでクラスター用 Schema Loader を実行できます。 +ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (クラスター用 Schema Loader) を使用する必要があります。クラスター用Schema Loader の使用方法は、JAR ファイルの名前が異なることを除いて、[ScalarDB Schema Loader](../schema-loader.mdx) の使用方法と基本的に同じです。クラスター用 Schema Loader は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドでクラスター用 Schema Loader を実行できます。 ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config -f --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config -f --coordinator ``` ## ScalarDB Cluster SQL @@ -161,8 +161,8 @@ Gradle を使用して ScalarDB Cluster JDBC ドライバーへの依存関係 ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql-jdbc:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql-jdbc:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -173,12 +173,12 @@ Maven を使用して依存関係を追加するには、以下を使用しま com.scalar-labs scalardb-sql-jdbc - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -195,8 +195,8 @@ Gradle を使用して依存関係を追加するには、以下を使用しま ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql-spring-data:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql-spring-data:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -207,12 +207,12 @@ Maven を使用して依存関係を追加するには、以下を使用しま com.scalar-labs scalardb-sql-spring-data - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -256,10 +256,10 @@ Spring Data JDBC for ScalarDB の構成方法の詳細については、[構成] 他の SQL データベースと同様に、ScalarDB SQL にも、コマンドラインシェルで対話的に SQL ステートメントを発行できる CLI ツールが用意されています。 -Cluster 用の SQL CLI は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで SQL CLI を実行できます。 +Cluster 用の SQL CLI は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで SQL CLI を実行できます。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config ``` #### 使用方法 @@ -267,7 +267,7 @@ java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config CLI の使用方法は、次のように `-h` オプションを使用して確認できます。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar -h +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar -h Usage: scalardb-sql-cli [-hs] -c=PROPERTIES_FILE [-e=COMMAND] [-f=FILE] [-l=LOG_FILE] [-o=] [-p=PASSWORD] [-u=USERNAME] @@ -298,6 +298,6 @@ ScalarDB Cluster gRPC API の詳細については、以下を参照してくだ Javadocs も利用可能です: -* [ScalarDB Cluster Java Client SDK](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-java-client-sdk/3.14.1/index.html) -* [ScalarDB Cluster Common](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-common/3.14.1/index.html) -* [ScalarDB Cluster RPC](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-rpc/3.14.1/index.html) +* [ScalarDB Cluster Java Client SDK](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-java-client-sdk/3.15.1/index.html) +* [ScalarDB Cluster Common](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-common/3.15.1/index.html) +* [ScalarDB Cluster RPC](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-rpc/3.15.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/encrypt-data-at-rest.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/encrypt-data-at-rest.mdx index 153af57e..faf92f84 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/encrypt-data-at-rest.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/encrypt-data-at-rest.mdx @@ -175,7 +175,7 @@ services: scalardb-cluster-standalone: container_name: "scalardb-cluser-node" - image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.14.1" + image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.15.1" ports: - 60053:60053 - 9080:9080 @@ -233,7 +233,7 @@ scalar.db.sql.cluster_mode.contact_points=indirect:localhost 次に、次のコマンドを実行して SQL CLI を起動します。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-cluster-sql-cli.properties ``` まず、ScalarDB トランザクション実行に必要な Coordinator テーブルを作成します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx index e0571aa5..43638429 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx @@ -111,10 +111,10 @@ ScalarDB Cluster に接続するには、`scalar.db.transaction_manager` プロ ## ステップ 3. スキーマをロードする -ScalarDB Cluster 経由でスキーマをロードするには、ScalarDB Cluster 専用の Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Cluster 用の Schema Loader は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Cluster 用の Schema Loader を実行できます。 +ScalarDB Cluster 経由でスキーマをロードするには、ScalarDB Cluster 専用の Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Cluster 用の Schema Loader は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Cluster 用の Schema Loader を実行できます。 ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` ## ステップ 4. GraphiQL から操作を実行する @@ -186,7 +186,7 @@ query GetUser1 { 自動的に生成された GraphQL スキーマは、クエリ、ミューテーション、および入出力のオブジェクトタイプを定義し、ターゲット名前空間内のすべてのテーブルに対して CRUD 操作を実行できるようにします。 -これらの操作は、[`DistributedTransaction`](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/com/scalar/db/api/DistributedTransaction.html) インターフェースで定義されている ScalarDB API と一致するように設計されています。 +これらの操作は、[`DistributedTransaction`](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/com/scalar/db/api/DistributedTransaction.html) インターフェースで定義されている ScalarDB API と一致するように設計されています。 名前空間に `account` テーブルがあると仮定すると、次のクエリとミューテーションが生成されます。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx index 07d9517b..c6ef73bd 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx @@ -87,10 +87,10 @@ ScalarDB Cluster に接続するには、`scalar.db.sql.connection_mode` プロ ## ステップ 3. スキーマをロードする -スキーマをロードするには、[SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) を使用する必要があります。SQL CLI は [ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。 +スキーマをロードするには、[SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) を使用する必要があります。SQL CLI は [ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-sql.properties --file schema.sql +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-sql.properties --file schema.sql ``` ## ステップ 4. 初期データをロードする diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx index 9f230719..0c0b7f39 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx @@ -91,10 +91,10 @@ ScalarDB Cluster に接続するには、`scalar.db.sql.connection_mode` プロ ## ステップ 3. スキーマをロードする -スキーマをロードするには、[SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) を使用する必要があります。SQL CLI は [ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。 +スキーマをロードするには、[SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) を使用する必要があります。SQL CLI は [ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-sql.properties --file schema.sql +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-sql.properties --file schema.sql ``` ## ステップ 4.`application.properties`を変更する diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster.mdx index 4f7d0631..ea4f16bb 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-scalardb-cluster.mdx @@ -124,7 +124,7 @@ ScalarDB Cluster を使用するには、任意のテキストエディターで dependencies { ... - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -170,12 +170,12 @@ scalar.db.contact_points=indirect:localhost サンプルアプリケーションのデータベーススキーマ (データを整理する方法) は、[`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-sample/schema.json) ですでに定義されています。 -スキーマを適用するには、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)に移動し、ScalarDB Cluster Schema Loader を `scalardb-samples/scalardb-sample` フォルダーにダウンロードします。 +スキーマを適用するには、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1)に移動し、ScalarDB Cluster Schema Loader を `scalardb-samples/scalardb-sample` フォルダーにダウンロードします。 次に、次のコマンドを実行します。 ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` #### スキーマの詳細 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx index e72fe1e1..c46d264b 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx @@ -73,10 +73,10 @@ ScalarDB Cluster に接続するには、`scalar.db.transaction_manager` プロ ## ステップ 3. スキーマをロードする -ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Schema Loader for Cluster は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Schema Loader for Cluster を実行できます。 +ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Schema Loader for Cluster は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Schema Loader for Cluster を実行できます。 ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` ## ステップ 4. Go 環境をセットアップする diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx index 969f703e..8ab50f7c 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx @@ -73,10 +73,10 @@ ScalarDB Cluster に接続するには、`scalar.db.transaction_manager` プロ ## ステップ 3. スキーマをロードする -ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Schema Loader for Cluster は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Schema Loader for Cluster を実行できます。 +ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Schema Loader for Cluster は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.15.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Schema Loader for Cluster を実行できます。 ```console -java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +java -jar scalardb-cluster-schema-loader-3.15.1-all.jar --config database.properties -f schema.json --coordinator ``` ## ステップ 4. Python 環境をセットアップする diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-vector-search.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-vector-search.mdx new file mode 100644 index 00000000..26a3fdbe --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/getting-started-with-vector-search.mdx @@ -0,0 +1,44 @@ +--- +tags: + - Enterprise Premium + - Private Preview +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster でベクトル検索をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster は、アプリケーションがベクトルストアと統一された方法で対話できるように、ベクトルストアの抽象化を提供します。このページでは、この機能の概要と、それがユーザーにとってなぜ有益であるかについて説明します。 + +## ベクトルストアの抽象化とは何ですか? + +ScalarDB Cluster は、リレーショナルデータベース、NoSQL データベース、NewSQL データベースなど、さまざまな種類のデータベースを抽象化するのと同様に、さまざまなベクトルストアの抽象化を提供します。このベクトルストアの抽象化を使用すると、ベクトルストアと統一された方法で対話するアプリケーションを開発できるため、アプリケーションは特定のベクトルストアの実装から独立し、移植性が確保されます。さらに、ベクトルストアとの統合は ScalarDB Cluster に組み込まれているため、アプリケーションは ScalarDB Cluster のスケーラビリティを活用できます。 + +ベクトルストアの抽象化の現在の実装は [LangChain4j](https://docs.langchain4j.dev/) を活用し、次のベクトルストアと埋め込みモデルをサポートしています。 + +ベクトルストア: +- In-memory +- OpenSearch +- Azure Cosmos DB NoSQL +- Azure AI Search +- pgvector + +埋め込みモデル: +- In-process +- Amazon Bedrock +- Azure OpenAI +- Google Vertex AI +- OpenAI + +## ベクトルストアの抽象化を使用する理由 + +生成 AI の時代において、大規模言語モデル (LLM) を導入する際に組織が直面する課題の1つは、これらのモデルが企業データを理解できるようにすることです。検索拡張生成 (RAG) は、特定の企業知識で LLM を強化するために使用される重要な手法です。たとえば、LLM を搭載したチャットボットが正確で適切な応答を提供できるようにするために、企業は RAG を使用してユーザーマニュアルやサポートドキュメントからドメイン固有の情報を統合します。 + +RAG はベクトルストアに依存しています。ベクトルストアは通常、データベースからデータを抽出し、そのデータをベクトルに変換してから、それらのベクトルをロードすることによって作成されます。ScalarDB Cluster でベクトルストアとデータベースの抽象化を使用すると、プロセス全体をシームレスに実装できます。このアプローチにより、ワークフローとコードが大幅に簡素化され、特定のベクトルストアとデータベースに依存する複雑なアプリケーションを作成する必要がなくなります。 + +## 追加の詳細 + +ベクター検索機能は現在、プライベートプレビュー中です。詳細については、[お問い合わせ](https://www.scalar-labs.com/contact)いただくか、この機能が将来のバージョンで一般公開されるまでお待ちください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx index 60e0d7a7..ff1c5ef0 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx @@ -274,7 +274,7 @@ ScalarDB Cluster Java Client SDK は、[Maven Central Repository](https://mvnrep ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -285,7 +285,7 @@ ScalarDB Cluster Java Client SDK は、[Maven Central Repository](https://mvnrep com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -310,5 +310,5 @@ Java API の詳細については、[ScalarDB Java API ガイド](../api-guide.m ### 詳細 -- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) +- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.15.1/index.html) - [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx index 2dd39694..3befb9a7 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx @@ -279,8 +279,8 @@ ScalarDB には、実装固有のデータモデルとスキーマにマップ ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql-jdbc:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql-jdbc:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -292,12 +292,12 @@ ScalarDB には、実装固有のデータモデルとスキーマにマップ com.scalar-labs scalardb-sql-jdbc - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -344,8 +344,8 @@ ScalarDB には、実装固有のデータモデルとスキーマにマップ ```gradle dependencies { - implementation 'com.scalar-labs:scalardb-sql:3.14.1' - implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + implementation 'com.scalar-labs:scalardb-sql:3.15.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.15.1' } ``` @@ -357,12 +357,12 @@ ScalarDB には、実装固有のデータモデルとスキーマにマップ com.scalar-labs scalardb-sql - 3.14.1 + 3.15.1 com.scalar-labs scalardb-cluster-java-client-sdk - 3.14.1 + 3.15.1 ``` @@ -389,7 +389,7 @@ ScalarDB には、実装固有のデータモデルとスキーマにマップ

    詳細

    - - [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.14.1/index.html) + - [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.15.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-abac-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-abac-status-codes.mdx new file mode 100644 index 00000000..7236722d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-abac-status-codes.mdx @@ -0,0 +1,730 @@ +--- +tags: + - Enterprise Premium Option + - Private Preview +displayed_sidebar: docsJapanese +--- + +# 属性ベースのアクセス制御エラーコード + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、属性ベースのアクセス制御に関連するエラーコードの一覧を示します。 + +## エラーコードのクラスと説明 + +| クラス | 説明 | +|:----------------|:--------------------------| +| `DB-ABAC-1xxxx` | ユーザーエラーカテゴリのエラー | +| `DB-ABAC-2xxxx` | 同時実行エラーカテゴリのエラー | +| `DB-ABAC-3xxxx` | 内部エラーカテゴリのエラー | + +## `DB-ABAC-1xxxx` ステータスコード + +以下は、ユーザーエラーカテゴリのステータスコードとメッセージです。 + +### `DB-ABAC-10000` + +**メッセージ** + +```markdown +The put operation is not supported. Use insert, upsert, or update instead +``` + +### `DB-ABAC-10001` + +**メッセージ** + +```markdown +The default level must be less than or equal to the level. Default-level short name: %s; Default-level number: %d; Level short name: %s; Level number: %d +``` + +### `DB-ABAC-10002` + +**メッセージ** + +```markdown +The row level must be less than or equal to the level. Row-level short name: %s; Row-level number: %d; Level short name: %s; Level number: %d +``` + +### `DB-ABAC-10003` + +**メッセージ** + +```markdown +The operation does not have the target namespace or table name. Operation: %s +``` + +### `DB-ABAC-10004` + +**メッセージ** + +```markdown +The policy does not exist. Policy: %s +``` + +### `DB-ABAC-10005` + +**メッセージ** + +```markdown +The level does not exist. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-10006` + +**メッセージ** + +```markdown +The compartment does not exist. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-10007` + +**メッセージ** + +```markdown +The group does not exist. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-10008` + +**メッセージ** + +```markdown +The policy already exists. Policy: %s +``` + +### `DB-ABAC-10009` + +**メッセージ** + +```markdown +The data tag column name is already in use in the policy %s. Policy: %s; Data tag column name: %s +``` + +### `DB-ABAC-10010` + +**メッセージ** + +```markdown +The level already exists. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-10011` + +**メッセージ** + +```markdown +The compartment already exists. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-10012` + +**メッセージ** + +```markdown +The group already exists. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-10013` + +**メッセージ** + +```markdown +The parent group does not exist. Policy: %s; Group short name: %s; Parent-group short name: %s +``` + +### `DB-ABAC-10014` + +**メッセージ** + +```markdown +The parent group is the same as the child group. Policy: %s; Group short name: %s; Parent-group short name: %s +``` + +### `DB-ABAC-10015` + +**メッセージ** + +```markdown +The group has child groups. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-10016` + +**メッセージ** + +```markdown +The compartment cannot be a row compartment for read-only access mode. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-10017` + +**メッセージ** + +```markdown +The compartment is already assigned to the user. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-10018` + +**メッセージ** + +```markdown +The group cannot be a row group for read-only access mode. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-10019` + +**メッセージ** + +```markdown +The group is already assigned to the user. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-10020` + +**メッセージ** + +```markdown +The namespace does not exist. Namespace: %s +``` + +### `DB-ABAC-10021` + +**メッセージ** + +```markdown +The namespace policy already exists. NamespacePolicy: %s +``` + +### `DB-ABAC-10022` + +**メッセージ** + +```markdown +The namespace policy does not exist. NamespacePolicy: %s +``` + +### `DB-ABAC-10023` + +**メッセージ** + +```markdown +The table does not exist. Table: %s +``` + +### `DB-ABAC-10024` + +**メッセージ** + +```markdown +The table policy already exists. TablePolicy: %s +``` + +### `DB-ABAC-10025` + +**メッセージ** + +```markdown +The table policy does not exist. TablePolicy: %s +``` + +### `DB-ABAC-10026` + +**メッセージ** + +```markdown +The short name must not be empty. Short name: %s +``` + +### `DB-ABAC-10027` + +**メッセージ** + +```markdown +The short name must be 30 characters or less. Short name: %s +``` + +### `DB-ABAC-10028` + +**メッセージ** + +```markdown +The short name must not contain a colon. Short name: %s +``` + +### `DB-ABAC-10029` + +**メッセージ** + +```markdown +The short name must not contain a comma. Short name: %s +``` + +### `DB-ABAC-10030` + +**メッセージ** + +```markdown +The data tag is invalid. Data tag: %s +``` + +### `DB-ABAC-10031` + +**メッセージ** + +```markdown +The level must be specified in the data tag. Data tag: %s +``` + +### `DB-ABAC-10032` + +**メッセージ** + +```markdown +The user tag is invalid. User tag: %s +``` + +### `DB-ABAC-10033` + +**メッセージ** + +```markdown +The level must be specified in the user tag. User tag: %s +``` + +### `DB-ABAC-10034` + +**メッセージ** + +```markdown +The specified user tag is not allowed. User tag: %s +``` + +### `DB-ABAC-10035` + +**メッセージ** + +```markdown +The data tag column type should be TEXT. Policy: %s; Data tag column: %s +``` + +### `DB-ABAC-10036` + +**メッセージ** + +```markdown +The specified data tag is not allowed. Data tag: %s +``` + +### `DB-ABAC-10037` + +**メッセージ** + +```markdown +The data tag column cannot be used in conditions. Operation: %s; Data tag column: %s +``` + +### `DB-ABAC-10038` + +**メッセージ** + +```markdown +The operation is not allowed for the policy. Policy: %s; Operation: %s +``` + +### `DB-ABAC-10039` + +**メッセージ** + +```markdown +Access denied: Invalid auth token +``` + +### `DB-ABAC-10040` + +**メッセージ** + +```markdown +The authentication and authorization feature must be enabled to use the attribute-based access control feature +``` + +### `DB-ABAC-10041` + +**メッセージ** + +```markdown +The single CRUD operation transaction manager does not support the attribute-based access control feature +``` + +### `DB-ABAC-10042` + +**メッセージ** + +```markdown +The data tag column cannot be used in ordering. Operation: %s; Data tag column: %s +``` + +### `DB-ABAC-10043` + +**メッセージ** + +```markdown +The namespace policy for the policy and namespace already exists. Policy: %s; Namespace: %s +``` + +### `DB-ABAC-10044` + +**メッセージ** + +```markdown +The table policy for the policy and table already exists. Policy: %s; Table: %s +``` + +## `DB-ABAC-2xxxx` ステータスコード + +以下は、同時実行エラーカテゴリのステータスコードとメッセージです。 + +### `DB-ABAC-20000` + +**メッセージ** + +```markdown +The record does not exist, so the %s condition is not satisfied +``` + +## `DB-ABAC-3xxxx` ステータスコード + +以下は、内部エラーカテゴリのステータスコードとメッセージです。 + +### `DB-ABAC-30000` + +**メッセージ** + +```markdown +Creating a policy failed. Policy: %s; Data tag column: %s +``` + +### `DB-ABAC-30001` + +**メッセージ** + +```markdown +Enabling the policy failed. Policy: %s +``` + +### `DB-ABAC-30002` + +**メッセージ** + +```markdown +Disabling the policy failed. Policy: %s +``` + +### `DB-ABAC-30003` + +**メッセージ** + +```markdown +Getting the policy failed. Policy: %s +``` + +### `DB-ABAC-30004` + +**メッセージ** + +```markdown +Getting the policies failed +``` + +### `DB-ABAC-30005` + +**メッセージ** + +```markdown +Creating a level failed. Policy: %s; Level short name: %s; Level long name: %s; Level number: %d +``` + +### `DB-ABAC-30006` + +**メッセージ** + +```markdown +Dropping the level failed. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-30007` + +**メッセージ** + +```markdown +Getting the level failed. Policy: %s; Level short name: %s +``` + +### `DB-ABAC-30008` + +**メッセージ** + +```markdown +Getting the levels failed. Policy: %s +``` + +### `DB-ABAC-30009` + +**メッセージ** + +```markdown +Creating a compartment failed. Policy: %s; Compartment short name: %s; Compartment long name: %s +``` + +### `DB-ABAC-30010` + +**メッセージ** + +```markdown +Dropping the compartment failed. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-30011` + +**メッセージ** + +```markdown +Getting the compartment failed. Policy: %s; Compartment short name: %s +``` + +### `DB-ABAC-30012` + +**メッセージ** + +```markdown +Getting the compartments failed. Policy: %s +``` + +### `DB-ABAC-30013` + +**メッセージ** + +```markdown +Creating a group failed. Policy: %s; Group short name: %s; Group long name: %s; Parent-group short name: %s +``` + +### `DB-ABAC-30014` + +**メッセージ** + +```markdown +Dropping the group failed. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-30015` + +**メッセージ** + +```markdown +Getting the group failed. Policy: %s; Group short name: %s +``` + +### `DB-ABAC-30016` + +**メッセージ** + +```markdown +Getting groups failed. Policy: %s +``` + +### `DB-ABAC-30017` + +**メッセージ** + +```markdown +Getting child groups failed. Policy: %s; Parent-group short name: %s +``` + +### `DB-ABAC-30018` + +**メッセージ** + +```markdown +Setting the levels to the user failed. Policy: %s; User: %s; Level short name: %s; Default-level short name: %s; Row-level short name: %s +``` + +### `DB-ABAC-30019` + +**メッセージ** + +```markdown +Adding the compartment to the user failed. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-30020` + +**メッセージ** + +```markdown +Removing the compartment from the user failed. Policy: %s; User: %s; Compartment short name: %s +``` + +### `DB-ABAC-30021` + +**メッセージ** + +```markdown +Adding the group to the user failed. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-30022` + +**メッセージ** + +```markdown +Removing the group from the user failed. Policy: %s; User: %s; Group short name: %s +``` + +### `DB-ABAC-30023` + +**メッセージ** + +```markdown +Dropping the user tag information from the user failed. Policy: %s; User: %s +``` + +### `DB-ABAC-30024` + +**メッセージ** + +```markdown +Getting the user tag information failed. Policy: %s; User: %s +``` + +### `DB-ABAC-30025` + +**メッセージ** + +```markdown +Creating a namespace policy failed. NamespacePolicy: %s; Policy: %s; Namespace: %s +``` + +### `DB-ABAC-30026` + +**メッセージ** + +```markdown +Enabling the namespace policy failed. NamespacePolicy: %s +``` + +### `DB-ABAC-30027` + +**メッセージ** + +```markdown +Disabling the namespace policy failed. NamespacePolicy: %s +``` + +### `DB-ABAC-30028` + +**メッセージ** + +```markdown +Removing the namespace policies assigned to the namespace failed. Namespace: %s +``` + +### `DB-ABAC-30029` + +**メッセージ** + +```markdown +Getting the namespace policies failed +``` + +### `DB-ABAC-30030` + +**メッセージ** + +```markdown +Creating a table policy failed. TablePolicy: %s; Policy: %s; Table: %s +``` + +### `DB-ABAC-30031` + +**メッセージ** + +```markdown +Enabling the table policy failed. TablePolicy: %s +``` + +### `DB-ABAC-30032` + +**メッセージ** + +```markdown +Disabling the table policy failed. TablePolicy: %s +``` + +### `DB-ABAC-30033` + +**メッセージ** + +```markdown +Removing the table policies assigned to the table failed. Table: %s +``` + +### `DB-ABAC-30034` + +**メッセージ** + +```markdown +Getting the table policies failed +``` + +### `DB-ABAC-30035` + +**メッセージ** + +```markdown +Getting the policies assigned to the namespace failed. Namespace: %s +``` + +### `DB-ABAC-30036` + +**メッセージ** + +```markdown +Getting the policies assigned to the table failed. Table: %s +``` + +### `DB-ABAC-30037` + +**メッセージ** + +```markdown +Registering the data tag failed. Policy: %s; Data tag: %s +``` + +### `DB-ABAC-30038` + +**メッセージ** + +```markdown +Getting the data tags failed. Policy: %s +``` + +### `DB-ABAC-30039` + +**メッセージ** + +```markdown +Getting the namespace policy failed. NamespacePolicy: %s +``` + +### `DB-ABAC-30040` + +**メッセージ** + +```markdown +Getting the table policy failed. TablePolicy: %s +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-status-codes.mdx index f6eb062e..ec84a3ae 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-status-codes.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-status-codes.mdx @@ -15,14 +15,16 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; ## エラーコードのクラスと説明 -| クラス | 説明 | -|:-------------|:--------------------------| -| `AUTH-1xxxx` | ユーザーエラーカテゴリのエラー | -| `AUTH-3xxxx` | 内部エラーカテゴリのエラー | +| クラス | 説明 | +|:----------------|:--------------------------| +| `DB-AUTH-1xxxx` | ユーザーエラーカテゴリのエラー | +| `DB-AUTH-3xxxx` | 内部エラーカテゴリのエラー | -## `AUTH-1xxxx` ステータスコード +## `DB-AUTH-1xxxx` ステータスコード -### `AUTH-10000` +以下は、ユーザーエラーカテゴリのステータスコードとメッセージです。 + +### `DB-AUTH-10000` **メッセージ** @@ -30,7 +32,7 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; The user already exists. Username: %s ``` -### `AUTH-10001` +### `DB-AUTH-10001` **メッセージ** @@ -38,7 +40,7 @@ The user already exists. Username: %s The user does not exist. Username: %s ``` -### `AUTH-10003` +### `DB-AUTH-10003` **メッセージ** @@ -46,7 +48,7 @@ The user does not exist. Username: %s The namespace does not exist. Namespace: %s ``` -### `AUTH-10004` +### `DB-AUTH-10004` **メッセージ** @@ -54,7 +56,7 @@ The namespace does not exist. Namespace: %s The table does not exist. Table: %s ``` -### `AUTH-10005` +### `DB-AUTH-10005` **メッセージ** @@ -62,7 +64,7 @@ The table does not exist. Table: %s Invalid username or password ``` -### `AUTH-10006` +### `DB-AUTH-10006` **メッセージ** @@ -70,7 +72,7 @@ Invalid username or password Access denied: Invalid auth token ``` -### `AUTH-10007` +### `DB-AUTH-10007` **メッセージ** @@ -78,7 +80,7 @@ Access denied: Invalid auth token Access denied: You need the %s privilege on the namespace %s to execute this operation ``` -### `AUTH-10008` +### `DB-AUTH-10008` **メッセージ** @@ -86,15 +88,15 @@ Access denied: You need the %s privilege on the namespace %s to execute this ope Access denied: You need the %s privilege on the table %s to execute this operation ``` -### `AUTH-10009` +### `DB-AUTH-10009` **メッセージ** ```markdown -Access denied: You can't grant the %s privilege because you don't have the same privilege on the table %s +Access denied: You must be a superuser to execute this operation ``` -### `AUTH-10010` +### `DB-AUTH-10010` **メッセージ** @@ -102,7 +104,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't access information about the user %s ``` -### `AUTH-10011` +### `DB-AUTH-10011` **メッセージ** @@ -110,7 +112,7 @@ Access denied: You can't access information about the user %s Access denied: You can't alter the user %s ``` -### `AUTH-10012` +### `DB-AUTH-10012` **メッセージ** @@ -118,7 +120,7 @@ Access denied: You can't alter the user %s Access denied: You must be a superuser to change the SUPERUSER attribute ``` -### `AUTH-10013` +### `DB-AUTH-10013` **メッセージ** @@ -126,7 +128,7 @@ Access denied: You must be a superuser to change the SUPERUSER attribute You can't change the SUPERUSER attribute for the current user %s ``` -### `AUTH-10014` +### `DB-AUTH-10014` **メッセージ** @@ -134,15 +136,15 @@ You can't change the SUPERUSER attribute for the current user %s You can't drop the current user %s ``` -### `AUTH-10015` +### `DB-AUTH-10015` **メッセージ** ```markdown -Access denied: You can't grant the %s privilege because you don't have the same privilege for the table %s +Access denied: You can't grant the %s privilege because you don't have the same privilege on the table %s ``` -### `AUTH-10016` +### `DB-AUTH-10016` **メッセージ** @@ -150,7 +152,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't grant the %s privilege because you don't have the same privilege on the namespace %s ``` -### `AUTH-10017` +### `DB-AUTH-10017` **メッセージ** @@ -158,7 +160,7 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the table %s ``` -### `AUTH-10018` +### `DB-AUTH-10018` **メッセージ** @@ -166,7 +168,7 @@ Access denied: You can't revoke the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the namespace %s ``` -### `AUTH-10019` +### `DB-AUTH-10019` **メッセージ** @@ -174,9 +176,11 @@ Access denied: You can't revoke the %s privilege because you don't have the same The operation does not have the target namespace or table name. Operation: %s ``` -## `AUTH-3xxxx` ステータスコード +## `DB-AUTH-3xxxx` ステータスコード + +以下は、内部エラーカテゴリのステータスコードとメッセージです。 -### `AUTH-30000` +### `DB-AUTH-30000` **メッセージ** @@ -184,7 +188,7 @@ The operation does not have the target namespace or table name. Operation: %s Getting auth token information failed ``` -### `AUTH-30001` +### `DB-AUTH-30001` **メッセージ** @@ -192,7 +196,7 @@ Getting auth token information failed Getting the user failed. Username: %s ``` -### `AUTH-30002` +### `DB-AUTH-30002` **メッセージ** @@ -200,7 +204,7 @@ Getting the user failed. Username: %s Creating a user failed. Username: %s ``` -### `AUTH-30003` +### `DB-AUTH-30003` **メッセージ** @@ -208,7 +212,7 @@ Creating a user failed. Username: %s Altering the user failed. Username: %s ``` -### `AUTH-30004` +### `DB-AUTH-30004` **メッセージ** @@ -216,7 +220,7 @@ Altering the user failed. Username: %s Dropping the user failed. Username: %s ``` -### `AUTH-30005` +### `DB-AUTH-30005` **メッセージ** @@ -224,7 +228,7 @@ Dropping the user failed. Username: %s Granting privileges failed. Username: %s; Namespace: %s; Privileges: %s ``` -### `AUTH-30006` +### `DB-AUTH-30006` **メッセージ** @@ -232,7 +236,7 @@ Granting privileges failed. Username: %s; Namespace: %s; Privileges: %s Granting privileges failed. Username: %s; Table: %s; Privileges: %s ``` -### `AUTH-30007` +### `DB-AUTH-30007` **メッセージ** @@ -240,7 +244,7 @@ Granting privileges failed. Username: %s; Table: %s; Privileges: %s Revoking privileges failed. Username: %s; Namespace: %s; Privileges: %s ``` -### `AUTH-30008` +### `DB-AUTH-30008` **メッセージ** @@ -248,7 +252,7 @@ Revoking privileges failed. Username: %s; Namespace: %s; Privileges: %s Revoking privileges failed. Username: %s; Table: %s; Privileges: %s ``` -### `AUTH-30009` +### `DB-AUTH-30009` **メッセージ** @@ -256,7 +260,7 @@ Revoking privileges failed. Username: %s; Table: %s; Privileges: %s Getting users failed ``` -### `AUTH-30010` +### `DB-AUTH-30010` **メッセージ** @@ -264,7 +268,7 @@ Getting users failed Getting privileges failed. Username: %s; Namespace: %s ``` -### `AUTH-30011` +### `DB-AUTH-30011` **メッセージ** @@ -272,7 +276,7 @@ Getting privileges failed. Username: %s; Namespace: %s Getting privileges failed. Username: %s; Table: %s ``` -### `AUTH-30012` +### `DB-AUTH-30012` **メッセージ** @@ -280,7 +284,7 @@ Getting privileges failed. Username: %s; Table: %s Deleting privileges failed. Namespace: %s ``` -### `AUTH-30013` +### `DB-AUTH-30013` **メッセージ** @@ -288,7 +292,7 @@ Deleting privileges failed. Namespace: %s Deleting privileges failed. Table: %s ``` -### `AUTH-30014` +### `DB-AUTH-30014` **メッセージ** @@ -296,7 +300,7 @@ Deleting privileges failed. Table: %s Logging in failed. Username: %s ``` -### `AUTH-30015` +### `DB-AUTH-30015` **メッセージ** diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-with-sql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-with-sql.mdx index 933439b0..56d8585d 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-with-sql.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-auth-with-sql.mdx @@ -193,7 +193,7 @@ services: scalardb-cluster-standalone: container_name: "scalardb-cluser-node" - image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.14.1" + image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.15.1" ports: - 60053:60053 - 9080:9080 @@ -229,7 +229,7 @@ scalar.db.cluster.auth.enabled=true 次に、次のコマンドを実行して SQL CLI を起動します。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-cluster-sql-cli.properties ``` ユーザー名とパスワードをそれぞれ `admin` と `admin` と入力します。 @@ -318,7 +318,7 @@ SHOW GRANTS FOR user1; `user1` としてログインし、SQL ステートメントを実行します。 ```console -java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-cluster-sql-cli.properties ``` ユーザー名とパスワードをそれぞれ `user1` と `user1` として入力します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-cluster-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-cluster-status-codes.mdx index f30a0ff9..7b68f95e 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-cluster-status-codes.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/scalardb-cluster-status-codes.mdx @@ -5,7 +5,7 @@ tags: displayed_sidebar: docsJapanese --- -# ScalarDB Cluster のエラーコード +# ScalarDB Cluster エラーコード import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; @@ -15,15 +15,17 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; ## エラーコードのクラスと説明 -| クラス | 説明 | -|:----------------|:--------------------------| -| `CLUSTER-1xxxx` | ユーザーエラーカテゴリのエラー | -| `CLUSTER-2xxxx` | 同時実行エラーカテゴリのエラー | -| `CLUSTER-3xxxx` | 内部エラーカテゴリのエラー | +| クラス | 説明 | +|:-------------------|:--------------------------| +| `DB-CLUSTER-1xxxx` | ユーザーエラーカテゴリのエラー | +| `DB-CLUSTER-2xxxx` | 同時実行エラーカテゴリのエラー | +| `DB-CLUSTER-3xxxx` | 内部エラーカテゴリのエラー | -## `CLUSTER-1xxxx` ステータスコード +## `DB-CLUSTER-1xxxx` ステータスコード -### `CLUSTER-10000` +以下は、ユーザーエラーカテゴリのステータスコードとメッセージです。 + +### `DB-CLUSTER-10000` **メッセージ** @@ -31,7 +33,7 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; The namespace does not exist. Namespace: %s ``` -### `CLUSTER-10001` +### `DB-CLUSTER-10001` **メッセージ** @@ -39,7 +41,7 @@ The namespace does not exist. Namespace: %s The table does not exist. Table: %s ``` -### `CLUSTER-10002` +### `DB-CLUSTER-10002` **メッセージ** @@ -47,7 +49,7 @@ The table does not exist. Table: %s The user does not exist. User: %s ``` -### `CLUSTER-10003` +### `DB-CLUSTER-10003` **メッセージ** @@ -55,7 +57,7 @@ The user does not exist. User: %s ClusterConfig is not specified ``` -### `CLUSTER-10004` +### `DB-CLUSTER-10004` **メッセージ** @@ -63,7 +65,7 @@ ClusterConfig is not specified The get type is unspecified ``` -### `CLUSTER-10005` +### `DB-CLUSTER-10005` **メッセージ** @@ -71,7 +73,7 @@ The get type is unspecified The get type is unrecognized ``` -### `CLUSTER-10006` +### `DB-CLUSTER-10006` **メッセージ** @@ -79,7 +81,7 @@ The get type is unrecognized The value of the column is not set. Column: %s ``` -### `CLUSTER-10007` +### `DB-CLUSTER-10007` **メッセージ** @@ -87,7 +89,7 @@ The value of the column is not set. Column: %s The scan type is unspecified ``` -### `CLUSTER-10008` +### `DB-CLUSTER-10008` **メッセージ** @@ -95,7 +97,7 @@ The scan type is unspecified The scan type is unrecognized ``` -### `CLUSTER-10009` +### `DB-CLUSTER-10009` **メッセージ** @@ -103,7 +105,7 @@ The scan type is unrecognized The order is unspecified ``` -### `CLUSTER-10010` +### `DB-CLUSTER-10010` **メッセージ** @@ -111,7 +113,7 @@ The order is unspecified The order is unrecognized ``` -### `CLUSTER-10011` +### `DB-CLUSTER-10011` **メッセージ** @@ -119,7 +121,7 @@ The order is unrecognized The clustering order is unspecified ``` -### `CLUSTER-10012` +### `DB-CLUSTER-10012` **メッセージ** @@ -127,7 +129,7 @@ The clustering order is unspecified The clustering order is unrecognized ``` -### `CLUSTER-10013` +### `DB-CLUSTER-10013` **メッセージ** @@ -135,7 +137,7 @@ The clustering order is unrecognized The put condition type is unspecified ``` -### `CLUSTER-10014` +### `DB-CLUSTER-10014` **メッセージ** @@ -143,7 +145,7 @@ The put condition type is unspecified The put condition type is unrecognized ``` -### `CLUSTER-10015` +### `DB-CLUSTER-10015` **メッセージ** @@ -151,7 +153,7 @@ The put condition type is unrecognized The delete condition type is unspecified ``` -### `CLUSTER-10016` +### `DB-CLUSTER-10016` **メッセージ** @@ -159,7 +161,7 @@ The delete condition type is unspecified The delete condition type is unrecognized ``` -### `CLUSTER-10017` +### `DB-CLUSTER-10017` **メッセージ** @@ -167,7 +169,7 @@ The delete condition type is unrecognized The operator is unspecified ``` -### `CLUSTER-10018` +### `DB-CLUSTER-10018` **メッセージ** @@ -175,7 +177,7 @@ The operator is unspecified The operator is unrecognized ``` -### `CLUSTER-10019` +### `DB-CLUSTER-10019` **メッセージ** @@ -183,7 +185,7 @@ The operator is unrecognized The mutation is not set ``` -### `CLUSTER-10020` +### `DB-CLUSTER-10020` **メッセージ** @@ -191,7 +193,7 @@ The mutation is not set The data type is unspecified ``` -### `CLUSTER-10021` +### `DB-CLUSTER-10021` **メッセージ** @@ -199,7 +201,7 @@ The data type is unspecified The data type is unrecognized ``` -### `CLUSTER-10022` +### `DB-CLUSTER-10022` **メッセージ** @@ -207,7 +209,7 @@ The data type is unrecognized The user option is unspecified ``` -### `CLUSTER-10023` +### `DB-CLUSTER-10023` **メッセージ** @@ -215,7 +217,7 @@ The user option is unspecified The user option is unrecognized ``` -### `CLUSTER-10024` +### `DB-CLUSTER-10024` **メッセージ** @@ -223,7 +225,7 @@ The user option is unrecognized The privilege is unspecified ``` -### `CLUSTER-10025` +### `DB-CLUSTER-10025` **メッセージ** @@ -231,7 +233,7 @@ The privilege is unspecified The privilege is unrecognized ``` -### `CLUSTER-10026` +### `DB-CLUSTER-10026` **メッセージ** @@ -239,7 +241,7 @@ The privilege is unrecognized The username is not set ``` -### `CLUSTER-10027` +### `DB-CLUSTER-10027` **メッセージ** @@ -247,7 +249,7 @@ The username is not set This feature is not supported in ScalarDB Cluster ``` -### `CLUSTER-10028` +### `DB-CLUSTER-10028` **メッセージ** @@ -255,7 +257,7 @@ This feature is not supported in ScalarDB Cluster The property 'scalar.db.contact_points' must not be empty ``` -### `CLUSTER-10029` +### `DB-CLUSTER-10029` **メッセージ** @@ -263,7 +265,7 @@ The property 'scalar.db.contact_points' must not be empty The property 'scalar.db.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' ``` -### `CLUSTER-10030` +### `DB-CLUSTER-10030` **メッセージ** @@ -271,7 +273,7 @@ The property 'scalar.db.contact_points' must be prefixed with 'indirect:' or 'di The format of the property 'scalar.db.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' ``` -### `CLUSTER-10031` +### `DB-CLUSTER-10031` **メッセージ** @@ -279,7 +281,7 @@ The format of the property 'scalar.db.contact_points' for direct-kubernetes clie The property 'scalar.db.sql.cluster_mode.contact_points' must not be empty ``` -### `CLUSTER-10032` +### `DB-CLUSTER-10032` **メッセージ** @@ -287,7 +289,7 @@ The property 'scalar.db.sql.cluster_mode.contact_points' must not be empty The property 'scalar.db.sql.cluster_mode.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' ``` -### `CLUSTER-10033` +### `DB-CLUSTER-10033` **メッセージ** @@ -295,7 +297,7 @@ The property 'scalar.db.sql.cluster_mode.contact_points' must be prefixed with ' The format of the property 'scalar.db.sql.cluster_mode.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' ``` -### `CLUSTER-10034` +### `DB-CLUSTER-10034` **メッセージ** @@ -303,7 +305,7 @@ The format of the property 'scalar.db.sql.cluster_mode.contact_points' for direc ClusterNodeManagerFactory is not specified ``` -### `CLUSTER-10035` +### `DB-CLUSTER-10035` **メッセージ** @@ -311,7 +313,7 @@ ClusterNodeManagerFactory is not specified The update condition type is unspecified ``` -### `CLUSTER-10036` +### `DB-CLUSTER-10036` **メッセージ** @@ -319,7 +321,7 @@ The update condition type is unspecified The update condition type is unrecognized ``` -### `CLUSTER-10037` +### `DB-CLUSTER-10037` **メッセージ** @@ -327,9 +329,163 @@ The update condition type is unrecognized The two-phase commit interface is not supported ``` -## `CLUSTER-2xxxx` ステータスコード +### `DB-CLUSTER-10038` + +**メッセージ** + +```markdown +Membership is not specified +``` + +### `DB-CLUSTER-10039` + +**メッセージ** + +```markdown +The policy state is unspecified +``` + +### `DB-CLUSTER-10040` + +**メッセージ** + +```markdown +The policy state is unrecognized +``` + +### `DB-CLUSTER-10041` + +**メッセージ** + +```markdown +The access mode is unspecified +``` + +### `DB-CLUSTER-10042` + +**メッセージ** + +```markdown +The access mode is unrecognized +``` -### `CLUSTER-20000` +### `DB-CLUSTER-10043` + +**メッセージ** + +```markdown +The service does not exist. Service Class: %s +``` + +### `DB-CLUSTER-10044` + +**メッセージ** + +```markdown +The policy does not exist. Policy: %s +``` + +### `DB-CLUSTER-10045` + +**メッセージ** + +```markdown +The property 'scalar.db.embedding.client.contact_points' must not be empty +``` + +### `DB-CLUSTER-10046` + +**メッセージ** + +```markdown +The property 'scalar.db.embedding.client.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' +``` + +### `DB-CLUSTER-10047` + +**メッセージ** + +```markdown +The format of the property 'scalar.db.embedding.client.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' +``` + +### `DB-CLUSTER-10048` + +**メッセージ** + +```markdown +The embeddings must be provided +``` + +### `DB-CLUSTER-10049` + +**メッセージ** + +```markdown +Only one embedding can be added with an embedding ID +``` + +### `DB-CLUSTER-10050` + +**メッセージ** + +```markdown +Text segments cannot be provided when adding an embedding with an embedding ID +``` + +### `DB-CLUSTER-10051` + +**メッセージ** + +```markdown +Both embedding IDs and a filter cannot be provided +``` + +### `DB-CLUSTER-10052` + +**メッセージ** + +```markdown +Unsupported embedding store type. Type: %s +``` + +### `DB-CLUSTER-10053` + +**メッセージ** + +```markdown +Unsupported embedding model type. Type: %s +``` + +### `DB-CLUSTER-10054` + +**メッセージ** + +```markdown +The filter is not set +``` + +### `DB-CLUSTER-10055` + +**メッセージ** + +```markdown +Unsupported metadata value type. Type: %s +``` + +### `DB-CLUSTER-10056` + +**メッセージ** + +```markdown +The metadata value is not set +``` + +## `DB-CLUSTER-2xxxx` ステータスコード + +以下は、同時実行エラーカテゴリのステータスコードとメッセージです。 + +### `DB-CLUSTER-20000` **メッセージ** @@ -337,7 +493,7 @@ The two-phase commit interface is not supported The hop limit is exceeded ``` -### `CLUSTER-20001` +### `DB-CLUSTER-20001` **メッセージ** @@ -345,9 +501,11 @@ The hop limit is exceeded A transaction associated with the specified transaction ID is not found. The transaction might have expired, or the cluster node that handled the transaction might have been restarted. Transaction ID: %s ``` -## `CLUSTER-3xxxx` ステータスコード +## `DB-CLUSTER-3xxxx` ステータスコード + +以下は、内部エラーカテゴリのステータスコードとメッセージです。 -### `CLUSTER-30000` +### `DB-CLUSTER-30000` **メッセージ** @@ -355,7 +513,7 @@ A transaction associated with the specified transaction ID is not found. The tra Getting local IP addresses failed ``` -### `CLUSTER-30001` +### `DB-CLUSTER-30001` **メッセージ** @@ -363,7 +521,7 @@ Getting local IP addresses failed Getting a cluster node object from the cache failed. Cluster Node IP Address: %s ``` -### `CLUSTER-30002` +### `DB-CLUSTER-30002` **メッセージ** @@ -371,7 +529,7 @@ Getting a cluster node object from the cache failed. Cluster Node IP Address: %s The ring is empty ``` -### `CLUSTER-30003` +### `DB-CLUSTER-30003` **メッセージ** @@ -379,7 +537,7 @@ The ring is empty Getting the Kubernetes API client failed ``` -### `CLUSTER-30004` +### `DB-CLUSTER-30004` **メッセージ** @@ -387,7 +545,7 @@ Getting the Kubernetes API client failed Reading the Kubernetes endpoint failed. Namespace: %s; Name: %s; Code: %d; Response Headers: %s; Response Body: %s ``` -### `CLUSTER-30005` +### `DB-CLUSTER-30005` **メッセージ** @@ -395,7 +553,7 @@ Reading the Kubernetes endpoint failed. Namespace: %s; Name: %s; Code: %d; Respo Configuring TLS failed ``` -### `CLUSTER-30006` +### `DB-CLUSTER-30006` **メッセージ** diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx index 76d517c7..7f7450cb 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx @@ -172,7 +172,7 @@ ScalarDB Cluster は、バックエンドデータベースとして何らかの 5. ScalarDB Cluster のチャートバージョンを設定します。 ```console - SCALAR_DB_CLUSTER_VERSION=3.14.1 + SCALAR_DB_CLUSTER_VERSION=3.15.1 SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-core-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-core-status-codes.mdx index 2bbe86bf..f81376c2 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-core-status-codes.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-core-status-codes.mdx @@ -16,16 +16,18 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; ## エラーコードのクラスと説明 -| クラス | 説明 | -|:-------------|:----------------------------------------------| -| `CORE-1xxxx` | ユーザーエラーカテゴリのエラー | -| `CORE-2xxxx` | 同時実行エラーカテゴリのエラー | -| `CORE-3xxxx` | 内部エラーカテゴリのエラー | -| `CORE-4xxxx` | 不明なトランザクションステータスエラーカテゴリのエラー | +| クラス | 説明 | +|:----------------|:----------------------------------------------| +| `DB-CORE-1xxxx` | ユーザーエラーカテゴリのエラー | +| `DB-CORE-2xxxx` | 同時実行エラーカテゴリのエラー | +| `DB-CORE-3xxxx` | 内部エラーカテゴリのエラー | +| `DB-CORE-4xxxx` | 不明なトランザクションステータスエラーカテゴリのエラー | -## `CORE-1xxxx` ステータスコード +## `DB-CORE-1xxxx` ステータスコード -### `CORE-10000` +以下は、ユーザーエラーカテゴリのステータスコードとメッセージです。 + +### `DB-CORE-10000` **メッセージ** @@ -33,7 +35,7 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; Only a single-column index is supported. Operation: %s ``` -### `CORE-10001` +### `DB-CORE-10001` **メッセージ** @@ -41,7 +43,7 @@ Only a single-column index is supported. Operation: %s The column of the specified index key is not indexed. Operation: %s ``` -### `CORE-10002` +### `DB-CORE-10002` **メッセージ** @@ -49,7 +51,7 @@ The column of the specified index key is not indexed. Operation: %s The index key is not properly specified. Operation: %s ``` -### `CORE-10003` +### `DB-CORE-10003` **メッセージ** @@ -57,7 +59,7 @@ The index key is not properly specified. Operation: %s Clustering keys cannot be specified when using an index. Operation: %s ``` -### `CORE-10004` +### `DB-CORE-10004` **メッセージ** @@ -65,7 +67,7 @@ Clustering keys cannot be specified when using an index. Operation: %s Orderings cannot be specified when using an index. Operation: %s ``` -### `CORE-10005` +### `DB-CORE-10005` **メッセージ** @@ -73,7 +75,7 @@ Orderings cannot be specified when using an index. Operation: %s The limit cannot be negative. Operation: %s ``` -### `CORE-10006` +### `DB-CORE-10006` **メッセージ** @@ -81,7 +83,7 @@ The limit cannot be negative. Operation: %s Cross-partition scan is not enabled. Operation: %s ``` -### `CORE-10007` +### `DB-CORE-10007` **メッセージ** @@ -89,7 +91,7 @@ Cross-partition scan is not enabled. Operation: %s Cross-partition scan ordering is not enabled. Operation: %s ``` -### `CORE-10008` +### `DB-CORE-10008` **メッセージ** @@ -97,7 +99,7 @@ Cross-partition scan ordering is not enabled. Operation: %s Cross-partition scan filtering is not enabled. Operation: %s ``` -### `CORE-10009` +### `DB-CORE-10009` **メッセージ** @@ -105,7 +107,7 @@ Cross-partition scan filtering is not enabled. Operation: %s The specified projection is not found. Projection: %s, Operation: %s ``` -### `CORE-10010` +### `DB-CORE-10010` **メッセージ** @@ -113,7 +115,7 @@ The specified projection is not found. Projection: %s, Operation: %s The clustering key boundary is not properly specified. Operation: %s ``` -### `CORE-10011` +### `DB-CORE-10011` **メッセージ** @@ -121,7 +123,7 @@ The clustering key boundary is not properly specified. Operation: %s The start clustering key is not properly specified. Operation: %s ``` -### `CORE-10012` +### `DB-CORE-10012` **メッセージ** @@ -129,7 +131,7 @@ The start clustering key is not properly specified. Operation: %s The end clustering key is not properly specified. Operation: %s ``` -### `CORE-10013` +### `DB-CORE-10013` **メッセージ** @@ -137,7 +139,7 @@ The end clustering key is not properly specified. Operation: %s Orderings are not properly specified. Operation: %s ``` -### `CORE-10014` +### `DB-CORE-10014` **メッセージ** @@ -145,7 +147,7 @@ Orderings are not properly specified. Operation: %s The specified ordering column is not found. Ordering: %s, Operation: %s ``` -### `CORE-10015` +### `DB-CORE-10015` **メッセージ** @@ -153,7 +155,7 @@ The specified ordering column is not found. Ordering: %s, Operation: %s The condition is not properly specified. Operation: %s ``` -### `CORE-10016` +### `DB-CORE-10016` **メッセージ** @@ -161,7 +163,7 @@ The condition is not properly specified. Operation: %s The table does not exist. Table: %s ``` -### `CORE-10017` +### `DB-CORE-10017` **メッセージ** @@ -169,7 +171,7 @@ The table does not exist. Table: %s The column value is not properly specified. Column: %s, Operation: %s ``` -### `CORE-10018` +### `DB-CORE-10018` **メッセージ** @@ -177,7 +179,7 @@ The column value is not properly specified. Column: %s, Operation: %s The mutations are empty ``` -### `CORE-10019` +### `DB-CORE-10019` **メッセージ** @@ -185,7 +187,7 @@ The mutations are empty Mutations that span multiple partitions are not supported. Mutations: %s ``` -### `CORE-10020` +### `DB-CORE-10020` **メッセージ** @@ -193,7 +195,7 @@ Mutations that span multiple partitions are not supported. Mutations: %s The partition key is not properly specified. Operation: %s ``` -### `CORE-10021` +### `DB-CORE-10021` **メッセージ** @@ -201,7 +203,7 @@ The partition key is not properly specified. Operation: %s The clustering key is not properly specified. Operation: %s ``` -### `CORE-10022` +### `DB-CORE-10022` **メッセージ** @@ -209,7 +211,7 @@ The clustering key is not properly specified. Operation: %s The authentication and authorization feature is not enabled. To use this feature, you must enable it. Note that this feature is supported only in the ScalarDB Enterprise edition ``` -### `CORE-10023` +### `DB-CORE-10023` **メッセージ** @@ -217,7 +219,7 @@ The authentication and authorization feature is not enabled. To use this feature This condition is not allowed for the PutIf operation. Condition: %s ``` -### `CORE-10024` +### `DB-CORE-10024` **メッセージ** @@ -225,7 +227,7 @@ This condition is not allowed for the PutIf operation. Condition: %s This condition is not allowed for the DeleteIf operation. Condition: %s ``` -### `CORE-10025` +### `DB-CORE-10025` **メッセージ** @@ -233,7 +235,7 @@ This condition is not allowed for the DeleteIf operation. Condition: %s Operator must be LIKE or NOT_LIKE. Operator: %s ``` -### `CORE-10026` +### `DB-CORE-10026` **メッセージ** @@ -241,7 +243,7 @@ Operator must be LIKE or NOT_LIKE. Operator: %s An escape character must be a string of a single character or an empty string ``` -### `CORE-10027` +### `DB-CORE-10027` **メッセージ** @@ -249,7 +251,7 @@ An escape character must be a string of a single character or an empty string The LIKE pattern must not be null ``` -### `CORE-10028` +### `DB-CORE-10028` **メッセージ** @@ -257,7 +259,7 @@ The LIKE pattern must not be null The LIKE pattern must not include only an escape character ``` -### `CORE-10029` +### `DB-CORE-10029` **メッセージ** @@ -265,7 +267,7 @@ The LIKE pattern must not include only an escape character The LIKE pattern must not end with an escape character ``` -### `CORE-10030` +### `DB-CORE-10030` **メッセージ** @@ -273,7 +275,7 @@ The LIKE pattern must not end with an escape character The column %s does not exist ``` -### `CORE-10031` +### `DB-CORE-10031` **メッセージ** @@ -281,7 +283,7 @@ The column %s does not exist This operation is not supported when getting records of a database without using an index ``` -### `CORE-10032` +### `DB-CORE-10032` **メッセージ** @@ -289,7 +291,7 @@ This operation is not supported when getting records of a database without using This operation is not supported when getting records of a database by using an index ``` -### `CORE-10033` +### `DB-CORE-10033` **メッセージ** @@ -297,7 +299,7 @@ This operation is not supported when getting records of a database by using an i This operation is not supported when scanning all the records of a database or scanning records of a database by using an index ``` -### `CORE-10034` +### `DB-CORE-10034` **メッセージ** @@ -305,7 +307,7 @@ This operation is not supported when scanning all the records of a database or s This operation is supported only when scanning records of a database by using an index ``` -### `CORE-10035` +### `DB-CORE-10035` **メッセージ** @@ -313,7 +315,7 @@ This operation is supported only when scanning records of a database by using an This operation is not supported when scanning records of a database by using an index ``` -### `CORE-10037` +### `DB-CORE-10037` **メッセージ** @@ -321,7 +323,7 @@ This operation is not supported when scanning records of a database by using an This operation is supported only when no conditions are specified. If you want to modify a condition, please use clearConditions() to remove all existing conditions first ``` -### `CORE-10038` +### `DB-CORE-10038` **メッセージ** @@ -329,7 +331,7 @@ This operation is supported only when no conditions are specified. If you want t One or more columns must be specified. ``` -### `CORE-10039` +### `DB-CORE-10039` **メッセージ** @@ -337,7 +339,7 @@ One or more columns must be specified. One or more partition keys must be specified. ``` -### `CORE-10040` +### `DB-CORE-10040` **メッセージ** @@ -345,7 +347,7 @@ One or more partition keys must be specified. The column definition must be specified since %s is specified as a partition key ``` -### `CORE-10041` +### `DB-CORE-10041` **メッセージ** @@ -353,7 +355,7 @@ The column definition must be specified since %s is specified as a partition key The column definition must be specified since %s is specified as a clustering key ``` -### `CORE-10042` +### `DB-CORE-10042` **メッセージ** @@ -361,7 +363,7 @@ The column definition must be specified since %s is specified as a clustering ke Invalid ID specified. ID: %d ``` -### `CORE-10043` +### `DB-CORE-10043` **メッセージ** @@ -369,7 +371,7 @@ Invalid ID specified. ID: %d The transaction is not active. Status: %s ``` -### `CORE-10044` +### `DB-CORE-10044` **メッセージ** @@ -377,7 +379,7 @@ The transaction is not active. Status: %s The transaction has already been committed or rolled back. Status: %s ``` -### `CORE-10045` +### `DB-CORE-10045` **メッセージ** @@ -385,7 +387,7 @@ The transaction has already been committed or rolled back. Status: %s The transaction has not been prepared. Status: %s ``` -### `CORE-10046` +### `DB-CORE-10046` **メッセージ** @@ -393,7 +395,7 @@ The transaction has not been prepared. Status: %s The transaction has not been prepared or validated. Status: %s ``` -### `CORE-10047` +### `DB-CORE-10047` **メッセージ** @@ -401,7 +403,7 @@ The transaction has not been prepared or validated. Status: %s The transaction already exists ``` -### `CORE-10048` +### `DB-CORE-10048` **メッセージ** @@ -409,7 +411,7 @@ The transaction already exists A transaction associated with the specified transaction ID is not found. The transaction might have expired ``` -### `CORE-10049` +### `DB-CORE-10049` **メッセージ** @@ -417,7 +419,7 @@ A transaction associated with the specified transaction ID is not found. The tra %s is the system namespace name ``` -### `CORE-10050` +### `DB-CORE-10050` **メッセージ** @@ -425,7 +427,7 @@ A transaction associated with the specified transaction ID is not found. The tra The namespace already exists. Namespace: %s ``` -### `CORE-10051` +### `DB-CORE-10051` **メッセージ** @@ -433,7 +435,7 @@ The namespace already exists. Namespace: %s The namespace does not exist. Namespace: %s ``` -### `CORE-10052` +### `DB-CORE-10052` **メッセージ** @@ -441,7 +443,7 @@ The namespace does not exist. Namespace: %s The table already exists. Table: %s ``` -### `CORE-10053` +### `DB-CORE-10053` **メッセージ** @@ -449,7 +451,7 @@ The table already exists. Table: %s The namespace is not empty. Namespace: %s; Tables in the namespace: %s ``` -### `CORE-10054` +### `DB-CORE-10054` **メッセージ** @@ -457,7 +459,7 @@ The namespace is not empty. Namespace: %s; Tables in the namespace: %s The column does not exist. Table: %s; Column: %s ``` -### `CORE-10055` +### `DB-CORE-10055` **メッセージ** @@ -465,7 +467,7 @@ The column does not exist. Table: %s; Column: %s The index already exists. Table: %s; Column: %s ``` -### `CORE-10056` +### `DB-CORE-10056` **メッセージ** @@ -473,7 +475,7 @@ The index already exists. Table: %s; Column: %s The index does not exist. Table: %s; Column: %s ``` -### `CORE-10057` +### `DB-CORE-10057` **メッセージ** @@ -481,7 +483,7 @@ The index does not exist. Table: %s; Column: %s The column already exists. Table: %s; Column: %s ``` -### `CORE-10058` +### `DB-CORE-10058` **メッセージ** @@ -489,7 +491,7 @@ The column already exists. Table: %s; Column: %s The operation does not have the target namespace or table name. Operation: %s ``` -### `CORE-10059` +### `DB-CORE-10059` **メッセージ** @@ -497,7 +499,7 @@ The operation does not have the target namespace or table name. Operation: %s The specified value of the property '%s' is not a number. Value: %s ``` -### `CORE-10060` +### `DB-CORE-10060` **メッセージ** @@ -505,7 +507,7 @@ The specified value of the property '%s' is not a number. Value: %s The specified value of the property '%s' is not a boolean. Value: %s ``` -### `CORE-10061` +### `DB-CORE-10061` **メッセージ** @@ -513,7 +515,7 @@ The specified value of the property '%s' is not a boolean. Value: %s Reading the file failed. File: %s ``` -### `CORE-10062` +### `DB-CORE-10062` **メッセージ** @@ -521,7 +523,7 @@ Reading the file failed. File: %s The property 'scalar.db.cross_partition_scan.enabled' must be set to true to use cross-partition scan with filtering or ordering ``` -### `CORE-10063` +### `DB-CORE-10063` **メッセージ** @@ -529,7 +531,7 @@ The property 'scalar.db.cross_partition_scan.enabled' must be set to true to use This column value is out of range for BigInt. Value: %s ``` -### `CORE-10064` +### `DB-CORE-10064` **メッセージ** @@ -537,7 +539,7 @@ This column value is out of range for BigInt. Value: %s This type is not supported. Name: %s, Type: %s ``` -### `CORE-10065` +### `DB-CORE-10065` **メッセージ** @@ -545,7 +547,7 @@ This type is not supported. Name: %s, Type: %s Storage '%s' is not found ``` -### `CORE-10066` +### `DB-CORE-10066` **メッセージ** @@ -553,7 +555,7 @@ Storage '%s' is not found Transaction manager '%s' is not found ``` -### `CORE-10068` +### `DB-CORE-10068` **メッセージ** @@ -561,7 +563,7 @@ Transaction manager '%s' is not found Please use scan() for non-exact match selection. Operation: %s ``` -### `CORE-10069` +### `DB-CORE-10069` **メッセージ** @@ -569,7 +571,7 @@ Please use scan() for non-exact match selection. Operation: %s Import-related functionality is not supported in Cassandra ``` -### `CORE-10070` +### `DB-CORE-10070` **メッセージ** @@ -577,7 +579,7 @@ Import-related functionality is not supported in Cassandra The %s network strategy does not exist ``` -### `CORE-10071` +### `DB-CORE-10071` **メッセージ** @@ -585,7 +587,7 @@ The %s network strategy does not exist The property 'scalar.db.contact_port' must be greater than or equal to zero ``` -### `CORE-10073` +### `DB-CORE-10073` **メッセージ** @@ -593,7 +595,7 @@ The property 'scalar.db.contact_port' must be greater than or equal to zero The BLOB type is not supported for clustering keys in Cosmos DB. Column: %s ``` -### `CORE-10074` +### `DB-CORE-10074` **メッセージ** @@ -601,7 +603,7 @@ The BLOB type is not supported for clustering keys in Cosmos DB. Column: %s Import-related functionality is not supported in Cosmos DB ``` -### `CORE-10075` +### `DB-CORE-10075` **メッセージ** @@ -609,7 +611,7 @@ Import-related functionality is not supported in Cosmos DB The property 'scalar.db.contact_points' must not be empty ``` -### `CORE-10076` +### `DB-CORE-10076` **メッセージ** @@ -617,7 +619,7 @@ The property 'scalar.db.contact_points' must not be empty Cosmos DB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BLOB type in conditions. Mutation: %s ``` -### `CORE-10077` +### `DB-CORE-10077` **メッセージ** @@ -625,7 +627,7 @@ Cosmos DB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BLOB The specified consistency level is not supported. Consistency level: %s ``` -### `CORE-10078` +### `DB-CORE-10078` **メッセージ** @@ -633,7 +635,7 @@ The specified consistency level is not supported. Consistency level: %s 0x00 bytes are not accepted in BLOB values in DESC order ``` -### `CORE-10079` +### `DB-CORE-10079` **メッセージ** @@ -641,7 +643,7 @@ The specified consistency level is not supported. Consistency level: %s Cannot encode a Text value that contains '\u0000' ``` -### `CORE-10081` +### `DB-CORE-10081` **メッセージ** @@ -649,7 +651,7 @@ Cannot encode a Text value that contains '\u0000' An index column cannot be set to null or an empty value for Text or Blob in DynamoDB. Operation: %s ``` -### `CORE-10082` +### `DB-CORE-10082` **メッセージ** @@ -657,7 +659,7 @@ An index column cannot be set to null or an empty value for Text or Blob in Dyna DynamoDB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BOOLEAN type in conditions. Mutation: %s ``` -### `CORE-10083` +### `DB-CORE-10083` **メッセージ** @@ -665,7 +667,7 @@ DynamoDB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BOOLE Nested multi-storage definitions are not supported. Storage: %s ``` -### `CORE-10084` +### `DB-CORE-10084` **メッセージ** @@ -673,7 +675,7 @@ Nested multi-storage definitions are not supported. Storage: %s Storage not found. Storage: %s ``` -### `CORE-10085` +### `DB-CORE-10085` **メッセージ** @@ -681,7 +683,7 @@ Storage not found. Storage: %s The namespace name is not acceptable. Namespace: %s ``` -### `CORE-10086` +### `DB-CORE-10086` **メッセージ** @@ -689,7 +691,7 @@ The namespace name is not acceptable. Namespace: %s The table name is not acceptable. Table: %s ``` -### `CORE-10087` +### `DB-CORE-10087` **メッセージ** @@ -697,7 +699,7 @@ The table name is not acceptable. Table: %s Importing tables is not allowed in the RDB engine. RDB engine: %s ``` -### `CORE-10088` +### `DB-CORE-10088` **メッセージ** @@ -705,7 +707,7 @@ Importing tables is not allowed in the RDB engine. RDB engine: %s The %s table must have a primary key ``` -### `CORE-10089` +### `DB-CORE-10089` **メッセージ** @@ -713,7 +715,7 @@ The %s table must have a primary key The RDB engine is not supported. JDBC connection URL: %s ``` -### `CORE-10090` +### `DB-CORE-10090` **メッセージ** @@ -721,7 +723,7 @@ The RDB engine is not supported. JDBC connection URL: %s Data type %s(%d) is not supported: %s ``` -### `CORE-10091` +### `DB-CORE-10091` **メッセージ** @@ -729,7 +731,7 @@ Data type %s(%d) is not supported: %s Data type %s is not supported: %s ``` -### `CORE-10092` +### `DB-CORE-10092` **メッセージ** @@ -737,7 +739,7 @@ Data type %s is not supported: %s Getting a transaction state is not supported in JDBC transactions ``` -### `CORE-10093` +### `DB-CORE-10093` **メッセージ** @@ -745,7 +747,7 @@ Getting a transaction state is not supported in JDBC transactions Rolling back a transaction is not supported in JDBC transactions ``` -### `CORE-10094` +### `DB-CORE-10094` **メッセージ** @@ -753,7 +755,7 @@ Rolling back a transaction is not supported in JDBC transactions Coordinator tables already exist ``` -### `CORE-10095` +### `DB-CORE-10095` **メッセージ** @@ -761,7 +763,7 @@ Coordinator tables already exist Coordinator tables do not exist ``` -### `CORE-10096` +### `DB-CORE-10096` **メッセージ** @@ -769,7 +771,7 @@ Coordinator tables do not exist The namespace %s is reserved. Any operations on this namespace are not allowed ``` -### `CORE-10097` +### `DB-CORE-10097` **メッセージ** @@ -777,7 +779,7 @@ The namespace %s is reserved. Any operations on this namespace are not allowed Mutating transaction metadata columns is not allowed. Table: %s; Column: %s ``` -### `CORE-10098` +### `DB-CORE-10098` **メッセージ** @@ -785,7 +787,7 @@ Mutating transaction metadata columns is not allowed. Table: %s; Column: %s A %s condition is not allowed on Put operations ``` -### `CORE-10099` +### `DB-CORE-10099` **メッセージ** @@ -793,7 +795,7 @@ A %s condition is not allowed on Put operations A %s condition is not allowed on Delete operations ``` -### `CORE-10100` +### `DB-CORE-10100` **メッセージ** @@ -801,7 +803,7 @@ A %s condition is not allowed on Delete operations The condition is not allowed to target transaction metadata columns. Column: %s ``` -### `CORE-10101` +### `DB-CORE-10101` **メッセージ** @@ -809,7 +811,7 @@ The condition is not allowed to target transaction metadata columns. Column: %s The column '%s' is reserved as transaction metadata ``` -### `CORE-10102` +### `DB-CORE-10102` **メッセージ** @@ -817,7 +819,7 @@ The column '%s' is reserved as transaction metadata Non-primary key columns with the 'before_' prefix, '%s', are reserved as transaction metadata ``` -### `CORE-10103` +### `DB-CORE-10103` **メッセージ** @@ -825,7 +827,7 @@ Non-primary key columns with the 'before_' prefix, '%s', are reserved as transac Put cannot have a condition when the target record is unread and implicit pre-read is disabled. Please read the target record beforehand or enable implicit pre-read: %s ``` -### `CORE-10104` +### `DB-CORE-10104` **メッセージ** @@ -833,7 +835,7 @@ Put cannot have a condition when the target record is unread and implicit pre-re Writing already-deleted data is not allowed ``` -### `CORE-10105` +### `DB-CORE-10105` **メッセージ** @@ -841,7 +843,7 @@ Writing already-deleted data is not allowed Getting data neither in the read set nor the delete set is not allowed ``` -### `CORE-10106` +### `DB-CORE-10106` **メッセージ** @@ -849,7 +851,7 @@ Getting data neither in the read set nor the delete set is not allowed Reading already-written data is not allowed ``` -### `CORE-10107` +### `DB-CORE-10107` **メッセージ** @@ -857,7 +859,7 @@ Reading already-written data is not allowed The transaction is not validated. When using the EXTRA_READ serializable strategy, you need to call validate() before calling commit() ``` -### `CORE-10108` +### `DB-CORE-10108` **メッセージ** @@ -865,7 +867,7 @@ The transaction is not validated. When using the EXTRA_READ serializable strateg DynamoDB cannot batch more than 100 mutations at once ``` -### `CORE-10109` +### `DB-CORE-10109` **メッセージ** @@ -873,7 +875,7 @@ DynamoDB cannot batch more than 100 mutations at once The partition keys of the table %s.%s were modified, but altering partition keys is not supported ``` -### `CORE-10110` +### `DB-CORE-10110` **メッセージ** @@ -881,7 +883,7 @@ The partition keys of the table %s.%s were modified, but altering partition keys The clustering keys of the table %s.%s were modified, but altering clustering keys is not supported ``` -### `CORE-10111` +### `DB-CORE-10111` **メッセージ** @@ -889,7 +891,7 @@ The clustering keys of the table %s.%s were modified, but altering clustering ke The clustering ordering of the table %s.%s were modified, but altering clustering ordering is not supported ``` -### `CORE-10112` +### `DB-CORE-10112` **メッセージ** @@ -897,7 +899,7 @@ The clustering ordering of the table %s.%s were modified, but altering clusterin The column %s of the table %s.%s has been deleted. Column deletion is not supported when altering a table ``` -### `CORE-10113` +### `DB-CORE-10113` **メッセージ** @@ -905,7 +907,7 @@ The column %s of the table %s.%s has been deleted. Column deletion is not suppor The data type of the column %s of the table %s.%s was modified, but altering data types is not supported ``` -### `CORE-10114` +### `DB-CORE-10114` **メッセージ** @@ -913,7 +915,7 @@ The data type of the column %s of the table %s.%s was modified, but altering dat Specifying the '--schema-file' option is required when using the '--repair-all' option ``` -### `CORE-10115` +### `DB-CORE-10115` **メッセージ** @@ -921,7 +923,7 @@ Specifying the '--schema-file' option is required when using the '--repair-all' Specifying the '--schema-file' option is required when using the '--alter' option ``` -### `CORE-10116` +### `DB-CORE-10116` **メッセージ** @@ -929,7 +931,7 @@ Specifying the '--schema-file' option is required when using the '--alter' optio Specifying the '--schema-file' option is required when using the '--import' option ``` -### `CORE-10117` +### `DB-CORE-10117` **メッセージ** @@ -937,7 +939,7 @@ Specifying the '--schema-file' option is required when using the '--import' opti Specifying the '--coordinator' option with the '--import' option is not allowed. Create Coordinator tables separately ``` -### `CORE-10118` +### `DB-CORE-10118` **メッセージ** @@ -945,7 +947,7 @@ Specifying the '--coordinator' option with the '--import' option is not allowed. Reading the configuration file failed. File: %s ``` -### `CORE-10119` +### `DB-CORE-10119` **メッセージ** @@ -953,7 +955,7 @@ Reading the configuration file failed. File: %s Reading the schema file failed. File: %s ``` -### `CORE-10120` +### `DB-CORE-10120` **メッセージ** @@ -961,7 +963,7 @@ Reading the schema file failed. File: %s Parsing the schema JSON failed. Details: %s ``` -### `CORE-10121` +### `DB-CORE-10121` **メッセージ** @@ -969,7 +971,7 @@ Parsing the schema JSON failed. Details: %s The table name must contain the namespace and the table. Table: %s ``` -### `CORE-10122` +### `DB-CORE-10122` **メッセージ** @@ -977,7 +979,7 @@ The table name must contain the namespace and the table. Table: %s The partition key must be specified. Table: %s ``` -### `CORE-10123` +### `DB-CORE-10123` **メッセージ** @@ -985,7 +987,7 @@ The partition key must be specified. Table: %s Invalid clustering-key format. The clustering key must be in the format of 'column_name' or 'column_name ASC/DESC'. Table: %s; Clustering key: %s ``` -### `CORE-10124` +### `DB-CORE-10124` **メッセージ** @@ -993,7 +995,7 @@ Invalid clustering-key format. The clustering key must be in the format of 'colu Columns must be specified. Table: %s ``` -### `CORE-10125` +### `DB-CORE-10125` **メッセージ** @@ -1001,7 +1003,7 @@ Columns must be specified. Table: %s Invalid column type. Table: %s; Column: %s; Type: %s ``` -### `CORE-10126` +### `DB-CORE-10126` **メッセージ** @@ -1009,7 +1011,7 @@ Invalid column type. Table: %s; Column: %s; Type: %s The mutation type is not supported. Only the Put or Delete type is supported. Mutation: %s ``` -### `CORE-10127` +### `DB-CORE-10127` **メッセージ** @@ -1017,7 +1019,7 @@ The mutation type is not supported. Only the Put or Delete type is supported. Mu This condition is not allowed for the UpdateIf operation. Condition: %s ``` -### `CORE-10128` +### `DB-CORE-10128` **メッセージ** @@ -1025,7 +1027,7 @@ This condition is not allowed for the UpdateIf operation. Condition: %s Cross-partition scan with ordering is not supported in Cassandra ``` -### `CORE-10129` +### `DB-CORE-10129` **メッセージ** @@ -1033,7 +1035,7 @@ Cross-partition scan with ordering is not supported in Cassandra Cross-partition scan with ordering is not supported in Cosmos DB ``` -### `CORE-10130` +### `DB-CORE-10130` **メッセージ** @@ -1041,7 +1043,7 @@ Cross-partition scan with ordering is not supported in Cosmos DB Cross-partition scan with ordering is not supported in DynamoDB ``` -### `CORE-10131` +### `DB-CORE-10131` **メッセージ** @@ -1049,7 +1051,7 @@ Cross-partition scan with ordering is not supported in DynamoDB The directory '%s' does not have write permissions. Please ensure that the current user has write access to the directory. ``` -### `CORE-10132` +### `DB-CORE-10132` **メッセージ** @@ -1057,7 +1059,7 @@ The directory '%s' does not have write permissions. Please ensure that the curre Failed to create the directory '%s'. Please check if you have sufficient permissions and if there are any file system restrictions. Details: %s ``` -### `CORE-10133` +### `DB-CORE-10133` **メッセージ** @@ -1065,7 +1067,7 @@ Failed to create the directory '%s'. Please check if you have sufficient permiss Directory path cannot be null or empty. ``` -### `CORE-10134` +### `DB-CORE-10134` **メッセージ** @@ -1073,7 +1075,7 @@ Directory path cannot be null or empty. No file extension was found on the provided file name %s. ``` -### `CORE-10135` +### `DB-CORE-10135` **メッセージ** @@ -1081,7 +1083,7 @@ No file extension was found on the provided file name %s. Invalid file extension: %s. Allowed extensions are: %s ``` -### `CORE-10136` +### `DB-CORE-10136` **メッセージ** @@ -1089,7 +1091,7 @@ Invalid file extension: %s. Allowed extensions are: %s Getting a transaction state is not supported in single CRUD operation transactions ``` -### `CORE-10137` +### `DB-CORE-10137` **メッセージ** @@ -1097,7 +1099,7 @@ Getting a transaction state is not supported in single CRUD operation transactio Rolling back a transaction is not supported in single CRUD operation transactions ``` -### `CORE-10138` +### `DB-CORE-10138` **メッセージ** @@ -1105,7 +1107,7 @@ Rolling back a transaction is not supported in single CRUD operation transaction Multiple mutations are not supported in single CRUD operation transactions ``` -### `CORE-10139` +### `DB-CORE-10139` **メッセージ** @@ -1113,7 +1115,7 @@ Multiple mutations are not supported in single CRUD operation transactions Beginning a transaction is not allowed in single CRUD operation transactions ``` -### `CORE-10140` +### `DB-CORE-10140` **メッセージ** @@ -1121,7 +1123,7 @@ Beginning a transaction is not allowed in single CRUD operation transactions Resuming a transaction is not allowed in single CRUD operation transactions ``` -### `CORE-10141` +### `DB-CORE-10141` **メッセージ** @@ -1129,7 +1131,7 @@ Resuming a transaction is not allowed in single CRUD operation transactions Using the group commit feature on the Coordinator table with a two-phase commit interface is not allowed ``` -### `CORE-10142` +### `DB-CORE-10142` **メッセージ** @@ -1137,7 +1139,7 @@ Using the group commit feature on the Coordinator table with a two-phase commit This operation is supported only when no conditions are specified. If you want to modify a condition, please use clearConditions() to remove all existing conditions first ``` -### `CORE-10143` +### `DB-CORE-10143` **メッセージ** @@ -1145,7 +1147,7 @@ This operation is supported only when no conditions are specified. If you want t The encryption feature is not enabled. To encrypt data at rest, you must enable this feature. Note that this feature is supported only in the ScalarDB Enterprise edition ``` -### `CORE-10144` +### `DB-CORE-10144` **メッセージ** @@ -1153,7 +1155,7 @@ The encryption feature is not enabled. To encrypt data at rest, you must enable The variable key column size must be greater than or equal to 64 ``` -### `CORE-10145` +### `DB-CORE-10145` **メッセージ** @@ -1161,7 +1163,7 @@ The variable key column size must be greater than or equal to 64 The value of the column %s in the primary key contains an illegal character. Primary-key columns must not contain any of the following characters in Cosmos DB: ':', '/', '\', '#', '?'. Value: %s ``` -### `CORE-10146` +### `DB-CORE-10146` **メッセージ** @@ -1169,7 +1171,7 @@ The value of the column %s in the primary key contains an illegal character. Pri Inserting already-written data is not allowed ``` -### `CORE-10147` +### `DB-CORE-10147` **メッセージ** @@ -1177,7 +1179,7 @@ Inserting already-written data is not allowed Deleting already-inserted data is not allowed ``` -### `CORE-10148` +### `DB-CORE-10148` **メッセージ** @@ -1185,7 +1187,7 @@ Deleting already-inserted data is not allowed Invalid key: Column %s does not exist in the table %s in namespace %s. ``` -### `CORE-10149` +### `DB-CORE-10149` **メッセージ** @@ -1193,7 +1195,7 @@ Invalid key: Column %s does not exist in the table %s in namespace %s. Invalid base64 encoding for blob value for column %s in table %s in namespace %s ``` -### `CORE-10150` +### `DB-CORE-10150` **メッセージ** @@ -1201,7 +1203,7 @@ Invalid base64 encoding for blob value for column %s in table %s in namespace %s Invalid number specified for column %s in table %s in namespace %s ``` -### `CORE-10151` +### `DB-CORE-10151` **メッセージ** @@ -1209,9 +1211,211 @@ Invalid number specified for column %s in table %s in namespace %s Method null argument not allowed ``` -## `CORE-2xxxx` ステータスコード +### `DB-CORE-10152` + +**メッセージ** + +```markdown +The attribute-based access control feature is not enabled. To use this feature, you must enable it. Note that this feature is supported only in the ScalarDB Enterprise edition +``` + +### `DB-CORE-10153` + +**メッセージ** + +```markdown +The provided clustering key %s was not found +``` + +### `DB-CORE-10154` + +**メッセージ** + +```markdown +The column '%s' was not found +``` + +### `DB-CORE-10155` + +**メッセージ** + +```markdown +The provided partition key is incomplete. Required key: %s +``` + +### `DB-CORE-10156` + +**メッセージ** + +```markdown +The provided clustering key order does not match the table schema. Required order: %s +``` + +### `DB-CORE-10157` + +**メッセージ** + +```markdown +The provided partition key order does not match the table schema. Required order: %s +``` + +### `DB-CORE-10158` + +**メッセージ** + +```markdown +This DATE column value is out of the valid range. It must be between 1000-01-01 and 9999-12-12. Value: %s +``` + +### `DB-CORE-10159` + +**メッセージ** + +```markdown +This TIME column value precision cannot be shorter than one microsecond. Value: %s +``` + +### `DB-CORE-10160` + +**メッセージ** + +```markdown +This TIMESTAMP column value is out of the valid range. It must be between 1000-01-01T00:00:00.000 and 9999-12-31T23:59:59.999. Value: %s +``` + +### `DB-CORE-10161` + +**メッセージ** + +```markdown +This TIMESTAMP column value precision cannot be shorter than one millisecond. Value: %s +``` + +### `DB-CORE-10162` + +**メッセージ** + +```markdown +This TIMESTAMPTZ column value is out of the valid range. It must be between 1000-01-01T00:00:00.000Z to 9999-12-31T23:59:59.999Z. Value: %s +``` + +### `DB-CORE-10163` + +**メッセージ** + +```markdown +This TIMESTAMPTZ column value precision cannot be shorter than one millisecond. Value: %s +``` + +### `DB-CORE-10164` + +**メッセージ** + +```markdown +The underlying-storage data type %s is not supported as the ScalarDB %s data type: %s +``` + +### `DB-CORE-10165` + +**メッセージ** + +```markdown +Missing namespace or table: %s, %s +``` + +### `DB-CORE-10166` + +**メッセージ** + +```markdown +Failed to retrieve table metadata. Details: %s +``` + +### `DB-CORE-10167` + +**メッセージ** + +```markdown +Duplicate data mappings found for table '%s' in the control file +``` + +### `DB-CORE-10168` + +**メッセージ** + +```markdown +No mapping found for column '%s' in table '%s' in the control file. Control file validation set at 'FULL'. All columns need to be mapped. +``` + +### `DB-CORE-10169` + +**メッセージ** + +```markdown +The control file is missing data mappings +``` + +### `DB-CORE-10170` + +**メッセージ** + +```markdown +The target column '%s' for source field '%s' could not be found in table '%s' +``` + +### `DB-CORE-10171` + +**メッセージ** + +```markdown +The required partition key '%s' is missing in the control file mapping for table '%s' +``` + +### `DB-CORE-10172` + +**メッセージ** + +```markdown +The required clustering key '%s' is missing in the control file mapping for table '%s' +``` + +### `DB-CORE-10173` + +**メッセージ** + +```markdown +Duplicated data mappings found for column '%s' in table '%s' +``` + +### `DB-CORE-10174` + +**メッセージ** + +```markdown +Missing required field or column mapping for clustering key %s +``` + +### `DB-CORE-10175` + +**メッセージ** + +```markdown +Missing required field or column mapping for partition key %s +``` -### `CORE-20000` +### `DB-CORE-10176` + +**メッセージ** + +```markdown +Missing field or column mapping for %s +``` + +## `DB-CORE-2xxxx` ステータスコード + +以下は、同時実行エラーカテゴリのステータスコードとメッセージです。 + +### `DB-CORE-20000` **メッセージ** @@ -1219,7 +1423,7 @@ Method null argument not allowed No mutation was applied ``` -### `CORE-20001` +### `DB-CORE-20001` **メッセージ** @@ -1227,7 +1431,7 @@ No mutation was applied Logging failed in the batch ``` -### `CORE-20002` +### `DB-CORE-20002` **メッセージ** @@ -1235,7 +1439,7 @@ Logging failed in the batch The operation failed in the batch with type %s ``` -### `CORE-20003` +### `DB-CORE-20003` **メッセージ** @@ -1243,7 +1447,7 @@ The operation failed in the batch with type %s An error occurred in the batch. Details: %s ``` -### `CORE-20004` +### `DB-CORE-20004` **メッセージ** @@ -1251,7 +1455,7 @@ An error occurred in the batch. Details: %s A Paxos phase in the CAS operation failed ``` -### `CORE-20005` +### `DB-CORE-20005` **メッセージ** @@ -1259,7 +1463,7 @@ A Paxos phase in the CAS operation failed The learn phase in the CAS operation failed ``` -### `CORE-20006` +### `DB-CORE-20006` **メッセージ** @@ -1267,7 +1471,7 @@ The learn phase in the CAS operation failed A simple write operation failed ``` -### `CORE-20007` +### `DB-CORE-20007` **メッセージ** @@ -1275,7 +1479,7 @@ A simple write operation failed An error occurred in the mutation. Details: %s ``` -### `CORE-20008` +### `DB-CORE-20008` **メッセージ** @@ -1283,7 +1487,7 @@ An error occurred in the mutation. Details: %s A RetryWith error occurred in the mutation. Details: %s ``` -### `CORE-20009` +### `DB-CORE-20009` **メッセージ** @@ -1291,7 +1495,7 @@ A RetryWith error occurred in the mutation. Details: %s A transaction conflict occurred in the mutation. Details: %s ``` -### `CORE-20010` +### `DB-CORE-20010` **メッセージ** @@ -1299,7 +1503,7 @@ A transaction conflict occurred in the mutation. Details: %s A transaction conflict occurred in the mutation. Details: %s ``` -### `CORE-20011` +### `DB-CORE-20011` **メッセージ** @@ -1307,7 +1511,7 @@ A transaction conflict occurred in the mutation. Details: %s A conflict occurred. Please try restarting the transaction. Details: %s ``` -### `CORE-20012` +### `DB-CORE-20012` **メッセージ** @@ -1315,7 +1519,7 @@ A conflict occurred. Please try restarting the transaction. Details: %s The %s condition of the %s operation is not satisfied. Targeting column(s): %s ``` -### `CORE-20013` +### `DB-CORE-20013` **メッセージ** @@ -1323,7 +1527,7 @@ The %s condition of the %s operation is not satisfied. Targeting column(s): %s The record being prepared already exists ``` -### `CORE-20014` +### `DB-CORE-20014` **メッセージ** @@ -1331,7 +1535,7 @@ The record being prepared already exists A conflict occurred when preparing records ``` -### `CORE-20015` +### `DB-CORE-20015` **メッセージ** @@ -1339,7 +1543,7 @@ A conflict occurred when preparing records The committing state in the coordinator failed. The transaction has been aborted ``` -### `CORE-20016` +### `DB-CORE-20016` **メッセージ** @@ -1347,7 +1551,7 @@ The committing state in the coordinator failed. The transaction has been aborted A conflict occurred during implicit pre-read ``` -### `CORE-20017` +### `DB-CORE-20017` **メッセージ** @@ -1355,7 +1559,7 @@ A conflict occurred during implicit pre-read This record needs to be recovered ``` -### `CORE-20018` +### `DB-CORE-20018` **メッセージ** @@ -1363,7 +1567,7 @@ This record needs to be recovered The record does not exist, so the %s condition is not satisfied ``` -### `CORE-20019` +### `DB-CORE-20019` **メッセージ** @@ -1371,7 +1575,7 @@ The record does not exist, so the %s condition is not satisfied The record exists, so the %s condition is not satisfied ``` -### `CORE-20020` +### `DB-CORE-20020` **メッセージ** @@ -1379,7 +1583,7 @@ The record exists, so the %s condition is not satisfied The condition on the column '%s' is not satisfied ``` -### `CORE-20021` +### `DB-CORE-20021` **メッセージ** @@ -1387,7 +1591,7 @@ The condition on the column '%s' is not satisfied Reading empty records might cause a write skew anomaly, so the transaction has been aborted for safety purposes ``` -### `CORE-20022` +### `DB-CORE-20022` **メッセージ** @@ -1395,7 +1599,7 @@ Reading empty records might cause a write skew anomaly, so the transaction has b An anti-dependency was found. The transaction has been aborted ``` -### `CORE-20023` +### `DB-CORE-20023` **メッセージ** @@ -1403,7 +1607,7 @@ An anti-dependency was found. The transaction has been aborted A transaction conflict occurred in the Insert operation ``` -### `CORE-20024` +### `DB-CORE-20024` **メッセージ** @@ -1411,7 +1615,7 @@ A transaction conflict occurred in the Insert operation The %s condition of the %s operation is not satisfied. Targeting column(s): %s ``` -### `CORE-20025` +### `DB-CORE-20025` **メッセージ** @@ -1419,9 +1623,11 @@ The %s condition of the %s operation is not satisfied. Targeting column(s): %s A transaction conflict occurred in the Insert operation ``` -## `CORE-3xxxx` ステータスコード +## `DB-CORE-3xxxx` ステータスコード + +以下は、内部エラーカテゴリのステータスコードとメッセージです。 -### `CORE-30000` +### `DB-CORE-30000` **メッセージ** @@ -1429,7 +1635,7 @@ A transaction conflict occurred in the Insert operation Creating the namespace failed. Namespace: %s ``` -### `CORE-30001` +### `DB-CORE-30001` **メッセージ** @@ -1437,7 +1643,7 @@ Creating the namespace failed. Namespace: %s Dropping the namespace failed. Namespace: %s ``` -### `CORE-30002` +### `DB-CORE-30002` **メッセージ** @@ -1445,7 +1651,7 @@ Dropping the namespace failed. Namespace: %s Creating the table failed. Table: %s ``` -### `CORE-30003` +### `DB-CORE-30003` **メッセージ** @@ -1453,7 +1659,7 @@ Creating the table failed. Table: %s Dropping the table failed. Table: %s ``` -### `CORE-30004` +### `DB-CORE-30004` **メッセージ** @@ -1461,7 +1667,7 @@ Dropping the table failed. Table: %s Truncating the table failed. Table: %s ``` -### `CORE-30005` +### `DB-CORE-30005` **メッセージ** @@ -1469,7 +1675,7 @@ Truncating the table failed. Table: %s Creating the index failed. Table: %s, Column: %s ``` -### `CORE-30006` +### `DB-CORE-30006` **メッセージ** @@ -1477,7 +1683,7 @@ Creating the index failed. Table: %s, Column: %s Dropping the index failed. Table: %s, Column: %s ``` -### `CORE-30007` +### `DB-CORE-30007` **メッセージ** @@ -1485,7 +1691,7 @@ Dropping the index failed. Table: %s, Column: %s Getting the table metadata failed. Table: %s ``` -### `CORE-30008` +### `DB-CORE-30008` **メッセージ** @@ -1493,7 +1699,7 @@ Getting the table metadata failed. Table: %s Getting the table names in the namespace failed. Namespace: %s ``` -### `CORE-30009` +### `DB-CORE-30009` **メッセージ** @@ -1501,7 +1707,7 @@ Getting the table names in the namespace failed. Namespace: %s Checking the namespace existence failed. Namespace: %s ``` -### `CORE-30010` +### `DB-CORE-30010` **メッセージ** @@ -1509,7 +1715,7 @@ Checking the namespace existence failed. Namespace: %s Checking the table existence failed. Table: %s ``` -### `CORE-30011` +### `DB-CORE-30011` **メッセージ** @@ -1517,7 +1723,7 @@ Checking the table existence failed. Table: %s Checking the index existence failed. Table: %s; Column: %s ``` -### `CORE-30012` +### `DB-CORE-30012` **メッセージ** @@ -1525,7 +1731,7 @@ Checking the index existence failed. Table: %s; Column: %s Repairing the namespace failed. Namespace: %s ``` -### `CORE-30013` +### `DB-CORE-30013` **メッセージ** @@ -1533,7 +1739,7 @@ Repairing the namespace failed. Namespace: %s Repairing the table failed. Table: %s ``` -### `CORE-30014` +### `DB-CORE-30014` **メッセージ** @@ -1541,7 +1747,7 @@ Repairing the table failed. Table: %s Adding a new column to the table failed. Table: %s; Column: %s; ColumnType: %s ``` -### `CORE-30015` +### `DB-CORE-30015` **メッセージ** @@ -1549,7 +1755,7 @@ Adding a new column to the table failed. Table: %s; Column: %s; ColumnType: %s Getting the namespace names failed ``` -### `CORE-30016` +### `DB-CORE-30016` **メッセージ** @@ -1557,7 +1763,7 @@ Getting the namespace names failed Getting the table metadata of the table being imported failed. Table: %s ``` -### `CORE-30017` +### `DB-CORE-30017` **メッセージ** @@ -1565,7 +1771,7 @@ Getting the table metadata of the table being imported failed. Table: %s Importing the table failed. Table: %s ``` -### `CORE-30018` +### `DB-CORE-30018` **メッセージ** @@ -1573,7 +1779,7 @@ Importing the table failed. Table: %s Adding the raw column to the table failed. Table: %s; Column: %s; ColumnType: %s ``` -### `CORE-30019` +### `DB-CORE-30019` **メッセージ** @@ -1581,7 +1787,7 @@ Adding the raw column to the table failed. Table: %s; Column: %s; ColumnType: %s Upgrading the ScalarDB environment failed ``` -### `CORE-30020` +### `DB-CORE-30020` **メッセージ** @@ -1589,7 +1795,7 @@ Upgrading the ScalarDB environment failed Something wrong because WriteType is neither CAS nor SIMPLE ``` -### `CORE-30021` +### `DB-CORE-30021` **メッセージ** @@ -1597,7 +1803,7 @@ Something wrong because WriteType is neither CAS nor SIMPLE An error occurred in the selection. Details: %s ``` -### `CORE-30022` +### `DB-CORE-30022` **メッセージ** @@ -1605,7 +1811,7 @@ An error occurred in the selection. Details: %s An error occurred in the mutation. Details: %s ``` -### `CORE-30023` +### `DB-CORE-30023` **メッセージ** @@ -1613,7 +1819,7 @@ An error occurred in the mutation. Details: %s An error occurred in the selection. Details: %s ``` -### `CORE-30024` +### `DB-CORE-30024` **メッセージ** @@ -1621,7 +1827,7 @@ An error occurred in the selection. Details: %s An error occurred in the mutation. Details: %s ``` -### `CORE-30025` +### `DB-CORE-30025` **メッセージ** @@ -1629,7 +1835,7 @@ An error occurred in the mutation. Details: %s An error occurred in the selection. Details: %s ``` -### `CORE-30026` +### `DB-CORE-30026` **メッセージ** @@ -1637,7 +1843,7 @@ An error occurred in the selection. Details: %s An error occurred in the mutation. Details: %s ``` -### `CORE-30027` +### `DB-CORE-30027` **メッセージ** @@ -1645,7 +1851,7 @@ An error occurred in the mutation. Details: %s An error occurred in the selection. Details: %s ``` -### `CORE-30028` +### `DB-CORE-30028` **メッセージ** @@ -1653,7 +1859,7 @@ An error occurred in the selection. Details: %s Fetching the next result failed ``` -### `CORE-30029` +### `DB-CORE-30029` **メッセージ** @@ -1661,7 +1867,7 @@ Fetching the next result failed Rolling back the transaction failed. Details: %s ``` -### `CORE-30030` +### `DB-CORE-30030` **メッセージ** @@ -1669,7 +1875,7 @@ Rolling back the transaction failed. Details: %s Committing the transaction failed. Details: %s ``` -### `CORE-30031` +### `DB-CORE-30031` **メッセージ** @@ -1677,7 +1883,7 @@ Committing the transaction failed. Details: %s The Get operation failed. Details: %s ``` -### `CORE-30032` +### `DB-CORE-30032` **メッセージ** @@ -1685,7 +1891,7 @@ The Get operation failed. Details: %s The Scan operation failed. Details: %s ``` -### `CORE-30033` +### `DB-CORE-30033` **メッセージ** @@ -1693,7 +1899,7 @@ The Scan operation failed. Details: %s The Put operation failed. Details: %s ``` -### `CORE-30034` +### `DB-CORE-30034` **メッセージ** @@ -1701,7 +1907,7 @@ The Put operation failed. Details: %s The Delete operation failed. Details: %s ``` -### `CORE-30035` +### `DB-CORE-30035` **メッセージ** @@ -1709,7 +1915,7 @@ The Delete operation failed. Details: %s Beginning a transaction failed. Details: %s ``` -### `CORE-30036` +### `DB-CORE-30036` **メッセージ** @@ -1717,7 +1923,7 @@ Beginning a transaction failed. Details: %s Preparing records failed ``` -### `CORE-30037` +### `DB-CORE-30037` **メッセージ** @@ -1725,7 +1931,7 @@ Preparing records failed Validation failed ``` -### `CORE-30038` +### `DB-CORE-30038` **メッセージ** @@ -1733,7 +1939,7 @@ Validation failed Executing implicit pre-read failed ``` -### `CORE-30039` +### `DB-CORE-30039` **メッセージ** @@ -1741,7 +1947,7 @@ Executing implicit pre-read failed Reading a record from the underlying storage failed ``` -### `CORE-30040` +### `DB-CORE-30040` **メッセージ** @@ -1749,7 +1955,7 @@ Reading a record from the underlying storage failed Scanning records from the underlying storage failed ``` -### `CORE-30041` +### `DB-CORE-30041` **メッセージ** @@ -1757,7 +1963,7 @@ Scanning records from the underlying storage failed Rollback failed because the transaction has already been committed ``` -### `CORE-30042` +### `DB-CORE-30042` **メッセージ** @@ -1765,7 +1971,7 @@ Rollback failed because the transaction has already been committed Rollback failed ``` -### `CORE-30043` +### `DB-CORE-30043` **メッセージ** @@ -1773,7 +1979,7 @@ Rollback failed The Insert operation failed. Details: %s ``` -### `CORE-30044` +### `DB-CORE-30044` **メッセージ** @@ -1781,7 +1987,7 @@ The Insert operation failed. Details: %s The Upsert operation failed. Details: %s ``` -### `CORE-30045` +### `DB-CORE-30045` **メッセージ** @@ -1789,9 +1995,35 @@ The Upsert operation failed. Details: %s The Update operation failed. Details: %s ``` -## `CORE-4xxxx` ステータスコード +### `DB-CORE-30046` + +**メッセージ** + +```markdown +Handling the before-preparation snapshot hook failed. Details: %s +``` + +### `DB-CORE-30047` + +**メッセージ** + +```markdown +Something went wrong while trying to save the data. Details: %s +``` + +### `DB-CORE-30048` + +**メッセージ** + +```markdown +Something went wrong while scanning. Are you sure you are running in the correct transaction mode? Details: %s +``` + +## `DB-CORE-4xxxx` ステータスコード + +以下は、不明なトランザクションステータスエラーカテゴリのステータスコードとメッセージです。 -### `CORE-40000` +### `DB-CORE-40000` **メッセージ** @@ -1799,7 +2031,7 @@ The Update operation failed. Details: %s Rolling back the transaction failed. Details: %s ``` -### `CORE-40001` +### `DB-CORE-40001` **メッセージ** @@ -1807,7 +2039,7 @@ Rolling back the transaction failed. Details: %s Committing state failed with NoMutationException, but the coordinator status does not exist ``` -### `CORE-40002` +### `DB-CORE-40002` **メッセージ** @@ -1815,7 +2047,7 @@ Committing state failed with NoMutationException, but the coordinator status doe The state cannot be retrieved ``` -### `CORE-40003` +### `DB-CORE-40003` **メッセージ** @@ -1823,7 +2055,7 @@ The state cannot be retrieved The coordinator status is unknown ``` -### `CORE-40004` +### `DB-CORE-40004` **メッセージ** diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-data-loader/getting-started-export.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-data-loader/getting-started-export.mdx new file mode 100644 index 00000000..ce6ac8cc --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-data-loader/getting-started-export.mdx @@ -0,0 +1,63 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# データのエクスポート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB Data Loader のエクスポート機能について説明します。 + +## 機能 + +ScalarDB Data Loader を使用すると、次の形式でデータをエクスポートできます。 + +- JSON +- JSONLines +- CSV + +各エクスポートでは、Data Loader の実行時に指定された CLI 引数に基づいて ScalarDB スキャン操作が実行されます。 + +## 使用方法 + +Data Loader のエクスポート機能は、次の最小限の設定で開始できます。 + +```console +./scalardb-data-loader export --config scalardb.properties --namespace namespace --table tableName +``` + +- --config: 接続プロパティファイルへのパス +- --namespace: データを含むテーブルの名前空間 +- --table: データを含むテーブルの名前 + +デフォルトでは、`--output-file` 引数も省略されている場合、Data Loader は作業ディレクトリに出力ファイルを作成します。 + +### コマンドラインオプション + +ScalarDB Data Loader で使用できるオプションの一覧を次に示します。 + +| オプション | 説明 | 使用方法 | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | +| --config | 設定ファイルへのパス。省略すると、ツールは現在のフォルダーで `scalardb.properties` という名前のファイルを検索します。 | `scalardb-data-loader --config scalardb.properties` | +| --namespace | テーブルデータをエクスポートする名前空間。必須。 | `scalardb-data-loader --namespace namespace` | +| --table | データをエクスポートするテーブルの名前。必須。 | `scalardb-data-loader --table tableName` | +| --key | 特定のパーティションキーのデータをエクスポートします。デフォルトでは、指定されたテーブルのすべてのデータがエクスポートされます。 | `scalardb-data-loader --key columnName=value` | +| --sort | 並べ替える列を指定します。列はクラスタリングキーである必要があります。引数を繰り返して複数の並べ替えを行うことができます。このオプションは `--key` にのみ適用されます。 | `scalardb-data-loader --sort columnName=desc` | +| --projection | 投影を指定してエクスポートする列を制限します。引数を繰り返して複数の投影を指定できます。 | `scalardb-data-loader --projection columnName` | +| --start | スキャン開始をマークするクラスタリングキー。このオプションは `--key` にのみ適用されます。 | `scalardb-data-loader --start columnName=value` | +| --start-exclusive | スキャン開始が排他的かどうか。省略した場合、デフォルト値は `false` です。このオプションは `--key` にのみ適用されます。 | `scalardb-data-loader --start-exclusive` | +| --end | スキャン終了をマークするクラスタリングキー。このオプションは `--key` にのみ適用されます。 | `scalardb-data-loader --end columnName=value` | +| --end-exclusive | スキャン開始が排他的かどうか。省略した場合、デフォルト値は `false` です。このオプションは `--key` にのみ適用されます。 | `scalardb-data-loader --end-exclusive` | +| --limit | スキャンの結果を制限します。省略した場合、デフォルト値は `0` で、制限がないことを意味します。 | `scalardb-data-loader --limit 1000` | +| --output-file | 出力ファイルの名前とパス。省略した場合、ツールは現在のフォルダーに次の名前形式でファイルを保存します:
    `export_namespace.tableName_timestamp.json` または `export_namespace.tableName_timestamp.csv`

    出力フォルダーが存在する必要があります。dataloader は出力フォルダーを作成しません。 | `scalardb-data-loader --output-file ./out/output.json` | +| --format | 出力形式。デフォルトでは `json` が選択されます。 | `scalardb-data-loader --format json` | +| --metadata | `true` に設定すると、トランザクションメタデータがエクスポートに含まれます。デフォルトでは `false` に設定されています。 | `scalardb-data-loader --metadata` | +| --delimiter | CSV ファイルで使用される区切り文字。デフォルト値は `;` です。 | `scalardb-data-loader --delimiter ;` | +| --no-headers | CSV ファイルからヘッダー行を除外します。デフォルトは `false` です。 | `scalardb-data-loader --no-headers` | +| --threads | 同時処理のスレッド数。 | `scalardb-data-loader --threads 500` | diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-data-loader/getting-started-import.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-data-loader/getting-started-import.mdx new file mode 100644 index 00000000..122f6f57 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-data-loader/getting-started-import.mdx @@ -0,0 +1,277 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# データのインポート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB Data Loader のインポート機能について説明します。 + +## 機能 + +- JSON または JSONLines ファイルからデータをインポート +- ソースフィールド名マッピングに基づく自動データマッピング +- JSON 制御ファイルによるカスタムデータマッピング +- 1つのレコードまたは行から複数​​のテーブルにデータをインポート +- INSERT、UPDATE、UPSERT のサポート + +## 使用方法 + +Data Loader のインポート機能は、次の最小限の設定で開始できます: + +```console +./scalardb-data-loader import --config scalardb.properties --namespace namespace --table tableName +``` + +上記の設定により、制御ファイルが使用されず、データマッピングが自動的に適用されるインポートプロセスが開始されます。 + +新規または既存のデータを正常にインポートするには、次の手順を実行してください + +- インポートする必要があるデータを含むソースファイルを準備します。 + +- 適切なインポートモードを選択します。デフォルトでは、インポートは `upsert` モードで実行されます。つまり、新しい場合はデータが挿入され、パーティションキーやクラスタリングキーが見つかった場合は更新されます。その他のオプションは、`insert` モードまたは `update` モードです。 + +- データをインポートする正しい `namespace` および `table` 名を見つけます。 + +- 各データ行に対して `all required columns` チェックを実行するかどうかを決定します。有効にすると、列が欠落しているデータ行は失敗として扱われ、インポートされません。 + +- `success` および `failed` 出力ファイルのパス名を指定します。デフォルトでは、Data Loader は作業ディレクトリにファイルを作成します。 + +- JSON データを処理する場合、成功または失敗のログファイルの JSON 出力を `pretty print` にするかどうかを決定します。デフォルトでは、このオプションはパフォーマンスのために無効になっています + +- 必要に応じて `threads` 引数を指定してパフォーマンスを調整します + +- コマンドラインからインポートを実行して、データのインポートを開始します。実行中の ScalarDB インスタンスに応じて、ScalarDB Data Loader を正しい `storage` または `transaction` モードで実行してください。 + +### コマンドラインオプション + +ScalarDB Data Loader で使用できるオプションの一覧を次に示します。 + +| オプション | 説明 | 使用方法 | +|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------| +| --mode | ScalarDB の実行モード。省略した場合、デフォルト値は `storage` です。 | `scalardb-data-loader --mode transaction` | +| --config | 設定ファイルへのパス。省略した場合、ツールは現在のフォルダーで `scalardb.properties` という名前のファイルを検索します。 | `scalardb-data-loader --config scalardb.properties` | +| --namespace | テーブルデータをエクスポートする名前空間。制御ファイルが指定されていない場合は必須です。 | `scalardb-data-loader --namespace namespace` | +| --table | データをエクスポートするテーブルの名前。制御ファイルが指定されていない場合は必須です。 | `scalardb-data-loader --table tableName` | +| --import-mode | ScalarDB テーブルにデータをインポートするモード。サポートされているモードは `insert`、`update`、および `upsert` です。オプション。デフォルトでは、値は `upsert` に設定されています。 | `scalardb-data-loader --import-mode=upsert` | +| --all-columns-required | 設定されている場合、列が欠落しているデータ行はインポートできません。オプションです。デフォルトでは、チェックは実行されません。 | `scalardb-data-loader --all-columns-required` | +| --file | インポートするファイルへのパスを指定します。必須。 | `scalardb-data-loader --file ` | +| --success | 成功したインポート結果を書き込むために作成されるファイルへのパス。成功したインポート結果と失敗したインポート結果は、両方とも別のファイルに書き込まれます。
    オプションです。デフォルトでは、現在の作業ディレクトリに新しいファイルが作成されます。

    注: ファイルが既に存在する場合は、上書きされます。 | `scalardb-data-loader --success ` | +| --failed | 失敗したインポート結果を書き込むために作成されるファイルへのパス。
    オプション。デフォルトでは、現在の作業ディレクトリに新しいファイルが作成されます。

    注: ファイルがすでに存在する場合は、上書きされます。 | `scalardb-data-loader --failed ` | +| --threads | 同時処理のスレッド数。 | `scalardb-data-loader --threads 500` | +| --format | インポートファイルの形式。`json` および `jsonl` ファイルがサポートされています。オプション。デフォルトでは値 `json` が選択されます。 | `scalardb-data-loader --format json` | +| --ignore-null | ソースファイル内の null 値は無視されます。つまり、既存のデータは上書きされません。オプション。デフォルトでは値は `false` です。 | `scalardb-data-loader --ignore-null` | +| --pretty | 設定すると、成功ファイルと失敗ファイルへの出力は `pretty print` モードで行われます。デフォルトでは、このオプションは有効になっていません。 | `scalardb-data-loader --pretty` | +| --control-file | カスタムデータマッピングやマルチテーブルインポートのルールを指定する JSON 制御ファイルへのパス。 | `scalardb-data-loader --control-file control.json` | +| --control-file-validation-level | 制御ファイルの検証レベル。`MAPPED`、`KEYS`、または` FULL`。

    オプションで、デフォルトではレベルは `MAPPED` に設定されています。 | `scalardb-data-loader --control-file-validation-level FULL` | +| --log-put-value | ScalarDB `PUT` 操作で使用された値がログファイルに含まれるかどうか。
    オプションで、デフォルトでは無効になっています。 | `scalardb-data-loader --log-put-value` | +| --error-file-required | インポートファイルに CSV データが含まれている場合に、オプションの JSON タイプのエラーファイルをエクスポートします。デフォルトでは、このオプションは無効になっています。 | `scalardb-data-loader --error-file-required` | +| --error | インポートファイルに CSV データが含まれている場合に、オプションのエラーファイルを指定します。 | `scalardb-data-loader --error ` | +| --delimiter | インポートファイルに CSV データが含まれている場合に、カスタム区切り文字を指定します。 | `scalardb-data-loader --delimiter ` | +| --header | インポートファイルに CSV データが含まれていて、ヘッダー行がない場合に、ヘッダー行データを指定します。 | `scalardb-data-loader --header ` | + +## インポートモード + +Data Loader は、次のインポートモードをサポートしています: + +| モード | 説明 | +| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| INSERT | 各ソースレコードは新しいデータとして扱われます。パーティションとクラスタリングキーに基づいて、ScalarDB テーブルにデータがすでに存在する場合、このソースデータのインポートは失敗します。 | +| UPDATE | 各ソースレコードは、ScalarDB テーブル内の既存のデータの更新として扱われます。パーティションキーとクラスタリングキーに基づいて、テーブルにデータが存在しない場合、このソースデータのインポートは失敗します。 | +| UPSERT | ターゲット ScalarDB テーブルにすでにデータが含まれている場合、インポートは UPDATE によって行われます。ターゲットデータがない場合は、INSERT として扱われます。 | + +*注*: + + `INSERT` の場合、自動マッピングまたは制御ファイルによるカスタムマッピングによって、各ターゲット列のソースファイル内に一致するフィールドが必要です。これは、`INSERT` に変わる `UPSERT` にも適用されます。 + +## データマッピング + +### 自動マッピング + +制御ファイルが指定されていない場合、Data Loader はソース JSON データ内のフィールドを ScalarDB テーブル内の使用可能な列に自動的にマッピングします。名前が一致せず、すべての列が必須である場合は、検証エラーとして扱われます。この場合、このレコードのインポートは失敗し、結果は失敗した出力ログに追加されます。 + +### カスタムマッピング + +ソースフィールドがターゲット列名と一致しない場合は、制御ファイルを使用する必要があります。この制御ファイルでは、フィールド名のカスタムマッピングルールを指定できます。 + +たとえば、次の制御ファイルは、ソースファイルのフィールド `custom_id` をターゲットテーブルの `id` にマッピングします。 + +```json +{ + "tables": [{ + "namespace": "sample", + "table_name": "table1", + "mappings": [{ + "source_field": "custom_id", + "target_column": "id" + }] + } + ] +} +``` + +## 制御ファイル + +カスタムデータマッピングまたは複数テーブルのインポートを可能にするために、Data Loader は JSON 制御ファイルによる設定をサポートしています。このファイルは、Data Loader を起動するときに `--control-file` 引数で渡す必要があります。 + +### 制御ファイルの検証レベル + +制御ファイルの検証を強制するために、Data Loader では検証レベルを指定できます。設定されたレベルに基づいて、Data Loader は事前チェックを実行し、レベルルールに基づいて制御ファイルを検証します。 + +次のレベルがサポートされています。 + +| レベル | 説明 | +| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| FULL | この検証では、制御ファイルにターゲット ScalarDB テーブルの各列のマッピングがあることを確認します。 | +| KEYS | この検証では、各 ScalarDB テーブルパーティションのマッピングと、使用可能な場合は制御ファイルマッピングのクラスタリングキー列のマッピングが使用可能であることを確認します。 | +| MAPPED | この検証では、指定されたソースフィールドとターゲット列が、制御ファイルで指定されたマッピングに対してのみ存在することを確認します。
    その他のフィールドはチェックされません。 | + +検証レベルはオプションであり、Data Loader の起動時に `--control-file-validation-level` 引数で設定できます。 + +*注*: + +この検証は事前チェックとして実行されるものであり、インポートプロセスが自動的に成功することを意味するものではありません。 + +例:レベルがマップ済みに設定されていて、制御ファイルに INSERT の各列のマッピングが含まれていない場合、INSERT にはすべての列をマップする必要があるため、インポートプロセスは失敗します。 + +## 複数テーブルのインポート + +Data Loader は、複数テーブルのターゲットインポートをサポートしています。 + +JSON または JSONLine ファイル内の1つの行を、制御ファイルでテーブルマッピングルールを指定することにより、複数のテーブルにインポートできます。現在、制御ファイルなしでは複数テーブルのインポートはサポートされていません。 + +ScalarDB トランザクションモードで複数テーブルのインポートを使用する場合、各テーブルのインポートごとにトランザクションが作成されます。例: ソースレコードが制御ファイルで3つのテーブルにマップされている場合、3つの個別のトランザクションが作成されます。 + +例: 次のソースレコードを `table1` と `table2` にインポートするには、次の手順を実行します: + +| Table1 | Table2 | +| ------ | ------ | +| Id | Id | +| price | amount | + +**ソースレコード** + +```json +[{ + "custom_id": 1, + "custom_price": 1000, + "custom_amount": 100 + +}] +``` + +**制御ファイル** + +```json +{ + "tables": [{ + "namespace": "sample", + "table_name": "table1", + "mappings": [{ + "source_field": "custom_id", + "target_column": "id" + }, { + "source_field": "custom_price", + "target_column": "price" + }] + }, + { + "namespace": "sample", + "table_name": "table2", + "mappings": [{ + "source_field": "custom_id", + "target_column": "id" + }, { + "source_field": "custom_amount", + "target_column": "amount" + }] + } + ] +} +``` + +## 出力ログ + +インポートタスクを開始すると、Data Loader はインポート結果を2つのファイルに記録します。1つのファイルには正常にインポートされたインポートデータが含まれ、もう1つのファイルにはインポートできなかったデータが含まれます。失敗したデータには、データをインポートできなかった理由を説明する追加フィールドが含まれます。このフィールドは `data_loader_import_status` と呼ばれます。 + +失敗したインポートを含むファイルは、問題を修正するために編集し、そのまま新しいインポートタスクのソースファイルとして使用できます。エラーを含む `data_loader_import_status` フィールドを最初に削除する必要はありません。このフィールドはインポートプロセス中に無視され、元の値は成功または失敗した出力ファイルの新しいバージョンには含まれません。 + +正常にインポートされたデータを含むファイルには `data_loader_import_status` フィールドも含まれます。このファイルは、インポートされた各データ行に関するステータスメッセージ(新しい行が作成されたか、既存のデータが更新されたか)を含みます。 + +### ログ形式 + +| フィールド | 説明 | +| -------------- | -------------------------------------------------------------------------------------- | +| action | データレコードのインポートプロセスの結果。UPDATE、INSERT、または FAILED_DURING_VALIDATION。 | +| namespace | データがインポートされるテーブルの名前空間。 | +| tablename | データがインポートされるテーブルの名前。 | +| is_data_mapped | 使用可能な制御ファイルに基づいて、カスタムデータマッピングが適用されたかどうか。 | +| tx_id | トランザクションの ID。Data Loader が `transaction` モードで実行されている場合にのみ使用できます。 | +| value | オプションのデータマッピング後の最終値。Data Loader が `PUT` 操作で使用する値。 | +| row_number | ソースデータの行番号またはレコード番号。 | +| Errors | インポートプロセス中に問題が発生した検証エラーまたはその他のエラーのリスト。 | + +JSON 形式の成功ログファイルの例: + +```json +[{ + "column_1": 1, + "column_2": 2, + "column_n": 3, + "data_loader_import_status": { + "results": [{ + "action": "UPDATE", + "namespace": "namespace1", + "tableName": "table1", + "is_data_mapped": true, + "tx_id": "value", + "value": "value", + "row_number": "value" + }] + } +}] +``` + +JSON 形式の失敗したログファイルの例: + +```json +[{ + "column_1": 1, + "column_2": 2, + "column_n": 3, + "data_loader_import_status": { + "results": [{ + "action": "FAILED_DURING_VALIDATION", + "namespace": "namespace1", + "tableName": "table1", + "is_data_mapped": false, + "value": "value", + "row_number": "value", + "errors": [ + "missing columns found during validation" + ] + }] + } +}] +``` + +## データの重複 + +Data Loader は重複を単独では処理しません。ScalarDB トランザクションモードでは、同じターゲットデータを連続して更新しようとすると `No Mutation` エラーが発生しますが、これは Data Loader では処理されません。これらの失敗したデータ行は、失敗したインポート結果の出力ファイルに追加され、後でインポートを再試行できます。 + +ただし、Data Loader では正しい状態を保証できないため、インポートファイルに同じパーティションキーやクラスタリングキーの更新や挿入が含まれていないことを確認することをお勧めします。 + +## ストレージモードとトランザクションモード + +ScalarDB はストレージモードとトランザクションモードの両方をサポートしており、このサポートは Data Loader のインポートプロセスに含まれています。 + +ローダーがストレージモードで起動されると、各インポートは非​​トランザクション方式で実行されます。 + +ローダーをトランザクションモードで起動すると、トランザクションを使用してデータがインポートされます。現在、各行は個別のトランザクションを介してインポートされます。1つのレコードを複数のテーブルにインポートする場合、各テーブルのインポートごとに個別のトランザクションが作成されます。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-graphql/scalardb-graphql-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-graphql/scalardb-graphql-status-codes.mdx index 1535c5f4..88b2aacb 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-graphql/scalardb-graphql-status-codes.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-graphql/scalardb-graphql-status-codes.mdx @@ -14,13 +14,15 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; ## エラーコードのクラスと説明 -| クラス | 説明 | -|:----------------|:--------------------------| -| `GRAPHQL-1xxxx` | ユーザーエラーカテゴリのエラー | +| クラス | 説明 | +|:-------------------|:--------------------------| +| `DB-GRAPHQL-1xxxx` | ユーザーエラーカテゴリのエラー | -## `GRAPHQL-1xxxx` ステータスコード +## `DB-GRAPHQL-1xxxx` ステータスコード -### `GRAPHQL-10000` +以下は、ユーザーエラーカテゴリのステータスコードとメッセージです。 + +### `DB-GRAPHQL-10000` **メッセージ** @@ -28,7 +30,7 @@ import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; A long value was expected ``` -### `GRAPHQL-10001` +### `DB-GRAPHQL-10001` **メッセージ** @@ -36,7 +38,7 @@ A long value was expected The value is out of range for BigIntValue ``` -### `GRAPHQL-10002` +### `DB-GRAPHQL-10002` **メッセージ** @@ -44,7 +46,7 @@ The value is out of range for BigIntValue A long, integer, or string value was expected ``` -### `GRAPHQL-10003` +### `DB-GRAPHQL-10003` **メッセージ** @@ -52,7 +54,7 @@ A long, integer, or string value was expected The AST type `IntValue` was expected ``` -### `GRAPHQL-10004` +### `DB-GRAPHQL-10004` **メッセージ** @@ -60,7 +62,7 @@ The AST type `IntValue` was expected A float value was expected ``` -### `GRAPHQL-10005` +### `DB-GRAPHQL-10005` **メッセージ** @@ -68,7 +70,7 @@ A float value was expected An integer or float value was expected ``` -### `GRAPHQL-10006` +### `DB-GRAPHQL-10006` **メッセージ** @@ -76,7 +78,7 @@ An integer or float value was expected The AST type `IntValue` or `FloatValue` was expected ``` -### `GRAPHQL-10007` +### `DB-GRAPHQL-10007` **メッセージ** @@ -84,7 +86,7 @@ The AST type `IntValue` or `FloatValue` was expected The type is not supported. Type: %s ``` -### `GRAPHQL-10008` +### `DB-GRAPHQL-10008` **メッセージ** @@ -92,7 +94,7 @@ The type is not supported. Type: %s The field `%s` requires a `@transaction` or `@twoPhaseCommit` directive with proper arguments ``` -### `GRAPHQL-10009` +### `DB-GRAPHQL-10009` **メッセージ** @@ -100,7 +102,7 @@ The field `%s` requires a `@transaction` or `@twoPhaseCommit` directive with pro The field `%s` cannot be used together with other fields ``` -### `GRAPHQL-10010` +### `DB-GRAPHQL-10010` **メッセージ** @@ -108,7 +110,7 @@ The field `%s` cannot be used together with other fields The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the transaction ``` -### `GRAPHQL-10011` +### `DB-GRAPHQL-10011` **メッセージ** @@ -116,7 +118,7 @@ The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the t `%s` and `prepare` cannot be run simultaneously ``` -### `GRAPHQL-10012` +### `DB-GRAPHQL-10012` **メッセージ** @@ -124,7 +126,7 @@ The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the t `%s` and `join` cannot be run simultaneously ``` -### `GRAPHQL-10013` +### `DB-GRAPHQL-10013` **メッセージ** @@ -132,7 +134,7 @@ The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the t The `@transaction` directive with the `id` argument is required to `%s` the transaction ``` -### `GRAPHQL-10014` +### `DB-GRAPHQL-10014` **メッセージ** @@ -140,7 +142,7 @@ The `@transaction` directive with the `id` argument is required to `%s` the tran `%s` and `commit` cannot be run simultaneously ``` -### `GRAPHQL-10015` +### `DB-GRAPHQL-10015` **メッセージ** @@ -148,7 +150,7 @@ The `@transaction` directive with the `id` argument is required to `%s` the tran An object cannot be annotated with both `@transaction` and `@twoPhaseCommit` directives ``` -### `GRAPHQL-10016` +### `DB-GRAPHQL-10016` **メッセージ** @@ -156,7 +158,7 @@ An object cannot be annotated with both `@transaction` and `@twoPhaseCommit` dir The `join` argument of the `@twoPhaseCommit` directive requires a transaction `id` argument ``` -### `GRAPHQL-10017` +### `DB-GRAPHQL-10017` **メッセージ** @@ -164,7 +166,7 @@ The `join` argument of the `@twoPhaseCommit` directive requires a transaction `i `%s` requires the mutation object to be annotated with a `@twoPhaseCommit` directive ``` -### `GRAPHQL-10018` +### `DB-GRAPHQL-10018` **メッセージ** @@ -172,7 +174,7 @@ The `join` argument of the `@twoPhaseCommit` directive requires a transaction `i The `%s` clustering key must have only one of the following: %s ``` -### `GRAPHQL-10019` +### `DB-GRAPHQL-10019` **メッセージ** @@ -180,7 +182,7 @@ The `%s` clustering key must have only one of the following: %s A string variable is expected but got %s ``` -### `GRAPHQL-10020` +### `DB-GRAPHQL-10020` **メッセージ** @@ -188,7 +190,7 @@ A string variable is expected but got %s Unexpected value of id: %s ``` -### `GRAPHQL-10021` +### `DB-GRAPHQL-10021` **メッセージ** @@ -196,7 +198,7 @@ Unexpected value of id: %s A Boolean variable is expected but got %s ``` -### `GRAPHQL-10022` +### `DB-GRAPHQL-10022` **メッセージ** @@ -204,7 +206,7 @@ A Boolean variable is expected but got %s Unexpected value of %s: %s ``` -### `GRAPHQL-10023` +### `DB-GRAPHQL-10023` **メッセージ** @@ -212,7 +214,7 @@ Unexpected value of %s: %s Invalid column. Column: %s; Type: %s ``` -### `GRAPHQL-10024` +### `DB-GRAPHQL-10024` **メッセージ** @@ -220,7 +222,7 @@ Invalid column. Column: %s; Type: %s Unexpected value of type: %s ``` -### `GRAPHQL-10025` +### `DB-GRAPHQL-10025` **メッセージ** @@ -228,7 +230,7 @@ Unexpected value of type: %s Only one of the following can be specified: %s ``` -### `GRAPHQL-10026` +### `DB-GRAPHQL-10026` **メッセージ** @@ -236,7 +238,7 @@ Only one of the following can be specified: %s Unexpected mutation field: %s ``` -### `GRAPHQL-10027` +### `DB-GRAPHQL-10027` **メッセージ** diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-samples/scalardb-analytics-spark-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-samples/scalardb-analytics-spark-sample/README.mdx index 8605ce3a..b76921e0 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-samples/scalardb-analytics-spark-sample/README.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-samples/scalardb-analytics-spark-sample/README.mdx @@ -1,7 +1,6 @@ --- tags: - Enterprise Option - - Public Preview displayed_sidebar: docsJapanese --- diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/grammar.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/grammar.mdx index d02884af..589bf70e 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/grammar.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/grammar.mdx @@ -48,6 +48,10 @@ displayed_sidebar: docsJapanese - [RESUME](#resume) - [SHOW USERS](#show-users) - [SHOW GRANTS](#show-grants) +- リテラル + - [テキスト](#テキスト) + - [数字](#数値) + - [日付と時刻](#日付と時刻) ## DDL @@ -116,7 +120,7 @@ CREATE TABLE [IF NOT EXISTS] [.]
    3.142024-11-223.152025-02-20 TBD* TBD* お問い合わせ
    3.142024-11-222026-02-202026-08-18お問い合わせ
    3.13 2024-07-08
    ( ... ) [WITH creation_options] -data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB +data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB | DATE | TIME | TIMESTAMP | TIMESTAMPTZ creation_options:
    ADD [COLUMN] data_type [ENCRYPTED] -data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB +data_type: BOOLEAN | INT | BIGINT | FLOAT | DOUBLE | TEXT | BLOB | DATE | TIME | TIMESTAMP | TIMESTAMPTZ ``` - 列に `ENCRYPTED` を指定して、その列のデータを暗号化できます。 @@ -608,7 +612,7 @@ join_specification: [INNER] JOIN [.]
    [AS ] ON join_predicate: identifier = identifier and_predicates: predicate | (predicate [AND predicate ...]) or_predicates: predicate | (predicate [OR predicate ...]) -predicate: identifier operator | identifier BETWEEN AND | identifier [NOT] LIKE [ESCAPE ] | identifier IS [NOT] NULL +predicate: identifier operator | identifier BETWEEN AND | identifier [NOT] LIKE [ESCAPE ] | identifier IS [NOT] NULL identifier: [[.]
    .] | [alias.] operator: = | <> | != | > | >= | < | <= order: ASC | DESC @@ -631,7 +635,7 @@ order: ASC | DESC - `WHERE` 句の任意の列に任意の述語を使用できます。 - `WHERE` 句では、述語は `and_predicates` の OR 形式 (論理和標準形と呼ばれます) または `or_predicates` の AND 形式 (論理積標準形と呼ばれます) である必要があります。 - 複数の述語を持つ複数の `and_predicates` または `or_predicates` を接続する場合は、`and_predicates` と `or_predicates` を括弧で囲む必要があります。 -- バインドマーカー (位置指定 `?` および名前指定 `:`) に `` を指定できます。 +- バインドマーカー (位置指定 `?` および名前指定 `:`) に `` を指定できます。リテラル文法については、[リテラル](#リテラル)セクションを参照してください。 - `WHERE` 句で暗号化された列を指定することはできません。 `LIKE` 述語: @@ -1082,11 +1086,11 @@ SelectStatement statement13 = ```sql INSERT INTO [.]
    [( [, ] ...)] - VALUES ( [, ] ...) [, ( [, ] ...)] ... + VALUES ( [, ] ...) [, ( [, ] ...)] ... ``` - `INSERT` では完全な主キーを指定する必要があります。 -- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。 +- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。リテラル文法については、[リテラル](#リテラル)セクションを参照してください。 #### 例 @@ -1152,11 +1156,11 @@ InsertStatement statement4 = StatementBuilder.insertInto("ns", "tbl") ```sql UPSERT INTO [.]
    [( [, ] ...)] - VALUES ( [, ] ...) [, ( [, ] ...)] ... + VALUES ( [, ] ...) [, ( [, ] ...)] ... ``` - `INSERT` では完全な主キーを指定する必要があります。 -- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。 +- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。リテラル文法については、[リテラル](#リテラル)セクションを参照してください。 #### 例 @@ -1230,13 +1234,13 @@ UpsertStatement statement4 = StatementBuilder.upsertInto("ns", "tbl") ```sql UPDATE [.]
    [AS ] - SET = [, = ] ... + SET = [, = ] ... [WHERE and_predicates [OR and_predicates ...] | or_predicates [AND or_predicates ...]] identifier: [[.]
    .] | [alias.] and_predicates: predicate | (predicate [AND predicate ...]) or_predicates: predicate | (predicate [OR predicate ...]) -predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL +predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL operator: = | <> | != | > | >= | < | <= ``` @@ -1247,7 +1251,7 @@ operator: = | <> | != | > | >= | < | <= - `WHERE` 句の任意の列に任意の述語を使用できます。 - `WHERE` 句では、述語は `and_predicates` の OR 形式 (論理和標準形と呼ばれます) または `or_predicates` の AND 形式 (論理積標準形と呼ばれます) である必要があります。 - 複数の述語を持つ複数の `and_predicates` または `or_predicates` を接続する場合は、`and_predicates` と `or_predicates` を括弧で囲む必要があります。 -- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。 +- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。リテラル文法については、[リテラル](#リテラル)セクションを参照してください。 - `WHERE` 句で暗号化された列を指定することはできません。 `LIKE` 述語: @@ -1463,7 +1467,7 @@ DELETE FROM [.]
    [AS ] identifier: [[.]
    .] | [alias.] and_predicates: predicate | (predicate [AND predicate ...]) or_predicates: predicate | (predicate [OR predicate ...]) -predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL +predicate: operator | BETWEEN AND | [NOT] LIKE [ESCAPE ] | IS [NOT] NULL operator: = | <> | != | > | >= | < | <= ``` @@ -1474,7 +1478,7 @@ operator: = | <> | != | > | >= | < | <= - `WHERE` 句の任意の列に任意の述語を使用できます。 - `WHERE` 句では、述語は `and_predicates` の OR 形式 (論理和標準形と呼ばれます) または `or_predicates` の AND 形式 (論理積標準形と呼ばれます) である必要があります。 - 複数の述語を持つ複数の `and_predicates` または `or_predicates` を接続する場合は、`and_predicates` と `or_predicates` を括弧で囲む必要があります。 -- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。 +- バインドマーカー (位置 `?` および名前 `:`) に `` を指定できます。リテラル文法については、[リテラル](#リテラル)セクションを参照してください。 - `WHERE` 句で暗号化された列を指定することはできません。 `LIKE` 述語: @@ -2345,3 +2349,30 @@ ShowGrantsStatement statement1 = StatementBuilder.showGrants().build(); // Show privileges granted to user1 ShowGrantsStatement statement2 = StatementBuilder.showGrants().forUser("user1").build(); ``` + +## リテラル + +リテラルと列の値は同義であり、SQL ステートメントを記述するときに使用される固定データ値を参照します。たとえば、`1`、`'abc'`、`1.23`、および `'2024-05-19'` はリテラルです。 + +### テキスト + +テキストリテラルは、`'abc'` や `'abc def'` など、一重引用符 `'` で囲まれた文字のシーケンスです。 + +### 数値 + +数値リテラルには、正確な値 (INTEGER および BIGINT) と近似値 (FLOAT および DOUBLE) のリテラルが含まれます。 + +正確な値リテラルは、`123` や `-5` などの数字のシーケンスです。 + +近似値リテラルは、`4.754` や `-1.2` などの小数点付きの数字のシーケンスです。 + +### 日付と時刻 + +日付と時刻リテラルは、DATE、TIME、TIMESTAMP、および TIMESTAMPTZ 値を表す特定の形式に従うテキストリテラルです。 + +| ScalarDBでータ型 | 形式 | 注記 | 例 | +|-----------------|-------------------------------------|----------------------------------------------|--------------------------------------------------------------------------------| +| DATE | **'YYYY-MM-DD'** | | `'2024-05-19'` | +| TIME | **'HH:MM:[SS[.FFFFFF]]'** | 秒と小数秒 (最大1マイクロ秒) はオプションです。 | `'12:34'`、`'12:34:56'`、`'12:34:56.789123'` | +| TIMESTAMP | **'YYYY-MM-DD HH:MM:[SS[.FFF]]'** | 秒と小数秒 (最大1ミリ秒) はオプションです。 | `'2024-05-19 12:34'`、`'2024-05-19 12:34:56'`、`'2024-05-19 12:34:56.789'` | +| TIMESTAMPTZ | **'YYYY-MM-DD HH:MM:[SS[.FFF]] Z'** | 秒と小数秒 (最大1ミリ秒) はオプションです。 | ''2024-05-19 12:34 Z''、''2024-05-19 12:34:56 Z''、''2024-05-19 12:34:56.789 Z'' | diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/jdbc-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/jdbc-guide.mdx index d0535a6a..f892a408 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/jdbc-guide.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/jdbc-guide.mdx @@ -82,15 +82,19 @@ ScalarDB は JDBC で定義されているすべてのデータ型をサポー ScalarDB と JDBC 間のデータ型マッピングは次のとおりです。 -| ScalarDB タイプ | JDBC (Java) タイプ | -|--------------|-----------------------| -| BOOLEAN | boolean または Boolean | -| INT | int または Integer | -| BIGINT | long または Long | -| FLOAT | float または Float | -| DOUBLE | double または Double | -| TEXT | String | -| BLOB | byte[] | +| ScalarDB タイプ | JDBC (Java) タイプ | +|--------------|-------------------------| +| BOOLEAN | boolean または Boolean | +| INT | int または Integer | +| BIGINT | long または Long | +| FLOAT | float または Float | +| DOUBLE | double または Double | +| TEXT | String | +| BLOB | byte[] | +| DATE | java.time.LocalDate | +| TIME | java.time.LocalTime | +| TIMESTAMP | java.time.LocalDateTime | +| TIMESTAMPTZ | java.time.Instant | 各データ型の `java.sql.ResultSet` オブジェクトからデータを取得する方法は次のとおりです。 @@ -118,6 +122,18 @@ try (ResultSet resultSet = ...) { // Get a BLOB value of a column byte[] blobValue = resultSet.getBytes(""); + + // Get a DATE value of a column + LocalDate dateValue = resultSet.getObject("", LocalDate.class); + + // Get a TIME value of a column + LocalTime timeValue = resultSet.getObject("", LocalTime.class); + + // Get a TIMESTAMP value of a column + LocalDateTime timestampValue = resultSet.getObject("", LocalDateTime.class); + + // Get a TIMESTAMPTZ value of a column + Instant timestampTZValue = resultSet.getObject("", Instant.class); } ``` @@ -145,6 +161,17 @@ try (PreparedStatement preparedStatement = ...) { // Set a BLOB value as parameter preparedStatement.setBytes(8, ); + //Set a DATE value as parameter + preparedStatement.setObject(9, ); + + //Set a TIME value as parameter + preparedStatement.setObject(10, ); + + //Set a TIMESTAMP value as parameter + preparedStatement.setObject(11, ); + + //Set a TIMESTAMPTZ value as parameter + preparedStatement.setObject(12, ); preparedStatement.execute(); } @@ -192,4 +219,4 @@ try { - [Java JDBC API](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) - [ScalarDB SQL API ガイド](sql-api-guide.mdx) -- [Javadoc for ScalarDB JDBC](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-jdbc/3.14.1/index.html) +- [Javadoc for ScalarDB JDBC](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-jdbc/3.15.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/scalardb-sql-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/scalardb-sql-status-codes.mdx index 67790187..66dd4696 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/scalardb-sql-status-codes.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/scalardb-sql-status-codes.mdx @@ -6,17 +6,23 @@ displayed_sidebar: docsJapanese # ScalarDB SQL エラーコード +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + このページでは、ScalarDB SQL のエラーコードの一覧を示します。 ## エラーコードのクラスと説明 -| クラス | 説明 | -|:------------|:--------------------------| -| `SQL-1xxxx` | ユーザーエラーカテゴリのエラー | +| クラス | 説明 | +|:---------------|:--------------------------| +| `DB-SQL-1xxxx` | ユーザーエラーカテゴリのエラー | + +## `DB-SQL-1xxxx` ステータスコード -## `SQL-1xxxx` ステータスコード +以下は、ユーザーエラーカテゴリのステータスコードとメッセージです。 -### `SQL-10000` +### `DB-SQL-10000` **メッセージ** @@ -24,7 +30,7 @@ displayed_sidebar: docsJapanese The namespace does not exist. Namespace: %s ``` -### `SQL-10001` +### `DB-SQL-10001` **メッセージ** @@ -32,7 +38,7 @@ The namespace does not exist. Namespace: %s The table does not exist. Table: %s ``` -### `SQL-10002` +### `DB-SQL-10002` **メッセージ** @@ -40,7 +46,7 @@ The table does not exist. Table: %s The column %s does not exist ``` -### `SQL-10003` +### `DB-SQL-10003` **メッセージ** @@ -48,7 +54,7 @@ The column %s does not exist The column does not exist. Table: %s; Column: %s ``` -### `SQL-10004` +### `DB-SQL-10004` **メッセージ** @@ -56,7 +62,7 @@ The column does not exist. Table: %s; Column: %s The column index is out of bounds. Index: %d; Size: %d ``` -### `SQL-10005` +### `DB-SQL-10005` **メッセージ** @@ -64,7 +70,7 @@ The column index is out of bounds. Index: %d; Size: %d A positional bind marker is not allowed when binding named values ``` -### `SQL-10006` +### `DB-SQL-10006` **メッセージ** @@ -72,7 +78,7 @@ A positional bind marker is not allowed when binding named values A named bind marker is not allowed when binding positional values ``` -### `SQL-10007` +### `DB-SQL-10007` **メッセージ** @@ -80,7 +86,7 @@ A named bind marker is not allowed when binding positional values Cannot convert BLOB values to SQL. Please use a bind marker for a BLOB value and bind it separately ``` -### `SQL-10008` +### `DB-SQL-10008` **メッセージ** @@ -88,7 +94,7 @@ Cannot convert BLOB values to SQL. Please use a bind marker for a BLOB value and No namespace name has been specified. Set a default namespace name, or explicitly specify a namespace name ``` -### `SQL-10009` +### `DB-SQL-10009` **メッセージ** @@ -96,7 +102,7 @@ No namespace name has been specified. Set a default namespace name, or explicitl Zero bytes may not occur in string parameters ``` -### `SQL-10010` +### `DB-SQL-10010` **メッセージ** @@ -104,7 +110,7 @@ Zero bytes may not occur in string parameters Mixing positional values and named values is not allowed ``` -### `SQL-10011` +### `DB-SQL-10011` **メッセージ** @@ -112,7 +118,7 @@ Mixing positional values and named values is not allowed Preparing a transaction is supported only in two-phase commit transaction mode ``` -### `SQL-10012` +### `DB-SQL-10012` **メッセージ** @@ -120,7 +126,7 @@ Preparing a transaction is supported only in two-phase commit transaction mode Validating a transaction is supported only in two-phase commit transaction mode ``` -### `SQL-10013` +### `DB-SQL-10013` **メッセージ** @@ -128,7 +134,7 @@ Validating a transaction is supported only in two-phase commit transaction mode The previous transaction is still in progress. Commit, roll back, or suspend the previous transaction first ``` -### `SQL-10014` +### `DB-SQL-10014` **メッセージ** @@ -136,7 +142,7 @@ The previous transaction is still in progress. Commit, roll back, or suspend the This SQL session has already been closed ``` -### `SQL-10015` +### `DB-SQL-10015` **メッセージ** @@ -144,7 +150,7 @@ This SQL session has already been closed A transaction has not begun ``` -### `SQL-10016` +### `DB-SQL-10016` **メッセージ** @@ -152,7 +158,7 @@ A transaction has not begun The type %s is not supported ``` -### `SQL-10017` +### `DB-SQL-10017` **メッセージ** @@ -160,7 +166,7 @@ The type %s is not supported No connection mode implementations are found. Please add a connection mode implementation to the classpath ``` -### `SQL-10018` +### `DB-SQL-10018` **メッセージ** @@ -168,7 +174,7 @@ No connection mode implementations are found. Please add a connection mode imple The connection mode is not specified, but multiple connection mode implementations are found. Specify one of the following connection modes: %s ``` -### `SQL-10019` +### `DB-SQL-10019` **メッセージ** @@ -176,7 +182,7 @@ The connection mode is not specified, but multiple connection mode implementatio The connection mode '%s' is not found. Specify one of the following connection modes: %s ``` -### `SQL-10020` +### `DB-SQL-10020` **メッセージ** @@ -184,7 +190,7 @@ The connection mode '%s' is not found. Specify one of the following connection m Access denied: You need the %s privilege on the namespace %s to execute this operation ``` -### `SQL-10021` +### `DB-SQL-10021` **メッセージ** @@ -192,7 +198,7 @@ Access denied: You need the %s privilege on the namespace %s to execute this ope Access denied: You need the %s privilege on the table %s to execute this operation ``` -### `SQL-10022` +### `DB-SQL-10022` **メッセージ** @@ -200,7 +206,7 @@ Access denied: You need the %s privilege on the table %s to execute this operati Access denied: You can't grant the %s privilege because you don't have the same privilege on the table %s ``` -### `SQL-10023` +### `DB-SQL-10023` **メッセージ** @@ -208,15 +214,15 @@ Access denied: You can't grant the %s privilege because you don't have the same Access denied: You can't grant the %s privilege because you don't have the same privilege on the namespace %s ``` -### `SQL-10024` +### `DB-SQL-10024` **メッセージ** ```markdown -Access denied: You can't revoke the %s privilege because you don't have the same privilege for the table %s +Access denied: You can't revoke the %s privilege because you don't have the same privilege on the table %s ``` -### `SQL-10025` +### `DB-SQL-10025` **メッセージ** @@ -224,7 +230,7 @@ Access denied: You can't revoke the %s privilege because you don't have the same Access denied: You can't revoke the %s privilege because you don't have the same privilege on the namespace %s ``` -### `SQL-10026` +### `DB-SQL-10026` **メッセージ** @@ -232,7 +238,7 @@ Access denied: You can't revoke the %s privilege because you don't have the same Syntax error. Line %d:%d %s ``` -### `SQL-10027` +### `DB-SQL-10027` **メッセージ** @@ -240,7 +246,7 @@ Syntax error. Line %d:%d %s Syntax error. Multiple PRIMARY KEYs specified (exactly one required) ``` -### `SQL-10028` +### `DB-SQL-10028` **メッセージ** @@ -248,7 +254,7 @@ Syntax error. Multiple PRIMARY KEYs specified (exactly one required) Cannot grant the INSERT privilege if the user doesn't have the UPDATE privilege ``` -### `SQL-10029` +### `DB-SQL-10029` **メッセージ** @@ -256,7 +262,7 @@ Cannot grant the INSERT privilege if the user doesn't have the UPDATE privilege Cannot grant the UPDATE privilege if the user doesn't have the INSERT privilege ``` -### `SQL-10030` +### `DB-SQL-10030` **メッセージ** @@ -264,7 +270,7 @@ Cannot grant the UPDATE privilege if the user doesn't have the INSERT privilege Cannot grant the UPDATE privilege if the user doesn't have the SELECT privilege ``` -### `SQL-10031` +### `DB-SQL-10031` **メッセージ** @@ -272,7 +278,7 @@ Cannot grant the UPDATE privilege if the user doesn't have the SELECT privilege Cannot grant the DELETE privilege if the user doesn't have the SELECT privilege ``` -### `SQL-10032` +### `DB-SQL-10032` **メッセージ** @@ -280,7 +286,7 @@ Cannot grant the DELETE privilege if the user doesn't have the SELECT privilege Cannot revoke the SELECT privilege if the user has the UPDATE privilege ``` -### `SQL-10033` +### `DB-SQL-10033` **メッセージ** @@ -288,7 +294,7 @@ Cannot revoke the SELECT privilege if the user has the UPDATE privilege Cannot revoke the SELECT privilege if the user has the DELETE privilege ``` -### `SQL-10034` +### `DB-SQL-10034` **メッセージ** @@ -296,7 +302,7 @@ Cannot revoke the SELECT privilege if the user has the DELETE privilege Cannot revoke the INSERT privilege if the user has the UPDATE privilege ``` -### `SQL-10035` +### `DB-SQL-10035` **メッセージ** @@ -304,7 +310,7 @@ Cannot revoke the INSERT privilege if the user has the UPDATE privilege Cannot revoke the UPDATE privilege if the user has the INSERT privilege ``` -### `SQL-10036` +### `DB-SQL-10036` **メッセージ** @@ -312,7 +318,7 @@ Cannot revoke the UPDATE privilege if the user has the INSERT privilege A non-clustering-key column is specified in the CLUSTERING ORDER directive. Column: %s ``` -### `SQL-10037` +### `DB-SQL-10037` **メッセージ** @@ -320,7 +326,7 @@ A non-clustering-key column is specified in the CLUSTERING ORDER directive. Colu The order of the columns in the CLUSTERING ORDER directive must match the order for the clustering key (%s must appear before %s) ``` -### `SQL-10038` +### `DB-SQL-10038` **メッセージ** @@ -328,7 +334,7 @@ The order of the columns in the CLUSTERING ORDER directive must match the order The CLUSTERING ORDER is missing for the column %s ``` -### `SQL-10039` +### `DB-SQL-10039` **メッセージ** @@ -336,7 +342,7 @@ The CLUSTERING ORDER is missing for the column %s Empty SQL is specified ``` -### `SQL-10040` +### `DB-SQL-10040` **メッセージ** @@ -344,7 +350,7 @@ Empty SQL is specified Multiple SQLs are not allowed ``` -### `SQL-10041` +### `DB-SQL-10041` **メッセージ** @@ -352,7 +358,7 @@ Multiple SQLs are not allowed The column %s is ambiguous ``` -### `SQL-10042` +### `DB-SQL-10042` **メッセージ** @@ -360,7 +366,7 @@ The column %s is ambiguous The column %s cannot be specified in the %s clause. Only the columns in the table %s can be specified in the %s clause ``` -### `SQL-10043` +### `DB-SQL-10043` **メッセージ** @@ -368,7 +374,7 @@ The column %s cannot be specified in the %s clause. Only the columns in the tabl An unbound bind marker is still in the escape character of the LIKE predicate for the column %s ``` -### `SQL-10044` +### `DB-SQL-10044` **メッセージ** @@ -376,7 +382,7 @@ An unbound bind marker is still in the escape character of the LIKE predicate fo The escape character must be a TEXT value for the LIKE predicate for the column %s ``` -### `SQL-10045` +### `DB-SQL-10045` **メッセージ** @@ -384,7 +390,7 @@ The escape character must be a TEXT value for the LIKE predicate for the column The value of the predicate must not be null unless the operator is 'IS NULL' or 'IS NOT NULL'. Predicate: %s ``` -### `SQL-10046` +### `DB-SQL-10046` **メッセージ** @@ -392,7 +398,7 @@ The value of the predicate must not be null unless the operator is 'IS NULL' or An unbound bind marker is still in the LIMIT clause ``` -### `SQL-10047` +### `DB-SQL-10047` **メッセージ** @@ -400,7 +406,7 @@ An unbound bind marker is still in the LIMIT clause The LIMIT must be an INT value ``` -### `SQL-10048` +### `DB-SQL-10048` **メッセージ** @@ -408,7 +414,7 @@ The LIMIT must be an INT value Unmatched column names or values ``` -### `SQL-10049` +### `DB-SQL-10049` **メッセージ** @@ -416,7 +422,7 @@ Unmatched column names or values The column %s is specified twice ``` -### `SQL-10050` +### `DB-SQL-10050` **メッセージ** @@ -424,7 +430,7 @@ The column %s is specified twice All primary key columns must be specified in the INSERT or UPSERT statement ``` -### `SQL-10051` +### `DB-SQL-10051` **メッセージ** @@ -432,7 +438,7 @@ All primary key columns must be specified in the INSERT or UPSERT statement An unbound bind marker is still in the value of the column %s ``` -### `SQL-10052` +### `DB-SQL-10052` **メッセージ** @@ -440,7 +446,7 @@ An unbound bind marker is still in the value of the column %s Unmatched column type. The type of the column %s should be %s, but a boolean value (BOOLEAN) is specified ``` -### `SQL-10053` +### `DB-SQL-10053` **メッセージ** @@ -448,7 +454,7 @@ Unmatched column type. The type of the column %s should be %s, but a boolean val Unmatched column type. The type of the column %s should be %s, but a decimal number (INT or BIGINT) is specified ``` -### `SQL-10054` +### `DB-SQL-10054` **メッセージ** @@ -456,15 +462,15 @@ Unmatched column type. The type of the column %s should be %s, but a decimal num Unmatched column type. The type of the column %s should be %s, but a floating point number (FLOAT or DOUBLE) is specified ``` -### `SQL-10055` +### `DB-SQL-10055` **メッセージ** ```markdown -Unmatched column type. The type of the column %s should be %s, but a string (TEXT) is specified +Unmatched column type. The type of the column %s should be %s, but a string (TEXT, DATE, TIME, TIMESTAMP, or TIMESTAMPTZ) is specified ``` -### `SQL-10056` +### `DB-SQL-10056` **メッセージ** @@ -472,7 +478,7 @@ Unmatched column type. The type of the column %s should be %s, but a string (TEX Unmatched column type. The type of the column %s should be %s, but a BOOLEAN value is specified ``` -### `SQL-10057` +### `DB-SQL-10057` **メッセージ** @@ -480,7 +486,7 @@ Unmatched column type. The type of the column %s should be %s, but a BOOLEAN val Unmatched column type. The type of the column %s should be %s, but an INT value is specified ``` -### `SQL-10058` +### `DB-SQL-10058` **メッセージ** @@ -488,7 +494,7 @@ Unmatched column type. The type of the column %s should be %s, but an INT value Unmatched column type. The type of the column %s should be %s, but a BIGINT value is specified ``` -### `SQL-10059` +### `DB-SQL-10059` **メッセージ** @@ -496,7 +502,7 @@ Unmatched column type. The type of the column %s should be %s, but a BIGINT valu Unmatched column type. The type of the column %s should be %s, but a FLOAT value is specified ``` -### `SQL-10060` +### `DB-SQL-10060` **メッセージ** @@ -504,7 +510,7 @@ Unmatched column type. The type of the column %s should be %s, but a FLOAT value Unmatched column type. The type of the column %s should be %s, but a DOUBLE value is specified ``` -### `SQL-10061` +### `DB-SQL-10061` **メッセージ** @@ -512,7 +518,7 @@ Unmatched column type. The type of the column %s should be %s, but a DOUBLE valu Unmatched column type. The type of the column %s should be %s, but a TEXT value is specified ``` -### `SQL-10062` +### `DB-SQL-10062` **メッセージ** @@ -520,7 +526,7 @@ Unmatched column type. The type of the column %s should be %s, but a TEXT value Unmatched column type. The type of the column %s should be %s, but a BLOB value is specified ``` -### `SQL-10063` +### `DB-SQL-10063` **メッセージ** @@ -528,7 +534,7 @@ Unmatched column type. The type of the column %s should be %s, but a BLOB value RIGHT OUTER JOIN can only be specified as the first join ``` -### `SQL-10064` +### `DB-SQL-10064` **メッセージ** @@ -536,7 +542,7 @@ RIGHT OUTER JOIN can only be specified as the first join The JOIN predicate is not specified properly. Predicate: %s ``` -### `SQL-10065` +### `DB-SQL-10065` **メッセージ** @@ -544,7 +550,7 @@ The JOIN predicate is not specified properly. Predicate: %s The data types of the columns in the JOIN predicate do not match. Predicate: %s ``` -### `SQL-10066` +### `DB-SQL-10066` **メッセージ** @@ -552,7 +558,7 @@ The data types of the columns in the JOIN predicate do not match. Predicate: %s The column %s is specified twice in the JOIN predicates. Predicates: %s ``` -### `SQL-10067` +### `DB-SQL-10067` **メッセージ** @@ -560,7 +566,7 @@ The column %s is specified twice in the JOIN predicates. Predicates: %s Either all primary key columns or an indexed column for the table %s must be specified in the JOIN predicates. Predicates: %s ``` -### `SQL-10068` +### `DB-SQL-10068` **メッセージ** @@ -568,7 +574,7 @@ Either all primary key columns or an indexed column for the table %s must be spe Cannot issue mutation DML SQLs such as INSERT, UPDATE or DELETE with executeQuery() ``` -### `SQL-10069` +### `DB-SQL-10069` **メッセージ** @@ -576,7 +582,7 @@ Cannot issue mutation DML SQLs such as INSERT, UPDATE or DELETE with executeQuer Cannot issue SELECT SQLs with executeUpdate() ``` -### `SQL-10070` +### `DB-SQL-10070` **メッセージ** @@ -584,7 +590,7 @@ Cannot issue SELECT SQLs with executeUpdate() The TWO_PHASE_COMMIT_TRANSACTION mode is not supported in the current transaction manager ``` -### `SQL-10071` +### `DB-SQL-10071` **メッセージ** @@ -592,10 +598,50 @@ The TWO_PHASE_COMMIT_TRANSACTION mode is not supported in the current transactio The encrypted column %s is not allowed in the %s clause ``` -### `SQL-10072` +### `DB-SQL-10072` **メッセージ** ```markdown The user %s does not exist ``` + +### `DB-SQL-10073` + +**メッセージ** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a DATE value is specified +``` + +### `DB-SQL-10074` + +**メッセージ** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a TIME value is specified +``` + +### `DB-SQL-10075` + +**メッセージ** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a TIMESTAMP value is specified +``` + +### `DB-SQL-10076` + +**メッセージ** + +```markdown +Unmatched column type. The type of the column %s should be %s, but a TIMESTAMPTZ value is specified +``` + +### `DB-SQL-10077` + +**メッセージ** + +```markdown +The policy %s does not exist +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/spring-data-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/spring-data-guide.mdx index 44a632fd..ee4ff3ec 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/spring-data-guide.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/spring-data-guide.mdx @@ -818,4 +818,4 @@ Spring Data JDBC for ScalarDB を使用するために、統合では次の機 - [Spring Data JDBC - Reference Documentation](https://docs.spring.io/spring-data/jdbc/docs/3.0.x/reference/html/) - [ScalarDB JDBC ガイド](jdbc-guide.mdx) -- [Javadoc for Spring Data JDBC for ScalarDB](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-spring-data/3.14.1/index.html) +- [Javadoc for Spring Data JDBC for ScalarDB](https://javadoc.io/doc/com.scalar-labs/scalardb-sql-spring-data/3.15.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/sql-api-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/sql-api-guide.mdx index 3f939f74..e0c8d88e 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/sql-api-guide.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/scalardb-sql/sql-api-guide.mdx @@ -113,7 +113,7 @@ ResultSet resultSet = sqlSession.execute(statement); ``` `Statement` オブジェクトは、対応する SQL のファクトリメソッドを持つ `StatementBuilder` によって構築できます。 -詳細については、[`StatementBuilder` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/statement/builder/StatementBuilder.html) および [ScalarDB SQL 文法](grammar.mdx)を参照してください。 +詳細については、[`StatementBuilder` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/statement/builder/StatementBuilder.html) および [ScalarDB SQL 文法](grammar.mdx)を参照してください。 ### ResultSet オブジェクトの処理 @@ -145,7 +145,7 @@ for (Record record : resultSet) { ColumnDefinitions columnDefinitions = resultSet.getColumnDefinitions(); ``` -詳細については、[`ColumnDefinitions` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/ColumnDefinition.html) を参照してください。 +詳細については、[`ColumnDefinitions` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/ColumnDefinition.html) を参照してください。 ### Record オブジェクトの処理 @@ -185,6 +185,22 @@ ByteBuffer blobValueGottenByIndex = record.getBlob(); // Get a BLOB value of a column as a byte array byte[] blobValueAsBytesGottenByName = record.getBlobAsBytes(""); byte[] blobValueAsBytesGottenByIndex = record.getBlobAsBytes(); + +// Get a DATE value of a column as a LocalDate +LocalDate dateValueGottenByName = record.getDate(""); +LocalDate dateValueGottenByName = record.getDate(); + +// Get a TIME value of a column as a LocalTime +LocalTime timeValueGottenByName = record.getTime(""); +LocalTime timeValueGottenByName = record.getTime(); + +// Get a TIMESTAMP value of a column as a LocalDateTime +LocalDateTime timestampValueGottenByName = record.getTimestamp(""); +LocalDateTime timestampValueGottenByName = record.getTimestamp(); + +// Get a TIMESTAMPTZ value of a column as an Instant +Instant timestampTZValueGottenByName = record.getTimestampTZ(""); +Instant timestampTZValueGottenByName = record.getTimestampTZ(); ``` 列の値が null かどうかを確認する必要がある場合は、`isNull("<列名>")` または `isNull(<列インデックス>)` メソッドを使用できます。 @@ -195,7 +211,7 @@ boolean isNullGottenByName = record.isNull(""); boolean isNullGottenByIndex = record.isNull(); ``` -詳細については、[`Record` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/Record.html) も参照してください。 +詳細については、[`Record` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/Record.html) も参照してください。 ### 準備済みステートメント @@ -240,7 +256,7 @@ preparedStatement2 .execute(); ``` -詳細については、[`PreparedStatement` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/PreparedStatement.html) も参照してください。 +詳細については、[`PreparedStatement` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/PreparedStatement.html) も参照してください。 ## トランザクションの実行 @@ -356,10 +372,10 @@ try { Metadata metadata = sqlSession.getMetadata(); ``` -詳細については、[`Metadata` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.14.1/com/scalar/db/sql/metadata/Metadata.html) を参照してください。 +詳細については、[`Metadata` の Javadoc](https://javadoc.io/static/com.scalar-labs/scalardb-sql/3.15.1/com/scalar/db/sql/metadata/Metadata.html) を参照してください。 ## 参考文献 - [ScalarDB SQL 文法](grammar.mdx) - [2フェーズコミットトランザクション](../two-phase-commit-transactions.mdx) -- [Javadoc for ScalarDB SQL](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.14.1/index.html) +- [Javadoc for ScalarDB SQL](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.15.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader-import.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader-import.mdx index d7080711..26d433c7 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader-import.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader-import.mdx @@ -70,7 +70,11 @@ java -jar scalardb-schema-loader-.jar --config .jar --config .jar --config - | MySQL | ScalarDB | 注記 | - |--------------|----------|------------------------------------| - | bigint | BIGINT | 下記の警告 [1](#1) を参照してください。 | - | binary | BLOB | | - | bit | BOOLEAN | | - | blob | BLOB | 下記の警告 [2](#2) を参照してください。 | - | char | TEXT | 下記の警告 [2](#2) を参照してください。 | - | double | DOUBLE | | - | float | FLOAT | | - | int | INT | | - | int unsigned | BIGINT | 下記の警告 [2](#2) を参照してください。 | - | integer | INT | | - | longblob | BLOB | | - | longtext | TEXT | | - | mediumblob | BLOB | 下記の警告 [2](#2) を参照してください。 | - | mediumint | INT | 下記の警告 [2](#2) を参照してください。 | - | mediumtext | TEXT | 下記の警告 [2](#2) を参照してください。 | - | smallint | INT | 下記の警告 [2](#2) を参照してください。 | - | text | TEXT | 下記の警告 [2](#2) を参照してください。 | - | tinyblob | BLOB | 下記の警告 [2](#2) を参照してください。 | - | tinyint | INT | 下記の警告 [2](#2) を参照してください。 | - | tinyint(1) | BOOLEAN | | - | tinytext | TEXT | 下記の警告 [2](#2) を参照してください。 | - | varbinary | BLOB | 下記の警告 [2](#2) を参照してください。 | - | varchar | TEXT | 下記の警告 [2](#2) を参照してください。 | + | MySQL | ScalarDB | 注記 | + |--------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------| + | bigint | BIGINT | 下記の警告 [1](#1) を参照してください。 | + | binary | BLOB | | + | bit | BOOLEAN | | + | blob | BLOB | 下記の警告 [2](#2) を参照してください。 | + | char | TEXT | 下記の警告 [2](#2) を参照してください。 | + | date | DATE | | + | datetime | TIMESTAMP (デフォルト)、TIMESTAMPTZ | TIMESTAMPTZ としてインポートする場合、ScalarDB はデータが UTC タイムゾーンにあると想定します。下記の警告 [6](#6) を参照してください。 | + | double | DOUBLE | | + | float | FLOAT | | + | int | INT | | + | int unsigned | BIGINT | 下記の警告 [2](#2) を参照してください。 | + | integer | INT | | + | longblob | BLOB | | + | longtext | TEXT | | + | mediumblob | BLOB | 下記の警告 [2](#2) を参照してください。 | + | mediumint | INT | 下記の警告 [2](#2) を参照してください。 | + | mediumtext | TEXT | 下記の警告 [2](#2) を参照してください。 | + | smallint | INT | 下記の警告 [2](#2) を参照してください。 | + | text | TEXT | 下記の警告 [2](#2) を参照してください。 | + | time | TIME | | + | timestamp | TIMESTAMPTZ | | + | tinyblob | BLOB | 下記の警告 [2](#2) を参照してください。 | + | tinyint | INT | 下記の警告 [2](#2) を参照してください。 | + | tinyint(1) | BOOLEAN | | + | tinytext | TEXT | 下記の警告 [2](#2) を参照してください。 | + | varbinary | BLOB | 下記の警告 [2](#2) を参照してください。 | + | varchar | TEXT | 下記の警告 [2](#2) を参照してください。 | 上記に記載されていないデータ型はサポートされていません。サポートされていない一般的なデータ型は次のとおりです。 - bigint unsigned - bit(n) (n > 1) - - date - - datetime - decimal - enum - geometry - json - numeric - set - - time - - timestamp - year - | PostgreSQL/YugabyteDB | ScalarDB | 注記 | - |-----------------------|----------|------------------------------------| - | bigint | BIGINT | 下記の警告 [1](#1) を参照してください。 | - | boolean | BOOLEAN | | - | bytea | BLOB | | - | character | TEXT | 下記の警告 [2](#2) を参照してください。 | - | character varying | TEXT | 下記の警告 [2](#2) を参照してください。 | - | double precision | DOUBLE | | - | integer | INT | | - | real | FLOAT | | - | smallint | INT | 下記の警告 [2](#2) を参照してください。 | - | text | TEXT | | + | PostgreSQL/YugabyteDB | ScalarDB | 注記 | + |--------------------------|-------------|-----------------------------------| + | bigint | BIGINT | 下記の警告 [1](#1) を参照してください。| + | boolean | BOOLEAN | | + | bytea | BLOB | | + | character | TEXT | 下記の警告 [2](#2) を参照してください。| + | character varying | TEXT | 下記の警告 [2](#2) を参照してください。| + | date | DATE | | + | double precision | DOUBLE | | + | integer | INT | | + | real | FLOAT | | + | smallint | INT | 下記の警告 [2](#2) を参照してください。| + | text | TEXT | | + | time | TIME | | + | timestamp | TIMESTAMP | | + | timestamp with time zone | TIMESTAMPTZ | | 上記に記載されていないデータ型はサポートされていません。サポートされていない一般的なデータ型は次のとおりです。 @@ -152,7 +162,6 @@ java -jar scalardb-schema-loader-.jar --config .jar --config .jar --config - | Oracle | ScalarDB | 注記 | - |---------------|-----------------|------------------------------------| - | binary_double | DOUBLE | | - | binary_float | FLOAT | | - | blob | BLOB | 下記の警告 [3](#3) を参照してください。 | - | char | TEXT | 下記の警告 [2](#2) を参照してください。 | - | clob | TEXT | | - | float | DOUBLE | 下記の警告 [4](#4) を参照してください。 | - | long | TEXT | | - | long raw | BLOB | | - | nchar | TEXT | 下記の警告 [2](#2) を参照してください。 | - | nclob | TEXT | | - | number | BIGINT / DOUBLE | 下記の警告 [5](#5) を参照してください。 | - | nvarchar2 | TEXT | 下記の警告 [2](#2) を参照してください。 | - | raw | BLOB | 下記の警告 [2](#2) を参照してください。 | - | varchar2 | TEXT | 下記の警告 [2](#2) を参照してください。 | + +| Oracle | ScalarDB | 注記 | +|--------------------------------|-----------------------------------|-------------------------------------| +| binary_double | DOUBLE | | +| binary_float | FLOAT | | +| blob | BLOB | 下記の警告 [3](#3) を参照してください。 | +| char | TEXT | 下記の警告 [2](#2) を参照してください。 | +| clob | TEXT | | +| date | DATE(デフォルト)、TIME、TIMESTAMP | 下記の警告 [6](#6) を参照してください。 | +| float | DOUBLE | 下記の警告 [4](#4) を参照してください。 | +| long | TEXT | | +| long raw | BLOB | | +| nchar | TEXT | 下記の警告 [2](#2) を参照してください。 | +| nclob | TEXT | | +| number | BIGINT / DOUBLE | 下記の警告 [5](#5) を参照してください。 | +| nvarchar2 | TEXT | 下記の警告 [2](#2) を参照してください。 | +| raw | BLOB | 下記の警告 [2](#2) を参照してください。 | +| timestamp | TIMESTAMP (デフォルト)、TIME | 下記の警告 [6](#6) を参照してください。 | +| timestamp with time zone | TIMESTAMPTZ | | +| timestamp with local time zone | TIMESTAMPTZ | | +| varchar2 | TEXT | 下記の警告 [2](#2) を参照してください。 | 上記に記載されていないデータ型はサポートされていません。サポートされていない一般的なデータ型は次のとおりです。 - - date - - timestamp - interval - rowid - urowid @@ -207,32 +218,34 @@ java -jar scalardb-schema-loader-.jar --config - | SQL Server | ScalarDB | 注記 | - |------------|----------|------------------------------------| - | bigint | BIGINT | 下記の警告 [1](#1) を参照してください。 | - | binary | BLOB | 下記の警告 [2](#2) を参照してください。 | - | bit | BOOLEAN | | - | char | TEXT | 下記の警告 [2](#2) を参照してください。 | - | float | DOUBLE | | - | image | BLOB | | - | int | INT | | - | nchar | TEXT | 下記の警告 [2](#2) を参照してください。 | - | ntext | TEXT | | - | nvarchar | TEXT | 下記の警告 [2](#2) を参照してください。 | - | real | FLOAT | | - | smallint | INT | 下記の警告 [2](#2) を参照してください。 | - | text | TEXT | | - | tinyint | INT | 下記の警告 [2](#2) を参照してください。 | - | varbinary | BLOB | 下記の警告 [2](#2) を参照してください。 | - | varchar | TEXT | 下記の警告 [2](#2) を参照してください。 | + | SQL Server | ScalarDB | 注記 | + |----------------|-------------|------------------------------------| + | bigint | BIGINT | 下記の警告 [1](#1) を参照してください。 | + | binary | BLOB | 下記の警告 [2](#2) を参照してください。 | + | bit | BOOLEAN | | + | char | TEXT | 下記の警告 [2](#2) を参照してください。 | + | date | DATE | | + | datetime | TIMESTAMP | | + | datetime2 | TIMESTAMP | | + | float | DOUBLE | | + | image | BLOB | | + | int | INT | | + | nchar | TEXT | 下記の警告 [2](#2) を参照してください。 | + | ntext | TEXT | | + | nvarchar | TEXT | 下記の警告 [2](#2) を参照してください。 | + | offsetdatetime | TIMESTAMPTZ | | + | real | FLOAT | | + | smalldatetime | TIMESTAMP | | + | smallint | INT | 下記の警告 [2](#2) を参照してください。 | + | text | TEXT | | + | time | TIME | | + | tinyint | INT | 下記の警告 [2](#2) を参照してください。 | + | varbinary | BLOB | 下記の警告 [2](#2) を参照してください。 | + | varchar | TEXT | 下記の警告 [2](#2) を参照してください。 | 上記に記載されていないデータ型はサポートされていません。サポートされていない一般的なデータ型は次のとおりです。 - cursor - - date - - datetime - - datetime2 - - datetimeoffset - decimal - geography - geometry @@ -240,10 +253,8 @@ java -jar scalardb-schema-loader-.jar --config @@ -267,6 +278,9 @@ java -jar scalardb-schema-loader-.jar --config ScalarDB では、ScalarDB のデータ型の最大サイズにより、`p` が15より大きい場合、Oracle の `numeric(p, s)` 列 (`p` は精度、`s` はスケール) をサポートしません。`s` が0の場合、ScalarDB は列を `BIGINT` にマッピングします。それ以外の場合は、ScalarDB は列を `DOUBLE` にマッピングします。後者の場合、浮動小数点値が固定小数点値にキャストされるため、基になるデータベースで切り上げまたは切り捨てが発生する可能性があることに注意してください。 +
  • + 基盤となるデータベースデータ型は、いくつかの ScalarDB データ型にマップできます。デフォルトのマッピングをオーバーライドするには、インポートスキーマファイルの `override-columns-type` フィールドを使用します。例については、[サンプルインポートスキーマファイル](#サンプルインポートスキーマファイル)を参照してください。 +
  • ::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader.mdx index 76abe5b6..944c2282 100644 --- a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader.mdx +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/current/schema-loader.mdx @@ -545,24 +545,42 @@ Cosmos DB for NoSQL の自動スケーリングは、このオプションが `4 次の表は、ScalarDB でサポートされているデータ型と、他のデータベースのデータ型へのマッピングを示しています。 -| ScalarDB | Cassandra | Cosmos DB for NoSQL | DynamoDB | MySQL | PostgreSQL/YugabyteDB | Oracle | SQL Server | SQLite | -|-----------|-----------|---------------------|----------|----------|-----------------------|----------------|-----------------|---------| -| BOOLEAN | boolean | boolean (JSON) | BOOL | boolean | boolean | number(1) | bit | boolean | -| INT | int | number (JSON) | N | int | int | number(10) | int | int | -| BIGINT | bigint | number (JSON) | N | bigint | bigint | number(19) | bigint | bigint | -| FLOAT | float | number (JSON) | N | real | real | binary_float | float(24) | float | -| DOUBLE | double | number (JSON) | N | double | double precision | binary_double | float | double | -| TEXT | text | string (JSON) | S | longtext | text | varchar2(4000) | varchar(8000) | text | -| BLOB | blob | string (JSON) | B | longblob | bytea | RAW(2000) | varbinary(8000) | blob | +| ScalarDB | Cassandra | Cosmos DB for NoSQL | DynamoDB | MySQL/MariaDB | PostgreSQL/YugabyteDB | Oracle | SQL Server | SQLite | +|-------------|------------------------------|---------------------|----------|---------------|--------------------------|--------------------------|-----------------|---------| +| BOOLEAN | boolean | boolean (JSON) | BOOL | boolean | boolean | number(1) | bit | boolean | +| INT | int | number (JSON) | N | int | int | number(10) | int | int | +| BIGINT | bigint | number (JSON) | N | bigint | bigint | number(19) | bigint | bigint | +| FLOAT | float | number (JSON) | N | real | real | binary_float | float(24) | float | +| DOUBLE | double | number (JSON) | N | double | double precision | binary_double | float | double | +| TEXT | text | string (JSON) | S | longtext | text | varchar2(4000) | varchar(8000) | text | +| BLOB | blob | string (JSON) | B | longblob | bytea | RAW(2000) | varbinary(8000) | blob | +| DATE | date | number (JSON) | N | date | date | date | date | int | +| TIME | time | number (JSON) | N | time | time | timestamp | time | bigint | +| TIMESTAMP | サポートされていません | number (JSON) | N | datetime | timestamp | timestamp | datetime2 | bigint | +| TIMESTAMPTZ | timestamp | number (JSON) | N | datetime | timestamp with time zone | timestamp with time zone | datetimeoffset | bigint | + +:::note + +TIMESTAMP はタイムゾーン情報のない日付と時刻を表しますが、TIMESTAMPTZ は UTC タイムゾーンの日付と時刻を表します。 + +::: ただし、JDBC データベースの次のデータ型は、主キーまたはセカンダリインデックスキーとして使用される場合、異なる方法で変換されます。これは、RDB データ型の制限によるものです。 -| ScalarDB | MySQL | PostgreSQL/YugabyteDB | Oracle | -|----------|---------------|-----------------------|--------------| -| TEXT | VARCHAR(64) | VARCHAR(10485760) | VARCHAR2(64) | -| BLOB | VARBINARY(64) | | RAW(64) | +| ScalarDB | MySQL/MariaDB | PostgreSQL/YugabyteDB | Oracle | +|----------|----------------|-----------------------|--------------| +| TEXT | VARCHAR(64) | VARCHAR(10485760) | VARCHAR2(64) | +| BLOB | VARBINARY(64) | | RAW(64) | + +次のデータ型には、基盤になるデータベースに関係なく、値の範囲と精度があります。 -ScalarDB の `BIGINT` の値の範囲は、基になるデータベースに関係なく、-2^53から2^53です。 +| データ型 | 最小限 | 最大限 | 精度 | +|--------------|---------------------------|---------------------------|---------------| +| BIGINT | -2^53 | 2^53 | - | +| DATE | 1000-01-01 | 9999-12-31 | 1 日 | +| TIME | 00:00:00.000000 | 23:59:59.999999 | 1 マイクロ秒 | +| TIMESTAMP | 1000-01-01 00:00:00.000 | 9999-12-31 23:59:59.999 | 1 ミリ秒 | +| TIMESTAMPTZ | 1000-01-01 00:00:00.000 Z | 9999-12-31 23:59:59.999 Z | 1 ミリ秒 | :::note diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14.json b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14.json new file mode 100644 index 00000000..94542026 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14.json @@ -0,0 +1,6 @@ +{ + "version.label": { + "message": "3.14", + "description": "The label for version 3.14" + } +} diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/_develop-run-analytical-queries-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/_develop-run-analytical-queries-overview.mdx new file mode 100644 index 00000000..388617ff --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/_develop-run-analytical-queries-overview.mdx @@ -0,0 +1,19 @@ +--- +tags: + - Community + - Enterprise Option + - Public Preview +displayed_sidebar: docsJapanese +--- + +# 分析クエリの実行の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このサブカテゴリでは、ScalarDB の分析コンポーネントである ScalarDB Analytics の設定と構成方法を学習できます。その後、ScalarDB トランザクションを通じて更新される ScalarDB 管理データベースと、ScalarDB 管理外のデータベースに対して分析クエリを実行できます。 + +分析クエリの実行方法については、次のガイドを参照してください。 + +- [ScalarDB Analytics with PostgreSQL を使用してサンプルデータに対して分析クエリを実行する](scalardb-samples/scalardb-analytics-postgresql-sample/README.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/add-scalardb-to-your-build.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/add-scalardb-to-your-build.mdx new file mode 100644 index 00000000..7e21ac74 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/add-scalardb-to-your-build.mdx @@ -0,0 +1,44 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ビルドに ScalarDB を追加する + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB ライブラリは、[Maven Central Repository](https://mvnrepository.com/artifact/com.scalar-labs/scalardb) で入手できます。Gradle または Maven を使用して、ライブラリをビルド依存関係としてアプリケーションに追加できます。 + +## ビルドツールに基づいてアプリケーションを設定する + +ビルドツールを選択し、手順に従って ScalarDB のビルド依存関係をアプリケーションに追加します。 + + + + Gradle を使用して ScalarDB のビルド依存関係を追加するには、アプリケーションの `build.gradle` に次のコードを追加し、`` を使用する ScalarDB のバージョンに置き換えます。 + + ```gradle + dependencies { + implementation 'com.scalar-labs:scalardb:' + } + ``` + + + Maven を使用して ScalarDB のビルド依存関係を追加するには、アプリケーションの `pom.xml` に次のコードを追加し、`` を使用する ScalarDB のバージョンに置き換えます。 + + ```xml + + com.scalar-labs + scalardb + + + ``` + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/api-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/api-guide.mdx new file mode 100644 index 00000000..b6e875d0 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/api-guide.mdx @@ -0,0 +1,1622 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Java API ガイド + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Java API は、主に管理 API とトランザクション API で設定されています。このガイドでは、どのような種類の API が存在するのか、それらの使用方法、例外の処理方法などの関連トピックについて簡単に説明します。 + +## Administrative API + +このセクションでは、ScalarDB の管理 API を使用してプログラムで管理操作を実行する方法について説明します。 + +:::note + +管理操作を実行する別の方法は、[Schema Loader](schema-loader.mdx) を使用することです。 + +::: + +### `DistributedTransactionAdmin` インスタンスを取得する + +管理操作を実行するには、まず `DistributedTransactionAdmin` インスタンスを取得する必要があります。 + +`DistributedTransactionAdmin` インスタンスを取得するには、次のように `TransactionFactory` を使用します。 + +```java +TransactionFactory transactionFactory = TransactionFactory.create(""); +DistributedTransactionAdmin admin = transactionFactory.getTransactionAdmin(); +``` + +設定の詳細については、[ScalarDB 設定](configurations.mdx)を参照してください。 + +すべての管理操作を実行したら、次のように `DistributedTransactionAdmin` インスタンスを閉じる必要があります。 + +```java +admin.close(); +``` + +### 名前空間を作成する + +テーブルは1つの名前空間に属するため、テーブルを作成する前に名前空間を作成する必要があります。 + +名前空間は次のように作成できます。 + +```java +// Create the namespace "ns". If the namespace already exists, an exception will be thrown. +admin.createNamespace("ns"); + +// Create the namespace only if it does not already exist. +boolean ifNotExists = true; +admin.createNamespace("ns", ifNotExists); + +// Create the namespace with options. +Map options = ...; +admin.createNamespace("ns", options); +``` + +#### 作成オプション + +名前空間の作成やテーブルの作成などの作成操作では、オプション名と値のマップであるオプション (`Map`) を指定できます。オプションを使用すると、ストレージアダプタ固有の設定ができます。 + +データベースを選択して、使用可能なオプションを確認します。 + + + + JDBC データベースには使用できるオプションはありません。 + + + | 名前 | 説明 | デフォルト | + |------------|-------------------------------------------------|------------| + | no-scaling | DynamoDB の自動スケーリングを無効にします。 | false | + | no-backup | DynamoDB の継続的なバックアップを無効にします。 | false | + | ru | 基本リソース単位。 | 10 | + + + | 名前 | 説明 | デフォルト | + |------------|--------------------------------------------------------|------------| + | ru | 基本リソース単位。 | 400 | + | no-scaling | Cosmos DB for NoSQL の自動スケーリングを無効にします。 | false | + + + | 名前 | 説明 | デフォルト | + |----------------------|----------------------------------------------------------------------------------------------------------|-------------------| + | replication-strategy | Cassandra レプリケーション戦略。`SimpleStrategy` または `NetworkTopologyStrategy` である必要があります。 | `SimpleStrategy` | + | compaction-strategy | Cassandra 圧縮戦略。`LCS`、`STCS`、または `TWCS` である必要があります。 | `STCS` | + | replication-factor | Cassandra の複製係数。 | 3 | + + + +### テーブルを作成する + +テーブルを作成するときは、テーブルメタデータを定義してからテーブルを作成する必要があります。 + +テーブルメタデータを定義するには、`TableMetadata` を使用できます。次の図は、テーブルの列、パーティションキー、クラスタリングキー (クラスタリング順序を含む)、およびセカンダリインデックスを定義する方法を示しています。 + +```java +// Define the table metadata. +TableMetadata tableMetadata = + TableMetadata.newBuilder() + .addColumn("c1", DataType.INT) + .addColumn("c2", DataType.TEXT) + .addColumn("c3", DataType.BIGINT) + .addColumn("c4", DataType.FLOAT) + .addColumn("c5", DataType.DOUBLE) + .addPartitionKey("c1") + .addClusteringKey("c2", Scan.Ordering.Order.DESC) + .addClusteringKey("c3", Scan.Ordering.Order.ASC) + .addSecondaryIndex("c4") + .build(); +``` + +ScalarDB のデータモデルの詳細については、[データモデル](design.mdx#データモデル)を参照してください。 + +次に、次のようにテーブルを作成します。 + +```java +// Create the table "ns.tbl". If the table already exists, an exception will be thrown. +admin.createTable("ns", "tbl", tableMetadata); + +// Create the table only if it does not already exist. +boolean ifNotExists = true; +admin.createTable("ns", "tbl", tableMetadata, ifNotExists); + +// Create the table with options. +Map options = ...; +admin.createTable("ns", "tbl", tableMetadata, options); +``` + +### セカンダリインデックスを作成する + +セカンダリインデックスは次のように作成できます。 + +```java +// Create a secondary index on column "c5" for table "ns.tbl". If a secondary index already exists, an exception will be thrown. +admin.createIndex("ns", "tbl", "c5"); + +// Create the secondary index only if it does not already exist. +boolean ifNotExists = true; +admin.createIndex("ns", "tbl", "c5", ifNotExists); + +// Create the secondary index with options. +Map options = ...; +admin.createIndex("ns", "tbl", "c5", options); +``` + +### テーブルに新しい列を追加する + +次のように、テーブルに新しい非パーティションキー列を追加できます。 + +```java +// Add a new column "c6" with the INT data type to the table "ns.tbl". +admin.addNewColumnToTable("ns", "tbl", "c6", DataType.INT) +``` + +:::warning + +テーブルに新しい列を追加する場合は、基盤となるストレージによって実行時間が大きく異なる可能性があるため、慎重に検討する必要があります。それに応じて計画を立て、特にデータベースが本番環境で実行されている場合は、次の点を考慮してください。 + +- **Cosmos DB for NoSQL および DynamoDB の場合:** テーブルスキーマは変更されないため、列の追加はほぼ瞬時に行われます。別のテーブルに格納されているテーブルメタデータのみが更新されます。 +- **Cassandra の場合:** 列を追加すると、スキーマメタデータのみが更新され、既存のスキーマレコードは変更されません。クラスタートポロジが実行時間の主な要因です。スキーマメタデータの変更は、ゴシッププロトコルを介して各クラスターノードに共有されます。このため、クラスターが大きいほど、すべてのノードが更新されるまでの時間が長くなります。 +- **リレーショナルデータベース (MySQL、Oracle など) の場合:** 列の追加は実行にそれほど時間がかかりません。 + +::: + +### テーブルを切り捨てる + +テーブルを切り捨てるには、次のようにします。 + +```java +// Truncate the table "ns.tbl". +admin.truncateTable("ns", "tbl"); +``` + +### セカンダリインデックスを削除する + +セカンダリインデックスは次のように削除できます。 + +```java +// Drop the secondary index on column "c5" from table "ns.tbl". If the secondary index does not exist, an exception will be thrown. +admin.dropIndex("ns", "tbl", "c5"); + +// Drop the secondary index only if it exists. +boolean ifExists = true; +admin.dropIndex("ns", "tbl", "c5", ifExists); +``` + +### テーブルを削除する + +テーブルを削除するには、次のようにします。 + +```java +// Drop the table "ns.tbl". If the table does not exist, an exception will be thrown. +admin.dropTable("ns", "tbl"); + +// Drop the table only if it exists. +boolean ifExists = true; +admin.dropTable("ns", "tbl", ifExists); +``` + +### 名前空間を削除する + +名前空間を削除するには、次のようにします。 + +```java +// Drop the namespace "ns". If the namespace does not exist, an exception will be thrown. +admin.dropNamespace("ns"); + +// Drop the namespace only if it exists. +boolean ifExists = true; +admin.dropNamespace("ns", ifExists); +``` + +### 既存の名前空間を取得する + +既存の名前空間は次のように取得できます。 + +```java +Set namespaces = admin.getNamespaceNames(); +``` + +### 名前空間のテーブルを取得する + +名前空間のテーブルは次のように取得できます。 + +```java +// Get the tables of the namespace "ns". +Set tables = admin.getNamespaceTableNames("ns"); +``` + +### テーブルメタデータを取得する + +テーブルメタデータは次のように取得できます。 + +```java +// Get the table metadata for "ns.tbl". +TableMetadata tableMetadata = admin.getTableMetadata("ns", "tbl"); +``` + +### 名前空間を修復する + +名前空間が不明な状態の場合 (たとえば、名前空間が基盤となるストレージに存在するが ScalarDB メタデータが存在しない、またはその逆)、このメソッドは必要に応じて名前空間とそのメタデータを再作成します。 + +名前空間は次のように修復できます。 + +```java +// Repair the namespace "ns" with options. +Map options = ...; +admin.repairNamespace("ns", options); +``` + +### テーブルを修復する + +テーブルが不明な状態の場合 (テーブルは基盤となるストレージに存在するが ScalarDB メタデータは存在しない、またはその逆)、このメソッドは必要に応じてテーブル、そのセカンダリインデックス、およびそのメタデータを再作成します。 + +テーブルは次のように修復できます。 + +```java +// Repair the table "ns.tbl" with options. +TableMetadata tableMetadata = + TableMetadata.newBuilder() + ... + .build(); +Map options = ...; +admin.repairTable("ns", "tbl", tableMetadata, options); +``` + +### 最新の ScalarDB API をサポートするように環境をアップグレードする + +ScalarDB API の最新バージョンをサポートするように ScalarDB 環境をアップグレードできます。通常、リリースノートに記載されているように、アプリケーション環境が使用する ScalarDB バージョンを更新した後、このメソッドを実行する必要があります。 + +```java +// Upgrade the ScalarDB environment. +Map options = ...; +admin.upgrade(options); +``` + +### Coordinator テーブルの操作を指定する + +Coordinator テーブルは、[Transactional API](#transactional-api) によってトランザクションのステータスを追跡するために使用されます。 + +トランザクションマネージャーを使用する場合は、トランザクションを実行するために Coordinator テーブルを作成する必要があります。テーブルの作成に加えて、Coordinator テーブルを切り捨てたり削除したりすることもできます。 + +#### Coordinator テーブルを作成する + +Coordinator テーブルは次のように作成できます。 + +```java +// Create the Coordinator table. +admin.createCoordinatorTables(); + +// Create the Coordinator table only if one does not already exist. +boolean ifNotExist = true; +admin.createCoordinatorTables(ifNotExist); + +// Create the Coordinator table with options. +Map options = ...; +admin.createCoordinatorTables(options); +``` + +#### Coordinator テーブルを切り捨てる + +Coordinator テーブルは次のように切り捨てることができます。 + +```java +// Truncate the Coordinator table. +admin.truncateCoordinatorTables(); +``` + +#### Coordinator テーブルを削除する + +Coordinator テーブルは次のように削除できます。 + +```java +// Drop the Coordinator table. +admin.dropCoordinatorTables(); + +// Drop the Coordinator table if one exist. +boolean ifExist = true; +admin.dropCoordinatorTables(ifExist); +``` + +### テーブルをインポートする + +既存のテーブルを ScalarDB にインポートするには、次のようにします。 + +```java +// Import the table "ns.tbl". If the table is already managed by ScalarDB, the target table does not +// exist, or the table does not meet the requirements of the ScalarDB table, an exception will be thrown. +admin.importTable("ns", "tbl", options); +``` + +:::warning + +運用環境で ScalarDB にテーブルをインポートする場合は、データベーステーブルと ScalarDB メタデータテーブルにトランザクションメタデータ列が追加されるため、慎重に計画する必要があります。この場合、データベースと ScalarDB の間にはいくつかの違いがあり、いくつかの制限もあります。詳細については、[ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](./schema-loader-import.mdx)を参照してください。 + +::: + +## Transactional API + +このセクションでは、ScalarDB の Transactional API を使用してトランザクション操作を実行する方法について説明します。 + +### `DistributedTransactionManager` インスタンスを取得する + +トランザクション操作を実行するには、まず `DistributedTransactionManager` インスタンスを取得する必要があります。 + +`DistributedTransactionManager` インスタンスを取得するには、次のように `TransactionFactory` を使用します。 + +```java +TransactionFactory transactionFactory = TransactionFactory.create(""); +DistributedTransactionManager transactionManager = transactionFactory.getTransactionManager(); +``` + +すべてのトランザクション操作を実行した後、次のように `DistributedTransactionManager` インスタンスを閉じる必要があります。 + +```java +transactionManager.close(); +``` + +### トランザクションを実行する + +このサブセクションでは、複数の CRUD 操作でトランザクションを実行する方法について説明します。 + +#### トランザクションを開始する + +トランザクション CRUD 操作を実行する前に、トランザクションを開始する必要があります。 + +トランザクションは次のように開始できます。 + +```java +// Begin a transaction. +DistributedTransaction transaction = transactionManager.begin(); +``` + +または、次のようにトランザクションを開始することもできます。 + +```java +// Start a transaction. +DistributedTransaction transaction = transactionManager.start(); +``` + +あるいは、次のようにトランザクション ID を指定して、トランザクションに `begin` メソッドを使用することもできます。 + +```java +// Begin a transaction with specifying a transaction ID. +DistributedTransaction transaction = transactionManager.begin(""); +``` + +または、次のようにトランザクション ID を指定して、トランザクションに `start` メソッドを使用することもできます。 + +```java +// Start a transaction with specifying a transaction ID. +DistributedTransaction transaction = transactionManager.start(""); +``` + +:::note + +トランザクション ID を指定すると、外部システムを ScalarDB にリンクする場合に便利です。それ以外の場合は、`begin()` メソッドまたは `start()` メソッドを使用する必要があります。 + +トランザクション ID を指定する場合は、ScalarDB の正確性はトランザクション ID の一意性に依存するため、システム全体で一意の ID (UUID v4など) を指定してください。 + +::: + +#### トランザクションに参加する + +トランザクションに参加することは、トランザクションが複数のクライアントリクエストにまたがるステートフルアプリケーションで特に便利です。このようなシナリオでは、アプリケーションは最初のクライアントリクエスト中にトランザクションを開始できます。その後、後続のクライアントリクエストで、アプリケーションは `join()` メソッドを使用して進行中のトランザクションに参加できます。 + +次のようにトランザクション ID を指定すると、すでに開始されている進行中のトランザクションに参加できます。 + +```java +// Join a transaction. +DistributedTransaction transaction = transactionManager.join(""); +``` + +:::note + +`getId()` を使用してトランザクション ID を取得するには、次のように指定します。 + +```java +tx.getId(); +``` + +::: + +#### トランザクションを再開する + +トランザクションの再開は、トランザクションが複数のクライアントリクエストにまたがるステートフルアプリケーションで特に役立ちます。このようなシナリオでは、アプリケーションは最初のクライアントリクエスト中にトランザクションを開始できます。その後、後続のクライアントリクエストで、アプリケーションは `resume()` メソッドを使用して進行中のトランザクションを再開できます。 + +次のようにトランザクション ID を指定すると、すでに開始した進行中のトランザクションを再開できます。 + +```java +// Resume a transaction. +DistributedTransaction transaction = transactionManager.resume(""); +``` + +:::note + +`getId()` を使用してトランザクション ID を取得するには、次のように指定します。 + +```java +tx.getId(); +``` + +::: + +#### CRUD 操作を実装する + +次のセクションでは、キーの構築と CRUD 操作について説明します。 + +:::note + +CRUD 操作のすべてのビルダーは `consistency()` メソッドを使用して一貫性を指定できますが、これらのメソッドは無視されます。代わりに、トランザクションでは常に `LINEARIZABLE` 一貫性レベルが使用されます。 + +::: + +##### キーの構築 + +ほとんどの CRUD 操作では、`Key` オブジェクト (パーティションキー、クラスタリングキーなど) を指定する必要があります。そのため、CRUD 操作に進む前に、`Key` オブジェクトの構築方法を次に説明します。 + +単一の列キーの場合、次のように `Key.of()` メソッドを使用してキーを構築できます。 + +```java +// For a key that consists of a single column of INT. +Key key1 = Key.ofInt("col1", 1); + +// For a key that consists of a single column of BIGINT. +Key key2 = Key.ofBigInt("col1", 100L); + +// For a key that consists of a single column of DOUBLE. +Key key3 = Key.ofDouble("col1", 1.3d); + +// For a key that consists of a single column of TEXT. +Key key4 = Key.ofText("col1", "value"); +``` + +2~5列で設定されるキーの場合は、`Key.of()` メソッドを使用して次のようにキーを構築できます。Guava の `ImmutableMap.of()` と同様に、列名と値を順番に指定する必要があります。 + +```java +// For a key that consists of two to five columns. +Key key1 = Key.of("col1", 1, "col2", 100L); +Key key2 = Key.of("col1", 1, "col2", 100L, "col3", 1.3d); +Key key3 = Key.of("col1", 1, "col2", 100L, "col3", 1.3d, "col4", "value"); +Key key4 = Key.of("col1", 1, "col2", 100L, "col3", 1.3d, "col4", "value", "col5", false); +``` + +5列を超えるキーの場合は、ビルダーを使用して次のようにキーを構築できます。 + +```java +// For a key that consists of more than five columns. +Key key = Key.newBuilder() + .addInt("col1", 1) + .addBigInt("col2", 100L) + .addDouble("col3", 1.3d) + .addText("col4", "value") + .addBoolean("col5", false) + .addInt("col6", 100) + .build(); +``` + +##### `Get` 操作 + +`Get` は、主キーで指定された単一のレコードを取得する操作です。 + +まず `Get` オブジェクトを作成し、次に次のように `transaction.get()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Get` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .projections("c1", "c2", "c3", "c4") + .where(ConditionBuilder.column("c1").isNotEqualToInt(10)) + .build(); + +// Execute the `Get` operation. +Optional result = transaction.get(get); +``` + +射影を指定して、返される列を選択できます。 + +###### `WHERE` 句を使用する + +`where()` メソッドを使用して任意の条件を指定することもできます。取得したレコードが `where()` メソッドで指定された条件と一致しない場合は、`Option.empty()` が返されます。`where()` メソッドの引数として、条件、AND 条件セット、または OR 条件セットを指定できます。`where()` メソッドを呼び出した後、次のように `and()` メソッドまたは `or()` メソッドを使用して、さらに条件または条件セットを追加できます。 + +```java +// Create a `Get` operation with condition sets. +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .where( + ConditionSetBuilder.condition(ConditionBuilder.column("c1").isLessThanInt(10)) + .or(ConditionBuilder.column("c1").isGreaterThanInt(20)) + .build()) + .and( + ConditionSetBuilder.condition(ConditionBuilder.column("c2").isLikeText("a%")) + .or(ConditionBuilder.column("c2").isLikeText("b%")) + .build()) + .build(); +``` + +:::note + +`where()` 条件メソッドチェーンでは、条件は上記の例のように `ConditionalExpression` または `OrConditionSet` の AND 結合 (結合正規形と呼ばれる)、または `ConditionalExpression` または `AndConditionSet` の OR 結合 (分離正規形と呼ばれる) である必要があります。 + +::: + +使用可能な条件と条件セットの詳細については、使用している ScalarDB バージョンの [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/latest/index.html) の `ConditionBuilder` および `ConditionSetBuilder` ページを参照してください。 + +###### `Result` オブジェクトの処理 + +`Get` 操作と `Scan` 操作は `Result` オブジェクトを返します。次に、`Result` オブジェクトの処理方法を示します。 + +次のように `get("")` メソッドを使用して、結果の列値を取得できます。 + +```java +// Get the BOOLEAN value of a column. +boolean booleanValue = result.getBoolean(""); + +// Get the INT value of a column. +int intValue = result.getInt(""); + +// Get the BIGINT value of a column. +long bigIntValue = result.getBigInt(""); + +// Get the FLOAT value of a column. +float floatValue = result.getFloat(""); + +// Get the DOUBLE value of a column. +double doubleValue = result.getDouble(""); + +// Get the TEXT value of a column. +String textValue = result.getText(""); + +// Get the BLOB value of a column as a `ByteBuffer`. +ByteBuffer blobValue = result.getBlob(""); + +// Get the BLOB value of a column as a `byte` array. +byte[] blobValueAsBytes = result.getBlobAsBytes(""); +``` + +列の値が null かどうかを確認する必要がある場合は、`isNull("")` メソッドを使用できます。 + +``` java +// Check if a value of a column is null. +boolean isNull = result.isNull(""); +``` + +詳細については、使用している ScalarDB のバージョンの [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) の `Result` ページを参照してください。 + +###### セカンダリインデックスを使用して `Get` を実行する + +セカンダリインデックスを使用して `Get` 操作を実行できます。 + +パーティションキーを指定する代わりに、次のようにインデックスキー (インデックス付き列) を指定してセカンダリインデックスを使用できます。 + +```java +// Create a `Get` operation by using a secondary index. +Key indexKey = Key.ofFloat("c4", 1.23F); + +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .indexKey(indexKey) + .projections("c1", "c2", "c3", "c4") + .where(ConditionBuilder.column("c1").isNotEqualToInt(10)) + .build(); + +// Execute the `Get` operation. +Optional result = transaction.get(get); +``` + +`where()` メソッドを使用して任意の条件を指定することもできます。詳細については、[`WHERE` 句を使用する](#where-句を使用する)を参照してください。 + +:::note + +結果に複数のレコードがある場合、`transaction.get()` は例外をスローします。複数の結果を処理する場合は、[セカンダリインデックスを使用して `Scan` を実行する](#セカンダリインデックスを使用して-scan-を実行する)を参照してください。 + +::: + +##### `Scan` 操作 + +`Scan` は、パーティション内の複数のレコードを取得する操作です。`Scan` 操作では、クラスタリングキーの境界とクラスタリングキー列の順序を指定できます。 + +まず `Scan` オブジェクトを作成し、次に次のように `transaction.scan()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Scan` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key startClusteringKey = Key.of("c2", "aaa", "c3", 100L); +Key endClusteringKey = Key.of("c2", "aaa", "c3", 300L); + +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .start(startClusteringKey, true) // Include startClusteringKey + .end(endClusteringKey, false) // Exclude endClusteringKey + .projections("c1", "c2", "c3", "c4") + .orderings(Scan.Ordering.desc("c2"), Scan.Ordering.asc("c3")) + .where(ConditionBuilder.column("c1").isNotEqualToInt(10)) + .limit(10) + .build(); + +// Execute the `Scan` operation. +List results = transaction.scan(scan); +``` + +クラスタリングキー境界を省略するか、`start` 境界または `end` 境界のいずれかを指定できます。`orderings` を指定しない場合は、テーブルの作成時に定義したクラスタリング順序で結果が並べられます。 + +さらに、`projections` を指定して返される列を選択し、`limit` を使用して `Scan` 操作で返されるレコードの数を指定できます。 + +###### `WHERE` 句を使用する + +`where()` メソッドを使用してスキャンされたレコードをフィルタリングすることで、任意の条件を指定することもできます。`where()` メソッドの引数として、条件、AND 条件セット、または OR 条件セットを指定できます。`where()` メソッドを呼び出した後、次のように `and()` メソッドまたは `or()` メソッドを使用して、さらに条件または条件セットを追加できます。 + +```java +// Create a `Scan` operation with condition sets. +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .all() + .where( + ConditionSetBuilder.condition(ConditionBuilder.column("c1").isLessThanInt(10)) + .or(ConditionBuilder.column("c1").isGreaterThanInt(20)) + .build()) + .and( + ConditionSetBuilder.condition(ConditionBuilder.column("c2").isLikeText("a%")) + .or(ConditionBuilder.column("c2").isLikeText("b%")) + .build()) + .limit(10) + .build(); +``` + +:::note + +`where()` 条件メソッドチェーンでは、条件は上記の例のように `ConditionalExpression` または `OrConditionSet` の AND 結合 (結合正規形と呼ばれる)、または `ConditionalExpression` または `AndConditionSet` の OR 結合 (分離正規形と呼ばれる) である必要があります。 + +::: + +使用可能な条件と条件セットの詳細については、使用している ScalarDB のバージョンの [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/latest/index.html) の `ConditionBuilder` および `ConditionSetBuilder` ページを参照してください。 + +###### セカンダリインデックスを使用して `Scan` を実行する + +セカンダリインデックスを使用して、`Scan` 操作を実行できます。 + +パーティションキーを指定する代わりに、次のようにインデックスキー (インデックス付き列) を指定してセカンダリインデックスを使用できます。 + +```java +// Create a `Scan` operation by using a secondary index. +Key indexKey = Key.ofFloat("c4", 1.23F); + +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .indexKey(indexKey) + .projections("c1", "c2", "c3", "c4") + .where(ConditionBuilder.column("c1").isNotEqualToInt(10)) + .limit(10) + .build(); + +// Execute the `Scan` operation. +List results = transaction.scan(scan); +``` + +`where()` メソッドを使用して任意の条件を指定することもできます。詳細については、[`WHERE` 句を使用する](#where-句を使用する)を参照してください。 + +:::note + +セカンダリインデックスを使用して、`Scan` でクラスタリングキーの境界と順序を指定することはできません。 + +::: + +###### パーティションキーを指定せずにクロスパーティション `Scan` を実行し、テーブルのすべてのレコードを取得します + +ScalarDB プロパティファイルで次の設定を有効にすると、パーティションキーを指定せずに、すべてのパーティションにわたって `Scan` 操作 (クロスパーティションスキャン* と呼びます) を実行できます。 + +```properties +scalar.db.cross_partition_scan.enabled=true +``` + +:::warning + +非 JDBC データベースの場合、`SERIALIZABLE` 分離レベルでクロスパーティションスキャンを有効にした場合でも、トランザクションは読み取りコミットスナップショット分離 (`SNAPSHOT`) で実行される可能性があります。これは、より低い分離レベルです。非 JDBC データベースを使用する場合は、トランザクションの一貫性が重要でない場合にのみ、クロスパーティションスキャンを使用してください。 + +::: + +ビルダーで `partitionKey()` メソッドを呼び出す代わりに、次のように `all()` メソッドを呼び出して、パーティションキーを指定せずにテーブルをスキャンできます。 + +```java +// Create a `Scan` operation without specifying a partition key. +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .all() + .projections("c1", "c2", "c3", "c4") + .limit(10) + .build(); + +// Execute the `Scan` operation. +List results = transaction.scan(scan); +``` + +:::note + +非 JDBC データベースを使用する場合、クロスパーティション `Scan` で順序を指定することはできません。フィルタリングまたは順序付けを指定したクロスパーティション `Scan` の使用方法の詳細については、[フィルタリングと順序付けを使用してパーティション間の `Scan` を実行する](#フィルタリングと順序付けを使用してパーティション間の-scan-を実行する)を参照してください。 + +::: + +###### フィルタリングと順序付けを使用してパーティション間の `Scan` を実行する + +次のようにフィルタリングと順序付けによるクロスパーティションスキャンオプションを有効にすると、柔軟な条件と順序付けでクロスパーティション `Scan` 操作を実行できます。 + +```properties +scalar.db.cross_partition_scan.enabled=true +scalar.db.cross_partition_scan.filtering.enabled=true +scalar.db.cross_partition_scan.ordering.enabled=true +``` + +:::note + +非 JDBC データベースでは `scalar.db.cross_partition_scan.ordering` を有効にすることはできません。 + +::: + +次のように、`all()` メソッドを呼び出した後に `where()` メソッドと `ordering()` メソッドを呼び出して、任意の条件と順序を指定できます。 + +```java +// Create a `Scan` operation with arbitrary conditions and orderings. +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .all() + .where(ConditionBuilder.column("c1").isNotEqualToInt(10)) + .projections("c1", "c2", "c3", "c4") + .orderings(Scan.Ordering.desc("c3"), Scan.Ordering.asc("c4")) + .limit(10) + .build(); + +// Execute the `Scan` operation. +List results = transaction.scan(scan); +``` + +`WHERE` 句の詳細については、[`WHERE` 句を使用する](#where-句を使用する)を参照してください。 + +##### `Put` 操作 + +:::note + +`Put` 操作は ScalarDB 3.13以降では非推奨となり、将来のリリースでは削除される予定です。`Put` 操作の代わりに、`Insert` 操作、`Upsert` 操作、または `Update` 操作を使用してください。 + +::: + +`Put` は、主キーで指定されたレコードを配置する操作です。この操作はレコードの upsert 操作として動作し、レコードが存在する場合はレコードを更新し、レコードが存在しない場合はレコードを挿入します。 + +:::note + +既存のレコードを更新する場合、`Put` 操作を使用する前に `Get` または `Scan` を使用してレコードを読み取る必要があります。そうしないと、競合により操作が失敗します。これは、トランザクションを適切に管理するための ScalarDB の仕様により発生します。レコードを明示的に読み取る代わりに、暗黙的な事前読み取りを有効にできます。詳細については、[`Put` 操作の暗黙的な事前読み取りを有効にする](#put-操作の暗黙的な事前読み取りを有効にする)を参照してください。 + +::: + +まず `Put` オブジェクトを作成し、次に次のように `transaction.put()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Put` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Put` operation. +transaction.put(put); +``` + +次のように `null` 値を持つレコードを配置することもできます。 + +```java +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", null) + .doubleValue("c5", null) + .build(); +``` + +###### `Put` 操作の暗黙的な事前読み取りを有効にする + +Consensus Commit では、レコードが存在する場合、レコードの最新の状態を取得するために、アプリケーションは `Put` および `Delete` 操作でレコードを変更する前にレコードを読み取る必要があります。レコードを明示的に読み取る代わりに、*暗黙的な事前読み取り* を有効にすることができます。暗黙的な事前読み取りを有効にすると、アプリケーションがトランザクションでレコードを明示的に読み取らない場合は、ScalarDB がトランザクションをコミットする前にアプリケーションに代わってレコードを読み取ります。 + +`Put` 操作の暗黙的な事前読み取りを有効にするには、次のように `Put` 操作ビルダーで `enableImplicitPreRead()` を指定します。 + +```java +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .enableImplicitPreRead() + .build(); +``` + +:::note + +変更しようとしているレコードが存在しないことが確実な場合は、パフォーマンスを向上させるために、`Put` 操作の暗黙的な事前読み取りを有効にしないでください。たとえば、初期データをロードする場合は、暗黙的な事前読み取りを有効にしないでください。暗黙的な事前読み取りのない `Put` 操作は、暗黙的な事前読み取りのある `Put` 操作よりも高速です。これは、操作によって不要な読み取りがスキップされるためです。 + +::: + +##### `Insert` 操作 + +`Insert` は、トランザクションを通じて基礎となるストレージにエントリを挿入する操作です。エントリがすでに存在する場合は、競合エラーが発生します。 + +まず `Insert` オブジェクトを作成し、次に次のように `transaction.insert()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create an `Insert` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Insert insert = + Insert.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Insert` operation. +transaction.insert(insert); +``` + +##### `Upsert` 操作 + +`Upsert` は、トランザクションを通じて基礎となるストレージにエントリを挿入したり、エントリを更新したりする操作です。エントリがすでに存在する場合は更新され、そうでない場合はエントリが挿入されます。 + +まず `Upsert` オブジェクトを作成し、次に次のように `transaction.upsert()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create an `Upsert` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Upsert upsert = + Upsert.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Upsert` operation. +transaction.upsert(upsert); +``` + +##### `Update` 操作 + +`Update` は、トランザクションを通じて基礎となるストレージ内のエントリを更新する操作です。エントリが存在しない場合、操作によって変更は行われません。 + +まず `Update` オブジェクトを作成し、次に次のように `transaction.update()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create an `Update` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Update update = + Update.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Update` operation. +transaction.update(update); +``` + +##### `Delete` 操作 + +`Delete` は、主キーで指定されたレコードを削除する操作です。 + +:::note + +レコードを削除する場合、`Delete` 操作では暗黙的な事前読み取りが常に有効になっているため、事前にレコードを読み取る必要はありません。 + +::: + +まず `Delete` オブジェクトを作成し、次に次のように `transaction.delete()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Delete` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .build(); + +// Execute the `Delete` operation. +transaction.delete(delete); +``` + +##### 条件付きの `Put`、`Delete`、`Update` + +トランザクション内で条件をチェックするロジックを実装することで、コミット前にトランザクションが満たす必要のある任意の条件 (たとえば、銀行口座の残高が0以上である必要がある) を記述できます。または、`Put`、`Delete`、`Update` などのミューテーション操作で単純な条件を記述することもできます。 + +`Put`、`Delete`、`Update` 操作に条件が含まれている場合、指定された条件が満たされた場合にのみ操作が実行されます。操作の実行時に条件が満たされていない場合は、`UnsatisfiedConditionException` という例外がスローされます。 + +:::note + +`Put` 操作で条件を指定する場合は、事前にレコードを読み取るか、暗黙的な事前読み取りを有効にする必要があります。 + +::: + +###### `Put` の条件 + +`Put` 操作では、次のように条件を指定できます。 + +```java +// Build a condition. +MutationCondition condition = + ConditionBuilder.putIf(ConditionBuilder.column("c4").isEqualToFloat(0.0F)) + .and(ConditionBuilder.column("c5").isEqualToDouble(0.0)) + .build(); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .condition(condition) // condition + .build(); + +// Execute the `Put` operation. +transaction.put(put); +``` + +`putIf` 条件を使用するだけでなく、次のように `putIfExists` 条件と `putIfNotExists` 条件を指定することもできます。 + +```java +// Build a `putIfExists` condition. +MutationCondition putIfExistsCondition = ConditionBuilder.putIfExists(); + +// Build a `putIfNotExists` condition. +MutationCondition putIfNotExistsCondition = ConditionBuilder.putIfNotExists(); +``` + +###### `Delete` の条件 + +`Delete` 操作では、次のように条件を指定できます。 + +```java +// Build a condition. +MutationCondition condition = + ConditionBuilder.deleteIf(ConditionBuilder.column("c4").isEqualToFloat(0.0F)) + .and(ConditionBuilder.column("c5").isEqualToDouble(0.0)) + .build(); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .condition(condition) // condition + .build(); + +// Execute the `Delete` operation. +transaction.delete(delete); +``` + +`deleteIf` 条件を使用するだけでなく、次のように `deleteIfExists` 条件を指定することもできます。 + +```java +// Build a `deleteIfExists` condition. +MutationCondition deleteIfExistsCondition = ConditionBuilder.deleteIfExists(); +``` + +###### `Update` の条件 + +`Update` 操作では、次のように条件を指定できます。 + +```java +// Build a condition. +MutationCondition condition = + ConditionBuilder.updateIf(ConditionBuilder.column("c4").isEqualToFloat(0.0F)) + .and(ConditionBuilder.column("c5").isEqualToDouble(0.0)) + .build(); + +Update update = + Update.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .condition(condition) // condition + .build(); + +// Execute the `Update` operation. +transaction.update(update); +``` + +`updateIf` 条件を使用するだけでなく、次のように `updateIfExists` 条件を指定することもできます。 + +```java +// Build a `updateIfExists` condition. +MutationCondition updateIfExistsCondition = ConditionBuilder.updateIfExists(); +``` + +##### Mutate 操作 + +Mutate は、`Put`、`Insert`、`Upsert`、`Update`、`Delete` の複数の操作を実行する操作です。 + +まず Mutate オブジェクトを作成し、次に次のように `transaction.mutate()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create `Put` and `Delete` operations. +Key partitionKey = Key.ofInt("c1", 10); + +Key clusteringKeyForPut = Key.of("c2", "aaa", "c3", 100L); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKeyForPut) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +Key clusteringKeyForDelete = Key.of("c2", "bbb", "c3", 200L); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKeyForDelete) + .build(); + +// Execute the operations. +transaction.mutate(Arrays.asList(put, delete)); +``` + +##### CRUD 操作のデフォルト名前空間 + +すべての CRUD 操作のデフォルト名前空間は、ScalarDB 設定のプロパティを使用して設定できます。 + +```properties +scalar.db.default_namespace_name= +``` + +名前空間を指定しない操作では、設定されたデフォルトの名前空間が使用されます。 + +```java +// This operation will target the default namespace. +Scan scanUsingDefaultNamespace = + Scan.newBuilder() + .table("tbl") + .all() + .build(); +// This operation will target the "ns" namespace. +Scan scanUsingSpecifiedNamespace = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .all() + .build(); +``` + +#### トランザクションをコミットする + +CRUD 操作を実行した後、トランザクションをコミットして終了する必要があります。 + +トランザクションは次のようにコミットできます。 + +```java +// Commit a transaction. +transaction.commit(); +``` + +#### トランザクションをロールバックまたはアボートする + +トランザクションの実行中にエラーが発生した場合は、トランザクションをロールバックまたはアボートできます。 + +トランザクションは次のようにロールバックできます。 + +```java +// Roll back a transaction. +transaction.rollback(); +``` + +または、次のようにトランザクションをアボートすることもできます。 + +```java +// Abort a transaction. +transaction.abort(); +``` + +ScalarDB で例外を処理する方法の詳細については、[例外の処理方法](#例外の処理方法)を参照してください。 + +### トランザクションを開始せずにトランザクションを実行する + +トランザクションを開始せずにトランザクション操作を実行できます。この場合、ScalarDB は操作を実行する前に自動的にトランザクションを開始し、操作の実行後にトランザクションをコミットします。このセクションでは、トランザクションを開始せずにトランザクションを実行する方法について説明します。 + +#### `Get` 操作を実行する + +`Get` は、主キーで指定された単一のレコードを取得する操作です。 + +最初に `Get` オブジェクトを作成し、次に次のように `transactionManager.get()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Get` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .projections("c1", "c2", "c3", "c4") + .build(); + +// Execute the `Get` operation. +Optional result = transactionManager.get(get); +``` + +`Get` 操作の詳細については、[`Get` 操作](#get-操作)を参照してください。 + +#### `Scan` 操作の実行 + +`Scan` は、パーティション内の複数のレコードを取得する操作です。`Scan` 操作では、クラスタリングキーの境界とクラスタリングキー列の順序を指定できます。 + +まず `Scan` オブジェクトを作成し、次に次のように `transactionManager.scan()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Scan` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key startClusteringKey = Key.of("c2", "aaa", "c3", 100L); +Key endClusteringKey = Key.of("c2", "aaa", "c3", 300L); + +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .start(startClusteringKey, true) // Include startClusteringKey + .end(endClusteringKey, false) // Exclude endClusteringKey + .projections("c1", "c2", "c3", "c4") + .orderings(Scan.Ordering.desc("c2"), Scan.Ordering.asc("c3")) + .limit(10) + .build(); + +// Execute the `Scan` operation. +List results = transactionManager.scan(scan); +``` + +`Scan` 操作の詳細については、[`Scan` 操作](#scan-操作)を参照してください。 + +#### `Put` 操作を実行します + +:::note + +`Put` 操作は ScalarDB 3.13以降では非推奨となり、将来のリリースでは削除される予定です。`Put` 操作の代わりに、`Insert` 操作、`Upsert` 操作、または `Update` 操作を使用してください。 + +::: + +まず `Put` オブジェクトを作成し、次に次のように `transactionManager.put()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Put` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Put` operation. +transactionManager.put(put); +``` + +`Put` 操作の詳細については、[`Put` 操作](#put-操作)を参照してください。 + +#### `Insert` 操作の実行 + +`Insert` は、トランザクションを通じて基礎となるストレージにエントリを挿入する操作です。エントリがすでに存在する場合は、競合エラーが発生します。 + +まず `Insert` オブジェクトを作成し、次に次のように `transactionManager.insert()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create an `Insert` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Insert insert = + Insert.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Insert` operation. +transactionManager.insert(insert); +``` + +`Insert` 操作の詳細については、[`Insert` 操作](#insert-操作)を参照してください。 + +#### `Upsert` 操作を実行する + +`Upsert` は、トランザクションを通じて基礎となるストレージにエントリを挿入するか、エントリを更新する操作です。エントリがすでに存在する場合は更新され、そうでない場合はエントリが挿入されます。 + +まず `Upsert` オブジェクトを作成し、次に次のように `transactionManager.upsert()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create an `Upsert` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Upsert upsert = + Upsert.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Upsert` operation. +transactionManager.upsert(upsert); +``` + +`Insert` 操作の詳細については、[`Upsert` 操作](#upsert-操作)を参照してください。 + +#### `Update` 操作の実行 + +`Update` は、トランザクションを通じて基礎となるストレージ内のエントリを更新する操作です。エントリが存在しない場合、操作によって変更は行われません。 + +まず `Update` オブジェクトを作成し、次に次のように `transactionManager.update()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create an `Update` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Update update = + Update.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Update` operation. +transactionManager.update(update); +``` + +`Update` 操作の詳細については、[`Update` 操作](#update-操作)を参照してください。 + +#### `Delete` 操作を実行する + +`Delete` は、主キーで指定されたレコードを削除する操作です。 + +まず `Delete` オブジェクトを作成し、次に次のように `transaction.delete()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Delete` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .build(); + +// Execute the `Delete` operation. +transactionManager.delete(delete); +``` + +`Delete` 操作の詳細については、[`Delete` 操作](#delete-操作)を参照してください。 + +#### Mutate 操作の実行 + +Mutate は、複数のミューテーション (`Put`、`Insert`、`Upsert`、`Update`、および `Delete` 操作) を実行する操作です。 + +まずミューテーションオブジェクトを作成し、次に次のように `transactionManager.mutate()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create `Put` and `Delete` operations. +Key partitionKey = Key.ofInt("c1", 10); + +Key clusteringKeyForPut = Key.of("c2", "aaa", "c3", 100L); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKeyForPut) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +Key clusteringKeyForDelete = Key.of("c2", "bbb", "c3", 200L); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKeyForDelete) + .build(); + +// Execute the operations. +transactionManager.mutate(Arrays.asList(put, delete)); +``` + +Mutate 操作の詳細については、[Mutate 操作](#mutate-操作)を参照してください。 + +また、ScalarDB での例外の処理方法の詳細については、[例外の処理方法](#例外の処理方法)を参照してください。 + +## 例外の処理方法 + +トランザクションを実行するときは、例外も適切に処理する必要があります。 + +:::warning + +例外を適切に処理しないと、異常やデータの不整合が発生する可能性があります。 + +::: + +次のサンプルコードは、例外を処理する方法を示しています。 + +```java +public class Sample { + public static void main(String[] args) throws Exception { + TransactionFactory factory = TransactionFactory.create(""); + DistributedTransactionManager transactionManager = factory.getTransactionManager(); + + int retryCount = 0; + TransactionException lastException = null; + + while (true) { + if (retryCount++ > 0) { + // Retry the transaction three times maximum. + if (retryCount >= 3) { + // Throw the last exception if the number of retries exceeds the maximum. + throw lastException; + } + + // Sleep 100 milliseconds before retrying the transaction. + TimeUnit.MILLISECONDS.sleep(100); + } + + DistributedTransaction transaction = null; + try { + // Begin a transaction. + transaction = transactionManager.begin(); + + // Execute CRUD operations in the transaction. + Optional result = transaction.get(...); + List results = transaction.scan(...); + transaction.put(...); + transaction.delete(...); + + // Commit the transaction. + transaction.commit(); + } catch (UnsatisfiedConditionException e) { + // You need to handle `UnsatisfiedConditionException` only if a mutation operation specifies a condition. + // This exception indicates the condition for the mutation operation is not met. + + try { + transaction.rollback(); + } catch (RollbackException ex) { + // Rolling back the transaction failed. Since the transaction should eventually recover, + // you don't need to do anything further. You can simply log the occurrence here. + } + + // You can handle the exception here, according to your application requirements. + + return; + } catch (UnknownTransactionStatusException e) { + // If you catch `UnknownTransactionStatusException` when committing the transaction, + // it indicates that the status of the transaction, whether it was successful or not, is unknown. + // In such a case, you need to check if the transaction is committed successfully or not and + // retry the transaction if it failed. How to identify a transaction status is delegated to users. + return; + } catch (TransactionException e) { + // For other exceptions, you can try retrying the transaction. + + // For `CrudConflictException`, `CommitConflictException`, and `TransactionNotFoundException`, + // you can basically retry the transaction. However, for the other exceptions, the transaction + // will still fail if the cause of the exception is non-transient. In such a case, you will + // exhaust the number of retries and throw the last exception. + + if (transaction != null) { + try { + transaction.rollback(); + } catch (RollbackException ex) { + // Rolling back the transaction failed. The transaction should eventually recover, + // so you don't need to do anything further. You can simply log the occurrence here. + } + } + + lastException = e; + } + } + } +} +``` + +### `TransactionException` および `TransactionNotFoundException` + +`begin()` API は `TransactionException` または `TransactionNotFoundException` をスローする可能性があります: + +- `TransactionException` をキャッチした場合、この例外は、一時的または非一時的障害が原因でトランザクションを開始できなかったことを示します。トランザクションを再試行することはできますが、非一時的障害が原因でトランザクションを開始できない可能性があります。 +- `TransactionNotFoundException` をキャッチした場合、この例外は、一時的障害が原因でトランザクションを開始できなかったことを示します。この場合、トランザクションを再試行できます。 + +`join()` API も `TransactionNotFoundException` をスローする可能性があります。この例外は、`begin()` API の例外を処理するのと同じ方法で処理できます。 + +### `CrudException` および `CrudConflictException` + +CRUD 操作の API (`get()`、`scan()`、`put()`、`delete()`、および `mutate()`) は、`CrudException` または `CrudConflictException` をスローする可能性があります: + +- `CrudException` をキャッチした場合、この例外は、一時的または非一時的障害が原因でトランザクション CRUD 操作が失敗したことを示します。トランザクションを最初から再試行できますが、原因が非一時的である場合は、トランザクションが失敗する可能性があります。 +- `CrudConflictException` をキャッチした場合、この例外は、一時的な障害 (競合エラーなど) が原因でトランザクション CRUD 操作が失敗したことを示します。この場合、トランザクションを最初から再試行できます。 + +### `UnsatisfiedConditionException` + +ミューテーション操作の API (`put()`、`delete()`、および `mutate()`) も `UnsatisfiedConditionException` をスローする可能性があります。 + +`UnsatisfiedConditionException` をキャッチした場合、この例外はミューテーション操作の条件が満たされていないことを示します。この例外は、アプリケーションの要件に従って処理できます。 + +### `CommitException`、`CommitConflictException`、および `UnknownTransactionStatusException` + +`commit()` API は `CommitException`、`CommitConflictException`、または `UnknownTransactionStatusException` をスローする可能性があります。 + +- `CommitException` をキャッチした場合、この例外は、一時的または非一時的障害が原因でトランザクションのコミットが失敗したことを示します。トランザクションを最初から再試行できますが、原因が非一時的である場合はトランザクションが失敗する可能性があります。 +- `CommitConflictException` をキャッチした場合、この例外は、一時的な障害 (競合エラーなど) が原因でトランザクションのコミットが失敗したことを示します。この場合、トランザクションを最初から再試行できます。 +- `UnknownTransactionStatusException` をキャッチした場合、この例外は、トランザクションのステータス (成功したかどうか) が不明であることを示します。この場合、トランザクションが正常にコミットされたかどうかを確認し、失敗した場合はトランザクションを再試行する必要があります。 + +トランザクションステータスを識別する方法は、ユーザーに委任されています。トランザクションステータステーブルを作成し、他のアプリケーションデータを使用してトランザクション的に更新して、ステータステーブルからトランザクションのステータスを取得できるようにすることができます。 + +### 一部の例外に関する注意 + +サンプルコードには示されていませんが、`resume()` API は `TransactionNotFoundException` をスローする可能性もあります。この例外は、指定された ID に関連付けられたトランザクションが見つからなかったか、トランザクションの有効期限が切れた可能性があることを示します。いずれの場合も、この例外の原因は基本的に一時的なものであるため、トランザクションを最初から再試行できます。 + +サンプルコードでは、`UnknownTransactionStatusException` の場合、重複操作の可能性を回避するためにアプリケーションがトランザクションが成功したかどうかを確認する必要があるため、トランザクションは再試行されません。その他の例外の場合、例外の原因が一時的または非一時的であるため、トランザクションは再試行されます。例外の原因が一時的な場合、再試行するとトランザクションが成功する可能性があります。ただし、例外の原因が非一時的である場合、再試行してもトランザクションは失敗します。このような場合、再試行回数を使い果たします。 + +:::note + +サンプルコードでは、トランザクションは最大3回再試行され、再試行される前に100ミリ秒間スリープします。ただし、アプリケーションの要件に応じて、指数バックオフなどの再試行ポリシーを選択できます。 + +::: + +## Coordinator テーブルのグループコミット + +Consensus Commit トランザクションに使用される Coordinator テーブルは重要なデータストアであり、堅牢なストレージを使用することをお勧めします。ただし、内部でマルチ AZ またはマルチリージョンレプリケーションを活用するなど、より堅牢なストレージオプションを使用すると、ストレージにレコードを書き込むときにレイテンシが増加し、スループットパフォーマンスが低下する可能性があります。 + +ScalarDB は、Coordinator テーブルにグループコミット機能を提供します。この機能は、複数のレコードの書き込みを1つの書き込み操作にグループ化し、書き込みスループットを向上させます。この場合、基盤となるデータベースとワークロードに応じて、レイテンシが増加または減少する可能性があります。 + +グループコミット機能を有効にするには、次の設定を追加します。 + +```properties +# By default, this configuration is set to `false`. +scalar.db.consensus_commit.coordinator.group_commit.enabled=true + +# These properties are for tuning the performance of the group commit feature. +# scalar.db.consensus_commit.coordinator.group_commit.group_size_fix_timeout_millis=40 +# scalar.db.consensus_commit.coordinator.group_commit.delayed_slot_move_timeout_millis=800 +# scalar.db.consensus_commit.coordinator.group_commit.old_group_abort_timeout_millis=30000 +# scalar.db.consensus_commit.coordinator.group_commit.timeout_check_interval_millis=10 +# scalar.db.consensus_commit.coordinator.group_commit.metrics_monitor_log_enabled=true +``` + +### 制限事項 + +このセクションでは、グループコミット機能の制限事項について説明します。 + +#### ユーザーが渡したカスタムトランザクション ID + +グループコミット機能は、内部値を暗黙的に生成し、それをトランザクション ID の一部として使用します。したがって、ユーザーが `com.scalar.db.transaction.consensuscommit.ConsensusCommitManager.begin(String txId)` または `com.scalar.db.transaction.consensuscommit.TwoPhaseConsensusCommitManager.begin(String txId)` を介して手動で渡したカスタムトランザクション ID は、その後の API 呼び出しでそのまま使用することはできません。代わりに、`com.scalar.db.transaction.consensuscommit.ConsensusCommit.getId()` または `com.scalar.db.transaction.consensuscommit.TwoPhaseConsensusCommit.getId()` から返されたトランザクション ID を使用する必要があります。 + +```java + // This custom transaction ID needs to be used for ScalarDB transactions. + String myTxId = UUID.randomUUID().toString(); + + ... + + DistributedTransaction transaction = manager.begin(myTxId); + + ... + + // When the group commit feature is enabled, a custom transaction ID passed by users can't be used as is. + // logger.info("The transaction state: {}", manager.getState(myTxId)); + logger.info("The transaction state: {}", manager.getState(transaction.getId())); +``` + +#### 2フェーズコミットインターフェースでの使用の禁止 + +グループコミット機能は、進行中のすべてのトランザクションをメモリ内で管理します。この機能が2フェーズコミットインターフェースで有効になっている場合、Coordinator テーブルへの参加者サービスの一貫性のない書き込みによって生じる競合 (グループ間で異なるトランザクション分散が含まれる場合があります) を防ぐために、情報は Coordinator サービスによってのみ維持される必要があります。 + +この制限により、アプリケーション開発に関連する複雑さと柔軟性が損なわれます。したがって、グループコミット機能と2フェーズコミットインターフェースを組み合わせて使用​​することは現在禁止されています。 + +## Consensus Commit トランザクションマネージャーエラーの調査 + +Consensus Commit トランザクションマネージャーの使用時にエラーを調査するには、トランザクションメタデータ列が追加されたテーブルメタデータを返す設定を有効にできます。これは、トランザクション関連の問題を調査するときに役立ちます。この設定は、Consensus Commit トランザクションマネージャーのトラブルシューティング時にのみ使用可能で、`DistributedTransactionAdmin.getTableMetadata()` メソッドを使用して、特定のテーブルのトランザクションメタデータ列の詳細を表示できます。 + +次の設定を追加すると、`Get` および `Scan` 操作の結果に [トランザクションメタデータ](schema-loader.mdx#consensus-commit-の内部メタデータ)が含まれます。 + +```properties +# By default, this configuration is set to `false`. +scalar.db.consensus_commit.include_metadata.enabled=true +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/backup-restore.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/backup-restore.mdx new file mode 100644 index 00000000..fee1b2a7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/backup-restore.mdx @@ -0,0 +1,181 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB で使用されるデータベースのバックアップと復元方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB は非トランザクションデータベースまたはトランザクションデータベース上で非侵入的にトランザクション機能を提供するため、トランザクション的に一貫性のある方法でデータベースをバックアップおよび復元するには特別な注意が必要です。 + +このガイドでは、ScalarDB がサポートするデータベースをバックアップおよび復元する方法について説明します。 + +## バックアップを作成する + +バックアップの作成方法は、使用しているデータベースと、複数のデータベースを使用しているかどうかによって異なります。次の決定ツリーは、どのアプローチを取るべきかを示しています。 + +```mermaid +flowchart TD + A[ScalarDB で単一のデータベースを使用していますか?] + A -->|はい| B[データベースはトランザクションをサポートしていますか?] + B -->|はい| C[明示的に一時停止せずにバックアップを実行します] + B ---->|いいえ| D[明示的な一時停止を伴うバックアップを実行します] + A ---->|いいえ| D +``` + +### 明示的に一時停止せずにバックアップする + +トランザクションをサポートする単一のデータベースで ScalarDB を使用している場合は、ScalarDB がトランザクションを受け入れ続けている間でも、データベースのバックアップを作成できます。 + +:::warning + +バックアップを作成する前に、データベースのトランザクション的に一貫性のあるバックアップを作成する最も安全な方法を検討し、バックアッププロセスに関連するリスクを理解する必要があります。 + +::: + +ScalarDB でバックアップを作成するための要件の1つは、ScalarDB が管理するすべてのテーブル (Coordinator テーブルを含む) のバックアップがトランザクション的に一貫しているか、トランザクション的に一貫した状態に自動的に回復可能である必要があることです。つまり、すべてのテーブルを1回のトランザクションでダンプして、一貫性のあるバックアップを作成する必要があります。 + +トランザクション的に一貫性のあるバックアップを作成する方法は、使用しているデータベースの種類によって異なります。データベースを選択して、ScalarDB のトランザクション的に一貫性のあるバックアップを作成する方法を確認してください。 + +:::note + +以下にリストされているデータベース別のバックアップ方法は、ScalarDB がサポートするデータベースの一部の例にすぎません。 + +::: + + + + 自動バックアップ機能を使用すると、バックアップ保持期間内の任意の時点に復元できます。 + + + `--single-transaction` オプションを指定した `mysqldump` コマンドを使用します。 + + + `pg_dump` コマンドを使用します。 + + + [Special commands to sqlite3 (dot-commands)](https://www.sqlite.org/cli.html#special_commands_to_sqlite3_dot_commands_) で指定されているように、`.backup` コマンドを `.timeout` コマンドとともに使用します。 + + 例については、[BASH: SQLite3 .backup command](https://stackoverflow.com/questions/23164445/bash-sqlite3-backup-command) を参照してください。 + + + クラスターはバックアップポリシーに基づいて自動的にバックアップされ、これらのバックアップは特定の期間保持されます。オンデマンドバックアップを実行することもできます。バックアップの実行の詳細については、[YugabyteDB Managed: Back up and restore clusters](https://docs.yugabyte.com/preview/yugabyte-cloud/cloud-clusters/backup-clusters/)を参照してください。 + + + +### 明示的に一時停止してバックアップする + +トランザクション的に一貫性のあるバックアップを作成する別の方法は、ScalarDB インスタンスのクラスターに未処理のトランザクションがないときにバックアップを作成することです。バックアップの作成は、次の条件によって異なります。 + +- 基盤となるデータベースにポイントインタイムスナップショットまたはバックアップ機能がある場合は、未処理のトランザクションが存在しない期間にバックアップを作成できます。 +- 基盤となるデータベースにポイントインタイムリストアまたはリカバリ (PITR) 機能がある場合は、一時停止期間内の未処理のトランザクションが存在しない時間 (できれば中間時間) にリストアポイントを設定できます。 + +:::note + +PITR 機能を使用する場合は、NTP などのクロック同期を使用して、クライアントとサーバー間のクロックのずれを最小限に抑える必要があります。そうしないと、一時停止期間として取得される時間が、一時停止が実際に行われた時間と大きく異なる可能性があり、バックアップが進行中のトランザクションが存在する時点に復元される可能性があります。 + +また、クロック同期ではノード間のクロックを完全に同期できないため、十分な時間 (たとえば、5秒) 一時停止し、一時停止期間の中間時間を復元ポイントとして使用する必要があります。 + +::: + +ScalarDB が未処理のリクエストを排出し、新しいリクエストの受け入れを停止して一時停止期間を作成できるようにするには、ScalarDB を使用するアプリケーションで [Scalar Admin](https://github.com/scalar-labs/scalar-admin) インターフェースを適切に実装するか、Scalar Admin インターフェースを実装する [ScalarDB Cluster](scalardb-cluster/index.mdx) を使用する必要があります。 + +[Scalar Admin クライアントツール](https://github.com/scalar-labs/scalar-admin/tree/main/java#scalar-admin-client-tool)を使用すると、進行中のトランザクションを失うことなく、Scalar Admin インターフェースを実装するノード、サーバー、またはアプリケーションを一時停止できます。 + +トランザクション的に一貫性のあるバックアップを作成する方法は、使用しているデータベースの種類によって異なります。データベースを選択して、ScalarDB のトランザクション的に一貫性のあるバックアップを作成する方法を確認します。 + +:::note + +以下にリストされているデータベース別のバックアップ方法は、ScalarDB がサポートするデータベースの一部の例にすぎません。 + +::: + + + + DynamoDB テーブルに対して PITR 機能を有効にする必要があります。[ScalarDB Schema Loader](schema-loader.mdx) を使用してスキーマを作成する場合、ツールはデフォルトでテーブルの PITR 機能を有効にします。 + + トランザクション的に一貫性のある復元ポイントを指定するには、[明示的な一時停止によるバックアップ](#明示的に一時停止してバックアップする)の説明に従って、ScalarDB を DynamoDB とともに使用しているアプリケーションを一時停止します。 + + + PITR 機能が有効になっている継続的バックアップポリシーを使用して、Cosmos DB for NoSQL アカウントを作成する必要があります。この機能を有効にすると、バックアップが継続的に作成されます。 + + トランザクション的に一貫性のある復元ポイントを指定するには、[明示的に一時停止してバックアップする](#明示的に一時停止してバックアップする)の説明に従って、ScalarDB を Cosmos DB for NoSQL とともに使用しているアプリケーションを一時停止します。 + + + Cassandra にはレプリケーション機能が組み込まれているため、必ずしもトランザクション的に一貫性のあるバックアップを作成する必要はありません。たとえば、レプリケーション係数が `3` に設定されていて、Cassandra クラスター内のノードの1つのデータのみが失われた場合、通常のトランザクション的に一貫性のないバックアップ (スナップショット) と修復機能を使用してノードを回復できるため、トランザクション的に一貫性のあるバックアップ (スナップショット) は必要ありません。 + + ただし、クラスターノードのクォーラムでデータが失われた場合は、クラスターを特定のトランザクション的に一貫性のあるポイントに復元するために、トランザクション的に一貫性のあるバックアップ (スナップショット) が必要になります。 + + トランザクション的に一貫性のあるクラスター全体のバックアップ (スナップショット) を作成するには、ScalarDB または [ScalarDB Cluster](scalardb-cluster/index.mdx) を使用しているアプリケーションを一時停止し、[明示的な一時停止によるバックアップ](#明示的に一時停止してバックアップする)の説明に従ってノードのバックアップ (スナップショット) を作成するか、Cassandra クラスターを停止してノード内のすべてのデータのコピーを作成し、クラスターを起動します。 + + + 一時停止期間中にオンデマンドバックアップまたはスケジュールされたバックアップを実行できます。バックアップの実行の詳細については、[YugabyteDB Managed: Back up and restore clusters](https://docs.yugabyte.com/preview/yugabyte-cloud/cloud-clusters/backup-clusters/) を参照してください。 + + + +## バックアップを復元する + +トランザクション的に一貫性のあるバックアップを復元する方法は、使用しているデータベースの種類によって異なります。データベースを選択して、ScalarDB のトランザクション的に一貫性のあるバックアップを作成する方法を確認してください。 + +:::note + +以下にリストされているデータベース別の復元方法は、ScalarDB がサポートするデータベースの一部の例にすぎません。 + +::: + + + + 自動バックアップ機能を使用すると、バックアップ保持期間内の任意の時点に復元できます。 + + + まず、Cassandra クラスターのすべてのノードを停止します。次に、`data`、`commitlog`、`hints` ディレクトリをクリーンアップし、各ノードにバックアップ (スナップショット) を配置します。 + + 各ノードにバックアップ (スナップショット) を配置したら、Cassandra クラスターのすべてのノードを起動します。 + + + [Azure portal を使用してアカウントを復元する](https://docs.microsoft.com/ja-jp/azure/cosmos-db/restore-account-continuous-backup#restore-account-portal)については、Azure の公式ドキュメントに従ってください。バックアップを復元した後、復元されたデータベースの [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)を `STRONG` に設定します。さらに、前述のように、一時停止期間の中間時点を復元ポイントとして使用する必要があります。 + + ScalarDB は、ScalarDB Schema Loader を使用してスキーマを作成するときにインストールされるストアドプロシージャを使用して、Cosmos DB アダプターを実装します。ただし、Cosmos DB の PITR 機能では、ストアドプロシージャは復元されません。このため、復元後にすべてのテーブルに必要なストアドプロシージャを再インストールする必要があります。これは、ScalarDB Schema Loader を `--repair-all` オプションとともに使用することで実行できます。詳細については、[名前空間とテーブルを修復する](schema-loader.mdx#名前空間とテーブルを修復する)を参照してください。 + + + [DynamoDB テーブルを特定の時点に復元](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/PointInTimeRecovery.Tutorial.html)については、公式の AWS ドキュメントに従ってください。ただし、テーブルはエイリアスを使用してのみ復元できることに注意してください。このため、エイリアスを使用してテーブルを復元し、元のテーブルを削除して、エイリアスを元の名前に変更し、同じ名前のテーブルを復元する必要があります。 + + この手順を実行するには、次の手順を実行します。 + + 1. バックアップを作成します。 + 1. 一時停止期間の中間時点を復元ポイントとして選択します。 + 2. テーブル A の PITR を使用してテーブル B に復元します。 + 3. 復元されたテーブル B のバックアップを作成します (バックアップの名前がバックアップ B であると仮定します)。 + 4. テーブル B を削除します。 + 2. バックアップを復元します。 + 1. テーブル A を削除します。 + 2. バックアップ B を使用して A という名前のテーブルを作成します。 + +:::note + +* テーブルは一度に1つしか復元できないため、上記の手順はテーブルごとに実行する必要があります。 +* 復元されたテーブルでは、PITR や自動スケーリングポリシーなどの設定がデフォルト値にリセットされるため、必要な設定を手動で行う必要があります。詳細については、公式 AWS ドキュメントの [DynamoDB を使用した DynamoDB テーブルのバックアップと復元の仕組み](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/CreateBackup.html#CreateBackup_HowItWorks-restore)を参照してください。 + +::: + + + `mysqldump` を使用してバックアップファイルを作成した場合は、[Reloading SQL-Format Backups](https://dev.mysql.com/doc/mysql-backup-excerpt/8.0/en/reloading-sql-format-dumps.html) で指定されているように、`mysql` コマンドを使用してバックアップを復元します。 + + + `pg_dump` を使用してバックアップファイルを作成した場合は、[Restoring the Dump](https://www.postgresql.org/docs/current/backup-dump.html#BACKUP-DUMP-RESTORE) で指定されているように、`psql` コマンドを使用してバックアップを復元します。 + + + [Special commands to sqlite3 (dot-commands)](https://www.sqlite.org/cli.html#special_commands_to_sqlite3_dot_commands_) で指定されているように、`.restore` コマンドを使用します。 + + + バックアップ保持期間内であれば、スケジュールされたバックアップまたはオンデマンドバックアップから復元できます。バックアップの実行の詳細については、[YugabyteDB Managed: Back up and restore clusters](https://docs.yugabyte.com/preview/yugabyte-cloud/cloud-clusters/backup-clusters/) を参照してください。 + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/configurations.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/configurations.mdx new file mode 100644 index 00000000..410032a1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/configurations.mdx @@ -0,0 +1,294 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB の設定 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDB で使用可能な設定について説明します。 + +## ScalarDB クライアントの設定 + +このセクションでは、ScalarDB クライアントの設定について説明します。ScalarDB は、Consensus Commit を使用してトランザクションを実行する方法、非トランザクションストレージ操作を実行する方法、および ScalarDB Cluster を介してトランザクションを実行する方法を提供します。 + +### Consensus Commit を使用してトランザクションを実行する + +ScalarDB は、Consensus Commit と呼ばれる独自のトランザクションプロトコルを提供します。これは、ScalarDB のデフォルトのトランザクションマネージャータイプです。Consensus Commit トランザクションマネージャーを使用するには、ScalarDB プロパティファイルに次の内容を追加します。 + +```properties +scalar.db.transaction_manager=consensus-commit +``` + +:::note + +`scalar.db.transaction_manager` プロパティを指定しない場合は、`consensus-commit` がデフォルト値になります。 + +::: + +#### 基本設定 + +Consensus Commit トランザクションマネージャーでは、次の基本設定が利用可能です。 + +| 名前 | 説明 | デフォルト | +|-------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------| +| `scalar.db.transaction_manager` | `consensus-commit` を指定する必要があります。 | - | +| `scalar.db.consensus_commit.isolation_level` | Consensus Commit に使用される分離レベル。`SNAPSHOT` または `SERIALIZABLE` のいずれかを指定できます。 | `SNAPSHOT` | +| `scalar.db.consensus_commit.serializable_strategy` | Consensus Commit に使用されるシリアル化可能な戦略。`EXTRA_READ` または `EXTRA_WRITE` のいずれかを指定できます。`scalar.db.consensus_commit.isolation_level` プロパティで `SNAPSHOT` が指定されている場合、この設定は無視されます。 | `EXTRA_READ` | +| `scalar.db.consensus_commit.coordinator.namespace` | Coordinator テーブルの名前空間名。 | `coordinator` | +| `scalar.db.consensus_commit.include_metadata.enabled` | `true` に設定すると、`Get` および `Scan` 操作の結果にトランザクションメタデータが含まれます。特定のテーブルのトランザクションメタデータ列の詳細を表示するには、`DistributedTransactionAdmin.getTableMetadata()` メソッドを使用します。このメソッドは、トランザクションメタデータ列が追加されたテーブルメタデータを返します。この設定を使用すると、トランザクション関連の問題を調査するのに役立ちます。 | `false` | + +#### パフォーマンス関連の設定 + +Consensus Commit トランザクションマネージャーでは、次のパフォーマンス関連の設定が利用できます。 + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------| +| `scalar.db.consensus_commit.parallel_executor_count` | 並列実行のためのエグゼキュータ(スレッド)の数。 | `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` | + +#### 基盤となるストレージまたはデータベースの設定 + +Consensus Commit にはストレージ抽象化レイヤーがあり、複数の基盤となるストレージをサポートしています。`scalar.db.storage` プロパティを使用してストレージ実装を指定できます。 + +データベースを選択して、各ストレージで使用可能な設定を確認します。 + + + + 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` | 接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | `100` | + | `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` | + +:::note + +#### SQLite3 + +SQLite3 を JDBC データベースとして使用している場合は、`scalar.db.contact_points` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points=jdbc:sqlite:?busy_timeout=10000 +``` + +他の JDBC データベースとは異なり、[SQLite3 doesn't fully support concurrent access](https://www.sqlite.org/lang_transaction.html)。[`SQLITE_BUSY`](https://www.sqlite.org/rescode.html#busy) によって内部的に頻繁に発生するエラーを回避するには、[`busy_timeout`](https://www.sqlite.org/c3ref/busy_timeout.html) パラメータを設定することをお勧めします。 + +#### YugabyteDB + +YugabyteDB を JDBC データベースとして使用している場合は、次のように `scalar.db.contact_points` で複数のエンドポイントを指定できます。 + +```properties +scalar.db.contact_points=jdbc:yugabytedb://127.0.0.1:5433\\,127.0.0.2:5433\\,127.0.0.3:5433/?load-balance=true +``` + +複数のエンドポイントはエスケープされたコンマで区切る必要があります。 + +YugabyteDB のスマートドライバーと負荷分散の詳細については、[YugabyteDB smart drivers for YSQL](https://docs.yugabyte.com/preview/drivers-orms/smart-drivers/) を参照してください。 + +::: + + + + 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 環境 (開発、本番など) を使用する場合に便利です。 | | + + + Cosmos DB 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` を指定することで、複数のストレージを使用できます。 + +複数のストレージの使用の詳細については、[マルチストレージトランザクション](multi-storage-transactions.mdx)を参照してください。 + +##### クロスパーティションスキャン設定 + +以下で説明するようにクロスパーティションスキャンオプションを有効にすると、`Scan` 操作でパーティション全体のすべてのレコードを取得できます。さらに、`cross_partition_scan.filtering` と `cross_partition_scan.ordering` をそれぞれ有効にすることで、クロスパーティション `Scan` 操作で任意の条件と順序を指定できます。現在、順序付けオプション付きのクロスパーティションスキャンは、JDBC データベースでのみ使用できます。フィルタリングと順序付けを有効にするには、`scalar.db.cross_partition_scan.enabled` を `true` に設定する必要があります。 + +クロスパーティションスキャンの使用方法の詳細については、[`Scan` 操作](./api-guide.mdx#scan-操作)を参照してください。 + +:::warning + +非 JDBC データベースの場合、`SERIALIZABLE` 分離レベルでクロスパーティションスキャンを有効にした場合でも、トランザクションは読み取りコミットスナップショット分離 (`SNAPSHOT`) で実行される可能性があります。これは、より低い分離レベルです。非 JDBC データベースを使用する場合は、トランザクションの一貫性が重要でない場合にのみ、クロスパーティションスキャンを使用してください。 + +::: + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------|---------------------------------------------------|----------| +| `scalar.db.cross_partition_scan.enabled` | パーティション間スキャンを有効にします。 | `false` | +| `scalar.db.cross_partition_scan.filtering.enabled` | クロスパーティションスキャンでフィルタリングを有効にします。 | `false` | +| `scalar.db.cross_partition_scan.ordering.enabled` | パーティション間スキャンでの順序付けを有効にします。 | `false` | + +### 非トランザクションストレージ操作を実行する + +非トランザクションストレージ操作を実行するには、`scalar.db.transaction_manager` プロパティを `single-crud-operation` に設定する必要があります。 + +```properties +scalar.db.transaction_manager=single-crud-operation +``` + +また、[基盤となるストレージまたはデータベースの設定](#基盤となるストレージまたはデータベースの設定)の説明に従って、基盤となるストレージまたはデータベースを設定する必要があります。 + +### ScalarDB Cluster を介してトランザクションを実行する + +[ScalarDB Cluster](scalardb-cluster/index.mdx) は、ScalarDB に gRPC インターフェースを提供するコンポーネントです。 + +クライアント設定の詳細については、[ScalarDB Cluster クライアント設定](scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx#クライアント設定)を参照してください。 + +## その他の ScalarDB 設定 + +ScalarDB で使用できる追加の設定は次のとおりです。 + +| 名前 | 説明 | デフォルト | +|------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------| +| `scalar.db.metadata.cache_expiration_time_secs` | ScalarDB には、データベースへのリクエスト数を減らすためのメタデータキャッシュがあります。この設定では、キャッシュの有効期限を秒単位で指定します。`-1`を指定した場合は、キャッシュは期限切れになりません。 | `60` | +| `scalar.db.active_transaction_management.expiration_time_millis` | ScalarDB は進行中のトランザクションを維持し、トランザクション ID を使用して再開できます。この設定は、このトランザクション管理機能の有効期限をミリ秒単位で指定します。 | `-1` (有効期限なし) | +| `scalar.db.default_namespace_name` | 指定された名前空間名は、名前空間を指定していない操作によって使用されます。 | | +| `scalar.db.system_namespace_name` | 指定された名前空間名は ScalarDB によって内部的に使用されます。 | `scalardb` | + +## プレースホルダーの使用 + +値にプレースホルダーを使用できます。プレースホルダーは環境変数 (`${env:}`) またはシステムプロパティ (`${sys:}`) に置き換えられます。また、`${sys::-}` のようにプレースホルダーにデフォルト値を指定することもできます。 + +以下は、プレースホルダーを使用する設定の例です。 + +```properties +scalar.db.username=${env:SCALAR_DB_USERNAME:-admin} +scalar.db.password=${env:SCALAR_DB_PASSWORD} +``` + +この設定例では、ScalarDB は環境変数からユーザー名とパスワードを読み取ります。環境変数 `SCALAR_DB_USERNAME` が存在しない場合、ScalarDB はデフォルト値 `admin` を使用します。 + +## 設定例 + +このセクションでは、いくつかの設定例を示します。 + +### 設定例 #1 - アプリとデータベース + +```mermaid +flowchart LR + app["アプリ
    (ScalarDB ライブラリと
    Consensus Commit)"] + db[(基盤となるストレージまたはデータベース)] + app --> db +``` + +この例の設定では、アプリ (Consensus Commit を備えた ScalarDB ライブラリ) が、基盤となるストレージまたはデータベース (この場合は Cassandra) に直接接続します。 + +:::warning + +この設定は開発目的のみに存在し、実稼働環境には適していません。これは、ScalarDB のトランザクション的に一貫性のあるバックアップを取得するために、アプリが [Scalar Admin](https://github.com/scalar-labs/scalar-admin) インターフェースを実装する必要があり、追加の設定が必要になるためです。 + +::: + +以下は、ScalarDB を介してアプリを基盤となるデータベースに接続するための設定の例です。 + +```properties +# Transaction manager implementation. +scalar.db.transaction_manager=consensus-commit + +# Storage implementation. +scalar.db.storage=cassandra + +# Comma-separated contact points. +scalar.db.contact_points= + +# Credential information to access the database. +scalar.db.username= +scalar.db.password= +``` + +### 設定例 #2 - アプリ、ScalarDB Cluster、データベース + +```mermaid +flowchart LR + app["アプリ -
    ScalarDB ライブラリと gRPC"] + cluster["ScalarDB Cluster -
    (ScalarDB ライブラリと
    Consensus Commit)"] + db[(基盤となるストレージまたはデータベース)] + app --> cluster --> db +``` + +この例の設定では、アプリ (gRPC を使用した ScalarDB ライブラリ) は、ScalarDB Enterprise エディションでのみ使用可能なコンポーネントである ScalarDB Cluster を介して、基盤となるストレージまたはデータベース (この場合は Cassandra) に接続します。 + +:::note + +ScalarDB Cluster は [Scalar Admin](https://github.com/scalar-labs/scalar-admin) インターフェイスを実装しており、これにより ScalarDB Cluster を一時停止することで ScalarDB のトランザクション的に一貫性のあるバックアップを取得できるため、この設定は実稼働環境での使用に適しています。 + +::: + +以下は、ScalarDB Cluster を介してアプリを基盤となるデータベースに接続するための設定の例です。 + +```properties +# Transaction manager implementation. +scalar.db.transaction_manager=cluster + +# Contact point of the cluster. +scalar.db.contact_points=indirect: +``` + +クライアント設定の詳細については、[ScalarDB Cluster クライアント設定](scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx#クライアント設定) を参照してください。 + +[^1]: アプリケーションのアクセスパターンを考慮し、アプリケーションが使用する同じ基盤ストレージで、いくつかのバリエーション (たとえば、デフォルト値の 75% と 125%) でパフォーマンスをベンチマークして、最適な設定を決定することは価値があります。最適な設定は実際にはこれらの要因によって決まるためです。また、これらのパラメーターの組み合わせ (たとえば、1番目に `slot_capacity:20` と `group_size_fix_timeout_millis:40`、2番目に `slot_capacity:30` と `group_size_fix_timeout_millis:40`、3番目に `slot_capacity:20` と `group_size_fix_timeout_millis:80`) をベンチマークして、最適な組み合わせを決定することも重要です。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/data-modeling.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/data-modeling.mdx new file mode 100644 index 00000000..302e8f1c --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/data-modeling.mdx @@ -0,0 +1,135 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# データをモデル化する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +データモデリング (つまり、データベーススキーマの設計) とは、データへのアクセスに使用されるパターンと、ビジネスオペレーション内で実行されるクエリの種類を特定することで、データの保存方法と使用方法を概念化して視覚化するプロセスです。 + +このページでは、まず ScalarDB データモデルについて説明し、次にデータモデルに基づいてデータベーススキーマを設計する方法について説明します。 + +## ScalarDB データモデル + +ScalarDB のデータモデルは、Bigtable データモデルにヒントを得た拡張キー値モデルです。リレーショナルモデルに似ていますが、以下に示すようにいくつかの点で異なります。データモデルは、リレーショナルデータベース、NoSQL データベース、NewSQL データベースなど、さまざまなデータベースを抽象化するために選択されます。 + +次の図は、それぞれがレコードのコレクションである ScalarDB テーブルの例を示しています。このセクションでは、まず、テーブルやレコードなどの ScalarDB が定義するオブジェクトについて説明し、次にレコードの検索方法について説明します。 + +![ScalarDB データモデル](images/scalardb_data_model.png) + +### ScalarDB のオブジェクト + +ScalarDB データモデルには、いくつかのオブジェクトがあります。 + +#### 名前空間 + +名前空間は、SQL 名前空間またはデータベースに類似したテーブルのコレクションです。 + +#### テーブル + +テーブルはパーティションのコレクションです。名前空間には、通常、それぞれが名前で識別される1つ以上のテーブルが含まれます。 + +#### パーティション + +パーティションはレコードのコレクションであり、論理ノードまたは物理ノードへの分散単位です。したがって、同じパーティション内のレコードは同じノードに配置されます。ScalarDB では、複数のパーティションがハッシュによって分散されていると想定しています。 + +#### レコード / 行 + +レコードまたは行は、他のすべてのレコード間で一意に識別できる列のセットです。 + +#### 列 + +列は基本的なデータ要素であり、これ以上細分化する必要はありません。各レコードは、1つ以上の列で設定されます。各列にはデータ型があります。データ型の詳細については、[ScalarDB と他のデータベース間のデータ型マッピング](schema-loader.mdx#scalardb-と他のデータベース間のデータ型マッピング)を参照してください。 + +#### セカンダリインデックス + +セカンダリインデックスは、単一の基本テーブル内の列のソートされたコピーです。各インデックスエントリは、対応するテーブルパーティションにリンクされています。ScalarDB は現在、複数列のインデックスをサポートしていないため、1つの列のみでインデックスを作成できます。 + +### レコードの検索方法 + +このセクションでは、テーブルからレコードを検索する方法について説明します。 + +#### 主キー + +主キーは各レコードを一意に識別します。2つのレコードが同じ主キーを持つことはできません。したがって、主キーを指定してレコードを検索できます。主キーは、パーティションキーと、オプションでクラスタリングキーで設定されます。 + +#### パーティションキー + +パーティションキーは、パーティションを一意に識別します。パーティションキーは、パーティションキー列と呼ばれる列のセットで設定されます。パーティションキーのみを指定すると、パーティションに属するレコードのセットを取得できます。 + +#### クラスタリングキー + +クラスタリングキーは、パーティション内のレコードを一意に識別します。クラスタリングキー列と呼ばれる列のセットで設定されます。クラスタリングキーを指定する場合は、効率的な検索のためにパーティションキーを指定する必要があります。パーティションキーなしでクラスタリングキーを指定すると、すべてのパーティションをスキャンすることになります。すべてのパーティションをスキャンすると、特にデータ量が多い場合は時間がかかるため、自己判断でのみ実行してください。 + +パーティション内のレコードは、クラスタリング順序として指定されたクラスタリングキー列でソートされていると想定されます。したがって、定義された順序でクラスタリングキー列の一部を指定して、返される結果を絞り込むことができます。 + +#### インデックスキー + +インデックスキーは、インデックス内のキーを検索してレコードを識別します。インデックスキーの検索はすべてのパーティションにまたがるため、特に検索の選択性が低くない場合は、必ずしも効率的であるとは限りません。 + +## データベーススキーマの設計方法 + +データベーススキーマはリレーショナルモデルと同様に設計できますが、基本的な原則があり、従うべきベストプラクティスがいくつかあります。 + +### クエリ駆動型データモデリング + +リレーショナルデータベースでは、データは正規化されたテーブルに整理され、外部キーを使用して他のテーブル内の関連データを参照します。アプリケーションが実行するクエリはテーブルによって構造化され、関連データはテーブル結合としてクエリされます。 + +ScalarDB は ScalarDB SQL での結合操作をサポートしていますが、データモデリングは NoSQL データベースのように、よりクエリ駆動型である必要があります。データアクセスパターンとアプリケーションクエリによって、テーブルの構造と設定が決定されます。 + +### ベストプラクティス + +このセクションでは、データベーススキーマを設計するためのベストプラクティスについて説明します。 + +#### データ分散を考慮する + +パーティションキーとクラスタリングキーを適切に選択して、パーティションへの負荷を分散させることをお勧めします。 + +たとえば、銀行アプリケーションでアカウント ID をパーティションキーとして選択すると、アカウントが属するパーティション内で特定のアカウントに対するすべてのアカウント操作を実行できます。したがって、異なるアカウント ID を操作すると、異なるパーティションにアクセスすることになります。 + +一方、ブランチ ID をパーティションキーとして選択し、アカウント ID をクラスタリングキーとして選択すると、ブランチのアカウント ID へのアクセスはすべて同じパーティションに送られるため、負荷とデータサイズの不均衡が生じます。さらに、少数の大きなパーティションを作成すると負荷とデータサイズの不均衡が生じるため、パーティションキーにはカーディナリティの高い列を選択する必要があります。 + +#### 単一のパーティションの読み取りを試みる + +データモデルの特性により、単一パーティション検索が最も効率的です。スキャンを発行したり、複数パーティションの検索やスキャンを必要とするリクエストを選択したりする必要がある場合は、[クロスパーティションスキャンで有効にする](configurations.mdx#クロスパーティションスキャン設定)ことができますが、独自の判断で実行し、可能であればスキーマの更新を検討してください。 + +たとえば、銀行アプリケーションで、パーティションキーとして電子メールを選択し、クラスタリングキーとしてアカウント ID を選択し、アカウント ID を指定するクエリを発行すると、対応するパーティションを効率的に識別できないため、クエリはすべてのパーティションにまたがって実行されます。このような場合は、常にアカウント ID を使用してテーブルを検索する必要があります。 + +:::note + +適切なインデックスを持つリレーショナルデータベース上の複数のパーティションを読み取る場合、クエリがデータベースにプッシュダウンされるため、クエリが効率的になる可能性があります。 + +::: + +#### セカンダリインデックスの使用を避ける + +上記と同様に、セカンダリインデックスを使用するスキャンまたは選択リクエストを発行する必要がある場合、そのリクエストはテーブルのすべてのパーティションにまたがります。したがって、セカンダリインデックスの使用を避けるようにしてください。セカンダリインデックスを使用する必要がある場合は、小さな部分を検索する低選択性クエリを介して使用します。 + +セカンダリインデックスの代わりに、ベーステーブルのクラスター化インデックスとして機能する別のテーブルを作成できます。 + +たとえば、主キーが `A` である `table1(A, B, C)` という 3つの列を持つテーブルがあるとします。次に、`C` を主キーとして `index-table1(C, A, B)` のようなテーブルを作成し、`C` の値を指定して単一のパーティションを検索できるようにします。このアプローチにより、読み取りクエリは高速化されますが、ScalarDB トランザクションを使用して2つのテーブルに書き込む必要があるため、書き込みクエリの負荷が増加する可能性があります。 + +:::note + +将来的には、ScalarDB にテーブルベースのセカンダリインデックス機能が追加される予定です。 + +::: + +#### データはハッシュによって分散されていると想定されていることを考慮する + +現在の ScalarDB データモデルでは、データはハッシュによって分散されていると想定されています。したがって、パーティションキーがないと範囲クエリを効率的に実行できません。 + +範囲クエリを効率的に発行するには、パーティション内で実行する必要があります。ただし、このアプローチに従う場合は、パーティションキーを指定する必要があります。範囲クエリは常に同じパーティションに送信されるので、パーティションが過負荷になる可能性があり、スケーラビリティの問題が発生する可能性があります。この制限は ScalarDB に固有のものではなく、スケーラビリティのためにハッシュによってデータが分散されているデータベースに固有のものです。 + +:::note + +適切なインデックスを持つリレーショナルデータベースで ScalarDB を実行すると、クエリがデータベースにプッシュダウンされるため、範囲クエリが効率的になる可能性があります。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/database-configurations.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/database-configurations.mdx new file mode 100644 index 00000000..2f221487 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/database-configurations.mdx @@ -0,0 +1,123 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB の基盤となるデータベースの設定 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB を使用するアプリケーションが正しく効率的に動作するように、ScalarDB の基盤となるデータベースを設定する方法について説明します。 + +## 基盤となるデータベースの一般的な要件 + +ScalarDB では、基盤となる各データベースが、データベースでトランザクションと分析を実行するための特定の機能を提供する必要があります。このドキュメントでは、一般的な要件と、要件を満たすために各データベースを設定する方法について説明します。 + +### トランザクション + +ScalarDB では、基盤となる各データベースが、データベースでトランザクションを実行するために少なくとも次の機能を提供する必要があります。 + +- 単一のデータベースレコードに対する線形化可能な読み取りと条件付きミューテーション (書き込みと削除)。 +- 書き込まれたデータベースレコードの耐久性。 +- 各データベースレコードにアプリケーションデータのほかに任意のデータを保存できる機能。 + +### 分析 + +ScalarDB では、基盤となる各データベースが、データベースで分析を実行するために次の機能を提供する必要があります。 + +- コミットされたレコードのみを返す機能。 + +:::note + +ScalarDB は、CRUD 操作だけでなく、スキーマ、テーブル、インデックスの作成や変更などの操作を実行するために、基盤となるデータベース上で実行されるため、ScalarDB を介してデータベースにアクセスするのに十分な権限を持つデータベースアカウントが必要です。基本的に、ScalarDB では、基盤となるデータベースにアクセスするために完全な権限を持つアカウントが必要です。 + +::: + +## 一般的な要件を満たすようにデータベースを設定する方法 + +一般的な要件を満たすようにデータベースを設定する方法の詳細については、データベースを選択してください。 + + + +

    トランザクション

    + + - すべての操作に単一のプライマリサーバーまたは同期された複数のプライマリサーバーを使用します (プライマリデータベースから非同期にレプリケートされた読み取りレプリカに対する読み取り操作はありません)。 + - 読み取りコミットまたはより厳格な分離レベルを使用します。 + +

    分析

    + + - 読み取りコミットまたはより厳格な分離レベルを使用します。 +
    + +

    トランザクション

    + + - すべての操作に単一のプライマリリージョンを使用します。(プライマリリージョン以外のグローバルテーブルに対する読み取りおよび書き込み操作は実行できません。) + - DynamoDB にはプライマリリージョンの概念がないため、プライマリリージョンは自分で指定する必要があります。 + +

    分析

    + + - 該当なし。DynamoDB は常にコミットされたレコードを返すため、DynamoDB 固有の要件はありません。 +
    + +

    トランザクション

    + + - 「Strong」または「Bounded Staleness」の一貫性を持つすべての操作に単一のプライマリリージョンを使用します。 + +

    分析

    + + - 該当なし。Cosmos DB は常にコミットされたレコードを返すため、Cosmos DB 固有の要件はありません。 +
    + +

    トランザクション

    + + - すべての操作に単一のプライマリクラスターを使用します (プライマリ以外のクラスターでは読み取りまたは書き込み操作は行いません)。 + - `commitlog_sync` には `batch` または `group` を使用します。 + - Cassandra 互換データベースを使用している場合、それらのデータベースは軽量トランザクション (LWT) を適切にサポートしている必要があります。 + +

    分析

    + + - 該当なし。Cassandra は常にコミットされたレコードを返すため、Cassandra 固有の要件はありません。 +
    +
    + +## 推奨事項 + +ScalarDB の基盤となる各データベースを適切に設定して、高パフォーマンスと高可用性を実現することが推奨されます。次の推奨事項には、更新すべきいくつかのオプションが含まれています。 + +:::note + +ScalarDB は基盤となるデータベースのアプリケーションと見なすことができるため、効率を向上させるためによく使用されるその他のオプションを更新してみることをお勧めします。 + +::: + + + + - パフォーマンスを向上させるには、読み取りコミット分離を使用します。 + - 各データベースのパフォーマンス最適化のベストプラクティスに従います。たとえば、パフォーマンスを向上させるには、通常、バッファサイズ (PostgreSQL の `shared_buffers` など) を増やし、接続数 (PostgreSQL の `max_connections` など) を増やすことが推奨されます。 + + + - 読み取り容量ユニット (RCU) と書き込み容量ユニット (WCU) の数を増やして、スループットを高めます。 + - ポイントインタイムリカバリ (PITR) を有効にします。 + +:::note + +DynamoDB はデフォルトで複数のアベイラビリティーゾーンにデータを保存するため、可用性を向上させるために設定を調整する必要はありません。 + +::: + + + - 高いスループットを実現するために、リクエストユニット (RU) の数を増やします。 + - ポイントインタイムリストア (PITR) を有効にします。 + - 可用性ゾーンを有効にします。 + + + - スループットを高めるために、`concurrent_reads` と `concurrent_writes` を増やします。詳細については、[`concurrent_writes`](https://cassandra.apache.org/doc/stable/cassandra/configuration/cass_yaml_file.html#concurrent_writes) に関する Cassandra の公式ドキュメントを参照してください。 + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/deploy-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/deploy-overview.mdx new file mode 100644 index 00000000..251db02d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/deploy-overview.mdx @@ -0,0 +1,23 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# デプロイの概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このカテゴリでは、ローカルおよびクラウドベースの Kubernetes 環境での ScalarDB、特に ScalarDB Cluster と ScalarDB Analytics のデプロイに慣れるためのガイドに従うことができます。 + +## ローカル Kubernetes 環境に ScalarDB Cluster をデプロイする + +Helm Chart と PostgreSQL データベースを使用してローカル Kubernetes 環境に ScalarDB Cluster をデプロイする方法については、[ScalarDB Cluster をローカルにデプロイする](scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx)を参照してください。 + +## クラウドベースの Kubernetes 環境に ScalarDB Cluster をデプロイする + +Helm Chart を使用してクラウドベースの Kubernetes 環境に ScalarDB Cluster をデプロイする方法については、[Amazon Elastic Kubernetes Service (EKS) に ScalarDB Cluster をデプロイする](scalar-kubernetes/ManualDeploymentGuideScalarDBClusterOnEKS.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/design.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/design.mdx new file mode 100644 index 00000000..ad893227 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/design.mdx @@ -0,0 +1,49 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB デザイン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB の設計と実装について簡単に説明します。ScalarDB の概要とその使用例については、[ScalarDB の概要](./overview.mdx) を参照してください。 + +## 全体的なアーキテクチャ + +ScalarDB は、アプリケーションとデータベースの間に配置されるハイブリッドトランザクション/分析処理 (HTAP) ミドルウェアです。次の図に示すように、ScalarDB は、コア、クラスター、分析の 3つのコンポーネントで構成されています。ScalarDB は基本的に階層型アーキテクチャを採用しているため、クラスターコンポーネントと分析コンポーネントは、コアコンポーネントを使用して基盤となるデータベースとやり取りしますが、正確さを犠牲にすることなくパフォーマンスを最適化するためにコアコンポーネントをバイパスすることもあります。同様に、各コンポーネントも複数のレイヤーで構成されています。 + +![ScalarDB architecture](images/scalardb-architecture.png) + +## コンポーネント + +次のサブセクションでは、各コンポーネントについて1つずつ説明します。 + +### コア + +Apache 2ライセンスの下でオープンソースソフトウェアとして提供される ScalarDB Core は、ScalarDB の不可欠な部分です。Core は、基礎となるデータベースを抽象化する抽象化レイヤーと、各データベースの抽象化を実装するアダプター (またはシム) を備えたデータベースマネージャーを提供します。さらに、データベース抽象化の上にトランザクションマネージャーを提供し、Scalar の新しい分散トランザクションプロトコルである Consensus Commit に基づいて、データベースに依存しないトランザクション管理を実現します。Core は、シンプルな CRUD インターフェイスを提供するライブラリとして提供されます。 + +### クラスター + +商用ライセンスでライセンスされている ScalarDB Cluster は、Core コンポーネントがクラスター化されたサーバーとして機能するためのクラスタリングソリューションを提供するコンポーネントです。Cluster は主に、多数の小規模なトランザクションおよび非トランザクションの読み取りと書き込みがある OLTP ワークロード向けに設計されています。さらに、認証、承認、保存時の暗号化、きめ細かなアクセス制御 (まだ開発中) などのエンタープライズ機能もいくつか提供しています。Cluster は Core コンポーネントと同じ CRUD インターフェースを提供するだけでなく、SQL および GraphQL インターフェースも提供しています。Cluster は Kubernetes Pod 内のコンテナーとして提供されるため、コンテナーを増やすことでパフォーマンスと可用性を高めることができます。 + +### 分析 + +商用ライセンスでライセンスされている ScalarDB Analytics は、Core コンポーネントによって管理されるデータ、または ScalarDB を使用しないアプリケーションによって管理されるデータに対してスケーラブルな分析処理を提供するコンポーネントです。Analytics は主に、少数の大規模な分析読み取りクエリがある OLAP ワークロード向けに設計されています。さらに、Spark を通じて SQL および DataSet API も提供されます。Analytics コンポーネントは Apache Spark エンジンにインストールできる Java パッケージとして提供されるため、Spark ワーカーノードを増やすことでパフォーマンスを向上させることができます。 + +## 詳細 + +ScalarDB の設計と実装の詳細については、次のドキュメントを参照してください。 + +- **Speaker Deck プレゼンテーション:** [ScalarDB: Universal Transaction Manager](https://speakerdeck.com/scalar/scalar-db-universal-transaction-manager) +- **Speaker Deck プレゼンテーション:** [ScalarDB を用いたマイクロサービスにおけるデータ管理](https://speakerdeck.com/scalar/scalardbwoyong-itamaikurosabisuniokerudetaguan-li-database-engineering-meetup-number-2) + +さらに、VLDB 2023 カンファレンスでは以下の資料が発表されました。 + +- **Speaker Deck プレゼンテーション:** [ScalarDB: Universal Transaction Manager for Polystores](https://speakerdeck.com/scalar/scalardb-universal-transaction-manager-for-polystores-vldb23) +- **詳細な論文:** [ScalarDB: Universal Transaction Manager for Polystores](https://www.vldb.org/pvldb/vol16/p3768-yamada.pdf) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-overview.mdx new file mode 100644 index 00000000..9f482622 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-overview.mdx @@ -0,0 +1,45 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB を用いた開発について開発の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +# 開発の概要 + +このカテゴリでは、ScalarDB について、特にトランザクション、分析クエリ、非トランザクションストレージ操作の実行方法について詳しく理解するためのガイドに従うことができます。 + +ScalarDB 用アプリケーションの開発を開始するには、次のサブカテゴリを参照してください。 + +## トランザクションの実行 + +このサブカテゴリでは、ScalarDB データモデルに基づいてデータをモデル化し、スキーマを作成する方法を学習できます。次に、ScalarDB Core ライブラリと、Core ライブラリをラップする gRPC サーバーである ScalarDB Cluster を介してトランザクションを実行する方法を学習できます。 + +このサブカテゴリの概要については、[トランザクションの実行の概要](develop-run-transactions-overview.mdx)を参照してください。 + +## 分析クエリの実行 + +:::note + +このドキュメントは近日公開予定です。しばらくお待ちください。 + +::: + +## 非トランザクション操作の実行 + +このサブカテゴリでは、このような非トランザクションストレージ操作の実行方法を学習できます。 + +このサブカテゴリの概要については、[非トランザクションストレージ操作を実行](develop-run-non-transactional-operations-overview.mdx)を参照してください。 + +## サンプルアプリケーションの実行 + +このサブカテゴリでは、ScalarDB を活用するさまざまなサンプルアプリケーションの実行方法を学習できます。 + +このサブカテゴリの概要については、[サンプルアプリケーションの実行の概要](scalardb-samples/README.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-run-non-transactional-operations-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-run-non-transactional-operations-overview.mdx new file mode 100644 index 00000000..7f20a3d4 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-run-non-transactional-operations-overview.mdx @@ -0,0 +1,25 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 非トランザクションストレージ操作を実行 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB は当初、多様なデータベース間の統一された抽象化と、そのようなデータベース間のトランザクションを提供するために設計されました。ただし、複数の、場合によっては多様なデータベースを使用するアプリケーションを簡素化するために、統一された抽象化のみが必要な場合があります。 + +ScalarDB は、トランザクション機能なしで統一された抽象化のみを提供するように構成できるため、基盤となるデータベースとストレージで非トランザクション操作のみを実行します。この構成の ScalarDB は複数の操作間で ACID を保証しないため、より優れたパフォーマンスで操作を実行できます。 + +このサブカテゴリでは、このような非トランザクションストレージ操作を実行する方法を学習できます。 + +- CRUD インターフェースを使用して実行 + - [ScalarDB Core ライブラリを使用](run-non-transactional-storage-operations-through-library.mdx) + - [ScalarDB Cluster を使用](scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx) +- [SQL インターフェースを使用して実行](scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx) +- [プリミティブ CRUD インターフェースを使用して実行](run-non-transactional-storage-operations-through-primitive-crud-interface.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-run-transactions-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-run-transactions-overview.mdx new file mode 100644 index 00000000..b60fddb7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/develop-run-transactions-overview.mdx @@ -0,0 +1,21 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# トランザクションの実行の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このサブカテゴリでは、ScalarDB データモデルに基づいてデータをモデル化し、スキーマを作成する方法を学習できます。次に、ScalarDB Core ライブラリと、Core ライブラリをラップする gRPC サーバーである ScalarDB Cluster を介してトランザクションを実行する方法を学習できます。 + +- [データモデリング](data-modeling.mdx) +- CRUD インターフェースを使用して実行 + - [ScalarDB Core ライブラリを使用](run-transactions-through-scalardb-core-library.mdx) + - [ScalarDB Cluster を使用](scalardb-cluster/run-transactions-through-scalardb-cluster.mdx) +- [SQL インターフェースを使用して実行](scalardb-cluster/run-transactions-through-scalardb-cluster-sql.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/getting-started-with-scalardb-by-using-kotlin.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/getting-started-with-scalardb-by-using-kotlin.mdx new file mode 100644 index 00000000..cdb0225d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/getting-started-with-scalardb-by-using-kotlin.mdx @@ -0,0 +1,419 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kotlin を使って ScalarDB をはじめよう + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +この入門チュートリアルでは、ScalarDB で好みのデータベースを設定し、Kotlin を使用して基本的な電子マネーアプリケーションをセットアップする方法について説明します。Kotlin は Java との相互運用性を備えているため、Kotlin から直接 ScalarDB を使用できます。 + +:::warning + +電子マネーアプリケーションはこのチュートリアル用に簡略化されており、実稼働環境には適していません。 + +::: + +## このサンプルアプリケーションの前提条件 + +ScalarDB は Java で記述されているため、環境に次のいずれかの Java Development Kit (JDK) がインストールされている必要があります。 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- [Docker](https://www.docker.com/get-started/) 20.10以降と [Docker Compose](https://docs.docker.com/compose/install/) V2以降 + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](./requirements.mdx)を参照してください。 + +::: + +## ScalarDB サンプルリポジトリのクローンを作成する + +**Terminal** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-kotlin-sample +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](requirements.mdx#データベース)を参照してください。 + + + +

    MySQLをローカルで実行する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の MySQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://localhost:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://localhost:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の SQL Server のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://localhost:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB をローカルで実行する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://localhost:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントをお持ちでない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を設定する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル**を**強力**に設定します。 + +

    ScalarDB を設定する

    + + 以下の手順では、ローカル環境に JDK が適切にインストールおよび設定されており、Azure で Cosmos DB for NoSQL アカウントが適切に設定されていることを前提としています。 + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。`scalar.db.contact_points` と `scalar.db.password` の値は、説明に従って必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-kotlin-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Cassandra のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +## データベーススキーマをロードする + +アプリケーションでデータベーススキーマ (データを整理する方法) を定義する必要があります。サポートされているデータ型の詳細については、[ScalarDB と他のデータベース間のデータ型マッピング](schema-loader.mdx#scalardb-と他のデータベース間のデータ型マッピング)を参照してください。 + +このチュートリアルでは、**schema.json** というファイルが `scalardb-samples/scalardb-kotlin-sample` ディレクトリに既に存在します。スキーマを適用するには、[`scalardb` Releases](https://github.com/scalar-labs/scalardb/releases) ページに移動し、使用している ScalarDB のバージョンに一致する ScalarDB Schema Loader を `scalardb-samples/scalardb-kotlin-sample` ディレクトリにダウンロードします。 + +次に、データベースに基づいて、`` をダウンロードした ScalarDB Schema Loader のバージョンに置き換えて、次のコマンドを実行します。 + + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator --no-backup --no-scaling + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +また、Amazon DynamoDB Local は継続的なバックアップと自動スケーリングをサポートしていないため、`--no-backup` および `--no-scaling` オプションが指定されています。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator --replication-factor=1 + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +また、`--replication-factor=1` オプションは Cassandra を使用する場合にのみ有効です。デフォルトのレプリケーション係数は `3` ですが、このチュートリアルではセットアップを容易にするために `1` が使用されているため、3つのノードではなく1つのノードを持つクラスターを準備するだけで済みます。ただし、レプリケーション係数 `1` は本番環境には適していないことに注意してください。 + +::: + + + +## 基本的な電子マネーアプリケーションでトランザクションを実行し、データを取得します + +スキーマをロードした後、クローンしたリポジトリに含まれる基本的な電子マネーアプリケーションでトランザクションを実行し、データを取得できます。 + +アプリケーションは、次の種類のトランザクションをサポートしています: + +- アカウントを作成します。 +- アカウントに資金を追加します。 +- 2つのアカウント間で資金を送信します。 +- アカウント残高を取得します。 + +:::note + +初めて Gradle コマンドを実行すると、Gradle によって必要なライブラリが自動的にインストールされます。 + +::: + +### 残高のあるアカウントを作成する + +アカウント間で資金を送金するには、残高のあるアカウントが必要です。 + +**customer1** の残高が **500** のアカウントを作成するには、次のコマンドを実行します。 + +```console +./gradlew run --args="-action charge -amount 500 -to customer1" +``` + +### 残高のないアカウントを作成する + +残高のあるアカウントを設定したら、資金を送金するための別のアカウントが必要です。 + +残高が **0** の **merchant1** のアカウントを作成するには、次のコマンドを実行します。 + +```console +./gradlew run --args="-action charge -amount 0 -to merchant1" +``` + +### アカウントに資金を追加する + +[残高のあるアカウントを作成する](#残高のあるアカウントを作成する)でアカウントを作成して資金を追加したのと同じ方法で、アカウントに資金を追加できます。 + +**customer1** のアカウントに **500** を追加するには、次のコマンドを実行します。 + +```console +./gradlew run --args="-action charge -amount 500 -to customer1" +``` + +**customer1** のアカウントの残高は **1000** になります。 + +### 2つのアカウント間で電子マネーを送金する + +これで 2つのアカウントが作成され、少なくとも1つのアカウントに残高があるので、一方のアカウントからもう一方のアカウントに資金を送金できます。 + +**customer1** が **merchant1** に **100** を支払うようにするには、次のコマンドを実行します。 + +```console +./gradlew run --args="-action pay -amount 100 -from customer1 -to merchant1" +``` + +### アカウント残高を取得する + +あるアカウントから別のアカウントに資金を送金した後、各アカウントの残高を確認できます。 + +**customer1** の残高を取得するには、次のコマンドを実行します。 + +```console +./gradlew run --args="-action getBalance -id customer1" +``` + +次の出力が表示されます。 + +```console +... +The balance for customer1 is 900 +... +``` + +**merchant1** の残高を取得するには、次のコマンドを実行します。 + +```console +./gradlew run --args="-action getBalance -id merchant1" +``` + +次の出力が表示されます。 + +```console +... +The balance for merchant1 is 100 +... +``` + +## データベースを停止する + +データベースを停止するには、次のコマンドを実行して Docker コンテナを停止します。 + +```console +docker compose down +``` + +## 参照 + +このチュートリアルで使用されている電子マネーアプリケーションのソースコードを確認するには、[`ElectronicMoney.kt`](https://github.com/scalar-labs/scalardb-samples/blob/main/getting-started-kotlin/src/main/kotlin/sample/ElectronicMoney.kt) を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/getting-started-with-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/getting-started-with-scalardb.mdx new file mode 100644 index 00000000..5a920d81 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/getting-started-with-scalardb.mdx @@ -0,0 +1,538 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB をはじめよう + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +この入門チュートリアルでは、ScalarDB でデータベースを設定する方法について説明し、ScalarDB を使用してクレジットカードでアイテムを注文して支払うことができるサンプルの電子商取引アプリケーションを作成するプロセスを示します。サンプルの電子商取引アプリケーションでは、ユーザーがクレジットラインを使用してアイテムを注文して支払う方法を示します。 + +:::warning + +サンプルアプリケーションは ScalarDB の使用方法を示すことに重点を置いているため、アプリケーション固有のエラー処理、認証処理、および同様の機能はサンプルアプリケーションに含まれていません。ScalarDB での例外処理の詳細については、[例外の処理方法](api-guide.mdx#how-to-handle-exceptions)を参照してください。 + +::: + +## このサンプルアプリケーションの前提条件 + +ScalarDB は Java で記述されているため、環境に次のいずれかの Java Development Kit (JDK) がインストールされている必要があります。 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- [Docker](https://www.docker.com/get-started/) 20.10以降と [Docker Compose](https://docs.docker.com/compose/install/) V2以降 + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](./requirements.mdx)を参照してください。 + +::: + +## ScalarDB サンプルリポジトリのクローンを作成する + +**Terminal** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-sample +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](requirements.mdx#データベース)を参照してください。 + + + +

    MySQLをローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の MySQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://localhost:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://localhost:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の SQL Server のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://localhost:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://localhost:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントをお持ちでない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を設定する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル**を**強力**に設定します。 + +

    ScalarDB を設定する

    + + 以下の手順では、ローカル環境に JDK が適切にインストールおよび設定されており、Azure で Cosmos DB for NoSQL アカウントが適切に設定されていることを前提としています。 + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。`scalar.db.contact_points` と `scalar.db.password` の値は、説明に従って必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Cassandra のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +## データベーススキーマをロードする + +アプリケーションでデータベーススキーマ (データを整理する方法) を定義する必要があります。サポートされているデータ型の詳細については、[ScalarDB と他のデータベース間のデータ型マッピング](schema-loader.mdx#scalardb-と他のデータベース間のデータ型マッピング)を参照してください。 + +このチュートリアルでは、**schema.json** というファイルが `scalardb-samples/scalardb-sample` ディレクトリに既に存在します。スキーマを適用するには、[`scalardb` Releases](https://github.com/scalar-labs/scalardb/releases) ページに移動し、使用している ScalarDB のバージョンに一致する ScalarDB Schema Loader を `scalardb-samples/scalardb-sample` ディレクトリにダウンロードします。 + +次に、データベースに基づいて、`` をダウンロードした ScalarDB Schema Loader のバージョンに置き換えて、次のコマンドを実行します。 + + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator --no-backup --no-scaling + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +また、Amazon DynamoDB Local は継続的なバックアップと自動スケーリングをサポートしていないため、`--no-backup` および `--no-scaling` オプションが指定されています。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +::: + + + ```console + java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator --replication-factor=1 + ``` + +:::note + +`transaction` が `true` に設定されたテーブルがスキーマ内に存在するため、`--coordinator` オプションが指定されています。スキーマの設定とロードの詳細については、[ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 + +また、`--replication-factor=1` オプションは Cassandra を使用する場合にのみ有効です。デフォルトのレプリケーション係数は `3` ですが、このチュートリアルではセットアップを容易にするために `1` が使用されているため、3つのノードではなく1つのノードを持つクラスターを準備するだけで済みます。ただし、レプリケーション係数 `1` は本番環境には適していないことに注意してください。 + +::: + + + +### スキーマの詳細 + +サンプルアプリケーションの [`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-sample/schema.json) に示されているように、すべてのテーブルは `sample` 名前空間に作成されます。 + +- `sample.customers`: 顧客情報を管理するテーブル + - `credit_limit`: 貸し手が顧客に信用枠から支出を許可する最大金額 + - `credit_total`: 顧客が信用枠から支出した金額 +- `sample.orders`: 注文情報を管理するテーブル +- `sample.statements`: 注文明細情報を管理するテーブル +- `sample.items`: 注文するアイテムの情報を管理するテーブル + +スキーマのエンティティ関係図は次のとおりです。 + +![ERD](images/getting-started-ERD.png) + +### 初期データをロードする + +サンプルアプリケーションを実行する前に、次のコマンドを実行して初期データをロードする必要があります。 + +```console +./gradlew run --args="LoadInitialData" +``` + +初期データがロードされた後、次のレコードがテーブルに保存される必要があります。 + +**`sample.customers` テーブル** + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +**`sample.items` テーブル** + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## サンプルアプリケーションでトランザクションを実行し、データを取得する + +次のセクションでは、サンプル電子商取引アプリケーションでトランザクションを実行し、データを取得する方法について説明します。 + +### 顧客情報を取得する + +まず、次のコマンドを実行して、ID が `1` である顧客に関する情報を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 0} +... +``` + +### 注文する + +次に、次のコマンドを実行して、顧客 ID `1` にリンゴ3個とオレンジ2個を注文してもらいます。 + +:::note + +このコマンドの注文形式は `./gradlew run --args="PlaceOrder :,:,..."` です。 + +::: + +```console +./gradlew run --args="PlaceOrder 1 1:3,2:2" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す類似の出力が表示されます。 + +```console +... +{"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e"} +... +``` + +### 注文の詳細を確認する + +次のコマンドを実行して注文の詳細を確認します。`` は、前のコマンドを実行した後に表示される `order_id` の UUID に置き換えます。 + +```console +./gradlew run --args="GetOrder " +``` + +`order_id` と `timestamp` の UUID が異なる、以下のような出力が表示されます。 + +```console +... +{"order": {"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e","timestamp": 1650948340914,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}} +... +``` + +### 別の注文をする + +次のコマンドを実行して、顧客 ID `1` の `credit_total` の残額を使用してメロン1個を注文します。 + +```console +./gradlew run --args="PlaceOrder 1 5:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す類似の出力が表示されます。 + +```console +... +{"order_id": "bcc34150-91fa-4bea-83db-d2dbe6f0f30d"} +... +``` + +### 注文履歴を確認する + +次のコマンドを実行して、顧客 ID `1` のすべての注文履歴を取得します。 + +```console +./gradlew run --args="GetOrders 1" +``` + +`order_id` と `timestamp` の UUID が異なる以下のような出力が表示されます。これは、顧客 ID `1` のすべての注文履歴をタイムスタンプの降順で表示します。 + +```console +... +{"order": [{"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e","timestamp": 1650948340914,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000},{"order_id": "bcc34150-91fa-4bea-83db-d2dbe6f0f30d","timestamp": 1650948412766,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 5,"item_name": "Melon","price": 3000,"count": 1,"total": 3000}],"total": 3000}]} +... +``` + +### クレジット合計を確認する + +次のコマンドを実行して、顧客 ID `1` のクレジット合計を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` が `credit_total` の `credit_limit` に達しており、これ以上注文できないことを示しています。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 10000} +... +``` + +次のコマンドを実行して、ブドウ1個とマンゴー1個を注文してみます。 + +```console +./gradlew run --args="PlaceOrder 1 3:1,4:1" +``` + +次の出力が表示されます。これは、`credit_total` 金額が `credit_limit` 金額を超えたために注文が失敗したことを示しています。 + +```console +... +java.lang.RuntimeException: Credit limit exceeded + at sample.Sample.placeOrder(Sample.java:205) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:33) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:8) + at picocli.CommandLine.executeUserObject(CommandLine.java:1783) + at picocli.CommandLine.access$900(CommandLine.java:145) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2141) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2108) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:1975) + at picocli.CommandLine.execute(CommandLine.java:1904) + at sample.command.SampleCommand.main(SampleCommand.java:35) +... +``` + +### 支払いを行う + +注文を続行するには、顧客 ID `1` が支払いを行って `credit_total` の金額を減らす必要があります。 + +次のコマンドを実行して支払いを行います。 + +```console +./gradlew run --args="Repayment 1 8000" +``` + +次に、次のコマンドを実行して、顧客 ID `1` の `credit_total` 金額を確認します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` に支払いが適用され、`credit_total` の金額が減ったことを示しています。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 2000} +... +``` + +顧客 ID `1` が支払いを済ませたので、次のコマンドを実行してブドウ1個とメロン1個を注文します。 + +```console +./gradlew run --args="PlaceOrder 1 3:1,4:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す類似の出力が表示されます。 + +```console +... +{"order_id": "8911cab3-1c2b-4322-9386-adb1c024e078"} +... +``` + +## データベースを停止する + +データベースを停止するには、次のコマンドを実行して Docker コンテナを停止します。 + +```console +docker compose down +``` + +## 参照 + +このチュートリアルで使用される電子商取引アプリケーションのソースコードを確認するには、[`Sample.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/scalardb-sample/src/main/java/sample/Sample.java) を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/glossary.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/glossary.mdx new file mode 100644 index 00000000..d568b2ac --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/glossary.mdx @@ -0,0 +1,119 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 用語集 + +この用語集には、ScalarDB を使用するときによく使用されるデータベースおよび分散システムの用語が含まれています。 + +## グローバルトランザクション + +グローバルトランザクションは複数のデータベースまたは分散システムにまたがり、関係するすべてのシステムが単一のユニットとして変更をコミットまたはロールバックすることを保証します。 + +## コンセンサス + +分散システムにおけるコンセンサスとは、単一のデータ値またはシステム状態について複数のコンピューターまたはノード間で合意を得るプロセスを指します。 + +## 直列化可能な分離 + +直列化可能な分離は、トランザクションシステムにおける最高の分離レベルであり、同時に実行されるトランザクションの結果が、順番に実行された場合と同じになることを保証します。 + +## スナップショット分離 + +スナップショット分離は、トランザクションがデータベースの一貫したスナップショットを読み取ることを可能にする分離レベルです。これにより、トランザクションが完了するまで、他のトランザクションによる変更が表示されなくなります。 + +## データフェデレーション + +データフェデレーションとは、データを移動せずにさまざまなソースのデータを統合し、クエリと分析のための統一されたビューを作成するプロセスです。 + +## データメッシュ + +データメッシュは、企業内のデータを各ビジネスドメインが自律的に管理し、データを効率的に利活用できるようにする分散型のデータアーキテクチャです。 + +## データ仮想化 + +データ仮想化は多くの点でデータフェデレーションに似ています。つまり、複数のデータソースを統一されたビューに仮想化し、データを移動せずにクエリを簡素化します。 + +## データベース異状 + +データベース異状とは、挿入、更新、削除などの操作が適切なトランザクション管理なしで実行されたときに発生する可能性があるデータの不整合またはエラーです。 + +## トランザクション + +データベース内のトランザクションは、単一の論理作業単位として扱われる一連の操作であり、一貫性と整合性を確保し、通常は ACID プロパティに準拠します。 + +## トランザクションマネージャー + +トランザクションマネージャーは、複数のシステムまたはデータベースにわたるトランザクションの実行を調整し、トランザクションのすべてのステップが1つの単位として成功または失敗することを保証します。 + +## フェデレーションエンジン + +フェデレーションエンジンは、多くの場合、データフェデレーションアーキテクチャの一部として、複数の異なるデータソース間でのデータ統合とクエリを容易にします。 + +## ポリストア + +ポリストアは、ユーザーが、特定のワークロードまたはデータタイプに合わせて最適化された複数の異種データストアを、あたかも単一のシステムであるかのように操作できるようにするデータベースアーキテクチャです。 + +## リレーショナルデータベース + +リレーショナルデータベースは、行と列を持つテーブルにデータを格納し、構造化クエリ言語 (SQL) を使用してデータを定義、クエリ、および操作します。 + +## レプリケーション + +データベースのレプリケーションでは、信頼性、可用性、およびフォールトトレランスを確保するために、複数のマシンまたは場所にデータをコピーして配布します。 + +## 線形化可能性 + +線形化可能性は、分散システムにおける強力な一貫性モデルであり、操作はリアルタイム順序付けと一致する順序でアトミックに発生し、各操作は開始から終了までの間に有効になります。 + +## 同時実行制御 + +データベースの同時実行制御は、通常、ロックやタイムスタンプ順序付けなどのメカニズムを通じて、データの不整合を引き起こすことなく複数のトランザクションが同時に発生することを保証します。 + +## 読み取りコミット分離 + +読み取りコミット分離は、各トランザクションがコミットされたデータのみを参照する分離レベルです。ダーティリードは防止されますが、反復不可能な読み取りは許可されます。 + +## 異種データベース + +異種データベースとは、異なるデータモデル、クエリ言語、およびトランザクションメカニズムを持つ可能性のある、異なるデータベーステクノロジで構成されたシステムのことです。 + +## 2フェーズコミット + +2フェーズコミットは、分散トランザクションのすべての参加者がトランザクションをコミットまたはロールバックし、システム間の一貫性を保証するためのプロトコルです。 + +## ACID + +原子性、一貫性、独立性、耐久性 (ACID) は、データベーストランザクションが確実に処理され、エラーやシステム障害が発生した場合でも整合性が維持されるようにする一連の特性です。 + +## HTAP + +ハイブリッドトランザクション/分析処理 (HTAP) とは、トランザクションワークロードと分析ワークロードの両方を同じデータセットで同時に処理できるシステムのことです。これにより、個別のデータベースが不要になります。 + +## JDBC + +Java Database Connectivity (JDBC) は、Java アプリケーションがデータベースと対話できるようにする API であり、リレーショナルデータベースでデータをクエリおよび更新するための方法を提供します。 + +## NoSQL データベース + +NoSQL データベースは、ドキュメント、キー値、ワイドカラム、グラフストアなどの特定のデータモデル向けに設計された非リレーショナルデータベースであり、大規模な分散データの処理によく使用されます。 + +## Paxos + +Paxos は、ノード障害が発生した場合でも合意を得るために分散システムで使用されるプロトコルのファミリーです。 + +## PITR + +ポイントインタイムリカバリ (PITR) を使用すると、通常はデータ破損などの意図しないイベントが発生した後に、データベースを特定の時間に以前の状態に復元できます。 + +## Saga + +Saga パターンは、分散システムで長時間実行されるトランザクションを管理する方法です。トランザクション内の各操作の後に、障害が発生した場合の補償アクションが続きます。 + +## TCC + +Try-Confirm/Cancel (TCC) は、操作を3つのステップに分割し、複数のシステム間での調整と回復を可能にする分散トランザクションのパターンです。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/conf/scalar-loki-stack-custom-values.yaml b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/conf/scalar-loki-stack-custom-values.yaml new file mode 100644 index 00000000..997537a5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/conf/scalar-loki-stack-custom-values.yaml @@ -0,0 +1,80 @@ +promtail: + config: + snippets: + # -- `scapeConfigs` is exactly the part of https://grafana.com/docs/loki/latest/clients/promtail/configuration/#scrape_configs + # -- The value will be created as a Kubernetes ConfigMap and then mounted to the Promtail Pod. + # -- Not really need to change this value. It's set to scrape all logs of ScalarDL/DB Pods by using regular expression. + scrapeConfigs: | + # -- the `scalardl` job scrapes all the logs from Scalar Ledger Pods, Scalar Auditor Pods, and the corresponding Envoy Pods + - job_name: scalardl + pipeline_stages: + - docker: {} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: keep + regex: (.*)scalardl-(.+) + source_labels: + - pod + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + # -- the `scalardb` job scrapes all the logs of ScalarDB Server Pods and the corresponding Envoy Pods + - job_name: scalardb + pipeline_stages: + - docker: {} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: keep + regex: (.*)scalardb-(.+) + source_labels: + - pod + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ + # -- the `scalar-admin-for-kubernetes` job scrapes all the logs of Scalar Admin for Kubernetes Pods + - job_name: scalar-admin-for-kubernetes + pipeline_stages: + - docker: {} + - cri: {} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: + - __meta_kubernetes_pod_node_name + target_label: __host__ + - action: replace + source_labels: + - __meta_kubernetes_pod_name + target_label: pod + - action: keep + regex: (.*)scalar-admin-for-kubernetes-(.+) + source_labels: + - pod + - replacement: /var/log/pods/*$1/*.log + separator: / + source_labels: + - __meta_kubernetes_pod_uid + - __meta_kubernetes_pod_container_name + target_label: __path__ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/conf/scalar-prometheus-custom-values.yaml b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/conf/scalar-prometheus-custom-values.yaml new file mode 100644 index 00000000..816ead1b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/conf/scalar-prometheus-custom-values.yaml @@ -0,0 +1,167 @@ +defaultRules: + # -- Default PrometheusRules are not enabled + create: false + +alertmanager: + # -- alertmanager is enabled + enabled: true + + # -- Only check own namespace + alertmanagerConfigNamespaceSelector: null + +grafana: + # -- grafana is enabled + enabled: true + + # -- Default Grafana dashboards are not enabled + defaultDashboardsEnabled: false + + sidecar: + datasources: + enabled: true + defaultDatasourceEnabled: false + label: grafana_datasource + labelValue: "1" + dashboards: + enabled: true + label: grafana_dashboard + labelValue: "1" + # -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + + # -- Grafana's primary configuration + grafana.ini: + security: + # -- allow Grafana to be embedded (not set the X-Frame-Options header) + # -- If you use Scalar Manager, you need to set allow_embedding to true. + # -- https://grafana.com/docs/grafana/latest/administration/configuration/#allow_embedding + allow_embedding: false + + # -- Additional data source configurations + additionalDataSources: + - name: Prometheus + type: prometheus + uid: prometheus + url: http://scalar-monitoring-kube-pro-prometheus:9090/ + access: proxy + editable: false + isDefault: false + jsonData: + timeInterval: 30s + # - name: Loki + # type: loki + # uid: loki + # url: http://scalar-logging-loki:3100/ + # access: proxy + # editable: false + # isDefault: false + +kubeApiServer: + # -- Scraping kube-apiserver is disabled + enabled: false + +kubeControllerManager: + # -- Scraping kube-controller-manager is disabled + enabled: false + +coreDns: + # -- Scraping CoreDNS is disabled + enabled: false + +kubeEtcd: + # -- Scraping etcd is disabled + enabled: false + +kubeScheduler: + # -- Scraping kube-scheduler is disabled + enabled: false + +kubeProxy: + # -- Scraping kube-proxy is disabled + enabled: false + +kubelet: + # -- Scraping kubelet is disabled + enabled: false + +kubeStateMetrics: + # -- kube-state-metrics is disabled + enabled: false + +nodeExporter: + # -- node-exporter is disabled + enabled: false + +prometheusOperator: + # -- Prometheus Operator is enabled + enabled: true + + admissionWebhooks: + patch: + # -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + + namespaces: + # -- Only check own namespace + releaseNamespace: true + + kubeletService: + # -- kubelet service for scraping kubelets is disabled + enabled: false + + ## -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + +prometheus: + # -- Prometheus is enabled + enabled: true + + prometheusSpec: + # -- All PrometheusRules are enabled + ruleSelectorNilUsesHelmValues: false + + # -- Only check own namespace + ruleNamespaceSelector: {} + + # -- All ServiceMonitors are enabled + serviceMonitorSelectorNilUsesHelmValues: false + + # -- Only check own namespace + serviceMonitorNamespaceSelector: {} + + # -- All PodMonitors are enabled + podMonitorSelectorNilUsesHelmValues: false + + # -- Only check own namespace + podMonitorNamespaceSelector: {} + + # -- All Probes are enabled + probeSelectorNilUsesHelmValues: false + + # -- Only check own namespace + probeNamespaceSelector: {} + + ## -- Resource limits & requests + resources: {} + # requests: + # memory: 400Mi + + ## -- Prometheus StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/storage.md + storageSpec: {} + ## Using PersistentVolumeClaim + ## + # volumeClaimTemplate: + # spec: + # storageClassName: gluster + # accessModes: ["ReadWriteOnce"] + # resources: + # requests: + # storage: 50Gi + # selector: {} diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-envoy.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-envoy.mdx new file mode 100644 index 00000000..5bb4ae66 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-envoy.mdx @@ -0,0 +1,393 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar Envoy のカスタム値ファイルを構成する + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +このドキュメントでは、Scalar Envoy チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、Scalar Envoy チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/envoy/README.md) を参照してください。 + +## Scalar Envoy チャートのカスタム値を構成する + +Scalar Envoy チャートは他のチャート (scalardb、scalardb-cluster、scalardl、scalardl-audit) 経由で使用されるため、Scalar Envoy チャートのカスタム値ファイルを作成する必要はありません。Scalar Envoy を設定したい場合は、`envoy.*` 設定を他のチャートに追加する必要があります。 + +たとえば、ScalarDB Server 用に Scalar Envoy を構成する場合は、次のように ScalarDB のカスタム値ファイルでいくつかの Scalar Envoy 構成を構成できます。 + +* 例 (scalardb-custom-values.yaml) + ```yaml + envoy: + configurationsForScalarEnvoy: + ... + + scalardb: + configurationsForScalarDB: + ... + ``` + +## 必要な構成 + +### サービス構成 + +Kubernetes のサービスリソースタイプを指定するには、`envoy.service.type` を設定する必要があります。 + +Kubernetes クラスターの内部からのみクライアントリクエストを受け入れる場合 (たとえば、クライアントアプリケーションを Scalar 製品と同じ Kubernetes クラスターにデプロイする場合)、`envoy.service.type` を `ClusterIP` に設定できます。この構成では、クラウドサービスプロバイダーが提供するロードバランサーは作成されません。 + +```yaml +envoy: + service: + type: ClusterIP +``` + +クラウドサービスプロバイダーが提供するロードバランサーを使用して、Kubernetes クラスターの外部からのクライアントリクエストを受け入れる場合は、`envoy.service.type` を `LoadBalancer` に設定する必要があります。 + +```yaml +envoy: + service: + type: LoadBalancer +``` + +アノテーションを介してロードバランサを設定したい場合は、アノテーションを `envoy.service.annotations` に設定することもできます。 + +```yaml +envoy: + service: + type: LoadBalancer + annotations: + service.beta.kubernetes.io/aws-load-balancer-internal: "true" + service.beta.kubernetes.io/aws-load-balancer-type: "nlb" +``` + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッドリソースを制御したい場合は、`envoy.resources` を使用できます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +envoy: + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`envoy.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +envoy: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb-cluster + - key: app.kubernetes.io/app + operator: In + values: + - envoy + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus および Grafana 構成 (実稼働環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して Scalar Envoy ポッドを監視する場合は、`envoy.grafanaDashboard.enabled`、`envoy.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。`envoy.prometheusRule.enabled` と `envoy.prometheusRule.enabled`。 + +```yaml +envoy: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +Scalar Envoy ポッドに SecurityContext と PodSecurityContext を設定する場合は、`envoy.securityContext` と `envoy.podSecurityContext` を使用できます。 + +Kubernetes の SecurityContext や PodSecurityContext と同じ構文を使用して設定できます。したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +envoy: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### 画像構成 (デフォルト値を推奨) + +イメージリポジトリとバージョンを変更したい場合は、`envoy.image.repository` を使用して、プルする Scalar Envoy コンテナイメージのコンテナリポジトリ情報を指定できます。 + +```yaml +envoy: + image: + repository: +``` + +AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。 + +* [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) +* [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +### TLS 構成 (環境に応じてオプション) + +以下の通信で TLS を有効にできます。 + +- クライアントと Scalar Envoy 間のダウンストリーム接続。 +- Scalar Envoy と Scalar 製品間のアップストリーム接続。 + +さらに、次の2つの観点からいくつかのオプションがあります。 + +1. 秘密鍵と証明書ファイルの管理 + 1. [cert-manager](https://cert-manager.io/docs/) を使用して秘密鍵と証明書ファイルを自動的に管理します。 + - メンテナンスや運用のコストを削減できます。たとえば、cert-manager は証明書の有効期限が切れる前に自動的に更新し、Scalar Helm Chart は秘密鍵と証明書ファイルを Scalar 製品ポッドに自動的にマウントします。 + - cert-manager がサポートしていない CA は使用できません。サポートされている発行元は [cert-manager ドキュメント](https://cert-manager.io/docs/configuration/issuers/)で確認できます。 + 1. 秘密鍵と証明書ファイルを手動で管理します。 + - ご自身のお好みの方法で、秘密鍵と証明書ファイルを発行・管理することができます。 + - cert-manager がサポートしていない場合でも、任意の証明書を使用できます。 + - 証明書の有効期限が切れた場合は、シークレットリソースを更新する必要があります。 +1. 証明書の種類 + 1. 信頼できる CA (サードパーティによる署名付き証明書) を使用します。 + - サードパーティの証明書発行者からの信頼できる証明書を使用できます。 + - パケットを暗号化できます。 + - 信頼できる証明書を発行するには費用を支払う必要があります。 + 1. 自己署名証明書を使用します。 + - 証明書発行にかかるコストを削減できます。 + - 証明書の信頼性は信頼できる CA よりも低くなりますが、パケットを暗号化できます。 + +つまり、次の4つのオプションがあります。 + +1. 自動管理で自己署名 CA を使用します。 +1. 自動管理で信頼できる CA を使用します。 +1. 手動管理で自己署名 CA を使用します。 +1. 手動管理で信頼できる CA を使用します。 + +セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を使用して
    秘密鍵と証明書ファイルを
    自動的に管理しますか?] + A -->|はい、証明書を自動的に
    管理したいです。| B + A -->|いいえ、証明書は自分で手動で
    管理したいです。| C + B[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + C[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + B -->|自己署名 CA を
    使用したいです。| D + B -->|信頼できる CA
    を使用したいです。| E + C -->|自己署名 CA
    を使用したいです。| F + C -->|信頼できる CA
    を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + E[cert-manager で信頼できる CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
    生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
    第三者によって生成された
    信頼できる証明書を使用します。] +``` + +#### ダウンストリーム接続で TLS を有効にする + +次の設定により、ダウンストリーム接続で TLS を有効にできます。 + +```yaml +envoy: + tls: + downstream: + enabled: true +``` + +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +envoy: + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" +``` + +この場合、次のように山括弧内の内容を置き換えて、Scalar Envoy の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic envoy-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic envoy-tls-key --from-file=tls.key=/ -n +``` + +秘密鍵と証明書ファイルの準備方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルの作成方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx)を参照してください。 + + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/)および[発行者構成](https://cert-manager.io/docs/configuration/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +envoy: + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: + dnsNames: + - envoy.scalar.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。cert-manager を使用すると、秘密鍵と証明書ファイルを手動でマウントする必要がなくなります。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密鍵と自己署名証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント [インストール](https://cert-manager.io/docs/installation/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +envoy: + tls: + downstream: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - envoy.scalar.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +#### アップストリーム接続で TLS を有効にする + +次の設定により、アップストリーム接続で TLS を有効にできます。 + +```yaml +envoy: + tls: + upstream: + enabled: true +``` + +また、アップストリーム Scalar 製品のルート CA 証明書ファイルを設定する必要があります。どのアプローチを取るべきかを判断するには、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を利用しますか?] + A -->|はい| B + A -->|いいえ| D + B[cert-manager で自己証明書を利用しますか?] + B -->|いいえ| C[cert-manager を使用して Envoy とアップストリームの Scalar 製品に同じ 信頼できる CAを利用しますか?] + C -->|いいえ| D[手動で アップストリームのScalar製品のルートCA証明書を設定する必要があります。] + C ---->|Yes| E[Scalar Helm Chart はルート CA 証明書を自動的に設定します。`envoy.tls.upstream.caRootCertSecret` を明示的に設定する必要はありません。] + B ---->|Yes| E +``` + +##### アップストリーム Scalar 製品のルート CA 証明書ファイルを設定する + +次の構成を使用して、ルート CA 証明書ファイルを設定できます。 + +```yaml +envoy: + tls: + upstream: + enabled: true + caRootCertSecret: "envoy-upstream-scalardb-cluster-root-ca" +``` + +この場合、次のように CA 証明書ファイルを含むシークレットリソースを作成する必要があります。使用するアップストリーム (ScalarDB Cluster、ScalarDL Ledger、または ScalarDL Auditor) に基づいてルート CA 証明書ファイルを設定する必要があります。説明されているように、山括弧内の内容を必ず置き換えてください。 + + + + ```console + kubectl create secret generic envoy-upstream-scalardb-cluster-root-ca --from-file=ca.crt=/ -n + ``` + + + ```console + kubectl create secret generic envoy-upstream-scalardl-ledger-root-ca --from-file=ca.crt=/ -n + ``` + + + ```console + kubectl create secret generic envoy-upstream-scalardl-auditor-root-ca --from-file=ca.crt=/ -n + ``` + + + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品のキーと証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx)を参照してください。 + +##### TLS通信のカスタム権限を設定する + +`envoy.tls.upstream.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、使用している製品に応じて、`scalardbCluster.tls.certChainSecret`、`ledger.tls.certChainSecret`、または `auditor.tls.certChainSecret` を使用して設定した証明書チェーンファイルに示されているホスト名を指定できます。Envoy はこの値を使用して、ScalarDB Cluster または ScalarDL との TLS 接続の証明書を検証します。 + +```yaml +envoy: + tls: + upstream: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" +``` + +### レプリカ構成 (環境に応じてオプション) + +Scalar Envoy のレプリカ (ポッド) の数は、`envoy.replicaCount` を使用して指定できます。 + +```yaml +envoy: + replicaCount: 3 +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`envoy.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +envoy: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-file.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-file.mdx new file mode 100644 index 00000000..b2ddeb0c --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-file.mdx @@ -0,0 +1,25 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar Helm Charts のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar Helm Chart を使用して Scalar 製品をデプロイする場合は、環境に基づいてカスタム値ファイルを準備する必要があります。各製品のカスタム値ファイルの作成方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDB Cluster](configure-custom-values-scalardb-cluster.mdx) +* [ScalarDB Analytics with PostgreSQL](configure-custom-values-scalardb-analytics-postgresql.mdx) +* [ScalarDL Ledger](configure-custom-values-scalardl-ledger.mdx) +* [ScalarDL Auditor](configure-custom-values-scalardl-auditor.mdx) +* [ScalarDL Schema Loader](configure-custom-values-scalardl-schema-loader.mdx) +* [Scalar Admin for Kubernetes](configure-custom-values-scalar-admin-for-kubernetes.mdx) +* [Scalar Manager](configure-custom-values-scalar-manager.mdx) +* [Envoy](configure-custom-values-envoy.mdx) +* [[Deprecated] ScalarDB Server](configure-custom-values-scalardb.mdx) +* [[Deprecated] ScalarDB GraphQL](configure-custom-values-scalardb-graphql.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx new file mode 100644 index 00000000..a25f7733 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalar-admin-for-kubernetes.mdx @@ -0,0 +1,140 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar Admin for Kubernetes のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Admin for Kubernetes チャートのカスタム値ファイルを作成する方法について説明します。パラメーターの詳細については、Scalar Admin for Kubernetes チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalar-admin-for-kubernetes/README.md) を参照してください。 + +## 必要な構成 + +このセクションでは、Scalar Admin for Kubernetes のカスタム値ファイルをセットアップするときに必要な構成について説明します。 + +### フラグ設定 + +Scalar Admin for Kubernetes を実行するには、配列として `scalarAdminForKubernetes.commandArgs` にいくつかのオプションを指定する必要があります。オプションの詳細については、Scalar Admin for Kubernetes の [README](https://github.com/scalar-labs/scalar-admin-for-kubernetes/blob/main/README.md) を参照してください。 + +```yaml +scalarAdminForKubernetes: + commandArgs: + - -r + - + - -n + - + - -d + - + - -z + - +``` + +## オプションの構成 + +このセクションでは、Scalar Admin for Kubernetes のカスタム値ファイルをセットアップするときのオプションの構成について説明します。 + +### CronJob 構成 (環境に応じてオプション) + +デフォルトでは、Scalar Admin for Kubernetes チャートは、Scalar Admin for Kubernetes CLI ツールを1回実行するための [Job](https://kubernetes.io/docs/concepts/workloads/controllers/job/) リソースを作成します。[CronJob](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) を使用して Scalar Admin for Kubernetes CLI ツールを定期的に実行する場合は、`scalarAdminForKubernetes.jobType` を `cronjob` に設定できます。また、CronJob リソースのいくつかの構成を設定することもできます。 + +```yaml +scalarAdminForKubernetes: + cronJob: + timeZone: "Etc/UTC" + schedule: "0 0 * * *" +``` + +### リソース構成 (実稼働環境で推奨) + +Kubernetes でリクエストと制限を使用してポッドリソースを制御するには、`scalarAdminForKubernetes.resources` を使用できます。 + +Kubernetes のリクエストと制限と同じ構文を使用して、リクエストと制限を構成できます。Kubernetes のリクエストと制限の詳細については、[Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +scalarAdminForKubernetes: + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +Scalar Admin for Kubernetes ポッドの SecurityContext と PodSecurityContext を設定するには、`scalarAdminForKubernetes.securityContext` と `scalarAdminForKubernetes.podSecurityContext` を使用できます。 + +Kubernetes の SecurityContext および PodSecurityContext と同じ構文を使用して、SecurityContext および PodSecurityContext を構成できます。Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、[Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalarAdminForKubernetes: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### 画像構成 (デフォルト値を推奨) + +イメージリポジトリを変更する場合は、`scalarAdminForKubernetes.image.repository` を使用して、プルする Scalar Admin for Kubernetes イメージのコンテナリポジトリ情報を指定できます。 + +```yaml +scalarAdminForKubernetes: + image: + repository: +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalarAdminForKubernetes.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalarAdminForKubernetes: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-analytics-postgresql +``` + +### TLS 構成 (環境に応じてオプション) + +次のような設定を実施することで、Scalar Admin for Kubernetes と一時停止ターゲット (ScalarDB Cluster または ScalarDL) の間での TLS 通信を有効にすることができます。 + +```yaml +scalarAdminForKubernetes: + commandArgs: + - (omit other options) + - --tls + - --ca-root-cert-path + - /tls/certs/ca.crt + - --override-authority + - cluster.scalardb.example.com +``` + +シークレットリソースを使用して、`/tls/certs/ca.crt` ファイルをポッドにマウントできます。`scalarAdminForKubernetes.tls.caRootCertSecret` にルート CA 証明書ファイルを含むシークレットリソースの名前を指定してください。 + +```yaml +scalarAdminForKubernetes: + tls: + caRootCertSecret: "scalar-admin-tls-ca" +``` + +この場合、次のように、一時停止ターゲット (ScalarDB Cluster または ScalarDL) のルート CA 証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalar-admin-tls-ca --from-file=ca.crt=/path/to/your/ca/certificate/file -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalar-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalar-manager.mdx new file mode 100644 index 00000000..94eb109d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalar-manager.mdx @@ -0,0 +1,133 @@ +--- +tags: + - Enterprise Option +displayed_sidebar: docsJapanese +--- + +# Scalar Manager のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Manager チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、Scalar Manager チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalar-manager/README.md) を参照してください。 + +## 必要な構成 + +### サービス構成 + +Kubernetes のサービスリソースタイプを指定するには、`service.type` を設定する必要があります。プロバイダーが提供するロードバランサーを使用する場合は、`service.type` を `LoadBalancer` に設定する必要があります。 + +```yaml +service: + type: LoadBalancer +``` + +#### Scalar Manager の公開に関するセキュリティ上の懸念 + +`service.type` を `LoadBalancer` に設定すると、Scalar Manager がクラスター外に公開されるため、セキュリティ上の懸念が生じる可能性があります。 + +現在、Scalar Manager には認証やアクセス制御のメカニズムがありません。 +このため、適切なセキュリティ対策なしに Scalar Manager を直接パブリックネットワークに公開すると、不正なアクションにつながる可能性があります。 +これは、Scalar Manager が Scalar 製品の一時停止ジョブのスケジューリングなどの機能を提供しているためです。 + +外部アクセスが必要な場合は、プライベートネットワークを使用するか、Kubernetes クラスターへのネットワークアクセスを適切に設定することをお勧めします。 + +### 画像構成 + +Scalar Manager のイメージをプルできるように、`api.image.repository` と `web.image.repository` を設定する必要があります。 + +```yaml +api: + image: + repository: +web: + image: + repository: +``` + +## オプション設定 +このセクションでは、Scalar Manager用のカスタム値ファイルを設定する際のオプション設定について説明します。 + +### Scalar Manager 設定 (環境に応じてオプション) +`api.applicationProperties` カスタム値を上書きして、Scalar Managerのデフォルト設定を変更できます。 + +```yaml +api: + applicationProperties: | + grafana.kubernetesServiceLabelName="app.kubernetes.io/name" + grafana.kubernetesServiceLabelValue="grafana" + grafana.kubernetesServicePortName="http-web" +``` + +Scalar Managerには、例えばScalar製品のデプロイメントやクラスター内のPrometheusおよびLokiサービスを検出するためのデフォルト設定があります。 +ほとんどのユースケースでは、特にkube-prometheus-stackのデプロイガイドやloki-stackのデプロイガイドに従っている場合、デフォルト設定を変更する必要はありません。 + +#### api.applicationProperties で設定できるプロパティ + +Scalar Manager の設定は、Java アプリケーションプロパティの形式で、key=valueのペアです。 +これらのアプリケーションプロパティは、Scalar Manager Helm Chart の api.applicationProperties カスタム値を使用して設定できます。 + +|名前|説明|デフォルト値| +|---|---|---| +|`grafana.kubernetesServiceLabelName`|Kubernetes で Grafana サービスを検出するために使用されるラベル名|`app.kubernetes.io/name`| +|`grafana.kubernetesServiceLabelValue`|`grafana.kubernetesServiceLabelName` に対応するラベル値|`grafana`| +|`grafana.kubernetesServicePortName`|Kubernetes で Grafana サービスポートを検出するために使用されるポート名|`http-web`| +|`prometheus.kubernetesServiceLabelName`|Kubernetes で Prometheus サービスを検出するために使用されるラベル名|`app`| +|`prometheus.kubernetesServiceLabelValue`|`prometheus.kubernetesServiceLabelName` に対応するラベル値|`kube-prometheus-stack-prometheus`| +|`prometheus.kubernetesServicePortName`|Kubernetes で Prometheus サービスポートを検出するために使用されるポート名|`http-web`| +|`loki.kubernetesServiceLabelName`|Kubernetes で Prometheus サービスを検出するために使用されるラベル名|`app`| +|`loki.kubernetesServiceLabelValue`|`loki.kubernetesServiceLabelName` に対応するラベル値|`loki`| +|`loki.kubernetesServicePortName`|Kubernetes で Loki サービスポートを検出するために使用されるポート名|`http-metrics`| +|`helm.scalarRepositoryName`|Scalar Helm リポジトリを表すために使用される名前|`scalar-labs`| +|`helm.scalarRepositoryUrl`|Scalar Helm リポジトリの URL|`https://scalar-labs.github.io/helm-charts`| +|`helm.scalarAdminForKubernetesChartName`|Scalar Helm リポジトリにおける Kubernetes 用 Scalar Admin の Helm Chart 名|`scalar-admin-for-kubernetes`| +|`helm.scalarAdminForKubernetesChartVersion`|Kubernetes 用 Scalar Admin Helm Chart のバージョン|`1.0.0`| +|`configMapNamespace`|Scalar Manager が使用する ConfigMap がデプロイされる名前空間|`default`| +|`configMapName`|Scalar Manager が使用する ConfigMap の名前|`scalar-manager-metadata`| +|`paused-state-retention.storage`|一時停止状態を保持するために使用されるストレージタイプ|`configmap`| +|`paused-state-retention.max-number`|Scalar Manager が保持する一時停止状態の最大数|`100`| + +#### サービスディスカバリー + +Scalar Manager はラベルセレクターを使用して、Kubernetes 内の Grafana、Prometheus、Loki サービスを検出し、ポート名を使用してそれらに接続します。`*.kubernetesServiceLabelName`、`*.kubernetesServiceLabelValue`、`*.kubernetesServicePortName` の設定を変更することで、ラベルセレクターとポート名を修正できます。 + +一般的に、これらの設定を変更する必要はありません。ただし、Grafana、Prometheus、または Loki サービスの Helm Chart をインストールする際にラベルやポート名をカスタマイズした場合は、これらの設定をカスタマイズに合わせて調整する必要があります。 + +##### Kubernetes 用 Scalar Admin の使用 + +Scalar Manager は、[Kubernetes 用 Scalar Admin](https://github.com/scalar-labs/scalar-admin-for-kubernetes) Helm Chart をインストールして、Scalar製品の一時停止ジョブのスケジューリングや実行を行います。以下の設定を使用して、Scalar Helm リポジトリをセットアップし、Helm Chart を配置します: + +- `helm.scalarRepositoryName` +- `helm.scalarRepositoryUrl` +- `helm.scalarAdminForKubernetesChartName` +- `helm.scalarAdminForKubernetesChartVersion` + +:::note + +特別な理由がない限り、これらの設定を変更することはお勧めしません。 + +::: + +##### Scalar Manager が使用する ConfigMap + +Scalar Manager は、デフォルトのアプリケーションプロパティなどのメタデータを保存するために ConfigMap を使用します。ConfigMap は以下の設定で指定された名前空間にデプロイされます: + +- `configMapNamespace` +- `configMapName` + +:::note + +競合する ConfigMap を使用している場合など、特別な理由がない限り、これらの設定を変更することはお勧めしません。 + +::: + +##### 一時停止状態の保持 + +Scalar Manager は、Scalar 製品の一時停止状態をストレージに保持します。現在、Scalar Manager はストレージとして ConfigMap のみを使用できるため、`paused-state-retention.storage` 設定は `configmap` に設定する必要があります。`paused-state-retention.max-number` 設定を設定することで、Scalar Manager が保持する一時停止状態の最大数を調整できます。 + +:::warning + +ストレージに ConfigMap を使用する場合、ConfigMap のサイズ制限があるため、`paused-state-retention.max-number` に大きな値を設定することはお勧めしません。ConfigMap に保存されるデータは 1MiB を超えることができないため、Scalar Manager が保持できる一時停止状態の最大数は約3,000です。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx new file mode 100644 index 00000000..0c6b8bf9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-analytics-postgresql.mdx @@ -0,0 +1,193 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics with PostgreSQL のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、PostgreSQL チャートを使用した ScalarDB Analytics のカスタム値ファイルを作成する方法について説明します。パラメーターの詳細については、ScalarDB Analytics with PostgreSQL チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-analytics-postgresql/README.md) を参照してください。 + +## 必要な構成 + +このセクションでは、ScalarDB Analytics with PostgreSQL のカスタム値ファイルを設定するときに必要な構成について説明します。 + +### データベース構成 + +ScalarDB Analytics with PostgreSQL 経由でデータベースにアクセスするには、`database.properties` ファイルの構成に使用するのと同じ構文に従って、`scalardbAnalyticsPostgreSQL.databaseProperties` パラメータを設定する必要があります。設定の詳細については、[ScalarDB Configurations](https://scalardb.scalar-labs.com/docs/latest/configurations/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + databaseProperties: | + scalar.db.contact_points=localhost + scalar.db.username=${env:SCALAR_DB_USERNAME:-} + scalar.db.password=${env:SCALAR_DB_PASSWORD:-} + scalar.db.storage=cassandra +``` + +### データベース名前空間の構成 + +ScalarDB Analytics with PostgreSQL 経由で読み取りたいテーブルを含むすべてのデータベース名前空間に `schemaImporter.namespaces` を設定する必要があります。 + +```yaml +schemaImporter: + namespaces: + - namespace1 + - namespace2 + - namespace3 +``` + +## オプションの構成 + +このセクションでは、ScalarDB Analytics with PostgreSQL のカスタム値ファイルを設定する場合のオプションの構成について説明します。 + +### リソース構成 (実稼働環境で推奨) + +Kubernetes でリクエストと制限を使用してポッドリソースを制御するには、`scalardbAnalyticsPostgreSQL.resources` を使用できます。 + +Kubernetes のリクエストと制限と同じ構文を使用して、リクエストと制限を構成できます。Kubernetes のリクエストと制限の詳細については、[Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + resources: + requests: + cpu: 1000m + memory: 2Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `scalardbAnalyticsPostgreSQL.databaseProperties` で資格情報などのいくつかのプロパティを設定するには、`scalardbAnalyticsPostgreSQL.secretName` を使用していくつかの資格情報を含むシークレットリソースを指定します。 + +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定できるため、ポッドの安全性が高まります。 + +シークレットリソースの使用方法の詳細については、[シークレットリソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法(./use-secret-for-credentials.mdx)を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + secretName: "scalardb-analytics-postgresql-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes でアフィニティとアンチアフィニティを使用してポッドのデプロイメントを制御するには、`scalardbAnalyticsPostgreSQL.affinity` を使用できます。 + +Kubernetes のアフィニティとアンチアフィニティと同じ構文を使用して、アフィニティとアンチアフィニティを構成できます。Kubernetes でのアフィニティの構成の詳細については、[Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb-analytics-postgresql + - key: app.kubernetes.io/app + operator: In + values: + - scalardb-analytics-postgresql + topologyKey: kubernetes.io/hostname +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +PostgreSQL ポッドを使用して ScalarDB Analytics の SecurityContext と PodSecurityContext を設定するには、`scalardbAnalyticsPostgreSQL.securityContext`、`scalardbAnalyticsPostgreSQL.podSecurityContext`、および `schemaImporter.securityContext` を使用できます。 + +Kubernetes の SecurityContext および PodSecurityContext と同じ構文を使用して、SecurityContext および PodSecurityContext を構成できます。Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、[Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + podSecurityContext: + fsGroup: 201 + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + runAsUser: 999 + allowPrivilegeEscalation: false + +schemaImporter: + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### 画像構成 (デフォルト値を推奨) + +イメージリポジトリを変更する場合は、`scalardbAnalyticsPostgreSQL.image.repository` と `schemaImporter.image.repository` を使用して、プルする ScalarDB Analytics with PostgreSQL および Schema Importer イメージのコンテナリポジトリ情報を指定できます。 + +```yaml +scalardbAnalyticsPostgreSQL: + image: + repository: + +schemaImporter: + image: + repository: +``` + +### レプリカ構成 (環境に応じてオプション) + +`scalardbAnalyticsPostgreSQL.replicaCount` を使用して、PostgreSQL レプリカ (ポッド) を使用した ScalarDB Analytics の数を指定できます。 + +```yaml +scalardbAnalyticsPostgreSQL: + replicaCount: 3 +``` + +### PostgreSQL データベース名の構成 (環境に応じてオプション) + +PostgreSQL で作成するデータベース名を指定できます。Schema Importer は、ScalarDB Analytics with PostgreSQL のビューなど、いくつかのオブジェクトをこのデータベースに作成します。 + +```yaml +scalardbAnalyticsPostgreSQL: + postgresql: + databaseName: scalardb +``` + +### PostgreSQL スーパーユーザーのパスワード設定 (環境に応じてオプション) + +PostgreSQL のスーパーユーザーのパスワードを含むシークレット名を指定できます。 + +```yaml +scalardbAnalyticsPostgreSQL: + postgresql: + secretName: scalardb-analytics-postgresql-superuser-password +``` + +:::note + +ScalarDB Analytics with PostgreSQL をデプロイする前に、この名前 (デフォルトでは `scalardb-analytics-postgresql-superuser-password`) でシークレットリソースを作成する必要があります。詳細については、[シークレットリソースを準備する](how-to-deploy-scalardb-analytics-postgresql.mdx#シークレットリソースを準備する)を参照してください。 + +::: + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes でテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalardbAnalyticsPostgreSQL.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalardbAnalyticsPostgreSQL: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-analytics-postgresql +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-cluster.mdx new file mode 100644 index 00000000..37cc07f1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-cluster.mdx @@ -0,0 +1,402 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster のカスタム値ファイルを構成する + +このドキュメントでは、ScalarDB Cluster チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細については、ScalarDB Cluster チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-cluster/README.md) を参照してください。 + +## 必要な構成 + +### 画像構成 + +`scalardbCluster.image.repository`を設定する必要があります。コンテナーリポジトリからイメージをプルできるように、必ず ScalarDB Cluster コンテナーイメージを指定してください。 + +```yaml +scalardbCluster: + image: + repository: +``` + +### データベース構成 + +`scalardbCluster.scalardbClusterNodeProperties` を設定する必要があります。このパラメータには `scalardb-cluster-node.properties` を設定してください。ScalarDB Cluster の構成の詳細については、[ScalarDB Cluster Configurations](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-configurations/) を参照してください。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + scalar.db.cluster.membership.type=KUBERNETES + scalar.db.cluster.membership.kubernetes.endpoint.namespace_name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME} + scalar.db.cluster.membership.kubernetes.endpoint.name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME} + scalar.db.contact_points=localhost + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + scalar.db.storage=cassandra +``` + +Scalar Helm Chart を使用して Kubernetes 環境に ScalarDB Cluster をデプロイする場合は、次の3つのプロパティを常に設定する必要があることに注意してください。これらのプロパティは固定値です。プロパティは個別の環境に依存しないため、以下の値をコピーして `scalardbCluster.scalardbClusterNodeProperties` に貼り付けることで同じ値を設定できます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + scalar.db.cluster.membership.type=KUBERNETES + scalar.db.cluster.membership.kubernetes.endpoint.namespace_name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME} + scalar.db.cluster.membership.kubernetes.endpoint.name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME} +``` + +## オプションの構成 + +### リソース構成 (実稼働環境で推奨) + +Kubernetes でリクエストと制限を使用してポッドリソースを制御するには、`scalardbCluster.resources` を使用できます。 + +商用ライセンスの場合、Scalar 製品の各ポッドのリソースは 2vCPU / 4GB メモリに制限されることに注意してください。また、AWS Marketplace が提供する従量課金制のコンテナを使用する場合、`resources.limits` の 2vCPU / 4GB メモリ構成を超えるコンテナを実行することはできません。このリソース制限を超えると、ポッドは自動的に停止します。 + +Kubernetes のリクエストと制限と同じ構文を使用して、リクエストと制限を構成できます。Kubernetes のリクエストと制限の詳細については、[Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +scalardbCluster: + resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `scalardbCluster.scalardbClusterNodeProperties` 内の一部のプロパティ (資格情報など) を設定するには、`scalardbCluster.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定します。 + +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定できるため、ポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、[Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法](use-secret-for-credentials.mdx)を参照してください。 + +```yaml +scalardbCluster: + secretName: "scalardb-cluster-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes でアフィニティとアンチアフィニティを使用してポッドのデプロイメントを制御するには、`scalardbCluster.affinity` を使用できます。 + +Kubernetes のアフィニティとアンチアフィニティと同じ構文を使用して、アフィニティとアンチアフィニティを構成できます。Kubernetes でのアフィニティの構成の詳細については、[Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +scalardbCluster: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb-cluster + - key: app.kubernetes.io/app + operator: In + values: + - scalardb-cluster + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus および Grafana 構成 (実稼働環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDB Cluster ポッドを監視するには、`scalardbCluster.grafanaDashboard.enabled`、`scalardbCluster.serviceMonitor.enabled`、`scalardbCluster.prometheusRule.enabled` を `true` に設定します。これらの構成を `true` に設定すると、チャートは必要なリソースをデプロイし、kube-prometheus-stack が自動的に監視を開始します。 + +```yaml +scalardbCluster: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDB Cluster ポッドの SecurityContext と PodSecurityContext を設定するには、`scalardbCluster.securityContext` と `scalardbCluster.podSecurityContext` を使用できます。 + +Kubernetes の SecurityContext および PodSecurityContext と同じ構文を使用して、SecurityContext および PodSecurityContext を構成できます。Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、[Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalardbCluster: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### TLS 構成 (環境に応じてオプション) + +TLS は、次の通信で有効にできます: + +- ScalarDB Cluster ノードとクライアント間の通信。 +- すべての ScalarDB Cluster ノード間の通信 (クラスターの内部通信)。 + +さらに、証明書管理にはいくつかのオプションがあります。詳細については、[Envoy の TLS 構成](./configure-custom-values-envoy.mdx#tls-構成-環境に応じてオプション)を参照してください。 + +セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を使用して
    秘密鍵と証明書ファイルを
    自動的に管理しますか?] + A -->|はい、証明書を自動的に
    管理したいです。| B + A -->|いいえ、証明書は自分で手動で
    管理したいです。| C + B[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + C[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + B -->|自己署名 CA を
    使用したいです。| D + B -->|信頼できる CA
    を使用したいです。| E + C -->|自己署名 CA
    を使用したいです。| F + C -->|信頼できる CA
    を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + E[cert-manager で信頼できる CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
    生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
    第三者によって生成された
    信頼できる証明書を使用します。] +``` + +#### TLS を有効にする + +次の構成を使用して、すべての ScalarDB Cluster 接続で TLS を有効にできます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + ...(omit)... + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/tls/scalardb-cluster/certs/ca.crt + scalar.db.cluster.node.tls.cert_chain_path=/tls/scalardb-cluster/certs/tls.crt + scalar.db.cluster.node.tls.private_key_path=/tls/scalardb-cluster/certs/tls.key + scalar.db.cluster.tls.override_authority= + tls: + enabled: true +``` + +##### シークレットキーと証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +scalardbCluster: + tls: + enabled: true + caRootCertSecret: "scalardb-cluster-tls-ca" + certChainSecret: "scalardb-cluster-tls-cert" + privateKeySecret: "scalardb-cluster-tls-key" +``` + +この場合、次のように山括弧内の内容を置き換えて、ScalarDB Cluster の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardb-cluster-tls-ca --from-file=ca.crt=/ -n +kubectl create secret generic scalardb-cluster-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic scalardb-cluster-tls-key --from-file=tls.key=/ -n +``` + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx)を参照してください。 + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/)および[発行者構成](https://cert-manager.io/docs/configuration/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +scalardbCluster: + tls: + enabled: true + certManager: + enabled: true + issuerRef: + name: + dnsNames: + - cluster.scalardb.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密鍵と自己署名証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント[インストール](https://cert-manager.io/docs/installation/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +scalardbCluster: + tls: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - cluster.scalardb.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### TLS通信のカスタム権限を設定する + +`scalardbCluster.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`scalardbCluster.tls.certChainSecret` を使用して設定した証明書チェーンファイルで提示されるホスト名を指定できます。このチャートでは、`startupProbe` と `livenessProbe` にこの値を使用しています。 + +```yaml +scalardbCluster: + tls: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" +``` + +### レプリカ構成 (環境に応じてオプション) + +`scalardbCluster.replicaCount` を使用して、ScalarDB Cluster のレプリカ (ポッド) の数を指定できます。 + +```yaml +scalardbCluster: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDB Cluster のログレベルを変更するには、`scalardbCluster.logLevel` を使用できます。 + +```yaml +scalardbCluster: + logLevel: INFO +``` + +### GraphQL 構成 (環境に応じてオプション) + +ScalarDB Cluster で GraphQL 機能を使用するには、`scalardbCluster.graphql.enabled` を `true` に設定して、GraphQL 機能用のリソースをデプロイします。GraphQL 機能を使用する場合は、`scalardbCluster.scalardbClusterNodeProperties` で `scalar.db.graphql.enabled=true` を設定する必要があることに注意してください。 + +```yaml +scalardbCluster: + graphql: + enabled: true +``` + +また、クライアントからの GraphQL リクエストを受け入れる `Service` リソースを設定することもできます。 + +```yaml +scalardbCluster: + graphql: + service: + type: ClusterIP + annotations: {} + ports: + graphql: + port: 8080 + targetPort: 8080 + protocol: TCP +``` + +### SQL 構成 (環境に応じてオプション) + +ScalarDB Cluster で SQL 機能を使用するために、カスタム値ファイルに必要な構成はありません。この機能は、`scalardbCluster.scalardbClusterNodeProperties` で `scalar.db.sql.enabled=true` を設定することで使用できます。 + +### Scalar Envoy 構成 (環境に応じてオプション) + +ScalarDB Cluster を `indirect` モードで使用するには、次のように Envoy を有効にする必要があります。 + +```yaml +envoy: + enabled: true +``` + +また、ScalarDB Cluster のカスタム値ファイルに Scalar Envoy 構成を設定する必要があります。これは、`indirect` モードで Kubernetes 環境に ScalarDB Cluster をデプロイする場合、クライアントは gRPC リクエストのロードバランサーとして Scalar Envoy を介して ScalarDB Cluster にリクエストを送信する必要があるためです。 + +Scalar Envoy 構成の詳細については、[Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx)を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +scalardbCluster: + configurationsForScalarDbCluster: + ... +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalardbCluster.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalardbCluster: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-cluster +``` + +### 暗号化設定 (環境に応じてオプション) + +[保存時の暗号化](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/encrypt-data-at-rest/)を有効にして、バックエンドデータベース内のデータを保護できます。暗号化機能を使用する場合、次の 2つのデプロイメントオプションがあります。 + +1. HashiCorp Vault (HashiCorp Cloud Platform (HCP) Vault Dedicated) を使用して、DEK を管理および保存します。 +1. ScalarDB Cluster を使用して DEK を管理し、Kubernetes Secrets に保存します。 + +#### HashiCorp Vaultを使用する + +HashiCorp Vault (HCP Vault Dedicated) を使用してデータを暗号化できます。山括弧内の内容は説明に応じて置き換えます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + ...(omit)... + scalar.db.cluster.encryption.enabled=true + scalar.db.cluster.encryption.type=vault + scalar.db.cluster.encryption.vault.address=https://: + scalar.db.cluster.encryption.vault.token= + scalar.db.cluster.encryption.vault.transit_secrets_engine_path= + encryption: + enabled: true + type: "vault" +``` + +#### ScalarDB Cluster と Kubernetes Secrets を使用する + +ScalarDB Cluster と Kubernetes Secrets を使用して、次のようにデータを暗号化できます。山括弧内の内容は説明に応じて置き換えます。 + +```yaml +scalardbCluster: + scalardbClusterNodeProperties: | + ...(omit)... + scalar.db.cluster.encryption.enabled=true + scalar.db.cluster.encryption.type=self + scalar.db.cluster.encryption.self.kubernetes.secret.namespace_name=${env:SCALAR_DB_CLUSTER_ENCRYPTION_SELF_KUBERNETES_SECRET_NAMESPACE_NAME} + encryption: + enabled: true + type: "self" +``` + +この場合、ScalarDB Cluster の Helm Chart は名前空間情報を環境変数として自動的に設定するため、`${env:SCALAR_DB_CLUSTER_ENCRYPTION_SELF_KUBERNETES_SECRET_NAMESPACE_NAME}` を置き換える必要はありません。このため、`${env:SCALAR_DB_CLUSTER_ENCRYPTION_SELF_KUBERNETES_SECRET_NAMESPACE_NAME}` の値はそのままにしておいてかまいません。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-graphql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-graphql.mdx new file mode 100644 index 00000000..2d8ea5e2 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb-graphql.mdx @@ -0,0 +1,228 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# [非推奨] ScalarDB GraphQL のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB GraphQL サーバーは非推奨になりました。代わりに [ScalarDB Cluster](configure-custom-values-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、ScalarDB GraphQL チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、ScalarDB GraphQL チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb-graphql/README.md) を参照してください。 + +## 必要な構成 + +### イングレス構成 + +クライアントリクエストをリッスンするには `ingress` を設定する必要があります。複数の GraphQL サーバーをデプロイする場合、トランザクションを適切に処理するにはセッションアフィニティが必要です。これは、GraphQL サーバーがトランザクションをメモリ内に保持するため、継続トランザクションを使用する GraphQL クエリは、トランザクションを開始したのと同じサーバーにルーティングする必要があるためです。 + +たとえば、NGINX Ingress Controller を使用する場合、次のように Ingress 構成を設定できます。 + +```yaml +ingress: + enabled: true + className: nginx + annotations: + nginx.ingress.kubernetes.io/session-cookie-path: / + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: INGRESSCOOKIE + nginx.ingress.kubernetes.io/session-cookie-hash: sha1 + nginx.ingress.kubernetes.io/session-cookie-max-age: "300" + hosts: + - host: "" + paths: + - path: /graphql + pathType: Exact +``` + +AWSのALBを利用する場合、以下のようにIngress設定を行うことができます。 + +```yaml +ingress: + enabled: true + className: alb + annotations: + alb.ingress.kubernetes.io/scheme: internal + alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60 + alb.ingress.kubernetes.io/target-type: ip + alb.ingress.kubernetes.io/healthcheck-path: /graphql?query=%7B__typename%7D + hosts: + - host: "" + paths: + - path: /graphql + pathType: Exact +``` + +### 画像構成 + +`image.repository`を設定する必要があります。コンテナーリポジトリからイメージをプルできるように、ScalarDB GraphQL コンテナーイメージを必ず指定してください。 + +```yaml +image: + repository: +``` + +AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。 + +* [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) +* [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +### データベース構成 + +`scalarDbGraphQlConfiguration`を設定する必要があります。 + +ScalarDB Server を ScalarDB GraphQL とともに使用する場合 (推奨)、ScalarDB Server ポッドにアクセスするように構成を設定する必要があります。 + +```yaml +scalarDbGraphQlConfiguration: + contactPoints: + contactPort: 60051 + storage: "grpc" + transactionManager: "grpc" + namespaces: +``` + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッドリソースを制御したい場合は、`resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の1つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/app + operator: In + values: + - scalardb-graphql + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus/Grafana 構成 (運用環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDB GraphQL ポッドを監視する場合は、`grafanaDashboard.enabled`、`serviceMonitor.enabled`、および `prometheusRule.enabled`。 + +```yaml +grafanaDashboard: + enabled: true + namespace: monitoring +serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s +prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDB GraphQL ポッドに SecurityContext と PodSecurityContext を設定したい場合は、`securityContext` と `podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +podSecurityContext: + seccompProfile: + type: RuntimeDefault + +securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### GraphQL サーバー構成 (環境に応じてオプション) + +graphql クエリを実行するパスを変更したい場合は、`scalarDbGraphQlConfiguration.path` を使用できます。デフォルトでは、`http://:80/graphql` を使用して graphql クエリを実行できます。 + +`scalarDbGraphQlConfiguration.graphiql` を使用して [GraphiQL](https://github.com/graphql/graphiql/tree/main/packages/graphiql) を有効/無効にすることもできます。 + +```yaml +scalarDbGraphQlConfiguration: + path: /graphql + graphiql: "true" +``` + +### TLS 構成 (環境に応じてオプション) + +クライアントとイングレスの間で TLS を使用したい場合は、`ingress.tls` を使用できます。 + +秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。Ingress の Secret リソースの詳細については、公式ドキュメント [Ingress - TLS](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) を参照してください。 + +```yaml +ingress: + tls: + - hosts: + - foo.example.com + - bar.example.com + - bax.example.com + secretName: graphql-ingress-tls +``` + +### レプリカ構成 (環境に応じてオプション) + +ScalarDB GraphQL のレプリカ (ポッド) の数は、`replicaCount` を使用して指定できます。 + +```yaml +replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDB GraphQL のログレベルを変更したい場合は、`scalarDbGraphQlConfiguration.logLevel` を使用できます。 + +```yaml +scalarDbGraphQlConfiguration: + logLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容範囲を使用してポッドのデプロイメントを制御したい場合は、`tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb.mdx new file mode 100644 index 00000000..139f7bfe --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardb.mdx @@ -0,0 +1,206 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# [非推奨] ScalarDB Server のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB Server は非推奨になりました。代わりに [ScalarDB Cluster](configure-custom-values-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、ScalarDB Server チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、ScalarDB Server チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardb/README.md) を参照してください。 + +## 必要な構成 + +### Scalar Envoy 構成 + +ScalarDB Server のカスタム値ファイルに Scalar Envoy 構成を設定する必要があります。これは、ScalarDB Server を Kubernetes 環境にデプロイする場合、クライアントリクエストが gRPC リクエストのロードバランサーとして Scalar Envoy 経由で ScalarDB Server に送信されるためです。 + +Scalar Envoy 構成の詳細については、ドキュメント [Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx)を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +scalardb: + configurationsForScalarDB: + ... +``` + +### 画像構成 + +`scalardb.image.repository`を設定する必要があります。コンテナーリポジトリからイメージをプルできるように、必ず ScalarDB Server コンテナーイメージを指定してください。 + +```yaml +scalardb: + image: + repository: +``` + +AWS または Azure を使用している場合、詳細については次のドキュメントを参照してください。 + +* [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) +* [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +### データベース構成 + +`scalardb.databaseProperties` を設定する必要があります。`database.properties` をこのパラメータに設定してください。ScalarDB Server の設定の詳細については、[Configure ScalarDB Server](https://scalardb.scalar-labs.com/docs/latest/scalardb-server.mdx#configure-scalardb-server) を参照してください。 + +```yaml +scalardb: + databaseProperties: | + scalar.db.server.port=60051 + scalar.db.server.prometheus_exporter_port=8080 + scalar.db.server.grpc.max_inbound_message_size= + scalar.db.server.grpc.max_inbound_metadata_size= + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + scalar.db.storage=cassandra + scalar.db.transaction_manager=consensus-commit + scalar.db.consensus_commit.isolation_level=SNAPSHOT + scalar.db.consensus_commit.serializable_strategy= + scalar.db.consensus_commit.include_metadata.enabled=false +``` + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッドリソースを制御したい場合は、`scalardb.resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の1つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Pod およびコンテナーのリソース管理](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)を参照してください。 + +```yaml +scalardb: + resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `scalardb.databaseProperties` 内の一部のプロパティ (資格情報など) を設定したい場合は、`scalardb.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定できます。 + +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定でき、これによりポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、ドキュメント [Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法](use-secret-for-credentials.mdx)を参照してください。 + +```yaml +scalardb: + secretName: "scalardb-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`scalardb.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +scalardb: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardb + - key: app.kubernetes.io/app + operator: In + values: + - scalardb + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus/Grafana 構成 (運用環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDB Server ポッドを監視する場合は、`scalardb.grafanaDashboard.enabled`、`scalardb.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。`enabled`および `scalardb.prometheusRule.enabled`。 + +```yaml +scalardb: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDB Server ポッドに SecurityContext と PodSecurityContext を設定したい場合は、`scalardb.securityContext` と `scalardb.podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +scalardb: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### レプリカ構成 (環境に応じてオプション) + +`scalardb.replicaCount` を使用して、ScalarDB Serverのレプリカ(ポッド)の数を指定できます。 + +```yaml +scalardb: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDB Server のログレベルを変更したい場合は、`scalardb.storageConfiguration.dbLogLevel` を使用できます。 + +```yaml +scalardb: + storageConfiguration: + dbLogLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`scalardb.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +scalardb: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-auditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-auditor.mdx new file mode 100644 index 00000000..da5c4e81 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-auditor.mdx @@ -0,0 +1,348 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Auditor のカスタム値ファイルを構成する + +このドキュメントでは、ScalarDL Auditor チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、ScalarDL Auditor チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardl-audit/README.md) を参照してください。 + +## 必要な構成 + +### Scalar Envoy 構成 + +ScalarDL Auditor のカスタム値ファイルで Scalar Envoy 構成を設定する必要があります。これは、ScalarDL Auditor を Kubernetes 環境にデプロイする場合、クライアントリクエストが gRPC リクエストのロードバランサーとして Scalar Envoy 経由で ScalarDL Auditor に送信されるためです。 + +Scalar Envoy 構成の詳細については、ドキュメント [Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx)を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +auditor: + configurationsForScalarDLAuditor: + ... +``` + +### 画像構成 + +`auditor.image.repository` を設定する必要があります。コンテナーリポジトリからイメージをプルできるように、必ず ScalarDL Auditor コンテナーイメージを指定してください。 + +```yaml +auditor: + image: + repository: +``` + +Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナイメージを取得する方法](../scalar-kubernetes/HowToGetContainerImages.mdx)を参照してください。 + +### Auditor / データベースの構成 + +`auditor.auditorProperties` を設定する必要があります。`auditor.properties` をこのパラメータに設定してください。ScalarDL Auditor の設定の詳細については、[auditor.properties](https://github.com/scalar-labs/scalar/blob/master/auditor/conf/auditor.properties) を参照してください。 + +```yaml +auditor: + auditorProperties: | + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + scalar.db.storage=cassandra + scalar.dl.auditor.ledger.host= + scalar.dl.auditor.private_key_path=/keys/auditor-key-file + scalar.dl.auditor.cert_path=/keys/auditor-cert-file +``` + +### キー/証明書の構成 + +秘密鍵ファイルを `scalar.dl.auditor.private_key_path` に設定し、証明書ファイルを `scalar.dl.auditor.cert_path` に設定する必要があります。 + +秘密鍵ファイルと証明書ファイルも ScalarDL Auditor ポッドにマウントする必要があります。 + +秘密鍵ファイルと証明書ファイルをマウントする方法の詳細については、[ScalarDL Helm Charts のポッドに秘密鍵ファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする)を参照してください。 + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッドリソースを制御したい場合は、`auditor.resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の1つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +auditor: + resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 + +環境変数を使用して `auditor.auditorProperties` 内の一部のプロパティ (資格情報など) を設定したい場合は、`auditor.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定できます。 + +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定でき、これによりポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、ドキュメント [Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法](use-secret-for-credentials.mdx)を参照してください。 + +```yaml +auditor: + secretName: "auditor-credentials-secret" +``` + +### Affinity configurations (Recommended in the production environment) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`auditor.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +auditor: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardl-audit + - key: app.kubernetes.io/app + operator: In + values: + - auditor + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus/Grafana 構成 (運用環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDL Auditor ポッドを監視する場合は、`auditor.grafanaDashboard.enabled`、`auditor.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。`enabled` および `auditor.prometheusRule.enabled`。 + +```yaml +auditor: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDL Auditor ポッドに SecurityContext と PodSecurityContext を設定したい場合は、`auditor.securityContext` と `auditor.podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +auditor: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### TLS 構成 (環境に応じてオプション) + +TLS は、次の通信で有効にできます: + +- ScalarDL Auditor とクライアント間の通信。 +- ScalarDL Ledger と ScalarDL Auditor 間の通信。 + +さらに、証明書管理にはいくつかのオプションがあります。詳細については、[Envoy の TLS 構成](./configure-custom-values-envoy.mdx#tls-構成-環境に応じてオプション)を参照してください。 + +セキュリティ要件に基づいて、どの方法を使用するかを検討する必要があります。各方法のガイダンスと関連ドキュメントについては、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を使用して
    秘密鍵と証明書ファイルを
    自動的に管理しますか?] + A -->|はい、証明書を自動的に
    管理したいです。| B + A -->|いいえ、証明書は自分で手動で
    管理したいです。| C + B[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + C[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + B -->|自己署名 CA を
    使用したいです。| D + B -->|信頼できる CA
    を使用したいです。| E + C -->|自己署名 CA
    を使用したいです。| F + C -->|信頼できる CA
    を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + E[cert-manager で信頼できる CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
    生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
    第三者によって生成された
    信頼できる証明書を使用します。] +``` + +#### TLS を有効にする + +次の構成を使用して、すべての ScalarDL Auditor 接続で TLS を有効にすることができます。 + +```yaml +auditor: + auditorProperties: | + ...(omit)... + scalar.dl.auditor.server.tls.enabled=true + scalar.dl.auditor.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.auditor.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + scalar.dl.auditor.tls.enabled=true + scalar.dl.auditor.tls.ca_root_cert_path=/tls/scalardl-ledger/certs/ca.crt + scalar.dl.auditor.tls.override_authority=envoy.scalar.example.com + tls: + enabled: true +``` + +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +auditor: + tls: + enabled: true + caRootCertSecret: "scalardl-auditor-tls-ca" + certChainSecret: "scalardl-auditor-tls-cert" + privateKeySecret: "scalardl-auditor-tls-key" +``` + +この場合、次のように、山括弧内の内容を置き換えて、ScalarDL Ledger および ScalarDL Auditor の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardl-auditor-tls-ca --from-file=ca.crt=/ -n +kubectl create secret generic scalardl-auditor-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic scalardl-auditor-tls-key --from-file=tls.key=/ -n +kubectl create secret generic scalardl-auditor-tls-ca-for-ledger --from-file=ca.crt=/ -n +``` + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx)を参照してください。 + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、山括弧内の内容を説明に従って置き換えることで、cert-manager で秘密鍵と証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/)および[発行者構成](https://cert-manager.io/docs/configuration/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +auditor: + tls: + enabled: true + certManager: + enabled: true + issuerRef: + name: + dnsNames: + - auditor.scalardl.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密鍵と自己署名証明書ファイルを管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント[インストール](https://cert-manager.io/docs/installation/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +auditor: + tls: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - auditor.scalardl.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書ファイルを発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +#### ScalarDL Ledger のルート CA 証明書を設定する + +ScalarDL Ledger 側で TLS を有効にする場合は、ScalarDL Auditor からアクセスできるように、ScalarDL Ledger の前にある Envoy のルート CA 証明書ファイルを設定する必要があります。どのアプローチを取るべきかを判断するには、次の意思決定ツリーを参照してください。 + +```mermaid +flowchart TD + A[cert-manager を利用しますか?] + A -->|はい| B + A -->|いいえ| D + B[cert-manager で自己証明書を利用しますか?] + B -->|いいえ| C[cert-manager を使用して ScalarDL Ledger と ScalarDL Auditor に同じ 信頼できる CAを利用しますか??] + C -->|いいえ| D[ScalarDL Ledger 用の Envoy のルート CA 証明書を手動で設定する必要があります。] + C ---->|はい| E[Scalar Helm Chart はルート CA 証明書を自動的に設定します。`auditor.tls.upstream.caRootCertSecret` を明示的に設定する必要はありません。] +``` + +Envoy のルート CA 証明書ファイルを手動で設定する必要がある場合は、次の構成を使用して設定できます。 + +```yaml +auditor: + tls: + enabled: true + caRootCertForLedgerSecret: "scalardl-auditor-tls-ca-for-ledger" +``` + +この場合、次のように山括弧内の内容を置き換えて、ルート CA 証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardl-auditor-tls-ca-for-ledger --from-file=ca.crt=//scalardl-ledger -n +``` + +##### TLS通信のカスタム権限を設定する + +`auditor.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`auditor.tls.certChainSecret` を使用して設定した証明書チェーンファイルで提示されるホスト名を指定できます。このチャートでは、`startupProbe` と `livenessProbe` にこの値を使用しています。 + +### レプリカ構成 (環境に応じてオプション) + +ScalarDL Auditor のレプリカ (ポッド) の数は、`auditor.replicaCount` を使用して指定できます。 + +```yaml +auditor: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDL Auditor のログレベルを変更したい場合は、`auditor.scalarAuditorConfiguration.auditorLogLevel` を使用できます。 + +```yaml +auditor: + scalarAuditorConfiguration: + auditorLogLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`auditor.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +auditor: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardl-auditor +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-ledger.mdx new file mode 100644 index 00000000..d43adee8 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-ledger.mdx @@ -0,0 +1,323 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger のカスタム値ファイルを構成する + +このドキュメントでは、ScalarDL Ledger チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、ScalarDL Ledger chartの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/scalardl/README.md) を参照してください。 + +## 必要な構成 + +### Scalar Envoy 構成 + +ScalarDL Ledger のカスタム値ファイルで Scalar Envoy 構成を設定する必要があります。これは、ScalarDL Ledger を Kubernetes 環境にデプロイする場合、クライアントリクエストが gRPC リクエストのロードバランサーとして Scalar Envoy 経由で ScalarDL Ledger に送信されるためです。 + +Scalar Envoy 構成の詳細については、ドキュメント [Scalar Envoy のカスタム値ファイルの構成](configure-custom-values-envoy.mdx)を参照してください。 + +```yaml +envoy: + configurationsForScalarEnvoy: + ... + +ledger: + configurationsForScalarDLLedger: + ... +``` + +### 画像構成 + +`ledger.image.repository` を設定する必要があります。コンテナリポジトリからイメージをプルできるように、ScalarDL Ledger コンテナイメージを必ず指定してください。 + +```yaml +ledger: + image: + repository: +``` + +Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナイメージを取得する方法](../scalar-kubernetes/HowToGetContainerImages.mdx)を参照してください。 + +### Ledger/データベースの構成 + +`ledger.ledgerProperties` を設定する必要があります。`ledger.properties` をこのパラメータに設定してください。ScalarDL Ledger の構成の詳細については、[ledger.properties](https://github.com/scalar-labs/scalar/blob/master/ledger/conf/ledger.properties) を参照してください。 + +```yaml +ledger: + ledgerProperties: | + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + scalar.db.storage=cassandra + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/ledger-key-file +``` + +### キー/証明書の構成 + +`scalar.dl.ledger.proof.enabled` を `true` に設定した場合 (この設定は ScalarDL Auditor を使用する場合に必要です)、秘密鍵ファイルを `scalar.dl.ledger.proof.private_key_path` に設定する必要があります。 + +この場合、秘密鍵ファイルを ScalarDL Ledger ポッドにマウントする必要があります。 + +秘密鍵ファイルをマウントする方法の詳細については、[ScalarDL Helm Charts のポッドに秘密鍵ファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする)を参照してください。 + +## オプションの構成 + +### リソース構成 (本番環境で推奨) + +Kubernetes のリクエストと制限を使用してポッドリソースを制御したい場合は、`ledger.resources` を使用できます。 + +商用ライセンスの観点から、Scalar 製品の1つのポッドのリソースは 2vCPU / 4GB メモリに制限されていることに注意してください。また、AWS Marketplace から提供される従量課金制のコンテナを取得する場合、`resources.limits` で 2vCPU / 4GB を超えるメモリ構成でそれらのコンテナを実行することはできません。この制限を超えると、ポッドは自動的に停止されます。 + +これらは、Kubernetes のリクエストと制限と同じ構文を使用して構成できます。そのため、Kubernetes の要求と制限の詳細については、公式ドキュメント [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) を参照してください。 + +```yaml +ledger: + resources: + requests: + cpu: 2000m + memory: 4Gi + limits: + cpu: 2000m + memory: 4Gi +``` + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `ledger.ledgerProperties` 内の一部のプロパティ (資格情報など) を設定したい場合は、`ledger.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定できます。 + +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定でき、これによりポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、ドキュメント [Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法](use-secret-for-credentials.mdx)を参照してください。 + +```yaml +ledger: + secretName: "ledger-credentials-secret" +``` + +### アフィニティ構成 (運用環境で推奨) + +Kubernetes のアフィニティと反アフィニティを使用してポッドのデプロイメントを制御したい場合は、`ledger.affinity` を使用できます。 + +Kubernetes のアフィニティと同じ構文を使用して構成できます。そのため、Kubernetes のアフィニティ設定の詳細については、公式ドキュメント [Assigning Pods to Nodes](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) を参照してください。 + +```yaml +ledger: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - scalardl + - key: app.kubernetes.io/app + operator: In + values: + - ledger + topologyKey: kubernetes.io/hostname + weight: 50 +``` + +### Prometheus/Grafana 構成 (運用環境で推奨) + +[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) を使用して ScalarDL Ledger ポッドを監視する場合は、`ledger.grafanaDashboard.enabled`、`ledger.serviceMonitor` を使用して、kube-prometheus-stack の ConfigMap、ServiceMonitor、および PrometheusRule リソースをデプロイできます。`enabled` および `ledger.prometheusRule.enabled`。 + +```yaml +ledger: + grafanaDashboard: + enabled: true + namespace: monitoring + serviceMonitor: + enabled: true + namespace: monitoring + interval: 15s + prometheusRule: + enabled: true + namespace: monitoring +``` + +### SecurityContext 設定 (デフォルト値を推奨) + +ScalarDL Ledger ポッドに SecurityContext と PodSecurityContext を設定したい場合は、`ledger.securityContext` と `ledger.podSecurityContext` を使用できます。 + +KubernetesのSecurityContextやPodSecurityContextと同じ構文を使用して設定できます。したがって、Kubernetes の SecurityContext および PodSecurityContext 構成の詳細については、公式ドキュメント [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) を参照してください。 + +```yaml +ledger: + podSecurityContext: + seccompProfile: + type: RuntimeDefault + securityContext: + capabilities: + drop: + - ALL + runAsNonRoot: true + allowPrivilegeEscalation: false +``` + +### TLS 構成 (環境に応じてオプション) + +TLS は、次の通信で有効にできます: + +- ScalarDL Ledger とクライアント間の通信。 +- ScalarDL Ledger と ScalarDL Auditor 間の通信。 + +また、証明書管理にはいくつかのオプションがあります。詳細については、[Envoy ドキュメント側の TLS 構成](./configure-custom-values-envoy.mdx#tls-configurations-optional-based-on-your-environment)を参照してください。 + +Please consider which you use based on your security requirements. According to your decision, you can see the related document as follows: + +セキュリティ要件に基づいてどちらを使用するかを検討してください。決定に応じて、次の関連ドキュメントを参照できます。 + +```mermaid +flowchart TD + A[cert-manager を使用して
    秘密鍵と証明書ファイルを
    自動的に管理しますか?] + A -->|はい、証明書を自動的に
    管理したいです。| B + A -->|いいえ、証明書は自分で手動で
    管理したいです。| C + B[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + C[自己署名 CA と
    信頼された CA の
    どちらを使用しますか?] + B -->|自己署名 CA を
    使用したいです。| D + B -->|信頼できる CA
    を使用したいです。| E + C -->|自己署名 CA
    を使用したいです。| F + C -->|信頼できる CA
    を使用したいです。| G + D[cert-manager で自己署名 CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + E[cert-manager で信頼できる CA を使用して
    秘密鍵と証明書ファイルを管理する

    を参照してください。] + F[秘密鍵と証明書ファイルを使用するを参照し、
    生成した自己署名証明書を使用します。] + G[秘密鍵と証明書ファイルを使用するを参照し、
    第三者によって生成された
    信頼できる証明書を使用します。] +``` + +#### TLSを有効にする + +次の設定を使用して、すべての ScalarDL Ledger 接続で TLS を有効にすることができます。 + +```yaml +ledger: + ledgerProperties: | + ...(omit)... + scalar.dl.ledger.server.tls.enabled=true + scalar.dl.ledger.server.tls.cert_chain_path=/tls/scalardl-ledger/certs/tls.crt + scalar.dl.ledger.server.tls.private_key_path=/tls/scalardl-ledger/certs/tls.key + tls: + enabled: true +``` + +##### 秘密鍵と証明書ファイルを使用する + +次の構成を使用して、秘密鍵と証明書ファイルを設定できます。 + +```yaml +ledger: + tls: + enabled: true + caRootCertSecret: "scalardl-ledger-tls-ca" + certChainSecret: "scalardl-ledger-tls-cert" + privateKeySecret: "scalardl-ledger-tls-key" +``` + +この場合、次のように山括弧内の内容を置き換えて、ScalarDL Ledger の秘密鍵と証明書ファイルを含むシークレットリソースを作成する必要があります。 + +```console +kubectl create secret generic scalardl-ledger-tls-ca --from-file=ca.crt=/ -n +kubectl create secret generic scalardl-ledger-tls-cert --from-file=tls.crt=/ -n +kubectl create secret generic scalardl-ledger-tls-key --from-file=tls.key=/ -n +``` + +秘密鍵と証明書ファイルを準備する方法の詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx)を参照してください。 + +##### cert-manager で信頼できる CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密鍵と証明書を管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイし、`Issuers` リソースを準備する必要があります。詳細については、cert-manager のドキュメント、[インストール](https://cert-manager.io/docs/installation/)および[発行者構成](https://cert-manager.io/docs/configuration/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +ledger: + tls: + enabled: true + certManager: + enabled: true + issuerRef: + name: your-trusted-ca + dnsNames: + - ledger.scalardl.example.com +``` + +この場合、cert-manager は信頼できる発行者を使用して秘密鍵と証明書を発行します。秘密鍵と証明書のファイルを手動でマウントする必要はありません。 + +##### cert-manager で自己署名 CA を使用して秘密鍵と証明書ファイルを管理する + +次の構成を使用して、cert-manager で秘密鍵と自己署名証明書を管理できます。 + +:::note + +* cert-manager を使用する場合は、cert-manager をデプロイする必要があります。詳細については、cert-manager のドキュメント[インストール](https://cert-manager.io/docs/installation/)を参照してください。 +* デフォルトでは、Scalar Helm Chart は Scalar 製品の証明書要件を満たす `Certificate` リソースを作成します。デフォルトの証明書構成が推奨されますが、カスタム証明書構成を使用する場合は、Scalar 製品の証明書要件を満たす必要があります。詳細については、[Scalar 製品の秘密鍵と証明書ファイルを作成する方法](../scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx#certificate-requirements)を参照してください。 + +::: + +```yaml +ledger: + tls: + enabled: true + certManager: + enabled: true + selfSigned: + enabled: true + dnsNames: + - ledger.scalardl.example.com +``` + +この場合、Scalar Helm Charts と cert-manager が秘密鍵と自己署名証明書を発行します。秘密鍵と証明書ファイルを手動でマウントする必要はありません。 + +##### TLS通信のカスタム権限を設定する + +`ledger.tls.overrideAuthority` を使用して、TLS 通信のカスタム権限を設定できます。この値によって、実際に接続されているホストが変わることはありません。この値はテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`ledger.tls.certChainSecret` を使用して設定した証明書チェーンファイルで提示されるホスト名を指定できます。このチャートでは、`startupProbe` と `livenessProbe` にこの値を使用しています。 + +```yaml +ledger: + tls: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" +``` + +### レプリカ構成 (環境に応じてオプション) + +`ledger.replicaCount` を使用して ScalarDL Ledger のレプリカ(ポッド)の数を指定できます。 + +```yaml +ledger: + replicaCount: 3 +``` + +### ロギング構成 (環境に応じてオプション) + +ScalarDL Ledger のログレベルを変更したい場合は、`ledger.scalarLedgerConfiguration.ledgerLogLevel` を使用できます。 + +```yaml +ledger: + scalarLedgerConfiguration: + ledgerLogLevel: INFO +``` + +### 汚染と許容の構成 (環境に応じてオプション) + +Kubernetes のテイントと許容を使用してポッドのデプロイメントを制御したい場合は、`ledger.tolerations` を使用できます。 + +Kubernetes の許容と同じ構文を使用して、テイントと許容を構成できます。Kubernetes での許容設定の詳細については、Kubernetes の公式ドキュメント [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) を参照してください。 + +```yaml +ledger: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardl-ledger +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-schema-loader.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-schema-loader.mdx new file mode 100644 index 00000000..bb352ad4 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/configure-custom-values-scalardl-schema-loader.mdx @@ -0,0 +1,94 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Schema Loader のカスタム値ファイルを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Schema Loader チャートのカスタム値ファイルを作成する方法について説明します。パラメータの詳細を知りたい場合は、ScalarDL Schema Loader チャートの [README](https://github.com/scalar-labs/helm-charts/blob/main/charts/schema-loading/README.md) を参照してください。 + +## 必要な構成 + +### データベース構成 + +`schemaLoading.databaseProperties` を設定する必要があります。バックエンドデータベースにアクセスするには、`database.properties` をこのパラメータに設定してください。ScalarDB のデータベース構成の詳細については、[Getting Started with ScalarDB](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb) を参照してください。 + +```yaml +schemaLoading: + databaseProperties: | + scalar.db.contact_points=cassandra + scalar.db.contact_port=9042 + scalar.db.username=cassandra + scalar.db.password=cassandra + scalar.db.storage=cassandra +``` + +### スキーマタイプの構成 + +`schemaLoading.schemaType` を設定する必要があります。 + +ScalarDL Ledger のスキーマを作成する場合は `ledger` を設定してください。 + +```yaml +schemaLoading: + schemaType: ledger +``` + +ScalarDL Auditor のスキーマを作成する場合は `auditor` を設定してください。 + +```yaml +schemaLoading: + schemaType: auditor +``` + +## オプションの構成 + +### シークレット構成 (運用環境で推奨) + +環境変数を使用して `schemaLoading.databaseProperties` 内の一部のプロパティ (資格情報など) を設定したい場合は、`schemaLoading.secretName` を使用して、いくつかの資格情報を含む Secret リソースを指定できます。 + +たとえば、環境変数を使用してバックエンドデータベースの資格情報 (`scalar.db.username` および `scalar.db.password`) を設定でき、これによりポッドの安全性が高まります。 + +Secret リソースの使用方法の詳細については、ドキュメント [Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法](use-secret-for-credentials.mdx)を参照してください。 + +```yaml +schemaLoading: + secretName: "schema-loader-credentials-secret" +``` + +### 画像構成 (デフォルト値を推奨) + +イメージリポジトリを変更する場合は、`schemaLoading.image.repository` を使用して、プルする ScalarDL Schema Loader コンテナイメージのコンテナリポジトリ情報を指定できます。 + +```yaml +schemaLoading: + image: + repository: +``` + +### フラグ設定 (環境に応じてオプション) + +複数のフラグを配列として指定できます。フラグの詳細については、ドキュメント [ScalarDB Schema Loader](https://scalardb.scalar-labs.com/docs/latest/schema-loader) を参照してください。 + +```yaml +schemaLoading: + commandArgs: + - "--alter" + - "--compaction-strategy" + - "" + - "--delete-all" + - "--no-backup" + - "--no-scaling" + - "--repair-all" + - "--replication-factor" + - "" + - "--replication-strategy" + - "" + - "--ru" + - "" +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-logging.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-logging.mdx new file mode 100644 index 00000000..2b25b193 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-logging.mdx @@ -0,0 +1,101 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (Loki スタックを使用したロギング) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Grafana Loki (Promtail を使用) を使用して、Kubernetes 上で Scalar 製品のログ集約を開始する方法について説明します。 + +Scalar 製品の[モニタリングの開始](getting-started-monitoring.mdx)をすでに読み、kube-prometheus-stack をインストールしていることを前提としています。 + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------+ +| +------------------------------------+ | +| | loki-stack | | +| | | +-----------------+ | +| | +--------------+ +--------------+ | <-----------------(ログ)-------------- | Scalar 製品 | | +| | | Loki | | Promtail | | | | | +| | +--------------+ +--------------+ | | +-----------+ | | +| +------------------------------------+ | | ScalarDB | | | +| | +-----------+ | | +| +------------------------------------------------------+ | | | +| | kube-prometheus-stack | | +-----------+ | | +| | | | | ScalarDL | | | +| | +--------------+ +--------------+ +--------------+ | -----(監視)----> | +-----------+ | | +| | | Prometheus | | Alertmanager | | Grafana | | +-----------------+ | +| | +-------+------+ +------+-------+ +------+-------+ | | +| | | | | | | +| | +----------------+-----------------+ | | +| | | | | +| +--------------------------+---------------------------+ | +| | | +| | Kubernetes | ++----------------------------+---------------------------------------------------------------------+ + | <- localhost (127.0.0.1) に公開するか、ロードバランサーなどを使用してアクセスします + | + (HTTP 経由でダッシュボードにアクセスする) + | + +----+----+ + | ブラウザ | + +---------+ +``` + +## ステップ1. カスタム値ファイルを準備する + +1. `loki-stack` helm chart のサンプルファイル [scalar-loki-stack-custom-values.yaml](./conf/scalar-loki-stack-custom-values.yaml) を取得します。 + +## ステップ2. `loki-stack` をデプロイする + +1. `grafana` helm リポジトリを追加します。 + ```console + helm repo add grafana https://grafana.github.io/helm-charts + ``` + +1. `loki-stack` helm chart をデプロイします。 + ```console + helm install scalar-logging-loki grafana/loki-stack -n monitoring -f scalar-loki-stack-custom-values.yaml + ``` + +## ステップ3. Grafana 構成に Loki データソースを追加する + +1. Loki データソースの設定を `scalar-prometheus-custom-values.yaml` ファイルに追加します。 + ```yaml + grafana: + additionalDataSources: + - name: Loki + type: loki + uid: loki + url: http://scalar-logging-loki:3100/ + access: proxy + editable: false + isDefault: false + ``` + +1. 構成を適用します (`kube-prometheus-stack` のデプロイメントをアップグレードします)。 + ```console + helm upgrade scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml + ``` + +## ステップ4. Grafana ダッシュボードにアクセスする + +1. Loki をデータソースとして追加する + - Grafana http://localhost:3000 に移動します (minikube を使用する場合) + - `Explore` に移動して、追加された Loki を見つけます + - 収集されたログは `Explore` ページで確認できます。 + +## ステップ5. `loki-stack` helm chartを削除する + +1. `loki-stack` をアンインストールします。 + ```console + helm uninstall scalar-logging-loki -n monitoring + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-monitoring.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-monitoring.mdx new file mode 100644 index 00000000..1010b668 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-monitoring.mdx @@ -0,0 +1,271 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Prometheus Operator (kube-prometheus-stack) を使用して Kubernetes 上で Scalar 製品の監視を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------+ +| +------------------------------------------------------+ +-----------------+ | +| | kube-prometheus-stack | | Scalar 製品 | | +| | | | | | +| | +--------------+ +--------------+ +--------------+ | -----(監視)----> | +-----------+ | | +| | | Prometheus | | Alertmanager | | Grafana | | | | ScalarDB | | | +| | +-------+------+ +------+-------+ +------+-------+ | | +-----------+ | | +| | | | | | | +-----------+ | | +| | +----------------+-----------------+ | | | ScalarDL | | | +| | | | | +-----------+ | | +| +--------------------------+---------------------------+ +-----------------+ | +| | | +| | Kubernetes | ++----------------------------+---------------------------------------------------------------------+ + | <- localhost (127.0.0.1) に公開するか、ロードバランサーなどを使用してアクセスします + | + (HTTP 経由でダッシュボードにアクセスする) + | + +----+----+ + | ブラウザ | + +---------+ +``` + +## ステップ1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。**minikube** 環境を使用する場合は、[Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)を参照してください。すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ2. カスタム値ファイルを準備する + +1. `kube-prometheus-stack` のサンプルファイル [scalar-prometheus-custom-values.yaml](./conf/scalar-prometheus-custom-values.yaml) を保存します。 + +1. 次のように `scalar-prometheus-custom-values.yaml` にカスタム値を追加します。 + * 設定 + * `prometheus.service.type` を `LoadBalancer` に設定します。 + * `alertmanager.service.type` を `LoadBalancer` に設定します。 + * `grafana.service.type` を `LoadBalancer` に設定します。 + * `grafana.service.port` を `3000` に設定します。 + * 例 + ```yaml + alertmanager: + + service: + type: LoadBalancer + + ... + + grafana: + + service: + type: LoadBalancer + port: 3000 + + ... + + prometheus: + + service: + type: LoadBalancer + + ... + ``` + * 注記: + * Helm Chart を使用して Prometheus Operator デプロイメントをカスタマイズする場合は、Scalar 製品を監視するために次の構成を設定する必要があります。 + * Prometheus Operator が Scalar 製品の `ServiceMonitor` および `PrometheusRule` を検出できるように、`serviceMonitorSelectorNilUsesHelmValues` および `ruleSelectorNilUsesHelmValues` を `false` (デフォルトでは `true`) に設定します。 + + * Scalar Manager を使用する場合は、Scalar Manager が CPU およびメモリリソースを収集できるように次の構成を設定する必要があります。 + * `kubeStateMetrics.enabled`、`nodeExporter.enabled`、および `kubelet.enabled` を `true` に設定します。 + + * Scalar Manager を使用する場合は、Scalar Manager が Grafana を組み込みきるように次の構成を設定する必要があります。 + * `grafana.ini.security.allow_embedding` および `grafana.ini.auth.anonymous.enabled` を `true` に設定します。 + * `grafana.ini.auth.anonymous.org_name` を使用中の組織に設定します。Scalar のサンプルを使う場合では、`Main Org.` に設定します。 + * `grafana.ini.auth.anonymous.org_role` を `Editor` に設定します。 + +## ステップ3. `kube-prometheus-stack` をデプロイする + +1. `prometheus-community` helm リポジトリを追加します。 + ```console + helm repo add prometheus-community https://prometheus-community.github.io/helm-charts + ``` + +1. Kubernetes 上に名前空間 `monitoring` を作成します。 + ```console + kubectl create namespace monitoring + ``` + +1. `kube-prometheus-stack` をデプロイします。 + ```console + helm install scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml + ``` + +## ステップ4. Helm Chart を使用して Scalar 製品をデプロイ (またはアップグレード) + +* 注記: + * 最低限の手順を説明します。ScalarDB および ScalarDL のデプロイメントについて詳しく知りたい場合は、以下のドキュメントを参照してください。 + * [Helm Charts 入門 (ScalarDB Server)](getting-started-scalardb.mdx) + * [Helm Charts 入門 (ScalarDL Ledger / Ledger のみ)](getting-started-scalardl-ledger.mdx) + * [Helm Charts 入門 (ScalarDL Ledger および Auditor / Auditor モード)](getting-started-scalardl-auditor.mdx) + +1. Scalar 製品の Prometheus 監視を有効にするには、カスタム値ファイルで次の構成に `true` を設定します。 + * 構成 + * `*.prometheusRule.enabled` + * `*.grafanaDashboard.enabled` + * `*.serviceMonitor.enabled` + * サンプル設定ファイル + * ScalarDB (scalardb-custom-values.yaml) + ```yaml + envoy: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + + scalardb: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + ``` + * ScalarDL Ledger (scalardl-ledger-custom-values.yaml) + ```yaml + envoy: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + + ledger: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + ``` + * ScalarDL Auditor (scalardl-auditor-custom-values.yaml) + ```yaml + envoy: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + + auditor: + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true + serviceMonitor: + enabled: true + ``` + +1. 上記のカスタム値ファイルを含む Helm Charts を使用して、Scalar 製品をデプロイ (またはアップグレード) します。 + * 例 + * ScalarDB + ```console + helm install scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml + ``` + ```console + helm upgrade scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml + ``` + * ScalarDL Ledger + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + ```console + helm upgrade scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + * ScalarDL Auditor + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + ```console + helm upgrade scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + +## ステップ5. ダッシュボードにアクセスする + +### minikube を使用する場合 + +1. 各サービスリソースを `localhost (127.0.0.1)` として公開するには、別のターミナルを開き、`minikube tunnel` コマンドを実行します。 + ```console + minikube tunnel + ``` + + `minikube tunnel` コマンドを実行すると、各サービスリソースの EXTERNAL-IP が `127.0.0.1` として表示されます。 + ```console + kubectl get svc -n monitoring scalar-monitoring-kube-pro-prometheus scalar-monitoring-kube-pro-alertmanager scalar-monitoring-grafana + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + scalar-monitoring-kube-pro-prometheus LoadBalancer 10.98.11.12 127.0.0.1 9090:30550/TCP 26m + scalar-monitoring-kube-pro-alertmanager LoadBalancer 10.98.151.66 127.0.0.1 9093:31684/TCP 26m + scalar-monitoring-grafana LoadBalancer 10.103.19.4 127.0.0.1 3000:31948/TCP 26m + ``` + +1. 各ダッシュボードにアクセスします。 + * Prometheus + ```console + http://localhost:9090/ + ``` + * Alertmanager + ```console + http://localhost:9093/ + ``` + * Grafana + ```console + http://localhost:3000/ + ``` + * 注記: + * Grafana のユーザーとパスワードは以下で確認できます。 + * ユーザー + ```console + kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-user}' | base64 -d + ``` + * パスワード + ```console + kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-password}' | base64 -d + ``` + +### minikube 以外の Kubernetes を使用する場合 + +minikube 以外の Kubernetes クラスターを使用する場合は、各 Kubernetes クラスターの方式に従って LoadBalancer サービスにアクセスする必要があります。たとえば、クラウドサービスによって提供されるロードバランサーや `kubectl port-forward` コマンドを使用します。 + +## ステップ6. すべてのリソースを削除する + +Kubernetes クラスターでのモニタリングテストが完了したら、すべてのリソースを削除します。 + +1. `minikube tunnel` コマンドを終了します。(minikubeを使用する場合) + ```console + Ctrl + C + ``` + +1. `kube-prometheus-stack` をアンインストールします。 + ```console + helm uninstall scalar-monitoring -n monitoring + ``` + +1. minikube を削除します。(オプション / minikube を使用する場合) + ```console + minikube delete --all + ``` + * 注記: + * ScalarDB または ScalarDL をデプロイする場合は、minikube を削除する前にそれらを削除する必要があります。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalar-helm-charts.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalar-helm-charts.mdx new file mode 100644 index 00000000..3d6e5ef6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalar-helm-charts.mdx @@ -0,0 +1,82 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar Helm Charts をはじめよう + +このドキュメントでは、Kubernetes クラスター上でテスト環境として Scalar Helm Chart を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## ツール + +テストには次のツールを使用します。 + +1. minikube (他の Kubernetes ディストリビューションを使用する場合、minikube は必要ありません。) +1. kubectl +1. Helm +1. cfssl / cfssljson + +## ステップ1. ツールをインストールする + +まず、このガイドで使用する次のツールをインストールする必要があります。 + +1. [minikubeドキュメント](https://minikube.sigs.k8s.io/docs/start/)に従って minikube をインストールします。 + +1. [Kubernetesドキュメント](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)に従って kubectl をインストールします。 + +1. [Helmドキュメント](https://helm.sh/docs/intro/install/)に従って helm コマンドをインストールします。 + +1. [CFSSLドキュメント](https://github.com/cloudflare/cfssl)に従って cfssl と cfssljson をインストールします。 + +:::note + +以下のスタートガイドの手順を実行する場合は、`cfssl` および `cfssljson` コマンドをインストールする必要があります。 + +* [TLS を使用した ScalarDB Cluster](getting-started-scalardb-cluster-tls.mdx) +* [TLS を使用した ScalarDL Ledger および Auditor (Auditor モード)](getting-started-scalardl-auditor-tls.mdx) +* [ScalarDL Ledger (Ledger のみ)](getting-started-scalardl-ledger.mdx) +* [ScalarDL Ledger と Auditor (Auditor モード)](getting-started-scalardl-auditor.mdx) + +::: + +## ステップ2. docker ドライバーで minikube を起動する (オプション / minikube を使用する場合) + +1. minikube を起動します。 + ```console + minikube start + ``` + +1. minikube とポッドのステータスを確認します。 + ```console + kubectl get pod -A + ``` + 【コマンド実行結果】 + ```console + NAMESPACE NAME READY STATUS RESTARTS AGE + kube-system coredns-64897985d-lbsfr 1/1 Running 1 (20h ago) 21h + kube-system etcd-minikube 1/1 Running 1 (20h ago) 21h + kube-system kube-apiserver-minikube 1/1 Running 1 (20h ago) 21h + kube-system kube-controller-manager-minikube 1/1 Running 1 (20h ago) 21h + kube-system kube-proxy-gsl6j 1/1 Running 1 (20h ago) 21h + kube-system kube-scheduler-minikube 1/1 Running 1 (20h ago) 21h + kube-system storage-provisioner 1/1 Running 2 (19s ago) 21h + ``` + minikube が適切に起動すると、いくつかのポッドが kube-system 名前空間で**実行中**であることがわかります。 + +## ステップ3。 + +Kubernetes クラスターが起動したら、そのクラスター上で各 Scalar Helm Charts を試すことができます。詳細については、以下のドキュメントを参照してください。 + +* [TLS を使用した ScalarDB Cluster](getting-started-scalardb-cluster-tls.mdx) +* [cert-manager を使用した TLS 対応 ScalarDB Cluster](getting-started-scalardb-cluster-tls-cert-manager.mdx) +* [ScalarDB Analytics with PostgreSQL](getting-started-scalardb-analytics-postgresql.mdx) +* [TLS を使用した ScalarDL Ledger および Auditor (Auditor モード)](getting-started-scalardl-auditor-tls.mdx) +* [cert-manager を使用した TLS による ScalarDL Ledger と ScalarDL Auditor (Auditor モード)](getting-started-scalardl-auditor-tls-cert-manager.mdx) +* [ScalarDL Ledger (Ledger のみ)](getting-started-scalardl-ledger.mdx) +* [ScalarDL Ledger と Auditor (Auditor モード)](getting-started-scalardl-auditor.mdx) +* [Prometheus Operator を使用した監視](getting-started-monitoring.mdx) + * [Loki スタックを使用したロギング](getting-started-logging.mdx) + * [Scalar Manager](getting-started-scalar-manager.mdx) +* [[非推奨] ScalarDB Server](getting-started-scalardb.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalar-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalar-manager.mdx new file mode 100644 index 00000000..beba9546 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalar-manager.mdx @@ -0,0 +1,217 @@ +--- +tags: + - Enterprise Option +displayed_sidebar: docsJapanese +--- + +# Scalar Manager をデプロイする + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +[Scalar Manager](../scalar-manager/overview.mdx) は、Kubernetes クラスター環境内の ScalarDB および ScalarDL の集中管理および監視ソリューションであり、次のことが可能になります。 + +- ScalarDB または ScalarDL の可用性を確認します。 +- ScalarDB または ScalarDL が使用するデータベースでトランザクションの一貫性のある期間を作成する一時停止ジョブをスケジュールまたは実行します。 +- Grafana ダッシュボードを介して ScalarDB または ScalarDL の時系列メトリックとログを確認します。 + +このガイドでは、Scalar Helm Charts を使用して Kubernetes クラスターに Scalar Manager をデプロイしてアクセスする方法について説明します。 + +## 前提条件 + +Scalar Manager をデプロイする前に、次の操作を行う必要があります。 + +- [Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)に記載されているツールをインストールします。 +- [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx)の手順に従って、`kube-prometheus-stack` をデプロイします。 +- [Helm Charts をはじめよう (Loki Stack を使用したログ記録)](getting-started-logging.mdx)の手順に従って、`loki-stack` をデプロイします。 + +## デプロイアーキテクチャ図 + +以下は、Kubernetes クラスターにデプロイされたコンポーネントのアーキテクチャ図です。 + +``` ++--------------------------------------------------------------------------------------------------+ +| +----------------------+ | +| | scalar-manager | | +| | | | +| | +------------------+ | --------------------------(Manage)--------------------------+ | +| | | Scalar Manager | | | | +| | +------------------+ | | | +| +--+-------------------+ | | +| | | | +| +------------------------------------+ | | +| | loki-stack | V | +| | | +-----------------+ | +| | +--------------+ +--------------+ | <----------------(Log)--------------- | Scalar Products | | +| | | Loki | | Promtail | | | | | +| | +--------------+ +--------------+ | | +-----------+ | | +| +------------------------------------+ | | ScalarDB | | | +| | | +-----------+ | | +| +------------------------------------------------------+ | | | +| | kube-prometheus-stack | | +-----------+ | | +| | | | | ScalarDL | | | +| | +--------------+ +--------------+ +--------------+ | -----(Monitor)----> | +-----------+ | | +| | | Prometheus | | Alertmanager | | Grafana | | +-----------------+ | +| | +-------+------+ +------+-------+ +------+-------+ | | +| | | | | | | +| | +----------------+-----------------+ | | +| | | | | +| +--------------------------+---------------------------+ | +| | | | +| | | Kubernetes | ++----+-----------------------+---------------------------------------------------------------------+ + | | + Expose the environment to localhost (127.0.0.1) or use a load balancer to access it + | | + (Access the dashboard through HTTP) + | | ++----+----+ +----+----+ +| Browser | <-(Embed)-- + Browser | ++---------+ +---------+ +``` + +## ステップ1. minikube を起動します + +**Terminal** を開き、次のコマンドを実行して minikube を起動します。 + +```console +minikube start +``` + +## ステップ2. Grafana を埋め込めるように `kube-prometheus-stack` をアップグレードする + +`kube-prometheus-stack` のカスタム値ファイル (たとえば `scalar-prometheus-custom-values.yaml`) に、次の構成を追加するか、すでに存在する場合は修正します。 + +```yaml +kubeStateMetrics: + enabled: true + +nodeExporter: + enabled: true + +kubelet: + enabled: true + +grafana: + grafana.ini: + users: + default_theme: light + security: + allow_embedding: true + auth.anonymous: + enabled: true + org_name: "Main Org." + org_role: Editor +``` + +次に、次のコマンドを実行して Helm インストールをアップグレードします。 + +```console +helm upgrade scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml +``` + +## ステップ3. 環境変数を設定する + +次のコマンドを実行し、山括弧内の内容を説明に従って置き換えて、Scalar Manager の環境変数を設定します。 + +```console +SCALAR_MANAGER_RELEASE_NAME= +SCALAR_MANAGER_NAMESPACE= +SCALAR_MANAGER_CUSTOM_VALUES_FILE= +SCALAR_MANAGER_CHART_VERSION= +``` + +## ステップ4. Scalar Manager のカスタム値ファイルを準備する + +次の手順に従って、Scalar Manager のカスタム値ファイルを準備します。 + +1. `scalar-manager-custom-values.yaml` という名前の空のファイルを作成します。 +1. [Scalar Manager のカスタム値ファイルを構成する](configure-custom-values-scalar-manager.mdx)の手順に従います。 + +## ステップ5. `scalar-manager` をインストールしてデプロイする + +次のコマンドを実行して、`scalar-manager` Helm Chart をインストールしてデプロイします。 + +```console +helm install ${SCALAR_MANAGER_RELEASE_NAME} scalar-labs/scalar-manager -n ${SCALAR_MANAGER_NAMESPACE} -f ${SCALAR_MANAGER_CUSTOM_VALUES_FILE} --version ${SCALAR_MANAGER_CHART_VERSION} +``` + +## ステップ6. Scalar Manager にアクセスする + +Scalar Manager にアクセスする方法は、Kubernetes クラスターに使用しているツールによって異なります。 + + + + Scalar Manager のサービスリソースをローカルホスト (127.0.0.1) として公開するには、別のターミナルを開き、`minikube tunnel` コマンドを実行します。 + + ```console + minikube tunnel + ``` + + Then, access Scalar Manager by going to http://localhost:8000. + + + minikube 以外の Kubernetes クラスターを使用している場合は、各 Kubernetes クラスターの方式に従って `LoadBalancer` サービスにアクセスする必要があります。たとえば、クラウドサービスプロバイダーが提供するロードバランサーを使用するか、`kubectl port-forward` コマンドを使用する必要があります。 + +:::note + +Scalar Manager は Grafana の外部 IP アドレスを検出し、その IP アドレスに基づいて Grafana を埋め込もうとします。そのため、Grafana サービスタイプを `LoadBalancer` として設定し、外部 IP アドレスにブラウザーからアクセスできる必要があります。 + +::: + + + +## 追加の詳細 + +このセクションでは、構成とリソース検出に関する追加の詳細について説明します。 + +### Scalar Manager のデプロイメントをアップグレードする + +Scalar Manager のデプロイメントをアップグレードするには、次のコマンドを実行します。 + +```console +helm upgrade ${SCALAR_MANAGER_RELEASE_NAME} scalar-labs/scalar-manager -n ${SCALAR_MANAGER_NAMESPACE} -f ${SCALAR_MANAGER_CUSTOM_VALUES_FILE} --version ${SCALAR_MANAGER_CHART_VERSION} +``` + +### Scalar Manager をアンインストールする + +Scalar Manager をアンインストールするには、次のコマンドを実行します。 + +```console +helm uninstall ${SCALAR_MANAGER_RELEASE_NAME} -n ${SCALAR_MANAGER_NAMESPACE} +``` + +### オプションの Scalar Manager 構成 + +Scalar Manager に設定できるオプションの構成については、[オプション設定](./configure-custom-values-scalar-manager.mdx#オプション設定)を参照してください。 + +### リソースの検出 + +Scalar Manager は、特定のラベルセレクターを使用して、クラスター内の次の Kubernetes リソースを検出します。 + +- 依存関係 + - Prometheus サービス + - Loki サービス + - Grafana サービス +- ターゲット + - ScalarDB Cluster のデプロイメント + - ScalarDL Ledger のデプロイメント + - ScalarDL Auditor のデプロイメント + +次のセクションでは、Scalar Manager がこれらのリソースを検出する方法について説明します。 + +#### 依存関係 + +Scalar Manager は、[kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) および [loki-stack](https://github.com/grafana/helm-charts/tree/main/charts/loki-stack) Helm Chart に設定されているデフォルトのラベルと値を検索します。Scalar Manager が依存関係を検出するために使用するデフォルトのラベルと値の詳細については、[`api.applicationProperties` で設定できるプロパティ](./configure-custom-values-scalar-manager.mdx#apiapplicationProperties-で設定できるプロパティ)を参照してください。 + +また、`kube-prometheus-stack` または `loki-stack` のインストール時に値をカスタマイズした場合は、Scalar Manager のカスタム値 `api.applicationProperties` のラベルセレクターを更新する必要があります。 + +#### ターゲット + +Scalar Manager は、次のラベルと値を使用して、ScalarDB Cluster、ScalarDL Ledger、および ScalarDL Auditor のデプロイメントを検索します。 + +- **ScalarDB Cluster:** `app.kubernetes.io/app=scalardb-cluster` +- **ScalarDL Ledger:** `app.kubernetes.io/app=ledger` +- **ScalarDL Auditor:** `app.kubernetes.io/app=auditor` + +Scalar Helm Charts は、ScalarDB Cluster、ScalarDL Ledger、および ScalarDL Auditor のデプロイメントに固定のラベルと値を使用するため、[Scalar Helm Charts](https://github.com/scalar-labs/helm-charts) を使用して ScalarDB と ScalarDL をインストールすると、Scalar Manager はこれらのデプロイメントを自動的に検出します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-analytics-postgresql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-analytics-postgresql.mdx new file mode 100644 index 00000000..57f8d795 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-analytics-postgresql.mdx @@ -0,0 +1,533 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (ScalarDB Analytics with PostgreSQL) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、Kubernetes クラスターの Helm Chart をテスト環境として使用して、ScalarDB Analytics with PostgreSQL を開始する方法について説明します。さらに、このガイドの内容は、テスト用に Mac または Linux 環境がすでにセットアップされていることを前提としています。**minikube** について言及していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。 + +## あなたが作成するもの + +次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++-------------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] | +| | +| +------------------------------------+ | +| +---> | ScalarDB Analytics with PostgreSQL | ---+ +-----------------------------+ | +| | +------------------------------------+ | +---> | MySQL (「顧客」スキーマ) | <---+ | +| | | | +-----------------------------+ | | +| +-------------+ +---------+ | +------------------------------------+ | | | | +| | OLAP クライアント | ---> | サービス | ---+---> | ScalarDB Analytics with PostgreSQL | ---+---+ +---+ | +| +-------------+ +---------+ | +------------------------------------+ | | | | | +| | | | +-----------------------------+ | | | +| | +------------------------------------+ | +---> | PostgreSQL (「順序」スキーマ) | <---+ | | +| +---> | ScalarDB Analytics with PostgreSQL | ---+ +-----------------------------+ | | +| +------------------------------------+ | | +| | | +| +-------------+ | | +| | OLTP クライアント | ---(テスト OLTP ワークロードでサンプルデータをロードする)-----------------------------------------------------------------------+ | +| +-------------+ | +| | ++-------------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。**minikube** 環境を使用している場合は、[Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)を参照してください。すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ2. MySQL および PostgreSQL ポッドを開始する + +ScalarDB Analytics with PostgreSQL を含むScalarDBは、バックエンドデータベースとして数種類のデータベースシステムを利用できます。このガイドでは、MySQL と PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに MySQL と PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Helm リポジトリを更新します。 + + ```console + helm repo update bitnami + ``` + +1. MySQLをデプロイします。 + + ```console + helm install mysql-scalardb bitnami/mysql \ + --set auth.rootPassword=mysql \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQLをデプロイします。 + + ```console + helm install postgresql-scalardb bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. MySQL および PostgreSQL ポッドが実行されているかどうかを確認します。 + + ```console + kubectl get pod + ``` + + 次の出力が表示されるはずです。 + + ```console + kubectl get pod + ``` + + 次のような結果が表示されます: + + ```console + NAME READY STATUS RESTARTS AGE + mysql-scalardb-0 1/1 Running 0 3m17s + postgresql-scalardb-0 1/1 Running 0 3m12s + ``` + +## ステップ3. 作業ディレクトリを作成する + +いくつかの構成ファイルをローカルに作成するので、それらのファイル用の作業ディレクトリを作成します。 + + ```console + mkdir -p ~/scalardb-analytics-postgresql-test/ + ``` + +## ステップ4. ScalarDB、ScalarDB Analytics with PostgreSQL、およびチャートのバージョンを設定します + +以下の3つの環境変数を設定します。別のバージョンの ScalarDB および ScalarDB Analytics with PostgreSQL を使用する場合は、必ず使用するバージョンに設定してください。 + +:::note + +ScalarDB Analytics with PostgreSQL のマイナーバージョン (例: 3.10.x) を ScalarDB と同じにする必要がありますが、パッチのバージョンを一致させる必要はありません。たとえば、ScalarDB 3.10.1と ScalarDB Analytics with PostgreSQL 3.10.3を併用できます。 + +::: + +```console +SCALARDB_VERSION=3.10.1 +``` + +```console +SCALARDB_ANALYTICS_WITH_POSTGRESQL_VERSION=3.10.3 +``` + +```console +CHART_VERSION=$(helm search repo scalar-labs/scalardb-analytics-postgresql -l | grep -e ${SCALARDB_ANALYTICS_WITH_POSTGRESQL_VERSION} | awk '{print $2}' | sort --version-sort -r | head -n 1) +``` + +## ステップ5. OLTP トランザクションを実行して、サンプルデータを MySQL および PostgreSQL にロードします + +ScalarDB Analytics with PostgreSQL を導入する前に、OLTPトランザクションを実行してサンプルデータを作成します。 + +1. Kubernetes クラスターで OLTP クライアントポッドを開始します。 + + ```console + kubectl run oltp-client --image eclipse-temurin:8-jdk-jammy --env SCALARDB_VERSION=${SCALARDB_VERSION} -- sleep inf + ``` + +1. OLTP クライアントポッドが実行されているかどうかを確認します。 + + ```console + kubectl get pod oltp-client + ``` + + 次の出力が表示されるはずです。 + + ```console + kubectl get pod oltp-client + ``` + + 次のような結果が表示されます: + + ```console + NAME READY STATUS RESTARTS AGE + oltp-client 1/1 Running 0 17s + ``` + +1. OLTP クライアントポッドで bash を実行します。 + + ```console + kubectl exec -it oltp-client -- bash + ``` + + この手順の後、OLTP クライアントポッドで各コマンドを実行します。 + +1. git および curl コマンドを OLTP クライアントポッドにインストールします。 + + ```console + apt update && apt install -y curl git + ``` + +1. ScalarDB サンプルリポジトリのクローンを作成します。 + + ```console + git clone https://github.com/scalar-labs/scalardb-samples.git + ``` + +1. ディレクトリ `scalardb-samples/multi-storage-transaction-sample/` に移動します。 + + ```console + cd scalardb-samples/multi-storage-transaction-sample/ + ``` + + ```console + pwd + ``` + + 次の出力が表示されるはずです。 + + ```console + # pwd + /scalardb-samples/multi-storage-transaction-sample + ``` + +1. Kubernetes クラスター内の MySQL および PostgreSQL にアクセスするための構成ファイル (`database.properties`) を作成します。 + + ```console + cat << 'EOF' > database.properties + scalar.db.storage=multi-storage + scalar.db.multi_storage.storages=storage0,storage1 + + # Storage 0 + scalar.db.multi_storage.storages.storage0.storage=jdbc + scalar.db.multi_storage.storages.storage0.contact_points=jdbc:mysql://mysql-scalardb.default.svc.cluster.local:3306/ + scalar.db.multi_storage.storages.storage0.username=root + scalar.db.multi_storage.storages.storage0.password=mysql + + # Storage 1 + scalar.db.multi_storage.storages.storage1.storage=jdbc + scalar.db.multi_storage.storages.storage1.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.multi_storage.storages.storage1.username=postgres + scalar.db.multi_storage.storages.storage1.password=postgres + + scalar.db.multi_storage.namespace_mapping=customer:storage0,order:storage1 + scalar.db.multi_storage.default_storage=storage1 + EOF + ``` + +1. [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases) から Schema Loader をダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardb/releases/download/v${SCALARDB_VERSION}/scalardb-schema-loader-${SCALARDB_VERSION}.jar + ``` + +1. Schema Loader を実行してサンプルテーブルを作成します。 + + ```console + java -jar scalardb-schema-loader-${SCALARDB_VERSION}.jar --config database.properties --schema-file schema.json --coordinator + ``` + +1. サンプルワークロードの初期データをロードします。 + + ```console + ./gradlew run --args="LoadInitialData" + ``` + +1. OLTP トランザクションのサンプルワークロードを実行します。これらのコマンドを実行すると、サンプルデータとしていくつかの `order` エントリが作成されます。 + + ```console + ./gradlew run --args="PlaceOrder 1 1:3,2:2" + ``` + + ```console + ./gradlew run --args="PlaceOrder 1 5:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 2 3:1,4:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 2 2:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 1:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 2:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 3:1" + ``` + + ```console + ./gradlew run --args="PlaceOrder 3 5:1" + ``` + + +1. OLTPクライアントを終了します。 + + ```console + exit + ``` + +## ステップ6. ScalarDB Analytics with PostgreSQL のデプロイ + +バックエンドデータベースにScalarDB経由でサンプルデータを作成した後、ScalarDB Analytics with PostgreSQL をデプロイします。 + +1. ScalarDB Analytics with PostgreSQL のカスタム値ファイル (`scalardb-analytics-postgresql-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ~/scalardb-analytics-postgresql-test/scalardb-analytics-postgresql-custom-values.yaml + scalardbAnalyticsPostgreSQL: + databaseProperties: | + scalar.db.storage=multi-storage + scalar.db.multi_storage.storages=storage0,storage1 + + # Storage 0 + scalar.db.multi_storage.storages.storage0.storage=jdbc + scalar.db.multi_storage.storages.storage0.contact_points=jdbc:mysql://mysql-scalardb.default.svc.cluster.local:3306/ + scalar.db.multi_storage.storages.storage0.username=root + scalar.db.multi_storage.storages.storage0.password=mysql + + # Storage 1 + scalar.db.multi_storage.storages.storage1.storage=jdbc + scalar.db.multi_storage.storages.storage1.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.multi_storage.storages.storage1.username=postgres + scalar.db.multi_storage.storages.storage1.password=postgres + + scalar.db.multi_storage.namespace_mapping=customer:storage0,order:storage1 + scalar.db.multi_storage.default_storage=storage1 + schemaImporter: + namespaces: + - customer + - order + EOF + ``` + +1. PostgreSQL のスーパーユーザーパスワードを設定するためのシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardb-analytics-postgresql-superuser-password --from-literal=superuser-password=scalardb-analytics + ``` + +1. ScalarDB Analytics with PostgreSQL を導入します。 + + ```console + helm install scalardb-analytics-postgresql scalar-labs/scalardb-analytics-postgresql -n default -f ~/scalardb-analytics-postgresql-test/scalardb-analytics-postgresql-custom-values.yaml --version ${CHART_VERSION} + ``` + +## ステップ7. OLAP クライアントポッドを実行する + +ScalarDB Analytics with PostgreSQL を介して一部のクエリを実行するには、OLAP クライアントポッドを実行します。 + +1. Kubernetes クラスターで OLAP クライアントポッドを開始します。 + + ```console + kubectl run olap-client --image postgres:latest -- sleep inf + ``` + +1. OLAP クライアントポッドが実行されているかどうかを確認します。 + + ```console + kubectl get pod olap-client + ``` + + 次の出力が表示されるはずです。 + + ```console + kubectl get pod olap-client + ``` + + 次のような結果が表示されます: + + ```console + NAME READY STATUS RESTARTS AGE + olap-client 1/1 Running 0 10s + ``` + +## ステップ8. ScalarDB Analytics with PostgreSQL を介してサンプルクエリを実行する + +OLAP クライアントポッドを実行した後、ScalarDB Analytics with PostgreSQL を介していくつかのクエリを実行できます。 + +1. OLAP クライアントポッドで bash を実行します。 + + ```console + kubectl exec -it olap-client -- bash + ``` + + この手順の後、OLAP クライアントポッドで各コマンドを実行します。 + +1. psqlコマンドを実行して ScalarDB Analytics with PostgreSQL にアクセスします。 + + ```console + psql -h scalardb-analytics-postgresql -p 5432 -U postgres -d scalardb + ``` + + パスワードは `scalardb-analytics` です。 + +1. `customer.customers` テーブルのサンプルデータを読み取ります。 + + ```sql + SELECT * FROM customer.customers; + ``` + + 次の出力が表示されるはずです。 + + ```sql + customer_id | name | credit_limit | credit_total + -------------+---------------+--------------+-------------- + 1 | Yamada Taro | 10000 | 10000 + 2 | Yamada Hanako | 10000 | 9500 + 3 | Suzuki Ichiro | 10000 | 8500 + (3 rows) + ``` + +1. `order.orders` テーブルのサンプルデータを読み取ります。 + + ```sql + SELECT * FROM "order".orders; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM "order".orders; + customer_id | timestamp | order_id + -------------+---------------+-------------------------------------- + 1 | 1700124015601 | 5ae2a41b-990d-4a16-9700-39355e29adf8 + 1 | 1700124021273 | f3f23d93-3862-48be-8a57-8368b7c8689e + 2 | 1700124028182 | 696a895a-8998-4c3b-b112-4d5763bfcfd8 + 2 | 1700124036158 | 9215d63a-a9a2-4471-a990-45897f091ca5 + 3 | 1700124043744 | 9be70cd4-4f93-4753-9d89-68e250b2ac51 + 3 | 1700124051162 | 4e8ce2d2-488c-40d6-aa52-d9ecabfc68a8 + 3 | 1700124058096 | 658b6682-2819-41f2-91ee-2802a1f02857 + 3 | 1700124071240 | 4e2f94f4-53ec-4570-af98-7c648d8ed80f + (8 rows) + ``` + +1. `order.statements` テーブルのサンプルデータを読み取ります。 + + ```sql + SELECT * FROM "order".statements; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM "order".statements; + order_id | item_id | count + --------------------------------------+---------+------- + 5ae2a41b-990d-4a16-9700-39355e29adf8 | 2 | 2 + 5ae2a41b-990d-4a16-9700-39355e29adf8 | 1 | 3 + f3f23d93-3862-48be-8a57-8368b7c8689e | 5 | 1 + 696a895a-8998-4c3b-b112-4d5763bfcfd8 | 4 | 1 + 696a895a-8998-4c3b-b112-4d5763bfcfd8 | 3 | 1 + 9215d63a-a9a2-4471-a990-45897f091ca5 | 2 | 1 + 9be70cd4-4f93-4753-9d89-68e250b2ac51 | 1 | 1 + 4e8ce2d2-488c-40d6-aa52-d9ecabfc68a8 | 2 | 1 + 658b6682-2819-41f2-91ee-2802a1f02857 | 3 | 1 + 4e2f94f4-53ec-4570-af98-7c648d8ed80f | 5 | 1 + (10 rows) + ``` + +1. `order.items` テーブルのサンプルデータを読み取ります。 + + ```sql + SELECT * FROM "order".items; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM "order".items; + item_id | name | price + ---------+--------+------- + 5 | Melon | 3000 + 2 | Orange | 2000 + 4 | Mango | 5000 + 1 | Apple | 1000 + 3 | Grape | 2500 + (5 rows) + ``` + +1. `JOIN` クエリを実行します。例えば以下のように各ユーザーのクレジット残高情報を確認できます。 + + ```sql + SELECT * FROM ( + SELECT c.name, c.credit_limit - c.credit_total AS remaining, array_agg(i.name) OVER (PARTITION BY c.name) AS items + FROM "order".orders o + JOIN customer.customers c ON o.customer_id = c.customer_id + JOIN "order".statements s ON o.order_id = s.order_id + JOIN "order".items i ON s.item_id = i.item_id + ) AS remaining_info GROUP BY name, remaining, items; + ``` + + 次の出力が表示されるはずです。 + + ```sql + scalardb=# SELECT * FROM ( + scalardb(# SELECT c.name, c.credit_limit - c.credit_total AS remaining, array_agg(i.name) OVER (PARTITION BY c.name) AS items + scalardb(# FROM "order".orders o + scalardb(# JOIN customer.customers c ON o.customer_id = c.customer_id + scalardb(# JOIN "order".statements s ON o.order_id = s.order_id + scalardb(# JOIN "order".items i ON s.item_id = i.item_id + scalardb(# ) AS remaining_info GROUP BY name, remaining, items; + name | remaining | items + ---------------+-----------+---------------------------- + Suzuki Ichiro | 1500 | {Grape,Orange,Apple,Melon} + Yamada Hanako | 500 | {Orange,Grape,Mango} + Yamada Taro | 0 | {Orange,Melon,Apple} + (3 rows) + ``` + +1. psql コマンドを終了します。 + + ```console + \q + ``` + +1. OLAP クライアントポッドを終了します。 + + ```console + exit + ``` + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDB Analytics with PostgreSQL テストを完了したら、すべてのリソースを削除します。 + +1. MySQL、PostgreSQL、および ScalarDB Analytics with PostgreSQL をアンインストールします。 + + ```console + helm uninstall mysql-scalardb postgresql-scalardb scalardb-analytics-postgresql + ``` + +1. クライアントポッドを削除します。 + + ```console + kubectl delete pod oltp-client olap-client --grace-period 0 + ``` + +1. シークレットリソースを削除します。 + + ```console + kubectl delete secrets scalardb-analytics-postgresql-superuser-password + ``` + +1. 作業ディレクトリとサンプルファイルを削除します。 + + ```console + cd ~ + ``` + + ```console + rm -rf ~/scalardb-analytics-postgresql-test/ + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx new file mode 100644 index 00000000..988ef514 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-cluster-tls-cert-manager.mdx @@ -0,0 +1,596 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Helm Chart をはじめよう (cert-manager を使用した TLS 対応 ScalarDB Cluster) + +このチュートリアルでは、テスト環境の Kubernetes クラスターで Helm Charts と cert-manager を使用して、TLS 構成の ScalarDB Cluster を開始する方法について説明します。開始する前に、テスト用の Mac または Linux 環境がすでに用意されている必要があります。また、このチュートリアルでは **minikube** の使用について説明していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。 +* TLS をサポートする ScalarDB Cluster 3.12以降を使用する必要があります。 + +## 作成するもの + +このチュートリアルでは、次の方法で Kubernetes クラスターに次のコンポーネントをデプロイします。 + +``` ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +------------------------+ | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| [Pod] | +-------+ | | +------------------------+ | | +| | | | | | +| +-----------+ +---------+ | +-------+ | +--------------------+ | +------------------------+ | +---------------+ | +| | Client | ---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | ScalarDB Cluster node | ---+---> | PostgreSQL | | +| | (SQL CLI) | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | +------------------------+ | | (For Ledger) | | +| +-----------+ +---------+ | | +--------------------+ | | +---------------+ | +| | +-------+ | | +------------------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| +-------+ +------------------------+ | +| | +| +----------------------------------------------------------------------------------+ +---------------------+ | +| | cert-manager (create private key and certificate for Envoy and ScalarDB Cluster) | | Issuer (Private CA) | | +| +----------------------------------------------------------------------------------+ +---------------------+ | +| | ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +``` + +cert-manager は、TLS 接続用に次の秘密鍵と証明書ファイルを自動的に作成します。 + +``` + +----------------------+ + +---> | For Scalar Envoy | + | +----------------------+ + | | tls.key | + | | tls.crt | ++-------------------------+ | +----------------------+ +| Issuer (Self-signed CA) | ---(Sign certificates)---+ ++-------------------------+ | +----------------------+ +| tls.key | +---> | For ScalarDB Cluster | +| tls.crt | +----------------------+ +| ca.crt | | tls.key | ++-------------------------+ | tls.crt | + +----------------------+ +``` + +Scalar Helm Charts は、Envoy および ScalarDB Cluster の各秘密鍵と証明書ファイルを次のように自動的にマウントし、各接続で TLS を有効にします。ルート CA 証明書ファイルはクライアントに手動でマウントします。 + +``` ++-------------------------------------+ +------------------------------------------------+ +--------------------------------+ +| Client | ---(CRUD/SQL requests)---> | Envoy for ScalarDB Cluster | ---> | ScalarDB Cluster nodes | ++-------------------------------------+ +------------------------------------------------+ +--------------------------------+ +| ca.crt (to verify tls.crt of Envoy) | | tls.key | | tls.key | ++-------------------------------------+ | tls.crt | | tls.crt | + | ca.crt (to verify tls.crt of ScalarDB Cluster) | | ca.crt (to check health) | + +------------------------------------------------+ +--------------------------------+ +``` + +ScalarDB Cluster 関連コンポーネント間には、次の接続が存在します。 + +* **`クライアント - ScalarDB Cluster の Envoy`:** CRUD API または SQL API 関数を実行すると、クライアントは ScalarDB Cluster の Envoy にアクセスします。 +* **`ScalarDB Cluster の Envoy - ScalarDB Cluster`:** Envoy は ScalarDB Cluster の前で L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDB Cluster ノード - ScalarDB Cluster ノード`:** ScalarDB Cluster ノードは他の ScalarDB Cluster ノードにアクセスします。つまり、クラスターの内部通信はすべての ScalarDB Cluster ノード間で行われます。 + +## ステップ1. Kubernetesクラスターを起動してツールをインストールする + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。インストール方法の詳細については、[Scalar Helm Charts の使用開始](getting-started-scalar-helm-charts.mdx)を参照してください。 + +## ステップ2. PostgreSQLコンテナを起動する + +ScalarDB Cluster では、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. ScalarDB Cluster 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-scalardb-cluster bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 34s + ``` + +## ステップ3. 作業ディレクトリを作成する + +ローカルにいくつかの設定ファイルを作成します。必ずそれらのファイル用の作業ディレクトリを作成してください。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardb-cluster-test/ + ``` + +## ステップ4. cert-manager と issuer リソースをデプロイする + +このチュートリアルでは、cert-manager を使用して秘密鍵と証明書を発行および管理します。次のようにして、Kubernetes クラスターに cert-manager をデプロイできます。 + +1. Jetstack helm リポジトリを追加します。 + + ```console + helm repo add jetstack https://charts.jetstack.io + ``` + +1. cert-manager をデプロイします。 + + ```console + helm install cert-manager jetstack/cert-manager \ + --create-namespace \ + --set installCRDs=true \ + -n cert-manager + ``` + +1. cert-manager コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n cert-manager + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + cert-manager-6dc66985d4-6lvtt 1/1 Running 0 26s + cert-manager-cainjector-c7d4dbdd9-xlrpn 1/1 Running 0 26s + cert-manager-webhook-847d7676c9-ckcz2 1/1 Running 0 26s + ``` + +1. 作業ディレクトリを `${HOME}/scalardb-cluster-test/` に変更します。 + + ```console + cd ${HOME}/scalardb-cluster-test/ + ``` + +1. プライベート CA のカスタム値ファイル (`private-ca-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/private-ca-custom-values.yaml + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-issuer + spec: + selfSigned: {} + --- + apiVersion: cert-manager.io/v1 + kind: Certificate + metadata: + name: self-signed-ca-cert + spec: + isCA: true + commonName: self-signed-ca + secretName: self-signed-ca-cert-secret + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: self-signed-issuer + kind: Issuer + group: cert-manager.io + --- + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-ca + spec: + ca: + secretName: self-signed-ca-cert-secret + EOF + ``` + +1. 自己署名 CA を展開します。 + + ```console + kubectl apply -f ./private-ca-custom-values.yaml + ``` + +1. 発行者リソースが `True` であるかどうかを確認します。 + + ```console + kubectl get issuer + ``` + + [コマンド実行結果] + + ```console + NAME READY AGE + self-signed-ca True 6s + self-signed-issuer True 6s + ``` + +## ステップ5. Helm Charts を使用して Kubernetes クラスターに ScalarDB Cluster をデプロイする + +1. Scalar Helm Charts リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ライセンスキーと証明書を環境変数として設定します。ライセンスキーがない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。`` の値の詳細については、[製品ライセンスキーを構成する方法](https://scalardb.scalar-labs.com/docs/latest/scalar-licensing/)を参照してください。 + + ```console + SCALAR_DB_CLUSTER_LICENSE_KEY='' + SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM='' + ``` + +1. ScalarDB Cluster のカスタム値ファイル (`scalardb-cluster-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml + envoy: + + enabled: true + + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - envoy.scalar.example.com + upstream: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + + scalardbCluster: + + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium" + + scalardbClusterNodeProperties: | + ### Necessary configurations for deployment on Kuberetes + scalar.db.cluster.membership.type=KUBERNETES + scalar.db.cluster.membership.kubernetes.endpoint.namespace_name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME} + scalar.db.cluster.membership.kubernetes.endpoint.name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME} + + ### Storage configurations + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb-cluster.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DB_CLUSTER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DB_CLUSTER_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + + ### SQL configurations + scalar.db.sql.enabled=true + + ### Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.cross_partition_scan.enabled=true + + ### TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/tls/scalardb-cluster/certs/ca.crt + scalar.db.cluster.node.tls.cert_chain_path=/tls/scalardb-cluster/certs/tls.crt + scalar.db.cluster.node.tls.private_key_path=/tls/scalardb-cluster/certs/tls.key + scalar.db.cluster.tls.override_authority=cluster.scalardb.example.com + + ### License key configurations + scalar.db.cluster.node.licensing.license_key=${env:SCALAR_DB_CLUSTER_LICENSE_KEY} + scalar.db.cluster.node.licensing.license_check_cert_pem=${env:SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - cluster.scalardb.example.com + + secretName: "scalardb-credentials-secret" + EOF + ``` + +1. 資格情報とライセンスキーを含む `scalardb-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_CLUSTER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DB_CLUSTER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DB_CLUSTER_LICENSE_KEY="${SCALAR_DB_CLUSTER_LICENSE_KEY}" \ + --from-file=SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\ + /g') \ + -n default + ``` + +1. ScalarDB Cluster のチャートバージョンを設定します。 + + ```console + SCALAR_DB_CLUSTER_VERSION=3.12.2 + SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDB Cluster をデプロイします。 + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml --version ${SCALAR_DB_CLUSTER_CHART_VERSION} -n default + ``` + +1. ScalarDB Cluster ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 4m30s + scalardb-cluster-envoy-7cc948dfb-4rb8l 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-hwt96 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-rzbrx 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-445kj 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-4z54q 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-vcv96 1/1 Running 0 18s + ``` + + ScalarDB Cluster ポッドが適切にデプロイされている場合、それらのポッドの `STATUS` 列には `Running` と表示されます。 + +1. ScalarDB Cluster サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [コマンド実行結果] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 7h34m + postgresql-scalardb-cluster ClusterIP 10.96.92.27 5432/TCP 4m52s + postgresql-scalardb-cluster-hl ClusterIP None 5432/TCP 4m52s + scalardb-cluster-envoy ClusterIP 10.96.250.175 60053/TCP 40s + scalardb-cluster-envoy-metrics ClusterIP 10.96.40.197 9001/TCP 40s + scalardb-cluster-headless ClusterIP None 60053/TCP 40s + scalardb-cluster-metrics ClusterIP 10.96.199.135 9080/TCP 40s + ``` + + ScalarDB Cluster サービスが適切にデプロイされている場合は、`CLUSTER-IP` 列にプライベート IP アドレスが表示されます。 + +:::note + +`postgresql-scalardb-cluster-hl` と `scalardb-cluster-headless` の `CLUSTER-IP` 値は、IP アドレスがないため `None` になります。 + +::: + +## ステップ6. クライアントコンテナを起動する + +CA 証明書ファイルはクライアントコンテナーで使用します。そのため、シークレットリソースを作成し、それをクライアントコンテナーにマウントする必要があります。 + +1. `client-ca-cert` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=ca.crt=<(kubectl get secret self-signed-ca-cert-secret -o "jsonpath={.data['ca\.crt']}" | base64 -d) -n default + ``` + +1. クライアントポッドのマニフェストファイル (`scalardb-cluster-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardb-cluster-client" + spec: + containers: + - name: scalardb-cluster-client + image: eclipse-temurin:8-jre-jammy + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DB_CLUSTER_VERSION + value: SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/" + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェストファイルで ScalarDB Cluster のバージョンを設定します。 + + ```console + sed -i s/SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION/${SCALAR_DB_CLUSTER_VERSION}/ ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml -n default + ``` + +1. クライアントコンテナーが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardb-cluster-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardb-cluster-client 1/1 Running 0 26s + ``` + +## ステップ7. クライアントコンテナで ScalarDB Cluster SQL CLI を実行する + +1. クライアントコンテナーで bash を実行します。 + + ```console + kubectl exec -it scalardb-cluster-client -n default -- bash + ``` + + 次の手順のコマンドは、クライアントコンテナーで実行する必要があります。 + +1. [リリース](https://github.com/scalar-labs/scalardb/releases)から ScalarDB Cluster SQL CLI をダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardb/releases/download/v${SCALAR_DB_CLUSTER_VERSION}/scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar + ``` + +1. `database.properties` ファイルを作成し、設定を追加します。 + + ```console + cat << 'EOF' > /database.properties + # ScalarDB Cluster configurations + scalar.db.sql.connection_mode=cluster + scalar.db.sql.cluster_mode.contact_points=indirect:scalardb-cluster-envoy.default.svc.cluster.local + + # Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.sql.cluster_mode.username=admin + scalar.db.sql.cluster_mode.password=admin + + # TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/certs/ca.crt + scalar.db.cluster.tls.override_authority=envoy.scalar.example.com + EOF + ``` + +1. ScalarDB Cluster SQL CLI を実行します。 + + ```console + java -jar /scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar --config /database.properties + ``` + +1. `ns` という名前のサンプル名前空間を作成します。 + + ```sql + CREATE NAMESPACE ns; + ``` + +1. 名前空間 `ns` の下に `tbl` という名前のサンプルテーブルを作成します。 + + ```sql + CREATE TABLE ns.tbl (a INT, b INT, c INT, PRIMARY KEY(a, b)); + ``` + +1. サンプルレコードを挿入します。 + + ```sql + INSERT INTO ns.tbl VALUES (1,2,3), (4,5,6), (7,8,9); + ``` + +1. 挿入したサンプルレコードを選択します。 + + ```sql + SELECT * FROM ns.tbl; + ``` + + [コマンド実行結果] + + ```sql + 0: scalardb> SELECT * FROM ns.tbl; + +---+---+---+ + | a | b | c | + +---+---+---+ + | 7 | 8 | 9 | + | 1 | 2 | 3 | + | 4 | 5 | 6 | + +---+---+---+ + 3 rows selected (0.059 seconds) + ``` + +1. ScalarDB Cluster SQL CLI を終了するには、`Ctrl + D` を押します。 + + ```console + ^D + ``` + +1. クライアントコンテナーを終了します。 + + ```console + exit + ``` + +## ステップ8. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDB Cluster テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDB Cluster と PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardb-cluster postgresql-scalardb-cluster + ``` + +1. 自己署名 CA を削除します。 + + ``` + kubectl delete -f ./private-ca-custom-values.yaml + ``` + +1. cert-manager をアンインストールします。 + + ```console + helm uninstall -n cert-manager cert-manager + ``` + +1. クライアントコンテナを削除します。 + + ``` + kubectl delete pod scalardb-cluster-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets scalardb-credentials-secret self-signed-ca-cert-secret scalardb-cluster-envoy-tls-cert scalardb-cluster-tls-cert client-ca-cert + ``` + +1. ネームスペース `cert-manager` を削除します。 + + ``` + kubectl delete ns cert-manager + ``` + +1. 作業ディレクトリとサンプル構成ファイルを削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardb-cluster-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のチュートリアルを参照してください。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki Stack を使用したログ記録)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-cluster-tls.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-cluster-tls.mdx new file mode 100644 index 00000000..52e928be --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb-cluster-tls.mdx @@ -0,0 +1,625 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (TLS を使用した ScalarDB Cluster) + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、TLS 構成で ScalarDB Cluster を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDB Cluster のライセンスキー (トライアルライセンスまたは商用ライセンス) を取得する必要があります。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)してください。 +* TLSをサポートするScalarDB Cluster v3.12以降を使用する必要があります。 + +## 作成するもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +------------------------+ | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| [Pod] | +-------+ | | +------------------------+ | | +| | | | | | +| +-----------+ +---------+ | +-------+ | +--------------------+ | +------------------------+ | +---------------+ | +| | Client | ---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | ScalarDB Cluster node | ---+---> | PostgreSQL | | +| | (SQL CLI) | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | +------------------------+ | | (For Ledger) | | +| +-----------+ +---------+ | | +--------------------+ | | +---------------+ | +| | +-------+ | | +------------------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDB Cluster node | ---+ | +| +-------+ +------------------------+ | +| | ++----------------------------------------------------------------------------------------------------------------------------------------------------+ +``` + +TLS 接続用に次の秘密鍵ファイルと証明書ファイルを作成します。 + +``` + +-------------------------------+ + +---> | For Scalar Envoy | + | +-------------------------------+ + | | envoy-key.pem | + | | envoy.pem | ++----------------------+ | +-------------------------------+ +| Self-signed CA | ---(Sign certificates)---+ ++----------------------+ | +-------------------------------+ +| ca-key.pem | +---> | For ScalarDB Cluster | +| ca.pem | +-------------------------------+ ++----------------------+ | scalardb-cluster-key.pem | + | scalardb-cluster.pem | + +-------------------------------+ +``` + +各接続で TLS を有効にするために、各秘密鍵と証明書ファイルを次のように設定します。 + +``` ++--------------------------------+ +-----------------------------------------+ +-----------------------------------------+ +| Client | ---(CRUD/SQL requests)---> | Envoy for ScalarDB Cluster | ---> | ScalarDB Cluster nodes | ++--------------------------------+ +-----------------------------------------+ +-----------------------------------------+ +| ca.pem (to verify envoy.pem) | | envoy-key.pem | | scalardb-cluster-key.pem | ++--------------------------------+ | envoy.pem | | scalardb-cluster.pem | + | ca.pem (to verify scalardb-cluster.pem) | | ca.pem (used for health check) | + +-----------------------------------------+ +-----------------------------------------+ +``` + +ScalarDB Cluster 関連コンポーネント間には、次の接続があります。 + +* **`クライアント - ScalarDB Cluster の Envoy`:** 一部のCRUD APIやSQL APIを実行すると、クライアントはEnvoy for ScalarDB Clusterにアクセスします。 +* **`ScalarDB Cluster の Envoy - ScalarDB Cluster`:** Envoy は、ScalarDB Cluster の前の L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDB Cluster ノード - ScalarDB Cluster ノード`:** ScalarDB Cluster ノードから別の ScalarDB Cluster ノードにアクセスします。言い換えれば、すべての ScalarDB Cluster ノード間でクラスターの内部通信が行われます。 + +## ステップ1. Kubernetes クラスターを開始する + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。インストール方法の詳細については、[Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)を参照してください。 + +## ステップ2. PostgreSQL コンテナーを開始する + +ScalarDB Cluster は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. ScalarDB Cluster 用の PostgreSQL をデプロイします。 + + ```console + helm install postgresql-scalardb-cluster bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 34s + ``` + +## ステップ3. 作業ディレクトリを作成する + +いくつかの構成ファイルと秘密鍵および証明書ファイルをローカルに作成します。したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardb-cluster-test/certs/ + ``` + +## ステップ4. 秘密鍵および証明書ファイルを作成する + +秘密鍵と証明書ファイルを作成します。 + +1. 作業ディレクトリを `${HOME}/scalardb-cluster-test/certs/` ディレクトリに変更します。 + + ```console + cd ${HOME}/scalardb-cluster-test/certs/ + ``` + +1. CA の情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/ca.json + { + "CN": "scalar-test-ca", + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Test CA" + } + ] + } + EOF + ``` + +1. CA の秘密鍵/証明書ファイルを作成します。 + + ```console + cfssl gencert -initca ca.json | cfssljson -bare ca + ``` + +1. CA 構成を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/ca-config.json + { + "signing": { + "default": { + "expiry": "87600h" + }, + "profiles": { + "scalar-test-ca": { + "expiry": "87600h", + "usages": [ + "signing", + "key encipherment", + "server auth" + ] + } + } + } + } + EOF + ``` + +1. Envoy 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/envoy.json + { + "CN": "scalar-envoy", + "hosts": [ + "envoy.scalar.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Envoy Test" + } + ] + } + EOF + ``` + +1. ScalarDB Cluster 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/certs/scalardb-cluster.json + { + "CN": "scalardb-cluster", + "hosts": [ + "cluster.scalardb.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "ScalarDB Cluster Test" + } + ] + } + EOF + ``` + +1. Envoy の秘密鍵および証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca envoy.json | cfssljson -bare envoy + ``` + +1. ScalarDB Cluster の秘密鍵および証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca scalardb-cluster.json | cfssljson -bare scalardb-cluster + ``` + +1. 秘密鍵および証明書ファイルが作成されたことを確認します。 + + ```console + ls -1 + ``` + + [コマンド実行結果] + + ```console + ca-config.json + ca-key.pem + ca.csr + ca.json + ca.pem + envoy-key.pem + envoy.csr + envoy.json + envoy.pem + scalardb-cluster-key.pem + scalardb-cluster.csr + scalardb-cluster.json + scalardb-cluster.pem + ``` + +## ステップ5. Helm Charts を使用して Kubernetes クラスターに ScalarDB Cluster をデプロイする + +1. Scalar helm リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ScalarDB Cluster のカスタム値ファイル (`scalardb-cluster-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml + envoy: + + enabled: true + + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" + upstream: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + caRootCertSecret: "scalardb-cluster-tls-ca" + + scalardbCluster: + + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium" + + scalardbClusterNodeProperties: | + ### Necessary configurations for deployment on Kuberetes + scalar.db.cluster.membership.type=KUBERNETES + scalar.db.cluster.membership.kubernetes.endpoint.namespace_name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME} + scalar.db.cluster.membership.kubernetes.endpoint.name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME} + + ### Storage configurations + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb-cluster.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DB_CLUSTER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DB_CLUSTER_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + + ### SQL configurations + scalar.db.sql.enabled=true + + ### Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.cross_partition_scan.enabled=true + + ### TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/tls/scalardb-cluster/certs/ca.crt + scalar.db.cluster.node.tls.cert_chain_path=/tls/scalardb-cluster/certs/tls.crt + scalar.db.cluster.node.tls.private_key_path=/tls/scalardb-cluster/certs/tls.key + scalar.db.cluster.tls.override_authority=cluster.scalardb.example.com + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DB_CLUSTER_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "cluster.scalardb.example.com" + caRootCertSecret: "scalardb-cluster-tls-ca" + certChainSecret: "scalardb-cluster-tls-cert" + privateKeySecret: "scalardb-cluster-tls-key" + + secretName: "scalardb-credentials-secret" + EOF + ``` + +1. ライセンスキーと証明書を環境変数に設定します。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)してください。 + + ```console + SCALAR_DB_CLUSTER_LICENSE_KEY= + SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM= + ``` + +1. 資格情報とライセンスキーを含むシークレットリソース「scalardb-credentials-secret」を作成します。 + + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_CLUSTER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DB_CLUSTER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DB_CLUSTER_LICENSE_KEY=${SCALAR_DB_CLUSTER_LICENSE_KEY} \ + --from-literal=SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM=${SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} \ + -n default + ``` + +1. Envoy の秘密鍵ファイルと証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic envoy-tls-cert --from-file=tls.crt=${HOME}/scalardb-cluster-test/certs/envoy.pem -n default + kubectl create secret generic envoy-tls-key --from-file=tls.key=${HOME}/scalardb-cluster-test/certs/envoy-key.pem -n default + ``` + +1. ScalarDB Cluster の秘密鍵、証明書、CA 証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardb-cluster-tls-ca --from-file=ca.crt=${HOME}/scalardb-cluster-test/certs/ca.pem -n default + kubectl create secret generic scalardb-cluster-tls-cert --from-file=tls.crt=${HOME}/scalardb-cluster-test/certs/scalardb-cluster.pem -n default + kubectl create secret generic scalardb-cluster-tls-key --from-file=tls.key=${HOME}/scalardb-cluster-test/certs/scalardb-cluster-key.pem -n default + ``` + +1. ScalarDB Cluster のチャートのバージョンを設定します。 + + ```console + SCALAR_DB_CLUSTER_VERSION=3.12.2 + SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDB Cluster をデプロイします。 + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f ${HOME}/scalardb-cluster-test/scalardb-cluster-custom-values.yaml --version ${SCALAR_DB_CLUSTER_CHART_VERSION} -n default + ``` + +1. ScalarDB Cluster ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 4m30s + scalardb-cluster-envoy-7cc948dfb-4rb8l 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-hwt96 1/1 Running 0 18s + scalardb-cluster-envoy-7cc948dfb-rzbrx 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-445kj 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-4z54q 1/1 Running 0 18s + scalardb-cluster-node-7c6959c79d-vcv96 1/1 Running 0 18s + ``` + ScalarDB Cluster ポッドが適切にデプロイされている場合は、ステータスが **実行中** であることがわかります。 + +1. ScalarDB Cluster サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [Command execution result] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 7h34m + postgresql-scalardb-cluster ClusterIP 10.96.92.27 5432/TCP 4m52s + postgresql-scalardb-cluster-hl ClusterIP None 5432/TCP 4m52s + scalardb-cluster-envoy ClusterIP 10.96.250.175 60053/TCP 40s + scalardb-cluster-envoy-metrics ClusterIP 10.96.40.197 9001/TCP 40s + scalardb-cluster-headless ClusterIP None 60053/TCP 40s + scalardb-cluster-metrics ClusterIP 10.96.199.135 9080/TCP 40s + ``` + ScalarDB Cluster サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 + +:::note + +`postgresql-scalardb-cluster-hl` と `scalardb-cluster-headless` の `CLUSTER-IP` 値は、IP アドレスがないため `None` になります。 + +::: + +## ステップ6. クライアントコンテナを開始する + +クライアントコンテナでCAの証明書ファイルを使用します。そこで、シークレットリソースを作成し、クライアントコンテナにマウントします。 + +1. シークレットリソース `client-ca-cert` を作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=certificate=${HOME}/scalardb-cluster-test/certs/ca.pem -n default + ``` + +1. クライアントポッドのマニフェストファイル (`scalardb-cluster-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardb-cluster-client" + spec: + containers: + - name: scalardb-cluster-client + image: eclipse-temurin:8-jre-jammy + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DB_CLUSTER_VERSION + value: SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/ca/ca.pem" + subPath: certificate + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェストファイルで ScalarDB Cluster のバージョンを設定します。 + + ```console + sed -i s/SCALAR_DB_CLUSTER_CLIENT_POD_SCALAR_DB_CLUSTER_VERSION/${SCALAR_DB_CLUSTER_VERSION}/ ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardb-cluster-test/scalardb-cluster-client-pod.yaml -n default + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardb-cluster-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardb-cluster-client 1/1 Running 0 26s + ``` + +## ステップ7. ScalarDB Cluster SQL CLI をダウンロードしてクライアントコンテナにコピーします + +1. ScalarDB Cluster SQL CLI を [リリース](https://github.com/scalar-labs/scalardb/releases)からディレクトリ `${HOME}/scalardb-cluster-test/` の下にダウンロードします。 + +1. ScalarDB Cluster SQL CLI をクライアントコンテナにコピーします。 + + ```console + kubectl cp ${HOME}/scalardb-cluster-test/scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar scalardb-cluster-client:/ + ``` + +## ステップ8. クライアントコンテナで ScalarDB Cluster SQL CLI を実行する + +1. クライアントコンテナで bash を実行します。 + + ```console + kubectl exec -it scalardb-cluster-client -n default -- bash + ``` + 次の手順移行のコマンドは、クライアントコンテナ内で実行する必要があります。 + +1. `database.properties` ファイルを作成します。 + + ```console + cat << 'EOF' > /database.properties + # ScalarDB Cluster configurations + scalar.db.sql.connection_mode=cluster + scalar.db.sql.cluster_mode.contact_points=indirect:scalardb-cluster-envoy.default.svc.cluster.local + + # Auth configurations + scalar.db.cluster.auth.enabled=true + scalar.db.sql.cluster_mode.username=admin + scalar.db.sql.cluster_mode.password=admin + + # TLS configurations + scalar.db.cluster.tls.enabled=true + scalar.db.cluster.tls.ca_root_cert_path=/certs/ca/ca.pem + scalar.db.cluster.tls.override_authority=envoy.scalar.example.com + EOF + ``` + +1. ScalarDB Cluster SQL CLI を実行します。 + + ```console + java -jar /scalardb-cluster-sql-cli-${SCALAR_DB_CLUSTER_VERSION}-all.jar --config /database.properties + ``` + +1. サンプル名前空間 `ns` を作成します。 + + ```sql + CREATE NAMESPACE ns; + ``` + +1. 名前空間 `ns` の下にサンプルテーブル `tbl` を作成します。 + + ```sql + CREATE TABLE ns.tbl (a INT, b INT, c INT, PRIMARY KEY(a, b)); + ``` + +1. サンプルレコードを挿入します。 + + ```sql + INSERT INTO ns.tbl VALUES (1,2,3), (4,5,6), (7,8,9); + ``` + +1. 挿入したサンプルレコードを選択します。 + + ```sql + SELECT * FROM ns.tbl; + ``` + + [コマンド実行結果] + + ```sql + 0: scalardb> SELECT * FROM ns.tbl; + +---+---+---+ + | a | b | c | + +---+---+---+ + | 7 | 8 | 9 | + | 1 | 2 | 3 | + | 4 | 5 | 6 | + +---+---+---+ + 3 rows selected (0.059 seconds) + ``` + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDB Cluster のテストが完了したら、すべてのリソースを削除します。 + +1. ScalarDB Cluster と PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardb-cluster postgresql-scalardb-cluster + ``` + +1. クライアントコンテナを削除します。 + + ``` + kubectl delete pod scalardb-cluster-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets scalardb-credentials-secret scalardb-cluster-tls-key scalardb-cluster-tls-cert scalardb-cluster-tls-ca envoy-tls-key envoy-tls-cert client-ca-cert + ``` + +1. 作業ディレクトリとサンプルファイル (構成ファイル、秘密鍵、および証明書) を削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardb-cluster-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb.mdx new file mode 100644 index 00000000..3c6ba2c4 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardb.mdx @@ -0,0 +1,387 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# [非推奨] Helm Charts をはじめよう (ScalarDB Server) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB Server は非推奨になりました。代わりに [ScalarDB Cluster](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart) を使用してください。 + +::: + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDB Server を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +※コンテナイメージ (`scalardb-server` および `scalardb-envoy`) を取得するには、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) または [Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) で ScalarDB を購読する必要があります。詳細については、以下のドキュメントを参照してください。 + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] [ポッド] | +| | +| +-------+ +-----------------+ | +| +---> | Envoy | ---+ +---> | ScalarDB Server | ---+ | +| | +-------+ | | +-----------------+ | | +| | | | | | +| +--------+ +---------+ | +-------+ | +-------------------+ | +-----------------+ | +------------+ | +| | クライアント | ---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDB Server | ---+---> | PostgreSQL | | +| +--------+ | (Envoy) | | +-------+ | | (ScalarDB Server) | | +-----------------+ | +------------+ | +| +---------+ | | +-------------------+ | | | +| | +-------+ | | +-----------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDB Server | ---+ | +| +-------+ +-----------------+ | +| | ++--------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。**minikube** 環境を使用する場合は、[Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)を参照してください。すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ2. PostgreSQL コンテナーを開始する + +ScalarDB は、バックエンドデータベースとして何らかのデータベースシステムを使用します。このドキュメントでは PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. PostgreSQLをデプロイします。 + ```console + helm install postgresql-scalardb bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-0 1/1 Running 0 2m42s + ``` + +## ステップ3. Helm Charts を使用して Kubernetes クラスターに ScalarDB Server をデプロイする + +1. Scalar helm リポジトリを追加します。 + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. AWS/Azure Marketplace から ScalarDB コンテナーイメージをプルするためのシークレットリソースを作成します。 + * AWS Marketplace + ```console + kubectl create secret docker-registry reg-ecr-mp-secrets \ + --docker-server=709825985650.dkr.ecr.us-east-1.amazonaws.com \ + --docker-username=AWS \ + --docker-password=$(aws ecr get-login-password --region us-east-1) + ``` + * Azure Marketplace + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + + 詳細については、以下のドキュメントを参照してください。 + + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +1. ScalarDB Server のカスタム値ファイル (scalardb-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > scalardb-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + scalardb: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-server" + tag: "3.7.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DB_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_POSTGRES_PASSWORD "" }} + secretName: "scalardb-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > scalardb-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardb-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + scalardb: + image: + repository: "/scalarinc/scalardb-server" + tag: "3.7.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DB_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_POSTGRES_PASSWORD "" }} + secretName: "scalardb-credentials-secret" + EOF + ``` + +1. PostgreSQL のユーザー名とパスワードを含む Secret リソースを作成します。 + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DB_POSTGRES_PASSWORD=postgres + ``` + +1. ScalarDB Server をデプロイします。 + ```console + helm install scalardb scalar-labs/scalardb -f ./scalardb-custom-values.yaml + ``` + +1. ScalarDB Server ポッドがデプロイされているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-0 1/1 Running 0 9m48s + scalardb-765598848b-75csp 1/1 Running 0 6s + scalardb-765598848b-w864f 1/1 Running 0 6s + scalardb-765598848b-x8rqj 1/1 Running 0 6s + scalardb-envoy-84c475f77b-kpz2p 1/1 Running 0 6s + scalardb-envoy-84c475f77b-n74tk 1/1 Running 0 6s + scalardb-envoy-84c475f77b-zbrwz 1/1 Running 0 6s + ``` + ScalarDB Server ポッドが適切にデプロイされている場合、STATUS が **Running** であることがわかります。 + +1. ScalarDB Server サービスがデプロイされているかどうかを確認します。 + ```console + kubectl get svc + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-scalardb ClusterIP 10.109.118.122 5432/TCP 10m + postgresql-scalardb-hl ClusterIP None 5432/TCP 10m + scalardb-envoy ClusterIP 10.110.110.250 60051/TCP 41s + scalardb-envoy-metrics ClusterIP 10.107.98.227 9001/TCP 41s + scalardb-headless ClusterIP None 60051/TCP 41s + scalardb-metrics ClusterIP 10.108.188.10 8080/TCP 41s + ``` + ScalarDB Server サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。(注記: `scalardb-headless` には CLUSTER-IP がありません。) + +## ステップ4. クライアントコンテナを開始する + +1. Kubernetes クラスター上でクライアントコンテナーを起動します。 + ```console + kubectl run scalardb-client --image eclipse-temurin:8-jdk --command sleep inf + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod scalardb-client + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + scalardb-client 1/1 Running 0 23s + ``` + +## ステップ5. クライアントコンテナで ScalarDB サンプルアプリケーションを実行する + +以下に最低限の手順を説明します。ScalarDB についてさらに詳しく知りたい場合は、[Getting Started with ScalarDB](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb) を参照してください。 + +1. クライアントコンテナで bash を実行します。 + ```console + kubectl exec -it scalardb-client -- bash + ``` + この手順の後、クライアントコンテナで各コマンドを実行します。 + +1. git およびcurl コマンドをクライアントコンテナにインストールします。 + ```console + apt update && apt install -y git curl + ``` + +1. ScalarDB git リポジトリのクローンを作成します。 + ```console + git clone https://github.com/scalar-labs/scalardb.git + ``` + +1. ディレクトリを `scalardb/` に変更します。 + ```console + cd scalardb/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + /scalardb + ``` + +1. ブランチを任意のバージョンに変更します。 + ```console + git checkout -b v3.7.0 refs/tags/v3.7.0 + ``` + ```console + git branch + ``` + 【コマンド実行結果】 + + ```console + master + * v3.7.0 + ``` + + 別のバージョンを使用する場合は、使用するバージョン (タグ) を指定してください。 + +1. ディレクトリを `docs/getting-started/` に変更します。 + ```console + cd docs/getting-started/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + /scalardb/docs/getting-started + ``` + +1. [ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases) から Schema Loader をダウンロードします。 + ```console + curl -OL https://github.com/scalar-labs/scalardb/releases/download/v3.7.0/scalardb-schema-loader-3.7.0.jar + ``` + 同じバージョンの ScalarDB と Schema Loader を使用する必要があります。 + +1. Kubernetes クラスター上の ScalarDB Server にアクセスするための構成ファイル (scalardb.properties) を作成します。 + ```console + cat << 'EOF' > scalardb.properties + scalar.db.contact_points=scalardb-envoy.default.svc.cluster.local + scalar.db.contact_port=60051 + scalar.db.storage=grpc + scalar.db.transaction_manager=grpc + EOF + ``` + +1. サンプルアプリケーションの DB スキーマを定義する JSON ファイル (emoney-transaction.json) を作成します。 + ```console + cat << 'EOF' > emoney-transaction.json + { + "emoney.account": { + "transaction": true, + "partition-key": [ + "id" + ], + "clustering-key": [], + "columns": { + "id": "TEXT", + "balance": "INT" + } + } + } + EOF + ``` + +1. Schema Loader を実行します (サンプル TABLE を作成します)。 + ```console + java -jar ./scalardb-schema-loader-3.7.0.jar --config ./scalardb.properties -f emoney-transaction.json --coordinator + ``` + +1. サンプルアプリケーションを実行します。 + * `1000` を `user1` に請求します。 + ```console + ./gradlew run --args="-action charge -amount 1000 -to user1" + ``` + * `merchant1` に `0` を請求します (`merchant1` のアカウントを作成するだけです): + ```console + ./gradlew run --args="-action charge -amount 0 -to merchant1" + ``` + * `user1` から `merchant1` に `100` を支払います。 + ```console + ./gradlew run --args="-action pay -amount 100 -from user1 -to merchant1" + ``` + * `user1` の残高を取得します。 + ```console + ./gradlew run --args="-action getBalance -id user1" + ``` + * `merchant1` の残高を取得します。 + ```console + ./gradlew run --args="-action getBalance -id merchant1" + ``` + +1. (オプション) 次のコマンドを使用して、サンプルアプリケーションを通じて挿入および変更された (INSERT/UPDATE) データを確認できます。(このコマンドは、クライアントコンテナではなくローカルホストで実行する必要があります。) + ```console + kubectl exec -it postgresql-scalardb-0 -- bash -c 'export PGPASSWORD=postgres && psql -U postgres -d postgres -c "SELECT * FROM emoney.account"' + ``` + 【コマンド実行結果】 + ```sql + id | balance | tx_id | tx_state | tx_version | tx_prepared_at | tx_committed_at | before_tx_id | before_tx_state | before_tx_version | before_tx_prepared_at | before_tx_committed_at | before_balance + -----------+---------+--------------------------------------+----------+------------+----------------+-----------------+--------------------------------------+-----------------+-------------------+-----------------------+------------------------+---------------- + merchant1 | 100 | 65a90225-0846-4e97-b729-151f76f6ca2f | 3 | 2 | 1667361909634 |1667361909679 | 3633df99-a8ed-4301-a8b9-db1344807d7b | 3 | 1 | 1667361902466 | 1667361902485 | 0 + user1 | 900 | 65a90225-0846-4e97-b729-151f76f6ca2f | 3 | 2 | 1667361909634 |1667361909679 | 5520cba4-625a-4886-b81f-6089bf846d18 | 3 | 1 | 1667361897283 | 1667361897317 | 1000 + (2 rows) + ``` + * 注記: + * 通常はScalarDB経由でデータ (レコード) にアクセスする必要があります。上記のコマンドはサンプルアプリケーションの動作を説明、確認するために使用します。 + +## ステップ6. すべてのリソースを削除する + +Kubernetes クラスター上で ScalarDB Server テストが完了したら、すべてのリソースを削除します。 + +1. ScalarDB Server と PostgreSQL をアンインストールします。 + ```console + helm uninstall scalardb postgresql-scalardb + ``` + +1. クライアントコンテナを削除します。 + ``` + kubectl delete pod scalardb-client --force --grace-period 0 + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx new file mode 100644 index 00000000..28b5f45e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor-tls-cert-manager.mdx @@ -0,0 +1,951 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (cert-manager / Auditor モードを使用した TLS 対応の ScalarDL Ledger および Auditor) + +このチュートリアルでは、Kubernetes クラスターでテスト環境として Helm Charts と cert-manager を使用して、TLS 構成で ScalarDL Ledger と ScalarDL Auditor を使い始める方法について説明します。開始する前に、テスト用の Mac または Linux 環境を用意しておく必要があります。また、このチュートリアルでは **minikube** の使用について説明していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDL のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。 +* TLS をサポートする ScalarDL 3.9以降を使用する必要があります。 + +:::note + +監査によるビザンチン障害検出を適切に行うには、ScalarDL Ledger と ScalarDL Auditor を異なる管理ドメインにデプロイして管理する必要があります。ただし、このチュートリアルでは、テストを容易にするために、ScalarDL Ledger と ScalarDL Auditor を同じ Kubernetes クラスターにデプロイします。 + +::: + +## 作成するもの + +このチュートリアルでは、次の方法で Kubernetes クラスターに次のコンポーネントをデプロイします。 + +``` ++-----------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +---------+ | +| +---> | Envoy | ---+ +---> | Ledger | ---+ | +| | +-------+ | | +---------+ | | +| | | | | | +| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Ledger | ---+---> | PostgreSQL | | +| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (For Ledger) | | +| | +---------+ | | +-----------+ | | +---------------+ | +| [Pod] | | +-------+ | | +---------+ | | +| | +---> | Envoy | ---+ +---> | Ledger | ---+ | +| +--------+ | +-------+ +---------+ | +| | Client | ---+ | +| +--------+ | +-------+ +---------+ | +| | +---> | Envoy | ---+ +---> | Auditor | ---+ | +| | | +-------+ | | +---------+ | | +| | | | | | | +| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Auditor | ---+---> | PostgreSQL | | +| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (For Auditor) | | +| +---------+ | | +-----------+ | | +---------------+ | +| | +-------+ | | +---------+ | | +| +---> | Envoy | ---+ +---> | Auditor | ---+ | +| +-------+ +---------+ | +| | +| +--------------------------------------------------------------------------+ +---------------------+ | +| | cert-manager (create private key and certificate for Envoy and ScalarDL) | | Issuer (Private CA) | | +| +--------------------------------------------------------------------------+ +---------------------+ | +| | ++-----------------------------------------------------------------------------------------------------------------------------+ +``` + +cert-manager は、TLS 接続用に次の秘密鍵と証明書ファイルを自動的に作成します。 + +``` + +----------------------+ + +---> | For Scalar Envoy | + | +----------------------+ + | | tls.key | + | | tls.crt | + | +----------------------+ + | ++-------------------------+ | +----------------------+ +| Issuer (Self-signed CA) | ---(Sign certificates)---+---> | For ScalarDL Ledger | ++-------------------------+ | +----------------------+ +| tls.key | | | tls.key | +| tls.crt | | | tls.crt | +| ca.crt | | +----------------------+ ++-------------------------+ | + | +----------------------+ + +---> | For ScalarDL Auditor | + +----------------------+ + | tls.key | + | tls.crt | + +----------------------+ +``` + +Scalar Helm Charts は、各接続で TLS を有効にするために、Envoy と ScalarDL の各秘密鍵と証明書ファイルを次のように自動的にマウントします。ルート CA 証明書ファイルはクライアントに手動でマウントします。 + +``` + +------------------------------------------------+ +--------------------------------------+ + +-------(Normal request)-----> | Envoy for ScalarDL Ledger | ---> | ScalarDL Ledger | + | +------------------------------------------------+ +--------------------------------------+ + | +---(Recovery request)---> | tls.key | ---> | tls.key | + | | | tls.crt | | tls.crt | + | | | ca.crt (to verify tls.crt of ScalarDL Ledger) | | ca.crt (to check health) | + | | +------------------------------------------------+ +--------------------------------------+ ++---------------------------------------+ | | +| Client | ---+ | ++---------------------------------------+ | +------------------------------------------------------------------------------------------------------------------------------+ +| ca.crt (to verify tls.crt of Envoy) | | | ++---------------------------------------+ | | + | +------------------------------------------------+ +--------------------------------------+ | + +-------(Normal request)-----> | Envoy for ScalarDL Auditor | ---> | ScalarDL Auditor | ---+ + +------------------------------------------------+ +--------------------------------------+ + | tls.key | | tls.key | + | tls.crt | | tls.crt | + | ca.crt (to verify tls.crt of ScalarDL Auditor) | | ca.crt (to check health) | + +------------------------------------------------+ | ca.crt (to verify tls.crt of Envoy) | + +--------------------------------------+ +``` + +ScalarDL 関連コンポーネント間には、次の接続が存在します: + +* **`クライアント - ScalarDL Ledger 用 Envoy`:** ScalarDL API 関数を実行すると、クライアントは ScalarDL Ledger 用 Envoy にアクセスします。 +* **`クライアント - ScalarDL Auditor 用 Envoy`:** ScalarDL API 関数を実行すると、クライアントは ScalarDL Auditor 用 Envoy にアクセスします。 +* **`ScalarDL Ledger 用 Envoy - ScalarDL Ledger`:** Envoy は ScalarDL Ledger の前で L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDL Auditor 用 Envoy - ScalarDL Auditor`:** Envoy は ScalarDL Auditor の前で L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDL Auditor - Envoy for ScalarDL Ledger (ScalarDL Ledger)`:** ScalarDL がデータの一貫性を保つために回復プロセスを実行する必要がある場合、ScalarDL Auditor は Envoy を介して ScalarDL Ledger に対してリクエストを実行します。 + +## ステップ1. Kubernetes クラスターを起動してツールをインストールする + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。インストール方法の詳細については、[Scalar Helm Charts の使用開始](getting-started-scalar-helm-charts.mdx)を参照してください。 + +## ステップ2. PostgreSQL コンテナを起動する + +ScalarDL Ledger と ScalarDL Auditor は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Ledger 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. Auditor 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-auditor bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 11s + postgresql-ledger-0 1/1 Running 0 16s + ``` + +## ステップ3. 作業ディレクトリを作成する + +ローカルにいくつかの構成ファイルと秘密鍵および証明書ファイルを作成します。必ずそれらのファイル用の作業ディレクトリを作成してください。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardl-test/ + ``` + +## ステップ4. cert-manager と発行者リソースをデプロイする + +このチュートリアルでは、cert-manager を使用して秘密鍵と証明書を発行および管理します。次のようにして、Kubernetes クラスターに cert-manager をデプロイできます。 + +1. Jetstack helm リポジトリを追加します。 + + ```console + helm repo add jetstack https://charts.jetstack.io + ``` + +1. cert-manager をデプロイします。 + + ```console + helm install cert-manager jetstack/cert-manager \ + --create-namespace \ + --set installCRDs=true \ + -n cert-manager + ``` + +1. cert-manager コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n cert-manager + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + cert-manager-6dc66985d4-6lvtt 1/1 Running 0 26s + cert-manager-cainjector-c7d4dbdd9-xlrpn 1/1 Running 0 26s + cert-manager-webhook-847d7676c9-ckcz2 1/1 Running 0 26s + ``` + +1. 作業ディレクトリを `${HOME}/scalardl-test/` に変更します。 + + ```console + cd ${HOME}/scalardl-test/ + ``` + +1. プライベート CA のカスタム値ファイル (`private-ca-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/private-ca-custom-values.yaml + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-issuer + spec: + selfSigned: {} + --- + apiVersion: cert-manager.io/v1 + kind: Certificate + metadata: + name: self-signed-ca-cert + spec: + isCA: true + commonName: self-signed-ca + secretName: self-signed-ca-cert-secret + privateKey: + algorithm: ECDSA + size: 256 + issuerRef: + name: self-signed-issuer + kind: Issuer + group: cert-manager.io + --- + apiVersion: cert-manager.io/v1 + kind: Issuer + metadata: + name: self-signed-ca + spec: + ca: + secretName: self-signed-ca-cert-secret + EOF + ``` + +1. 自己署名 CA を展開します。 + + ```console + kubectl apply -f ./private-ca-custom-values.yaml + ``` + +1. 発行者リソースが `True` であるかどうかを確認します。 + + ```console + kubectl get issuer + ``` + + [コマンド実行結果] + + ```console + NAME READY AGE + self-signed-ca True 6s + self-signed-issuer True 6s + ``` + +## ステップ5. Helm Charts を使用して ScalarDL Ledger と ScalarDL Auditor のデータベーススキーマを作成する + +Helm Charts を使用して、Kubernetes クラスターに2つの ScalarDL Schema Loader ポッドをデプロイします。ScalarDL Schema Loader は、PostgreSQL に ScalarDL Ledger と Auditor のデータベーススキーマを作成します。 + +1. Scalar Helm Charts リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ScalarDL Schema Loader for Ledger のカスタム値ファイル (`schema-loader-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Schema Loader for Auditor のカスタム値ファイル (`schema-loader-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-auditor-credentials-secret" + EOF + ``` + +1. ScalarDL Ledger 用の PostgreSQL のユーザー名とパスワードを含む `schema-ledger-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic schema-ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. ScalarDL Auditor 用の PostgreSQL のユーザー名とパスワードを含む `schema-auditor-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic schema-auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. ScalarDL Schema Loader のチャートバージョンを設定します。 + + ```console + SCALAR_DL_VERSION=3.9.1 + SCALAR_DL_SCHEMA_LOADER_CHART_VERSION=$(helm search repo scalar-labs/schema-loading -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDL Ledger 用の ScalarDL Schema Loader をデプロイします。 + + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. ScalarDL Auditor 用の ScalarDL Schema Loader をデプロイします。 + + ```console + helm install schema-loader-auditor scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. ScalarDL Schema Loader ポッドが「完了」ステータスでデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 2m56s + postgresql-ledger-0 1/1 Running 0 3m1s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 6s + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 10s + ``` + + ScalarDL Schema Loader ポッドのステータスが **ContainerCreating** または **Running** の場合、それらのポッドの `STATUS` 列に `Completed` と表示されるまで待ちます。 + +## ステップ6. Helm Charts を使用して、Kubernetes クラスターに ScalarDL Ledger と ScalarDL Auditor をデプロイします + +1. ライセンスキーと証明書を環境変数として設定します。ライセンスキーがない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。`` と `` の値の詳細については、[製品ライセンスキーを構成する方法](https://scalardl.scalar-labs.com/docs/latest/scalar-licensing/)を参照してください。 + + ```console + SCALAR_DL_LEDGER_LICENSE_KEY='' + SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM='' + SCALAR_DL_AUDITOR_LICENSE_KEY='' + SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM='' + ``` + +1. ScalarDL Ledger のカスタム値ファイル (`scalardl-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - envoy.scalar.example.com + upstream: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + + ledger: + + image: + repository: "ghcr.io/scalar-labs/scalardl-ledger-byol" + + ledgerProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + + ### Ledger configurations + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.authentication.method=hmac + scalar.dl.ledger.authentication.hmac.cipher_key=${env:SCALAR_DL_LEDGER_HMAC_CIPHER_KEY} + scalar.dl.ledger.servers.authentication.hmac.secret_key=${env:SCALAR_DL_LEDGER_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.ledger.server.tls.enabled=true + scalar.dl.ledger.server.tls.cert_chain_path=/tls/scalardl-ledger/certs/tls.crt + scalar.dl.ledger.server.tls.private_key_path=/tls/scalardl-ledger/certs/tls.key + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_LEDGER_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - ledger.scalardl.example.com + + secretName: "ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Auditor のカスタム値ファイル (`scalardl-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - envoy.scalar.example.com + upstream: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + + + auditor: + + image: + repository: "ghcr.io/scalar-labs/scalardl-auditor-byol" + + auditorProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + + ### Auditor configurations + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.authentication.method=hmac + scalar.dl.auditor.authentication.hmac.cipher_key=${env:SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY} + scalar.dl.auditor.servers.authentication.hmac.secret_key=${env:SCALAR_DL_AUDITOR_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.auditor.server.tls.enabled=true + scalar.dl.auditor.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.auditor.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + scalar.dl.auditor.tls.enabled=true + scalar.dl.auditor.tls.ca_root_cert_path=/tls/scalardl-ledger/certs/ca.crt + scalar.dl.auditor.tls.override_authority=envoy.scalar.example.com + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_AUDITOR_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + certManager: + enabled: true + issuerRef: + name: self-signed-ca + dnsNames: + - auditor.scalardl.example.com + + secretName: "auditor-credentials-secret" + EOF + ``` + +1. 資格情報とライセンスキーを含む `ledger-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_LEDGER_HMAC_CIPHER_KEY=ledger-hmac-cipher-key \ + --from-literal=SCALAR_DL_LEDGER_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_LEDGER_LICENSE_KEY="${SCALAR_DL_LEDGER_LICENSE_KEY}" \ + --from-file=SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DL_LEDGER_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\ + /g') \ + -n default + ``` + +1. 資格情報とライセンスキーを含む `auditor-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY=auditor-hmac-cipher-key \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_AUDITOR_LICENSE_KEY="${SCALAR_DL_AUDITOR_LICENSE_KEY}" \ + --from-file=SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DL_AUDITOR_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\ + /g') \ + -n default + ``` + +1. `auditor-keys` という名前のシークレットリソースを作成して、`digital-signature` 認証方式を無効にします。このチュートリアルでは、`digital-signature` の代わりに `hmac` 認証方式を使用します。 + + ```console + kubectl create secret generic auditor-keys \ + --from-literal=tls.key=dummy-data-to-disable-digital-signature-method \ + --from-literal=certificate=dummy-data-to-disable-digital-signature-method \ + -n default + ``` + + 注意: 認証方法として `hmac` を使用する場合は、Helm Chart 側で `digital-signature` を無効にするためにダミーのシークレット `auditor-key` を作成する必要があります。 + +1. ScalarDL Ledger と ScalarDL Auditor のチャートバージョンを設定します。 + + ```console + SCALAR_DL_LEDGER_CHART_VERSION=$(helm search repo scalar-labs/scalardl -l | grep -v -e "scalar-labs/scalardl-audit" | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + SCALAR_DL_AUDITOR_CHART_VERSION=$(helm search repo scalar-labs/scalardl-audit -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDL Ledger をデプロイします。 + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml --version ${SCALAR_DL_LEDGER_CHART_VERSION} -n default + ``` + +1. ScalarDL Auditor をデプロイします。 + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml --version ${SCALAR_DL_AUDITOR_CHART_VERSION} -n default + ``` + +1. ScalarDL Ledger および ScalarDL Auditor ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 14m + postgresql-ledger-0 1/1 Running 0 14m + scalardl-auditor-auditor-5b885ff4c8-fwkpf 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-g69cb 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-nsmnq 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-5mn6v 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-fpq8j 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-lsz2t 1/1 Running 0 18s + scalardl-ledger-envoy-547bbf7546-n7p5x 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-p8nwp 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-pskpb 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-5zsbj 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-vnmrw 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-wpjvs 1/1 Running 0 26s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 11m + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 11m + ``` + + ScalarDL Ledger ポッドと ScalarDL Auditor ポッドが適切にデプロイされている場合、それらのポッドの `STATUS` 列には `Running` と表示されます。 + +1. ScalarDL Ledger および ScalarDL Auditor サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [コマンド実行結果] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-auditor ClusterIP 10.107.9.78 5432/TCP 15m + postgresql-auditor-hl ClusterIP None 5432/TCP 15m + postgresql-ledger ClusterIP 10.108.241.181 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-auditor-envoy ClusterIP 10.100.61.202 40051/TCP,40052/TCP 55s + scalardl-auditor-envoy-metrics ClusterIP 10.99.6.227 9001/TCP 55s + scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 55s + scalardl-auditor-metrics ClusterIP 10.108.1.147 8080/TCP 55s + scalardl-ledger-envoy ClusterIP 10.101.191.116 50051/TCP,50052/TCP 61s + scalardl-ledger-envoy-metrics ClusterIP 10.106.52.103 9001/TCP 61s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 61s + scalardl-ledger-metrics ClusterIP 10.99.122.106 8080/TCP 61s + ``` + + ScalarDL Ledger および ScalarDL Auditor サービスが適切にデプロイされている場合は、`CLUSTER-IP` 列にプライベート IP アドレスが表示されます。 + +:::note + +`scalardl-ledger-headless`、`scalardl-auditor-headless`、`postgresql-ledger-hl`、および `postgresql-auditor-hl` の `CLUSTER-IP` 値は、IP アドレスがないため `None` になります。 + +::: + +## ステップ7. クライアントコンテナを起動する + +クライアントコンテナで CA 証明書ファイルを使用します。そのため、シークレットリソースを作成し、クライアントコンテナにマウントする必要があります。 + +1. `client-ca-cert` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=ca.crt=<(kubectl get secret self-signed-ca-cert-secret -o "jsonpath={.data['ca\.crt']}" | base64 -d) -n default + ``` + +1. クライアントポッドのマニフェストファイル (`scalardl-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DL_VERSION + value: SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/" + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェストファイルで ScalarDL バージョンを設定します。 + + ```console + sed -i s/SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION/${SCALAR_DL_VERSION}/ ${HOME}/scalardl-test/scalardl-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardl-test/scalardl-client-pod.yaml -n default + ``` + +1. クライアントコンテナーが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardl-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 4s + ``` + +## ステップ8. クライアントコンテナで ScalarDL サンプルコントラクトを実行する + +以下では、サンプルコントラクトを実行するために必要な最小限の手順について説明します。ScalarDL Ledger と ScalarDL Auditor の詳細については、以下を参照してください。 + +* [ScalarDL の使用開始](https://scalardl.scalar-labs.com/docs/latest/getting-started/) +* [ScalarDL Auditor の使用開始](https://scalardl.scalar-labs.com/docs/latest/getting-started-auditor/) + +1. クライアントコンテナーで bash を実行します。 + + ```console + kubectl exec -it scalardl-client -n default -- bash + ``` + + 次の手順のコマンドは、クライアントコンテナーで実行する必要があります。 + +1. クライアントコンテナーに git、curl、unzip コマンドをインストールします。 + + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java Client SDK git リポジトリをクローンします。 + + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. 作業ディレクトリを `scalardl-java-client-sdk/` に変更します。 + + ```console + cd scalardl-java-client-sdk/ + ``` + + ```console + pwd + ``` + + [コマンド実行結果] + + ```console + /scalardl-java-client-sdk + ``` + +1. 使用しているバージョンにブランチを変更します。 + + ```console + git checkout -b v${SCALAR_DL_VERSION} refs/tags/v${SCALAR_DL_VERSION} + ``` + +1. サンプルコントラクトを作成します。 + + ```console + ./gradlew assemble + ``` + +1. [ScalarDL Java Client SDK リリース](https://github.com/scalar-labs/scalardl-java-client-sdk/releases)から ScalarDL の CLI ツールをダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v${SCALAR_DL_VERSION}/scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + +1. `scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip` ファイルを解凍します。 + + ```console + unzip ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger および ScalarDL Auditor にアクセスするための `client.properties` という名前の構成ファイルを作成します。 + + ```console + cat << 'EOF' > client.properties + # Ledger configuration + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.client.tls.enabled=true + scalar.dl.client.tls.ca_root_cert_path=/certs/ca.crt + scalar.dl.client.tls.override_authority=envoy.scalar.example.com + + # Auditor configuration + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + scalar.dl.client.auditor.tls.enabled=true + scalar.dl.client.auditor.tls.ca_root_cert_path=/certs/ca.crt + scalar.dl.client.auditor.tls.override_authority=envoy.scalar.example.com + + # Client configuration + scalar.dl.client.authentication_method=hmac + scalar.dl.client.entity.id=client + scalar.dl.client.entity.identity.hmac.secret_key=scalardl-hmac-client-secert-key + EOF + ``` + +1. クライアントシークレットを登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-secret --config ./client.properties + ``` + +1. サンプルコントラクト `StateUpdater` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト `StateReader` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. 検証リクエストを実行するには、コントラクト `ValidateLedger` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id validate-ledger --contract-binary-name com.scalar.dl.client.contract.ValidateLedger --contract-class-file ./build/classes/java/main/com/scalar/dl/client/contract/ValidateLedger.class + ``` + +1. コントラクト `StateUpdater` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + + このサンプルコントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + + [コマンド実行結果] + + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + + ### 参照 + + * 資産データが改ざんされていない場合、コントラクト実行を要求する `execute-contract` コマンドを実行すると、結果として `OK` が返されます。 + * アセットデータが改ざんされている場合 (たとえば、データベースの `state` 値が改ざんされている場合) 、コントラクト実行を要求する `execute-contract` コマンドを実行すると、結果として `OK` 以外の値 (たとえば、`INCONSISTENT_STATES`) が返されます。ScalarDL がデータ改ざんを検出する方法の例については、以下を参照してください。 + + [コマンド実行結果 (資産データが改ざんされた場合) ] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +1. 資産の検証リクエストを実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl validate-ledger --config ./client.properties --asset-id "test_asset" + ``` + + [コマンド実行結果] + + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEYCIQDiiXqzw6K+Ml4uvn8rK43o5wHWESU3hoXnZPi6/OeKVwIhAM+tFBcapl6zg47Uq0Uc8nVNGWNHZLBDBGve3F0xkzTR" + }, + "Auditor" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEUCIQDLsfUR2PmxSvfpL3YvHJUkz00RDpjCdctkroZKXE8d5QIgH73FQH2e11jfnynD00Pp9DrIG1vYizxDsvxUsMPo9IU=" + } + } + ``` + + ### 参照 + + * 資産データが改ざんされていない場合、検証を要求する `validate-ledger` コマンドを実行すると、結果として `OK` が返されます。 + * 資産データが改ざんされている場合 (たとえば、データベースの `state` 値が改ざんされている場合)、検証を要求する `validate-ledger` コマンドを実行すると、結果として `OK` 以外の値 (たとえば、`INVALID_OUTPUT`) が返されます。ScalarDL がデータ改ざんを検出する方法の例については、以下を参照してください。 + + [コマンド実行結果 (資産データが改ざんされた場合) ] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +1. クライアントコンテナーを終了します。 + + ```console + exit + ``` + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger および ScalarDL Auditor テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Auditor、ScalarDL Schema Loader、および PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardl-ledger schema-loader-ledger postgresql-ledger scalardl-auditor schema-loader-auditor postgresql-auditor + ``` + +1. 自己署名 CA を削除します。 + + ``` + kubectl delete -f ./private-ca-custom-values.yaml + ``` + +1. cert-manager をアンインストールします。 + + ```console + helm uninstall -n cert-manager cert-manager + ``` + +1. クライアントコンテナーを削除します。 + + ``` + kubectl delete pod scalardl-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets self-signed-ca-cert-secret schema-ledger-credentials-secret schema-auditor-credentials-secret scalardl-ledger-tls-cert scalardl-ledger-envoy-tls-cert scalardl-auditor-tls-cert scalardl-auditor-envoy-tls-cert ledger-credentials-secret auditor-credentials-secret client-ca-cert auditor-keys + ``` + +1. ネームスペース `cert-manager` を削除します。 + + ``` + kubectl delete ns cert-manager + ``` + +1. 作業ディレクトリとサンプルファイル (構成ファイル) を削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のチュートリアルを参照してください。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki Stack を使用したログ記録)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor-tls.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor-tls.mdx new file mode 100644 index 00000000..c0924e75 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor-tls.mdx @@ -0,0 +1,1023 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# Helm Chart をはじめよう (TLS を使用した ScalarDL Ledger および Auditor / Auditor モード) + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、TLS 構成で ScalarDL Ledger および ScalarDL Auditor を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +* ScalarDLのライセンスキー (試用ライセンスまたは商用ライセンス) を取得する必要があります。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)してください。 +* TLSに対応したScalarDL v3.9以降を使用する必要があります。 + +:::note + +監査によるビザンチン障害検出を適切に機能させるには、ScalarDL Ledger と ScalarDL Auditor を別の管理ドメインに展開して管理する必要があります。ただし、このチュートリアルでは、テストを容易にするために、ScalarDL Ledger と ScalarDL Auditor を同じ Kubernetes クラスターにデプロイします。 + +::: + +## 作成するもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++-----------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes Cluster] | +| [Pod] [Pod] [Pod] | +| | +| +-------+ +---------+ | +| +---> | Envoy | ---+ +---> | Ledger | ---+ | +| | +-------+ | | +---------+ | | +| | | | | | +| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Ledger | ---+---> | PostgreSQL | | +| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (For Ledger) | | +| | +---------+ | | +-----------+ | | +---------------+ | +| [Pod] | | +-------+ | | +---------+ | | +| | +---> | Envoy | ---+ +---> | Ledger | ---+ | +| +--------+ | +-------+ +---------+ | +| | Client | ---+ | +| +--------+ | +-------+ +---------+ | +| | +---> | Envoy | ---+ +---> | Auditor | ---+ | +| | | +-------+ | | +---------+ | | +| | | | | | | +| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | Service | ---+---> | Envoy | ---+---> | Service | ---+---> | Auditor | ---+---> | PostgreSQL | | +| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (For Auditor) | | +| +---------+ | | +-----------+ | | +---------------+ | +| | +-------+ | | +---------+ | | +| +---> | Envoy | ---+ +---> | Auditor | ---+ | +| +-------+ +---------+ | +| | ++-----------------------------------------------------------------------------------------------------------------------------+ +``` + +TLS 接続用に次の秘密鍵ファイルと証明書ファイルを作成します。 + +``` + +----------------------+ + +---> | For Scalar Envoy | + | +----------------------+ + | | envoy-key.pem | + | | envoy.pem | + | +----------------------+ + | ++----------------------+ | +----------------------+ +| Self-signed CA | ---(Sign certificates)---+---> | For ScalarDL Ledger | ++----------------------+ | +----------------------+ +| ca-key.pem | | | ledger-key.pem | +| ca.pem | | | ledger.pem | ++----------------------+ | +----------------------+ + | + | +----------------------+ + +---> | For ScalarDL Auditor | + +----------------------+ + | auditor-key.pem | + | auditor.pem | + +----------------------+ +``` + +各接続で TLS を有効にするために、各秘密鍵と証明書ファイルを次のように設定します。 + +``` + +--------------------------------+ +--------------------------------+ + +-------(Normal request)-----> | Envoy for ScalarDL Ledger | ---> | ScalarDL Ledger | + | +--------------------------------+ +--------------------------------+ + | +---(Recovery request)---> | envoy-key.pem | ---> | ledger-key.pem | + | | | envoy.pem | | ledger.pem | + | | | ca.pem (to verify ledger.pem) | | ca.pem (used for health check) | + | | +--------------------------------+ +--------------------------------+ ++--------------------------------+ | | +| Client | ---+ | ++--------------------------------+ | +--------------------------------------------------------------------------------------------------------+ +| ca.pem (to verify envoy.pem) | | | ++--------------------------------+ | | + | +--------------------------------+ +--------------------------------+ | + +-------(Normal request)-----> | Envoy for ScalarDL Auditor | ---> | ScalarDL Auditor | ---+ + +--------------------------------+ +--------------------------------+ + | envoy-key.pem | | auditor-key.pem | + | envoy.pem | | auditor.pem | + | ca.pem (to verify auditor.pem) | | ca.pem (used for health check) | + +--------------------------------+ | ca.pem (to verify ledger.pem) | + +--------------------------------+ +``` + +ScalarDL 関連コンポーネント間には、次の接続があります。 + +* **`クライアント - ScalarDL Ledger の Envoy`:** 一部のScalarDL APIを実行すると、クライアントはEnvoy for ScalarDL Ledgerにアクセスします。 +* **`クライアント - ScalarDL Auditor の Envoy`:** 一部のScalarDL APIを実行すると、クライアントはEnvoy for ScalarDL Auditorにアクセスします。 +* **`ScalarDL Ledgerの Envoy - ScalarDL Ledger`:** Envoy は、ScalarDL Ledger の前で L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDL Auditor の Envoy - ScalarDL Auditor`:** Envoy は、ScalarDL Auditor の前で L7 (gRPC) ロードバランサーとして機能します。 +* **`ScalarDL Auditor - ScalarDL Ledger (ScalarDL Ledger) の Envoy`:** ScalarDL がデータの一貫性を保つために回復プロセスを実行する必要がある場合、ScalarDL Auditor は Envoy を介して ScalarDL Lever に対してリクエストを実行します。 + +## ステップ1. Kubernetes クラスターを開始する + +Kubernetes クラスターを準備し、いくつかのツール (`kubectl`、`helm`、`cfssl`、および `cfssljson`) をインストールする必要があります。インストール方法の詳細については、[Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx)を参照してください。 + +## ステップ2. PostgreSQL コンテナーを開始する + +ScalarDL Ledger および ScalarDL Auditor は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このチュートリアルでは、PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Ledger 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. Auditor 用に PostgreSQL をデプロイします。 + + ```console + helm install postgresql-auditor bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false \ + -n default + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 11s + postgresql-ledger-0 1/1 Running 0 16s + ``` + +## ステップ3. 作業ディレクトリを作成する + +いくつかの構成ファイルと秘密鍵および証明書ファイルをローカルに作成します。したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalardl-test/certs/ + ``` + +## ステップ4. 秘密鍵および証明書ファイルを作成する + +秘密鍵と証明書ファイルを作成します。 + +1. 作業ディレクトリを `${HOME}/scalardl-test/certs/` ディレクトリに変更します。 + + ```console + cd ${HOME}/scalardl-test/certs/ + ``` + +1. CA の情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/ca.json + { + "CN": "scalar-test-ca", + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Test CA" + } + ] + } + EOF + ``` + +1. CA の秘密鍵/証明書ファイルを作成します。 + + ```console + cfssl gencert -initca ca.json | cfssljson -bare ca + ``` + +1. CA 構成を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/ca-config.json + { + "signing": { + "default": { + "expiry": "87600h" + }, + "profiles": { + "scalar-test-ca": { + "expiry": "87600h", + "usages": [ + "signing", + "key encipherment", + "server auth" + ] + } + } + } + } + EOF + ``` + +1. Envoy 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/envoy.json + { + "CN": "scalar-envoy", + "hosts": [ + "envoy.scalar.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Envoy Test" + } + ] + } + EOF + ``` + +1. ScalarDL Ledger 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/ledger.json + { + "CN": "scalardl-ledger", + "hosts": [ + "ledger.scalardl.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "ScalarDL Ledger Test" + } + ] + } + EOF + ``` + +1. ScalarDL Auditor 情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/certs/auditor.json + { + "CN": "scalardl-auditor", + "hosts": [ + "auditor.scalardl.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "ScalarDL Auditor Test" + } + ] + } + EOF + ``` + +1. Envoy の秘密鍵および証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca envoy.json | cfssljson -bare envoy + ``` + +1. ScalarDL Ledger の秘密鍵および証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca ledger.json | cfssljson -bare ledger + ``` + +1. ScalarDL Auditor の秘密鍵および証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-test-ca auditor.json | cfssljson -bare auditor + ``` + +1. 秘密鍵および証明書ファイルが作成されたことを確認します。 + + ```console + ls -1 + ``` + + [コマンド実行結果] + + ```console + auditor-key.pem + auditor.csr + auditor.json + auditor.pem + ca-config.json + ca-key.pem + ca.csr + ca.json + ca.pem + envoy-key.pem + envoy.csr + envoy.json + envoy.pem + ledger-key.pem + ledger.csr + ledger.json + ledger.pem + ``` + +## ステップ5. Helm Charts を使用して ScalarDL Ledger と ScalarDL Auditor の DB スキーマを作成する + +Helm Chart を使用して、Kubernetes クラスターに2つの ScalarDL Schema Loader ポッドをデプロイします。ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger と Auditor の DB スキーマを作成します。 + +1. 作業ディレクトリを `${HOME}/scalardl-test/` に変更します。 + + ```console + cd ${HOME}/scalardl-test/ + ``` + +1. Scalar helm リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. ScalarDL Schema Loader for Ledger のカスタム値ファイル (`schema-loader-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Schema Loader for Auditor のカスタム値ファイル (`schema-loader-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + scalar.db.storage=jdbc + secretName: "schema-auditor-credentials-secret" + EOF + ``` + +1. PostgreSQL for Ledger のユーザー名とパスワードを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic schema-ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. PostgreSQL for Auditor のユーザー名とパスワードを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic schema-auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + -n default + ``` + +1. ScalarDL Schema Loaderのチャートバージョンを設定します。 + + ```console + SCALAR_DL_VERSION=3.9.1 + SCALAR_DL_SCHEMA_LOADER_CHART_VERSION=$(helm search repo scalar-labs/schema-loading -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. Ledger 用の ScalarDL Schema Loader をデプロイします。 + + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-ledger-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. Auditor 用の ScalarDL Schema Loader をデプロイします。 + + ```console + helm install schema-loader-auditor scalar-labs/schema-loading -f ${HOME}/scalardl-test/schema-loader-auditor-custom-values.yaml --version ${SCALAR_DL_SCHEMA_LOADER_CHART_VERSION} -n default + ``` + +1. ScalarDL Schema Loader ポッドがデプロイされ、完了しているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 2m56s + postgresql-ledger-0 1/1 Running 0 3m1s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 6s + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 10s + ``` + ScalarDL Schema Loader ポッドが **ContainerCreating** または **Running** の場合は、プロセスが完了するまで待ちます (ステータスは **Completed** になります)。 + +## ステップ6. Helm Chart を使用して Kubernetes クラスターに ScalarDL Ledger と ScalarDL Auditor をデプロイする + +1. ScalarDL Ledger のカスタム値ファイル (`scalardl-ledger-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" + upstream: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + caRootCertSecret: "scalardl-ledger-tls-ca" + + ledger: + + image: + repository: "ghcr.io/scalar-labs/scalardl-ledger-byol" + + ledgerProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_LEDGER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_LEDGER_POSTGRES_PASSWORD} + + ### Ledger configurations + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.authentication.method=hmac + scalar.dl.ledger.authentication.hmac.cipher_key=${env:SCALAR_DL_LEDGER_HMAC_CIPHER_KEY} + scalar.dl.ledger.servers.authentication.hmac.secret_key=${env:SCALAR_DL_LEDGER_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.ledger.server.tls.enabled=true + scalar.dl.ledger.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.ledger.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "ledger.scalardl.example.com" + caRootCertSecret: "scalardl-ledger-tls-ca" + certChainSecret: "scalardl-ledger-tls-cert" + privateKeySecret: "scalardl-ledger-tls-key" + + secretName: "ledger-credentials-secret" + EOF + ``` + +1. ScalarDL Auditor のカスタム値ファイル (`scalardl-auditor-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + + tls: + downstream: + enabled: true + certChainSecret: "envoy-tls-cert" + privateKeySecret: "envoy-tls-key" + upstream: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + caRootCertSecret: "scalardl-auditor-tls-ca" + + auditor: + + image: + repository: "ghcr.io/scalar-labs/scalardl-auditor-byol" + + auditorProperties: | + ### Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DL_AUDITOR_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DL_AUDITOR_POSTGRES_PASSWORD} + + ### Auditor configurations + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.authentication.method=hmac + scalar.dl.auditor.authentication.hmac.cipher_key=${env:SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY} + scalar.dl.auditor.servers.authentication.hmac.secret_key=${env:SCALAR_DL_AUDITOR_HMAC_SECRET_KEY} + + ### TLS configurations + scalar.dl.auditor.server.tls.enabled=true + scalar.dl.auditor.server.tls.cert_chain_path=/tls/scalardl-auditor/certs/tls.crt + scalar.dl.auditor.server.tls.private_key_path=/tls/scalardl-auditor/certs/tls.key + scalar.dl.auditor.tls.enabled=true + scalar.dl.auditor.tls.ca_root_cert_path=/tls/scalardl-ledger/certs/ca.crt + scalar.dl.auditor.tls.override_authority=envoy.scalar.example.com + + ### License key configurations + scalar.dl.licensing.license_key=${env:SCALAR_DL_LICENSE_KEY} + scalar.dl.licensing.license_check_cert_pem=${env:SCALAR_DL_LICENSE_CHECK_CERT_PEM} + + tls: + enabled: true + overrideAuthority: "auditor.scalardl.example.com" + caRootCertSecret: "scalardl-auditor-tls-ca" + certChainSecret: "scalardl-auditor-tls-cert" + privateKeySecret: "scalardl-auditor-tls-key" + caRootCertForLedgerSecret: "scalardl-auditor-tls-ca-for-ledger" + + secretName: "auditor-credentials-secret" + EOF + ``` + +1. ライセンスキーと証明書を環境変数に設定します。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)してください。 + + ```console + SCALAR_DL_LICENSE_KEY= + SCALAR_DL_LICENSE_CHECK_CERT_PEM= + ``` + +1. 資格情報とライセンスキーを含むシークレットリソース `ledger-credentials-secret` を作成します。 + + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_LEDGER_HMAC_CIPHER_KEY=ledger-hmac-cipher-key \ + --from-literal=SCALAR_DL_LEDGER_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_LICENSE_KEY=${SCALAR_DL_LICENSE_KEY} \ + --from-literal=SCALAR_DL_LICENSE_CHECK_CERT_PEM=${SCALAR_DL_LICENSE_CHECK_CERT_PEM} \ + -n default + ``` + +1. 資格情報とライセンスキーを含むシークレットリソース `auditor-credentials-secret` を作成します。 + + ```console + kubectl create secret generic auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_CIPHER_KEY=auditor-hmac-cipher-key \ + --from-literal=SCALAR_DL_AUDITOR_HMAC_SECRET_KEY=scalardl-hmac-secret-key \ + --from-literal=SCALAR_DL_LICENSE_KEY=${SCALAR_DL_LICENSE_KEY} \ + --from-literal=SCALAR_DL_LICENSE_CHECK_CERT_PEM=${SCALAR_DL_LICENSE_CHECK_CERT_PEM} \ + -n default + ``` + +1. Envoy の秘密鍵ファイルと証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic envoy-tls-cert --from-file=tls.crt=${HOME}/scalardl-test/certs/envoy.pem -n default + kubectl create secret generic envoy-tls-key --from-file=tls.key=${HOME}/scalardl-test/certs/envoy-key.pem -n default + ``` + +1. ScalarDL Ledger の秘密鍵、証明書、CA 証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardl-ledger-tls-ca --from-file=ca.crt=${HOME}/scalardl-test/certs/ca.pem -n default + kubectl create secret generic scalardl-ledger-tls-cert --from-file=tls.crt=${HOME}/scalardl-test/certs/ledger.pem -n default + kubectl create secret generic scalardl-ledger-tls-key --from-file=tls.key=${HOME}/scalardl-test/certs/ledger-key.pem -n default + ``` + +1. ScalarDL Auditor の秘密鍵、証明書、CA 証明書ファイルを含むシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardl-auditor-tls-ca --from-file=ca.crt=${HOME}/scalardl-test/certs/ca.pem -n default + kubectl create secret generic scalardl-auditor-tls-cert --from-file=tls.crt=${HOME}/scalardl-test/certs/auditor.pem -n default + kubectl create secret generic scalardl-auditor-tls-key --from-file=tls.key=${HOME}/scalardl-test/certs/auditor-key.pem -n default + kubectl create secret generic scalardl-auditor-tls-ca-for-ledger --from-file=ca.crt=${HOME}/scalardl-test/certs/ca.pem -n default + ``` + +1. シークレットリソース `auditor-keys` を作成して、`デジタル署名` 認証方法を無効にします。このドキュメントでは、 `デジタル署名` の代わりに `hmac` 認証方法を使用します。 + + ```console + kubectl create secret generic auditor-keys \ + --from-literal=tls.key=dummy-data-to-disable-digital-signature-method \ + --from-literal=certificate=dummy-data-to-disable-digital-signature-method \ + -n default + ``` + 注: 認証方法として `hmac` を使用する場合は、ダミーのシークレット `auditor-key` を作成して、Helm Chart 側の `デジタル署名` を無効にする必要があります。 + +1. ScalarDL のチャートのバージョンを設定します。 + + ```console + SCALAR_DL_LEDGER_CHART_VERSION=$(helm search repo scalar-labs/scalardl -l | grep -v -e "scalar-labs/scalardl-audit" | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + SCALAR_DL_AUDITOR_CHART_VERSION=$(helm search repo scalar-labs/scalardl-audit -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +1. ScalarDL Ledger をデプロイします。 + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ${HOME}/scalardl-test/scalardl-ledger-custom-values.yaml --version ${SCALAR_DL_LEDGER_CHART_VERSION} -n default + ``` + +1. ScalarDL Auditor をデプロイします。 + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ${HOME}/scalardl-test/scalardl-auditor-custom-values.yaml --version ${SCALAR_DL_AUDITOR_CHART_VERSION} -n default + ``` + +1. ScalarDL Ledger および ScalarDL Auditor ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 14m + postgresql-ledger-0 1/1 Running 0 14m + scalardl-auditor-auditor-5b885ff4c8-fwkpf 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-g69cb 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-nsmnq 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-5mn6v 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-fpq8j 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-lsz2t 1/1 Running 0 18s + scalardl-ledger-envoy-547bbf7546-n7p5x 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-p8nwp 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-pskpb 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-5zsbj 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-vnmrw 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-wpjvs 1/1 Running 0 26s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 11m + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 11m + ``` + + ScalarDL Ledger および ScalarDL Auditor ポッドが適切にデプロイされている場合、ステータスが **Running** であることがわかります。 + +1. ScalarDL Ledger サービスと ScalarDL Auditor サービスがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc -n default + ``` + + [コマンド実行結果] + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-auditor ClusterIP 10.107.9.78 5432/TCP 15m + postgresql-auditor-hl ClusterIP None 5432/TCP 15m + postgresql-ledger ClusterIP 10.108.241.181 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-auditor-envoy ClusterIP 10.100.61.202 40051/TCP,40052/TCP 55s + scalardl-auditor-envoy-metrics ClusterIP 10.99.6.227 9001/TCP 55s + scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 55s + scalardl-auditor-metrics ClusterIP 10.108.1.147 8080/TCP 55s + scalardl-ledger-envoy ClusterIP 10.101.191.116 50051/TCP,50052/TCP 61s + scalardl-ledger-envoy-metrics ClusterIP 10.106.52.103 9001/TCP 61s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 61s + scalardl-ledger-metrics ClusterIP 10.99.122.106 8080/TCP 61s + ``` + ScalarDL Ledger サービスと ScalarDL Auditor サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。 + +:::note + +`scalardl-ledger-headless`、`scalardl-auditor-headless`、`postgresql-ledger-hl`、`postgresql-auditor-hl` の `CLUSTER-IP` の値は、IP アドレスがないため `None` になります。。 + +::: + +## ステップ7. クライアントコンテナを開始する + +クライアントコンテナでCAの証明書ファイルを使用します。そこで、シークレットリソースを作成し、クライアントコンテナにマウントします。 + +1. シークレットリソース `client-ca-cert` を作成します。 + + ```console + kubectl create secret generic client-ca-cert --from-file=certificate=${HOME}/scalardl-test/certs/ca.pem -n default + ``` + +1. クライアントポッドのマニフェストファイル (`scalardl-client-pod.yaml`) を作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalardl-test/scalardl-client-pod.yaml + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + env: + - name: SCALAR_DL_VERSION + value: SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION + volumeMounts: + - name: "client-ca-cert" + mountPath: "/certs/ca/ca.pem" + subPath: certificate + readOnly: true + volumes: + - name: "client-ca-cert" + secret: + secretName: "client-ca-cert" + restartPolicy: Never + EOF + ``` + +1. マニフェストファイルに ScalarDL のバージョンを設定します。 + + ```console + sed -i s/SCALAR_DL_CLIENT_POD_SCALAR_DL_VERSION/${SCALAR_DL_VERSION}/ ${HOME}/scalardl-test/scalardl-client-pod.yaml + ``` + +1. クライアントポッドをデプロイします。 + + ```console + kubectl apply -f ${HOME}/scalardl-test/scalardl-client-pod.yaml -n default + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod scalardl-client -n default + ``` + + [コマンド実行結果] + + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 4s + ``` + +## ステップ8. クライアントコンテナで ScalarDL サンプルコントラクトを実行する + +以下に最低限の手順を説明します。ScalarDL LedgerとScalarDL Auditorについて詳しく知りたい場合は、以下のドキュメントを参照してください。 + +* [ScalarDL 入門](https://scalardl.scalar-labs.com/docs/latest/getting-started/) +* [ScalarDL Auditor 入門](https://scalardl.scalar-labs.com/docs/latest/getting-started-auditor/) + +1. クライアントコンテナで bash を実行します。 + + ```console + kubectl exec -it scalardl-client -n default -- bash + ``` + 次の手順移行のコマンドは、クライアントコンテナ無いで実行する必要があります。 + +1. git、curl、および unzip コマンドをクライアントコンテナにインストールします。 + + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java クライアント SDK git リポジトリのクローンを作成します。 + + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. ディレクトリを `scalardl-java-client-sdk/` に変更します。 + + ```console + cd scalardl-java-client-sdk/ + ``` + + ```console + pwd + ``` + + [コマンド実行結果] + + ```console + /scalardl-java-client-sdk + ``` + +1. ブランチを使用するバージョンに変更します。 + + ```console + git checkout -b v${SCALAR_DL_VERSION} refs/tags/v${SCALAR_DL_VERSION} + ``` + +1. サンプルコントラクトを作成します。 + + ```console + ./gradlew assemble + ``` + +1. ScalarDL の CLI ツールを [ScalarDL Java Client SDK Releases](https://github.com/scalar-labs/scalardl-java-client-sdk/releases) からダウンロードします。 + + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v${SCALAR_DL_VERSION}/scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + 同じバージョンの CLI ツールと ScalarDL Ledger を使用する必要があります。 + +1. `scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip` ファイルを解凍します。 + + ```console + unzip ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}.zip + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger および ScalarDL Auditor にアクセスするための構成ファイル (`client.properties`) を作成します。 + + ```console + cat << 'EOF' > client.properties + # Ledger configuration + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.client.tls.enabled=true + scalar.dl.client.tls.ca_root_cert_path=/certs/ca/ca.pem + scalar.dl.client.tls.override_authority=envoy.scalar.example.com + + # Auditor configuration + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + scalar.dl.client.auditor.tls.enabled=true + scalar.dl.client.auditor.tls.ca_root_cert_path=/certs/ca/ca.pem + scalar.dl.client.auditor.tls.override_authority=envoy.scalar.example.com + + # Client configuration + scalar.dl.client.authentication_method=hmac + scalar.dl.client.entity.id=client + scalar.dl.client.entity.identity.hmac.secret_key=scalardl-hmac-client-secert-key + EOF + ``` + +1. クライアントのシークレットを登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-secret --config ./client.properties + ``` + +1. サンプルコントラクト `StateUpdater` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト `StateReader` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. 検証リクエストを実行するためのコントラクト `ValidateLedger` を登録します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl register-contract --config ./client.properties --contract-id validate-ledger --contract-binary-name com.scalar.dl.client.contract.ValidateLedger --contract-class-file ./build/classes/java/main/com/scalar/dl/client/contract/ValidateLedger.class + ``` + +1. コントラクト `StateUpdater` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + このサンプルコントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl execute-contract --config ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + + [コマンド実行結果] + + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + + ### 参考情報 + + * 資産データが改ざんされていない場合、`execute-contract` コマンドを実行してコントラクトの実行を要求すると、結果として `OK` が返されます。 + * 資産データが改ざんされている場合 (たとえば、データベース内の `state` 値が改ざんされている場合)、コントラクトの実行を要求する `execute-contract` コマンドを実行すると、実行結果として `OK` 以外の値が返されます (たとえば、 `INCONSISTENT_STATES`)。ScalarDL がデータ改ざんを検出する方法の例として、以下を参照してください。 + + [コマンド実行結果 (資産データが改ざんされている場合) ] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +1. アセットの検証リクエストを実行します。 + + ```console + ./scalardl-java-client-sdk-${SCALAR_DL_VERSION}/bin/scalardl validate-ledger --config ./client.properties --asset-id "test_asset" + ``` + + [コマンド実行結果] + + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEYCIQDiiXqzw6K+Ml4uvn8rK43o5wHWESU3hoXnZPi6/OeKVwIhAM+tFBcapl6zg47Uq0Uc8nVNGWNHZLBDBGve3F0xkzTR" + }, + "Auditor" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEUCIQDLsfUR2PmxSvfpL3YvHJUkz00RDpjCdctkroZKXE8d5QIgH73FQH2e11jfnynD00Pp9DrIG1vYizxDsvxUsMPo9IU=" + } + } + ``` + + ### 参考情報 + + * 資産データが改ざんされていない場合、`validate-ledger` コマンドを実行して検証を要求すると、結果として `OK` が返されます。 + * 資産データが改ざんされている場合 (たとえば、データベース内の `state` 値が改ざんされている場合)、`validate-ledger` コマンドを実行して検証を要求すると、実行結果として `OK` 以外の値が返されます (たとえば、`INVALID_OUTPUT`)。ScalarDL がデータ改ざんを検出する方法の例として、以下を参照してください。 + + [コマンド実行結果 (資産データが改ざんされている場合) ] + + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger テストと ScalarDL Auditor テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Auditor、ScalarDL Schema Loader、および PostgreSQL をアンインストールします。 + + ```console + helm uninstall -n default scalardl-ledger schema-loader-ledger postgresql-ledger scalardl-auditor schema-loader-auditor postgresql-auditor + ``` + +1. クライアントコンテナを削除します。 + + ``` + kubectl delete pod scalardl-client --grace-period 0 -n default + ``` + +1. シークレットリソースを削除します。 + + ``` + kubectl delete secrets envoy-tls-key envoy-tls-cert schema-ledger-credentials-secret schema-auditor-credentials-secret ledger-credentials-secret scalardl-ledger-tls-ca scalardl-ledger-tls-cert scalardl-ledger-tls-key auditor-credentials-secret auditor-keys scalardl-auditor-tls-ca scalardl-auditor-tls-cert scalardl-auditor-tls-key scalardl-auditor-tls-ca-for-ledger client-ca-cert + ``` + +1. 作業ディレクトリとサンプルファイル (構成ファイル、秘密鍵、および証明書) を削除します。 + + ```console + cd ${HOME} + ``` + + ```console + rm -rf ${HOME}/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor.mdx new file mode 100644 index 00000000..c0d3e9a1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-auditor.mdx @@ -0,0 +1,913 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (ScalarDL Ledger と Auditor / Auditor モード) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDL Ledger および Auditor を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +以下のコンテナイメージを取得するには、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) または [Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) でScalarDL Ledger および ScalarDL Auditor をサブスクライブする必要があります。 + * AWS Marketplace + * scalar-ledger + * scalar-ledger-envoy + * scalardl-schema-loader-ledger + * scalar-auditor + * scalar-auditor-envoy + * scalardl-schema-loader-auditor + * Azure Marketplace + * scalar-ledger + * scalar-auditor + * scalardl-envoy + * scalardl-schema-loader + +詳細については、以下のドキュメントを参照してください。 + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +## 注記 +監査によるビザンチン障害検出を適切に機能させるには、Ledger と Auditor を異なる管理ドメインに展開して管理する必要があります。ただし、このガイドでは、テストを容易にするために、Ledger と Auditor を同じ Kubernetes クラスターにデプロイします。 + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++-----------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| [ポッド] [ポッド] [ポッド] | +| | +| +-------+ +---------+ | +| +---> | Envoy | ---+ +---> | Ledger | ---+ | +| | +-------+ | | +---------+ | | +| | | | | | +| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | Ledger | ---+---> | PostgreSQL | | +| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (Ledger 用) | | +| | +---------+ | | +-----------+ | | +---------------+ | +| | | +-------+ | | +---------+ | | +| | +---> | Envoy | ---+ +---> | Ledger | ---+ | +| +--------+ | +-------+ +---------+ | +| | クライアント | ---+ | +| +--------+ | +-------+ +---------+ | +| | +---> | Envoy | ---+ +---> | Auditor | ---+ | +| | | +-------+ | | +---------+ | | +| | | | | | | +| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ | +| +---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | Auditor | ---+---> | PostgreSQL | | +| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (Auditor 用) | | +| +---------+ | | +-----------+ | | +---------------+ | +| | +-------+ | | +---------+ | | +| +---> | Envoy | ---+ +---> | Auditor | ---+ | +| +-------+ +---------+ | +| | ++-----------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。**minikube** 環境を使用する場合は、[Scalar Helm Charts をはじめよう](./getting-started-scalar-helm-charts.mdx)を参照してください。すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ2. PostgreSQL コンテナーを開始する + +ScalarDL Ledger と Auditor は、バックエンドデータベースとして何らかのデータベースシステムを使用します。このドキュメントでは PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. Ledger 用に PostgreSQL をデプロイします。 + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. Auditor 用に PostgreSQL をデプロイします。 + ```console + helm install postgresql-auditor bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 11s + postgresql-ledger-0 1/1 Running 0 16s + ``` + +## ステップ3. 作業ディレクトリを作成する + +いくつかの構成ファイルとキー/証明書ファイルをローカルに作成します。したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + ```console + mkdir -p ~/scalardl-test/certs/ + ``` + +## ステップ4. 秘密鍵/証明書ファイルを作成する + +注記:このガイドでは、テストに自己署名証明書を使用します。ただし、これらの証明書を運用環境では使用しないことを強くお勧めします。 + +1. 作業ディレクトリを `~/scalardl-test/certs/` ディレクトリに変更します。 + ```console + cd ~/scalardl-test/certs/ + ``` + +1. Ledger 情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/ledger.json + { + "CN": "ledger", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "ledger", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. Auditor 情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/auditor.json + { + "CN": "auditor", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "auditor", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. クライアント情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/client.json + { + "CN": "client", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "client", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. Ledger のキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./ledger.json | cfssljson -bare ledger + ``` + +1. Auditor のキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./auditor.json | cfssljson -bare auditor + ``` + +1. クライアントのキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./client.json | cfssljson -bare client + ``` + +1. キー/証明書ファイルが作成されたことを確認します。 + ```console + ls -1 + ``` + 【コマンド実行結果】 + ```console + auditor-key.pem + auditor.csr + auditor.json + auditor.pem + client-key.pem + client.csr + client.json + client.pem + ledger-key.pem + ledger.csr + ledger.json + ledger.pem + ``` + +## ステップ5. Helm Charts を使用して ScalarDL Ledger と ScalarDL Auditor の DB スキーマを作成する + +Helm Chart を使用して、Kubernetes クラスターに2つの ScalarDL Schema Loader ポッドをデプロイします。 +ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger と Auditor の DB スキーマを作成します。 + +1. 作業ディレクトリを `~/scalardl-test/` に変更します。 + ```console + cd ~/scalardl-test/ + ``` + +1. Scalar helm リポジトリを追加します。 + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. AWS/Azure Marketplace から ScalarDL コンテナーイメージをプルするためのシークレットリソースを作成します。 + * AWS Marketplace + ```console + kubectl create secret docker-registry reg-ecr-mp-secrets \ + --docker-server=709825985650.dkr.ecr.us-east-1.amazonaws.com \ + --docker-username=AWS \ + --docker-password=$(aws ecr get-login-password --region us-east-1) + ``` + * Azure Marketplace + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + + 詳細については、以下のドキュメントを参照してください。 + + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +1. ScalarDL Schema Loader for Ledger のカスタム値ファイル (schema-loader-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "/scalarinc/scalardl-schema-loader" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + +1. Auditor 用の ScalarDL Schema Loader のカスタム値ファイル (schema-loader-auditor-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-auditor" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "auditor-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-auditor-custom-values.yaml + schemaLoading: + schemaType: "auditor" + image: + repository: "/scalarinc/scalardl-schema-loader" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "auditor-credentials-secret" + EOF + ``` + +1. PostgreSQL for Ledger のユーザー名とパスワードを含むシークレットリソースを作成します。 + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres + ``` + +1. PostgreSQL for Auditor のユーザー名とパスワードを含むシークレットリソースを作成します。 + ```console + kubectl create secret generic auditor-credentials-secret \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_AUDITOR_POSTGRES_PASSWORD=postgres + ``` + +1. Ledger 用の ScalarDL Schema Loader をデプロイします。 + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ./schema-loader-ledger-custom-values.yaml + ``` + +1. Auditor 用の ScalarDL Schema Loader をデプロイします。 + ```console + helm install schema-loader-auditor scalar-labs/schema-loading -f ./schema-loader-auditor-custom-values.yaml + ``` + +1. ScalarDL Schema Loader ポッドがデプロイされ、完了しているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 2m56s + postgresql-ledger-0 1/1 Running 0 3m1s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 6s + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 10s + ``` + ScalarDL Schema Loader ポッドが **ContainerCreating** または **Running** の場合は、プロセスが完了するまで待ちます (STATUS は **Completed** になります)。 + +## ステップ6. Helm Chart を使用して Kubernetes クラスターに ScalarDL Ledger と Auditor をデプロイする + +1. ScalarDL Ledger のカスタム値ファイル (scalardl-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardl-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + ledger: + image: + repository: "/scalarinc/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + +1. ScalarDL Auditor のカスタム値ファイル (scalardl-auditor-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-auditor-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + auditor: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-auditor" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + auditorProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.cert_path=/keys/certificate + scalar.dl.auditor.private_key_path=/keys/private-key + secretName: "auditor-credentials-secret" + extraVolumes: + - name: "auditor-keys" + secret: + secretName: "auditor-keys" + extraVolumeMounts: + - name: "auditor-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-auditor-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardl-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + auditor: + image: + repository: "/scalarinc/scalar-auditor" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + auditorProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-auditor.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_AUDITOR_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.auditor.ledger.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.auditor.cert_path=/keys/certificate + scalar.dl.auditor.private_key_path=/keys/private-key + secretName: "auditor-credentials-secret" + extraVolumes: + - name: "auditor-keys" + secret: + secretName: "auditor-keys" + extraVolumeMounts: + - name: "auditor-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + +1. シークレットリソース `ledger-keys` を作成します。 + ```console + kubectl create secret generic ledger-keys --from-file=certificate=./certs/ledger.pem --from-file=private-key=./certs/ledger-key.pem + ``` + +1. シークレットリソース `auditor-keys` を作成します。 + ```console + kubectl create secret generic auditor-keys --from-file=certificate=./certs/auditor.pem --from-file=private-key=./certs/auditor-key.pem + ``` + +1. ScalarDL Ledger をデプロイします。 + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + +1. ScalarDL Auditor をデプロイします。 + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + +1. ScalarDL Ledger および Auditor ポッドがデプロイされているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-auditor-0 1/1 Running 0 14m + postgresql-ledger-0 1/1 Running 0 14m + scalardl-auditor-auditor-5b885ff4c8-fwkpf 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-g69cb 1/1 Running 0 18s + scalardl-auditor-auditor-5b885ff4c8-nsmnq 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-5mn6v 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-fpq8j 1/1 Running 0 18s + scalardl-auditor-envoy-689bcbdf65-lsz2t 1/1 Running 0 18s + scalardl-ledger-envoy-547bbf7546-n7p5x 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-p8nwp 1/1 Running 0 26s + scalardl-ledger-envoy-547bbf7546-pskpb 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-5zsbj 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-vnmrw 1/1 Running 0 26s + scalardl-ledger-ledger-6db5dc8774-wpjvs 1/1 Running 0 26s + schema-loader-auditor-schema-loading-dvc5r 0/1 Completed 0 11m + schema-loader-ledger-schema-loading-mtllb 0/1 Completed 0 11m + ``` + ScalarDL Ledger および Auditor ポッドが適切にデプロイされている場合、STATUS が **Running** であることがわかります。 + +1. ScalarDL Ledger サービスと Auditor サービスがデプロイされているかどうかを確認します。 + ```console + kubectl get svc + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-auditor ClusterIP 10.107.9.78 5432/TCP 15m + postgresql-auditor-hl ClusterIP None 5432/TCP 15m + postgresql-ledger ClusterIP 10.108.241.181 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-auditor-envoy ClusterIP 10.100.61.202 40051/TCP,40052/TCP 55s + scalardl-auditor-envoy-metrics ClusterIP 10.99.6.227 9001/TCP 55s + scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 55s + scalardl-auditor-metrics ClusterIP 10.108.1.147 8080/TCP 55s + scalardl-ledger-envoy ClusterIP 10.101.191.116 50051/TCP,50052/TCP 61s + scalardl-ledger-envoy-metrics ClusterIP 10.106.52.103 9001/TCP 61s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 61s + scalardl-ledger-metrics ClusterIP 10.99.122.106 8080/TCP 61s + ``` + ScalarDL Ledger サービスと Auditor サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。(注記: `scalardl-ledger-headless` と `scalardl-auditor-headless` には CLUSTER-IP がありません。) + +## ステップ7. クライアントコンテナを開始する + +クライアントコンテナで証明書ファイルを使用します。そこで、シークレットリソースを作成し、クライアントコンテナにマウントします。 + +1. シークレットリソース `client-keys` を作成します。 + ``` + kubectl create secret generic client-keys --from-file=certificate=./certs/client.pem --from-file=private-key=./certs/client-key.pem + ``` + +1. Kubernetes クラスター上でクライアントコンテナーを起動します。 + ```console + cat << 'EOF' | kubectl apply -f - + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + volumeMounts: + - name: "ledger-keys" + mountPath: "/keys/ledger" + readOnly: true + - name: "auditor-keys" + mountPath: "/keys/auditor" + readOnly: true + - name: "client-keys" + mountPath: "/keys/client" + readOnly: true + volumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + - name: "auditor-keys" + secret: + secretName: "auditor-keys" + - name: "client-keys" + secret: + secretName: "client-keys" + restartPolicy: Never + EOF + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod scalardl-client + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 4s + ``` + +## ステップ8. クライアントコンテナで ScalarDL サンプルコントラクトを実行する + +以下に最低限の手順を説明します。ScalarDL Ledger と Auditor について詳しく知りたい場合は、以下のドキュメントを参照してください。 + * [Getting Started with ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/getting-started) + * [Getting Started with ScalarDL Auditor](https://scalardl.scalar-labs.com/ja-jp/docs/latest/getting-started-auditor) + +Auditor を使用する場合、クライアントアプリケーションを起動する前に Ledger と Auditor の証明書を登録する必要があります。Ledger はその証明書を Auditor に登録する必要があり、Auditor はその証明書を Ledger に登録する必要があります。 + +1. クライアントコンテナで bash を実行します。 + ```console + kubectl exec -it scalardl-client -- bash + ``` + この手順の後、クライアントコンテナで各コマンドを実行します。 + +1. git、curl、および unzip コマンドをクライアントコンテナにインストールします。 + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java Client SDK git リポジトリのクローンを作成します。 + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. ディレクトリを `scalardl-java-client-sdk/` に変更します。 + ```console + cd scalardl-java-client-sdk/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + + /scalardl-java-client-sdk + ``` + +1. ブランチを任意のバージョンに変更します。 + ```console + git checkout -b v3.6.0 refs/tags/v3.6.0 + ``` + ```console + git branch + ``` + 【コマンド実行結果】 + ```console + master + * v3.6.0 + ``` + 別のバージョンを使用する場合は、使用するバージョン (タグ) を指定してください。同じバージョンの ScalarDL Ledger と ScalarDL Java Client SDK を使用する必要があります。 + +1. サンプルコントラクトを作成します。 + ```console + ./gradlew assemble + ``` + +1. ScalarDL の CLI ツールは [ScalarDL Java Client SDK Releases](https://github.com/scalar-labs/scalardl-java-client-sdk/releases) からダウンロードしてください。 + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v3.6.0/scalardl-java-client-sdk-3.6.0.zip + ``` + 同じバージョンの CLI ツールと ScalarDL Ledger を使用する必要があります。 + +1. `scalardl-java-client-sdk-3.6.0.zip` ファイルを解凍します。 + ```console + unzip ./scalardl-java-client-sdk-3.6.0.zip + ``` + +1. Ledger の証明書を Auditor に登録するための設定ファイル(ledger.as.client.properties)を作成します。 + ```console + cat << 'EOF' > ledger.as.client.properties + # Ledger + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + + # Certificate + scalar.dl.client.cert_holder_id=ledger + scalar.dl.client.cert_path=/keys/ledger/certificate + scalar.dl.client.private_key_path=/keys/ledger/private-key + EOF + ``` + +1. Auditor の証明書を Ledger に登録するための設定ファイル(auditor.as.client.properties)を作成します。 + ```console + cat << 'EOF' > auditor.as.client.properties + # Ledger + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + + # Certificate + scalar.dl.client.cert_holder_id=auditor + scalar.dl.client.cert_path=/keys/auditor/certificate + scalar.dl.client.private_key_path=/keys/auditor/private-key + EOF + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger にアクセスするための構成ファイル (client.properties) を作成します。 + ```console + cat << 'EOF' > client.properties + # Ledger + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=scalardl-auditor-envoy.default.svc.cluster.local + + # Certificate + scalar.dl.client.cert_holder_id=client + scalar.dl.client.cert_path=/keys/client/certificate + scalar.dl.client.private_key_path=/keys/client/private-key + EOF + ``` + +1. Ledger の証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./ledger.as.client.properties + ``` + +1. Auditor の証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./auditor.as.client.properties + ``` + +1. クライアントの証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./client.properties + ``` + +1. サンプルコントラクト `StateUpdater` を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト `StateReader` を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. 検証リクエストを実行するためのコントラクト `ValdateLedger` を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id validate-ledger --contract-binary-name com.scalar.dl.client.contract.ValidateLedger --contract-class-file ./build/classes/java/main/com/scalar/dl/client/contract/ValidateLedger.class + ``` + +1. コントラクト `StateUpdater` を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + このサンプルコントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + 【コマンド実行結果】 + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + * 参考情報 + * 資産データが改ざんされていない場合、コントラクト実行要求 (execute-contract コマンド) は結果として `OK` を返します。 + * 資産データが改ざんされている場合 (例: DB の `state` 値が改ざんされている場合) 、コントラクト実行要求 (execute-contract コマンド) は結果として `OK` 以外の値 (例:`INCONSISTENT_STATES`) を返す , 以下のような感じです。 + 【コマンド実行結果 (資産データが改ざんされた場合) 】 + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + * このようにして、ScalarDL はデータの改ざんを検出できます。 + +1. アセットの検証リクエストを実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/validate-ledger --properties ./client.properties --asset-id "test_asset" + ``` + 【コマンド実行結果】 + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEYCIQDiiXqzw6K+Ml4uvn8rK43o5wHWESU3hoXnZPi6/OeKVwIhAM+tFBcapl6zg47Uq0Uc8nVNGWNHZLBDBGve3F0xkzTR" + }, + "Auditor" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "3533427d-03cf-41d1-bf95-4d31eb0cb24d", + "hash" : "FiquvtPMKLlxKf4VGoccSAGsi9ptn4ozYVVTwdSzEQ0=", + "signature" : "MEUCIQDLsfUR2PmxSvfpL3YvHJUkz00RDpjCdctkroZKXE8d5QIgH73FQH2e11jfnynD00Pp9DrIG1vYizxDsvxUsMPo9IU=" + } + } + ``` + * 参考情報 + * 資産データが改ざんされていない場合、検証リクエスト (validate-ledger コマンド) は結果として `OK` を返します。 + * 資産データが改ざんされている場合 (例: DB の `state` 値が改ざんされている場合) 、検証リクエスト (validate-ledger コマンド) は結果として `OK` 以外の値 (例: `INVALID_OUTPUT`) を返します。以下のような。 + 【コマンド実行結果 (資産データが改ざんされた場合) 】 + ```console + { + "status_code" : "INCONSISTENT_STATES", + "error_message" : "The results from Ledger and Auditor don't match" + } + ``` + * このようにして、ScalarDL Ledger はデータの改ざんを検出できます。 + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Schema Loader、PostgreSQL をアンインストールします。 + ```console + helm uninstall scalardl-ledger schema-loader-ledger postgresql-ledger scalardl-auditor schema-loader-auditor postgresql-auditor + ``` + +1. クライアントコンテナを削除します。 + ``` + kubectl delete pod scalardl-client --force --grace-period 0 + ``` + +1. 作業ディレクトリとサンプルファイル (構成ファイル、秘密鍵、証明書) を削除します。 + ```console + cd ~ + ``` + ```console + rm -rf ~/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-ledger.mdx new file mode 100644 index 00000000..c4641a39 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/getting-started-scalardl-ledger.mdx @@ -0,0 +1,618 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# Helm Charts をはじめよう (ScalarDL Ledger / Ledger のみ) + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDL Ledger を開始する方法について説明します。ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。このドキュメントでは **Minikube** を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。 + +## 要件 + +以下のコンテナイメージを入手するには、[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) または [Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) でScalarDL Ledgerを購読する必要があります。 + * AWS Marketplace + * scalar-ledger + * scalar-ledger-envoy + * scalardl-schema-loader-ledger + * Azure Marketplace + * scalar-ledger + * scalardl-envoy + * scalardl-schema-loader + +詳細については、以下のドキュメントを参照してください。 + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +## 私たちが作るもの + +次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。 + +``` ++--------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] [ポッド] | +| | +| +-------+ +-----------------+ | +| +---> | Envoy | ---+ +---> | ScalarDL Ledger | ---+ | +| | +-------+ | | +-----------------+ | | +| | | | | | +| +--------+ +---------+ | +-------+ | +-------------------+ | +-----------------+ | +------------+ | +| | クライアント | ---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDL Ledger | ---+---> | PostgreSQL | | +| +--------+ | (Envoy) | | +-------+ | | (ScalarDL Ledger) | | +-----------------+ | +------------+ | +| +---------+ | | +-------------------+ | | | +| | +-------+ | | +-----------------+ | | +| +---> | Envoy | ---+ +---> | ScalarDL Ledger | ---+ | +| +-------+ +-----------------+ | +| | ++--------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ1. Kubernetes クラスターを開始する + +まず、Kubernetes クラスターを準備する必要があります。**minikube** 環境を使用する場合は、[Scalar Helm Charts をはじめよう](./getting-started-scalar-helm-charts.mdx)を参照してください。すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。 + +## ステップ2. PostgreSQL コンテナーを開始する + +ScalarDL Ledger は、バックエンドデータベースとして何らかのデータベースシステムを使用します。このドキュメントでは PostgreSQL を使用します。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. Bitnami Helm リポジトリを追加します。 + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +1. PostgreSQLをデプロイします。 + ```console + helm install postgresql-ledger bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +1. PostgreSQL コンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-ledger-0 1/1 Running 0 11s + ``` + +## ステップ3. 作業ディレクトリを作成する + +いくつかの構成ファイルとキー/証明書ファイルをローカルに作成します。したがって、それらの作業ディレクトリを作成します。 + +1. 作業ディレクトリを作成します。 + ```console + mkdir -p ~/scalardl-test/certs/ + ``` + +## ステップ4. キー/証明書ファイルを作成する + +注記:このガイドでは、テストに自己署名証明書を使用します。ただし、これらの証明書を運用環境では使用しないことを強くお勧めします。 + +1. 作業ディレクトリを `~/scalardl-test/certs/` ディレクトリに変更します。 + ```console + cd ~/scalardl-test/certs/ + ``` + +1. Ledger 情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/ledger.json + { + "CN": "ledger", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "ledger", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. クライアント情報を含む JSON ファイルを作成します。 + ```console + cat << 'EOF' > ~/scalardl-test/certs/client.json + { + "CN": "client", + "hosts": ["example.com","*.example.com"], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "O": "client", + "OU": "test team", + "L": "Shinjuku", + "ST": "Tokyo", + "C": "JP" + } + ] + } + EOF + ``` + +1. Ledger のキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./ledger.json | cfssljson -bare ledger + ``` + +1. クライアントのキー/証明書ファイルを作成します。 + ```console + cfssl selfsign "" ./client.json | cfssljson -bare client + ``` + +1. キー/証明書ファイルが作成されたことを確認します。 + ```console + ls -1 + ``` + 【コマンド実行結果】 + ```console + client-key.pem + client.csr + client.json + client.pem + ledger-key.pem + ledger.csr + ledger.json + ledger.pem + ``` + +## ステップ5. Helm Charts を使用して ScalarDL Ledger の DB スキーマを作成する + +Helm Charts を使用して、ScalarDL Schema Loader を Kubernetes クラスターにデプロイします。 +ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger の DB スキーマを作成します。 + +1. 作業ディレクトリを `~/scalardl-test/` に変更します。 + ```console + cd ~/scalardl-test/ + ``` + +1. Scalar helm リポジトリを追加します。 + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +1. AWS/Azure Marketplace から ScalarDL コンテナーイメージをプルするためのシークレットリソースを作成します。 + * AWS Marketplace + ```console + kubectl create secret docker-registry reg-ecr-mp-secrets \ + --docker-server=709825985650.dkr.ecr.us-east-1.amazonaws.com \ + --docker-username=AWS \ + --docker-password=$(aws ecr get-login-password --region us-east-1) + ``` + * Azure Marketplace + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + + 詳細については、以下のドキュメントを参照してください。 + + * [How to install Scalar products through AWS Marketplace](../scalar-kubernetes/AwsMarketplaceGuide.mdx) + * [How to install Scalar products through Azure Marketplace](../scalar-kubernetes/AzureMarketplaceGuide.mdx) + +1. ScalarDL Schema Loader のカスタム値ファイル (schema-loader-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml + schemaLoading: + schemaType: "ledger" + image: + repository: "/scalarinc/scalardl-schema-loader" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + secretName: "ledger-credentials-secret" + EOF + ``` + +1. PostgreSQL のユーザー名とパスワードを含むシークレットリソースを作成します。 + ```console + kubectl create secret generic ledger-credentials-secret \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DL_LEDGER_POSTGRES_PASSWORD=postgres + ``` + +1. ScalarDL Schema Loader をデプロイします。 + ```console + helm install schema-loader-ledger scalar-labs/schema-loading -f ./schema-loader-ledger-custom-values.yaml + ``` + +1. ScalarDL Schema Loader ポッドがデプロイされ、完了しているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-ledger-0 1/1 Running 0 11m + schema-loader-ledger-schema-loading-46rcr 0/1 Completed 0 3s + ``` + ScalarDL Schema Loader ポッドが **ContainerCreating** または **Running** の場合は、プロセスが完了するまで待ちます (STATUS は **Completed** になります)。 + +## ステップ6. Helm Charts を使用して Kubernetes クラスターに ScalarDL Ledger をデプロイする + +1. ScalarDL Ledger のカスタム値ファイル (scalardl-ledger-custom-values.yaml) を作成します。 + * AWS Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + + * Azure Marketplace + + ```console + cat << 'EOF' > ~/scalardl-test/scalardl-ledger-custom-values.yaml + envoy: + image: + repository: "/scalarinc/scalardl-envoy" + version: "1.3.0" + imagePullSecrets: + - name: "reg-acr-secrets" + + ledger: + image: + repository: "/scalarinc/scalar-ledger" + version: "3.6.0" + imagePullSecrets: + - name: "reg-acr-secrets" + ledgerProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }} + scalar.db.storage=jdbc + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + secretName: "ledger-credentials-secret" + extraVolumes: + - name: "ledger-keys" + secret: + secretName: "ledger-keys" + extraVolumeMounts: + - name: "ledger-keys" + mountPath: "/keys" + readOnly: true + EOF + ``` + +1. シークレットリソース `ledger-keys` を作成します。 + ```console + kubectl create secret generic ledger-keys --from-file=private-key=./certs/ledger-key.pem + ``` + +1. ScalarDL Ledger をデプロイします。 + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + +1. ScalarDL Ledger ポッドがデプロイされているかどうかを確認します。 + ```console + kubectl get pod + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + postgresql-ledger-0 1/1 Running 0 14m + scalardl-ledger-envoy-547bbf7546-6cn88 1/1 Running 0 52s + scalardl-ledger-envoy-547bbf7546-rpg5p 1/1 Running 0 52s + scalardl-ledger-envoy-547bbf7546-x2vlg 1/1 Running 0 52s + scalardl-ledger-ledger-9bdf7f8bd-29bzm 1/1 Running 0 52s + scalardl-ledger-ledger-9bdf7f8bd-9fklw 1/1 Running 0 52s + scalardl-ledger-ledger-9bdf7f8bd-9tw5x 1/1 Running 0 52s + schema-loader-ledger-schema-loading-46rcr 0/1 Completed 0 3m38s + ``` + ScalarDL Ledger ポッドが適切にデプロイされている場合、STATUS が **Running** であることがわかります。 + +1. ScalarDL Ledger サービスがデプロイされているかどうかを確認します。 + ```console + kubectl get svc + ``` + 【コマンド実行結果】 + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 47d + postgresql-ledger ClusterIP 10.109.253.150 5432/TCP 15m + postgresql-ledger-hl ClusterIP None 5432/TCP 15m + scalardl-ledger-envoy ClusterIP 10.106.141.153 50051/TCP,50052/TCP 83s + scalardl-ledger-envoy-metrics ClusterIP 10.108.36.136 9001/TCP 83s + scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 83s + scalardl-ledger-metrics ClusterIP 10.98.4.217 8080/TCP 83s + ``` + ScalarDL Ledger サービスが適切にデプロイされている場合は、CLUSTER-IP 列にプライベート IP アドレスが表示されます。(注記: `scalardl-ledger-headless` には CLUSTER-IP がありません。) + +## ステップ7. クライアントコンテナを開始する + +クライアントコンテナで証明書ファイルを使用します。そこで、シークレットリソースを作成し、クライアントコンテナにマウントします。 + +1. シークレットリソース `client-keys` を作成します。 + ``` + kubectl create secret generic client-keys --from-file=certificate=./certs/client.pem --from-file=private-key=./certs/client-key.pem + ``` + +1. Kubernetes クラスター上でクライアントコンテナーを起動します。 + ```console + cat << 'EOF' | kubectl apply -f - + apiVersion: v1 + kind: Pod + metadata: + name: "scalardl-client" + spec: + containers: + - name: scalardl-client + image: eclipse-temurin:8-jdk + command: ['sleep'] + args: ['inf'] + volumeMounts: + - name: "client-keys" + mountPath: "/keys" + readOnly: true + volumes: + - name: "client-keys" + secret: + secretName: "client-keys" + restartPolicy: Never + EOF + ``` + +1. クライアントコンテナが実行されているかどうかを確認します。 + ```console + kubectl get pod scalardl-client + ``` + 【コマンド実行結果】 + ```console + NAME READY STATUS RESTARTS AGE + scalardl-client 1/1 Running 0 11s + ``` + +## ステップ8. クライアントコンテナで ScalarDL サンプルコントラクトを実行する + +以下に最低限の手順を説明します。ScalarDL の詳細やコントラクトについて知りたい場合は、[Getting Started with ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/getting-started) をご覧ください。 + +1. クライアントコンテナで bash を実行します。 + ```console + kubectl exec -it scalardl-client -- bash + ``` + この手順の後、クライアントコンテナで各コマンドを実行します。 + +1. git、curl、および unzip コマンドをクライアントコンテナにインストールします。 + ```console + apt update && apt install -y git curl unzip + ``` + +1. ScalarDL Java Client SDK git リポジトリのクローンを作成します。 + ```console + git clone https://github.com/scalar-labs/scalardl-java-client-sdk.git + ``` + +1. ディレクトリを `scalardl-java-client-sdk/` に変更します。 + ```console + cd scalardl-java-client-sdk/ + ``` + ```console + pwd + ``` + 【コマンド実行結果】 + ```console + + /scalardl-java-client-sdk + ``` + +1. ブランチを任意のバージョンに変更します。 + ```console + git checkout -b v3.6.0 refs/tags/v3.6.0 + ``` + ```console + git branch + ``` + 【コマンド実行結果】 + ```console + master + * v3.6.0 + ``` + 別のバージョンを使用する場合は、使用するバージョン (タグ) を指定してください。同じバージョンの ScalarDL Ledger と ScalarDL Java Client SDK を使用する必要があります。 + +1. サンプルコントラクトを作成します。 + ```console + ./gradlew assemble + ``` + +1. ScalarDL の CLI ツールは [ScalarDL Java Client SDK Releases](https://github.com/scalar-labs/scalardl-java-client-sdk/releases) からダウンロードしてください。 + ```console + curl -OL https://github.com/scalar-labs/scalardl-java-client-sdk/releases/download/v3.6.0/scalardl-java-client-sdk-3.6.0.zip + ``` + 同じバージョンの CLI ツールと ScalarDL Ledger を使用する必要があります。 + +1. `scalardl-java-client-sdk-3.6.0.zip` ファイルを解凍します。 + ```console + unzip ./scalardl-java-client-sdk-3.6.0.zip + ``` + +1. Kubernetes クラスター上の ScalarDL Ledger にアクセスするための構成ファイル (client.properties) を作成します。 + ```console + cat << 'EOF' > client.properties + scalar.dl.client.server.host=scalardl-ledger-envoy.default.svc.cluster.local + scalar.dl.client.cert_holder_id=client + scalar.dl.client.cert_path=/keys/certificate + scalar.dl.client.private_key_path=/keys/private-key + EOF + ``` + +1. クライアントの証明書ファイルを登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-cert --properties ./client.properties + ``` + +1. サンプルコントラクト`StateUpdater`を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateUpdater --contract-binary-name com.org1.contract.StateUpdater --contract-class-file ./build/classes/java/main/com/org1/contract/StateUpdater.class + ``` + +1. サンプルコントラクト`StateReader`を登録します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/register-contract --properties ./client.properties --contract-id StateReader --contract-binary-name com.org1.contract.StateReader --contract-class-file ./build/classes/java/main/com/org1/contract/StateReader.class + ``` + +1. コントラクト`StateUpdater`を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateUpdater --contract-argument '{"asset_id": "test_asset", "state": 3}' + ``` + このサンプルコントラクトは、`test_asset` という名前のアセットの `state` (値) を `3` に更新します。 + +1. コントラクト `StateReader` を実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/execute-contract --properties ./client.properties --contract-id StateReader --contract-argument '{"asset_id": "test_asset"}' + ``` + 【コマンド実行結果】 + ```console + Contract result: + { + "id" : "test_asset", + "age" : 0, + "output" : { + "state" : 3 + } + } + ``` + +1. アセットの検証リクエストを実行します。 + ```console + ./scalardl-java-client-sdk-3.6.0/bin/validate-ledger --properties ./client.properties --asset-id "test_asset" + ``` + 【コマンド実行結果】 + ```console + { + "status_code" : "OK", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "f31599c6-e6b9-4b77-adc3-61cb5f119bd3", + "hash" : "9ExfFl5Lg9IQwdXdW9b87Bi+PWccn3OSNRbhmI/dboo=", + "signature" : "MEQCIG6Xa4WOWGMIIbA3PnCje4aAapYfCMerF54xRW0gaUuzAiBCA1nCAPoFWgxArB34/u9b+KeoxQBMALI/pOzMNoLExg==" + }, + "Auditor" : null + } + ``` + * 参考情報 + * 資産データが改ざんされていない場合、検証リクエスト (validate-ledger コマンド) は結果として `OK` を返します。 + * 資産データが改ざんされている場合 (例: DB の `state` 値が改ざんされている場合)、検証リクエスト (validate-ledger コマンド) は結果として `OK` 以外の値 (例:`INVALID_OUTPUT`) を返します。以下のような。 + 【コマンド実行結果 (資産データが改ざんされた場合) 】 + ```console + { + "status_code" : "INVALID_OUTPUT", + "Ledger" : { + "id" : "test_asset", + "age" : 0, + "nonce" : "f31599c6-e6b9-4b77-adc3-61cb5f119bd3", + "hash" : "9ExfFl5Lg9IQwdXdW9b87Bi+PWccn3OSNRbhmI/dboo=", + "signature" : "MEQCIGtJerW7N93c/bvIBy/7NXxoQwGFznHMmV6RzsgHQg0dAiBu+eBxkfmMQKJY2d9fLNvCH+4b+9rl7gZ3OXJ2NYeVsA==" + }, + "Auditor" : null + } + ``` + * このようにして、ScalarDL Ledger はデータの改ざんを検出できます。 + +## ステップ9. すべてのリソースを削除する + +Kubernetes クラスターで ScalarDL Ledger テストを完了したら、すべてのリソースを削除します。 + +1. ScalarDL Ledger、ScalarDL Schema Loader、PostgreSQL をアンインストールします。 + ```console + helm uninstall scalardl-ledger schema-loader-ledger postgresql-ledger + ``` + +1. クライアントコンテナを削除します。 + ``` + kubectl delete pod scalardl-client --force --grace-period 0 + ``` + +1. 作業ディレクトリとサンプルファイル (構成ファイル、秘密鍵、証明書) を削除します。 + ```console + cd ~ + ``` + ```console + rm -rf ~/scalardl-test/ + ``` + +## 参考文献 + +Scalar 製品の監視またはログ記録を開始する方法については、次のドキュメントで説明しています。 + +* [Helm Charts をはじめよう (Prometheus Operator を使用したモニタリング)](getting-started-monitoring.mdx) +* [Helm Charts をはじめよう (Loki スタックを使用したロギング)](getting-started-logging.mdx) +* [Helm Charts をはじめよう (Scalar Manager)](getting-started-scalar-manager.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx new file mode 100644 index 00000000..447e0ad3 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalar-admin-for-kubernetes.mdx @@ -0,0 +1,38 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes 用に Scalar Admin をデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して Kubernetes に Scalar Admin をデプロイする方法について説明します。Scalar Admin for Kubernetes のカスタム値ファイルの詳細については、[Scalar Admin for Kubernetes のカスタム値ファイルの構成](configure-custom-values-scalar-admin-for-kubernetes.mdx)を参照してください。 + +## Kubernetes 用の Scalar Admin をデプロイする + +Scalar Admin for Kubernetes をデプロイするには、次のコマンドを実行します。山かっこ内の内容を説明どおりに置き換えます。 + +```console +helm install scalar-labs/scalar-admin-for-kubernetes -n -f / --version +``` + +## Scalar Admin for Kubernetes ジョブをアップグレードする + +Scalar Admin for Kubernetes ジョブをアップグレードするには、次のコマンドを実行して、山かっこ内の内容を説明どおりに置き換えます。 + +```console +helm upgrade scalar-labs/scalar-admin-for-kubernetes -n -f / --version +``` + +## Scalar Admin for Kubernetes ジョブを削除する + +Scalar Admin for Kubernetes ジョブを削除するには、次のコマンドを実行して、山括弧内の内容を説明どおりに置き換えます。 + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalar-products.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalar-products.mdx new file mode 100644 index 00000000..a3f1a9d3 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalar-products.mdx @@ -0,0 +1,71 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar Helm Chart を使用して Scalar 製品をデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して Scalar 製品をデプロイする方法について説明します。minikube クラスターを使用してローカル環境で Scalar 製品をテストする場合は、次のスタートガイドを参照してください。 + +* [Scalar Helm Charts をはじめよう](getting-started-scalar-helm-charts.mdx) + +## 前提条件 + +### Helm コマンドをインストールする + +Scalar Helm Charts を使用するには、helm コマンドをインストールする必要があります。[Helm ドキュメント](https://helm.sh/docs/intro/install/)に従って helm コマンドをインストールしてください。 + +### Scalar Helm Charts リポジトリを追加する + +```console +helm repo add scalar-labs https://scalar-labs.github.io/helm-charts +``` +```console +helm repo update scalar-labs +``` + +### Kubernetes クラスターを準備する + +Scalar 製品を展開するには、Kubernetes クラスターを準備する必要があります。運用環境で EKS (Amazon Elastic Kubernetes Service) または AKS (Azure Kubernetes Service) を使用している場合。詳細については、次のドキュメントを参照してください。 + +- [Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](../scalar-kubernetes/CreateEKSClusterForScalarProducts.mdx) +- [Scalar 製品用の AKS クラスターを作成するためのガイドライン](../scalar-kubernetes/CreateAKSClusterForScalarProducts.mdx) + +サポートされているバージョンの Kubernetes を準備する必要があります。Scalar Helm Charts がサポートするバージョンについては、[Kubernetes](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes) を参照してください。 + +### データベースの準備 (ScalarDB、ScalarDL Ledger、ScalarDL Auditor) + +ScalarDB/ScalarDLのバックエンドストレージとしてデータベースを用意する必要があります。ScalarDB/ScalarDL がサポートするデータベースは次のドキュメントで確認できます。 + +* [ScalarDB がサポートするデータベース](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) + +### カスタム値ファイルを準備する + +環境に基づいてカスタム値ファイルを準備する必要があります。カスタム値ファイルの作成方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar Helm Charts のカスタム値ファイルを構成する](configure-custom-values-file.mdx) + +### コンテナイメージを取得する + +特に商用ライセンス製品を使用する場合は、Scalar 製品のコンテナイメージを取得する必要があります。Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナイメージを取得する方法](../scalar-kubernetes/HowToGetContainerImages.mdx)を参照してください。 + +ScalarDB Analytics with PostgreSQL などの OSS 製品を使用する場合は、パブリックコンテナリポジトリからコンテナイメージを取得できます。 + +## Scalar 製品をデプロイする + +各製品の導入方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDB Cluster](how-to-deploy-scalardb-cluster.mdx) +* [ScalarDB Analytics with PostgreSQL](how-to-deploy-scalardb-analytics-postgresql.mdx) +* [ScalarDL Ledger](how-to-deploy-scalardl-ledger.mdx) +* [ScalarDL Auditor](how-to-deploy-scalardl-auditor.mdx) +* [Scalar Admin for Kubernetes](how-to-deploy-scalar-admin-for-kubernetes.mdx) +* [Scalar Manager](getting-started-scalar-manager.mdx) +* [[非推奨] ScalarDB Server](how-to-deploy-scalardb.mdx) +* [[非推奨] ScalarDB GraphQL](how-to-deploy-scalardb-graphql.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx new file mode 100644 index 00000000..ca4cd7ad --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-analytics-postgresql.mdx @@ -0,0 +1,45 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics with PostgreSQL の導入方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB Analytics with PostgreSQL をデプロイする方法について説明します。ScalarDB Analytics with PostgreSQL のカスタム値ファイルの詳細については、[ScalarDB Analytics with PostgreSQL のカスタム値ファイルの構成](configure-custom-values-scalardb-analytics-postgresql.mdx)を参照してください。 + +## シークレットリソースを準備する + +`ScalarDB Analytics with PostgreSQL` をデプロイする前に、キー `superuser-password` を使用して、PostgreSQL のスーパーユーザーパスワードを含むシークレットリソース `scalardb-analytics-postgresql-superuser-password` を作成する必要があります。Scalar Helm Chart は、このシークレットリソースをマウントし、`POSTGRES_PASSWORD` 環境変数を `superuser-password` キーの値に設定します。 + +```console +kubectl create secret generic scalardb-analytics-postgresql-superuser-password --from-literal=superuser-password= -n +``` + +## ScalarDB Analytics with PostgreSQLをデプロイする + +ScalarDB Analytics with PostgreSQL をデプロイするには、次のコマンドを実行します。山かっこ内の内容を説明どおりに置き換えます。 + +```console +helm install scalar-labs/scalardb-analytics-postgresql -n -f / --version +``` + +## ScalarDB Analytics with PostgreSQL 展開をアップグレードする + +ScalarDB Analytics with PostgreSQL デプロイメントをアップグレードするには、次のコマンドを実行します。山括弧内の内容は説明どおりに置き換えてください。 + +```console +helm upgrade scalar-labs/scalardb-analytics-postgresql -n -f / --version +``` + +## ScalarDB Analytics with PostgreSQL デプロイメントを削除する + +ScalarDB Analytics with PostgreSQL デプロイメントを削除するには、次のコマンドを実行して、山括弧内の内容を説明どおりに置き換えます。 + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-cluster.mdx new file mode 100644 index 00000000..6a40c39c --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-cluster.mdx @@ -0,0 +1,78 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster のデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB Cluster をデプロイする方法について説明します。ScalarDB Cluster のカスタム値ファイルの詳細については、[ScalarDB Cluster のカスタム値ファイルの構成](configure-custom-values-scalardb-cluster.mdx)を参照してください。 + +## ScalarDB Cluster をデプロイする + +```console +helm install scalar-labs/scalardb-cluster -n -f / --version +``` + +## ScalarDB Cluster のデプロイメントをアップグレードする + +```console +helm upgrade scalar-labs/scalardb-cluster -n -f / --version +``` + +## ScalarDB Cluster のデプロイメントを削除する + +```console +helm uninstall -n +``` + +## `direct-kubernetes` モードを使用してクライアントアプリケーションを Kubernetes にデプロイします + +ScalarDB Cluster を `direct-kubernetes` モードで使用する場合は、次のことを行う必要があります。 + +1. アプリケーションポッドを ScalarDB Cluster と同じ Kubernetes クラスターにデプロイします。 +2. 3つの Kubernetes リソース (`Role`、`RoleBinding`、`ServiceAccount`) を作成します。 +3. アプリケーションポッドに `ServiceAccount` をマウントします。 + +このメソッドが必要なのは、`direct-kubernetes` モードの ScalarDB Cluster クライアントライブラリがアプリケーションポッド内から Kubernetes API を実行して、ScalarDB Cluster ポッドに関する情報を取得するためです。 + +* Role + ```yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: + name: scalardb-cluster-client-role + namespace: + rules: + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "watch", "list"] + ``` +* RoleBinding + ```yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + name: scalardb-cluster-client-rolebinding + namespace: + subjects: + - kind: ServiceAccount + name: scalardb-cluster-client-sa + roleRef: + kind: Role + name: scalardb-cluster-role + apiGroup: rbac.authorization.k8s.io + ``` +* ServiceAccount + ```yaml + apiVersion: v1 + kind: ServiceAccount + metadata: + name: scalardb-cluster-client-sa + namespace: + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-graphql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-graphql.mdx new file mode 100644 index 00000000..0443480e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb-graphql.mdx @@ -0,0 +1,50 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# [非推奨] ScalarDB GraphQL をデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB GraphQL サーバーは非推奨になりました。代わりに [ScalarDB Cluster](how-to-deploy-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB GraphQL をデプロイする方法について説明します。カスタム値ファイルを準備する必要があります。ScalarDB GraphQL のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [[非推奨] ScalarDB GraphQL のカスタム値ファイルを構成する](configure-custom-values-scalardb-graphql.mdx) + +## ScalarDB Server のデプロイ (推奨オプション) + +ScalarDB GraphQL をデプロイする場合は、次のように ScalarDB GraphQL とバックエンドデータベースの間に ScalarDB Server をデプロイすることをお勧めします。 + +``` +[クライアント] ---> [ScalarDB GraphQL] ---> [ScalarDB Server] ---> [バックエンドデータベース] +``` + +ScalarDB GraphQLをデプロイする前に、ドキュメント [ScalarDB Server をデプロイする方法](how-to-deploy-scalardb.mdx)に従ってScalarDB Serverをデプロイしてください。 + +## ScalarDB GraphQL をデプロイする + +```console +helm install scalar-labs/scalardb-graphql -n -f / --version +``` + +## ScalarDB GraphQL のデプロイメントをアップグレードする + +```console +helm upgrade scalar-labs/scalardb-graphql -n -f / --version +``` + +## ScalarDB GraphQL のデプロイメントを削除する + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb.mdx new file mode 100644 index 00000000..79371b5d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardb.mdx @@ -0,0 +1,41 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# [非推奨] ScalarDB Server をデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::note + +ScalarDB Server は非推奨になりました。代わりに [ScalarDB Cluster](how-to-deploy-scalardb-cluster.mdx) を使用してください。 + +::: + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDB Server をデプロイする方法について説明します。カスタム値ファイルを準備する必要があります。ScalarDB Server のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [[非推奨] ScalarDB Server のカスタム値ファイルを構成する](configure-custom-values-scalardb.mdx) + +## ScalarDB Server をデプロイする + +```console +helm install scalar-labs/scalardb -n -f / --version +``` + +## ScalarDB Server のデプロイメントをアップグレードする + +```console +helm upgrade scalar-labs/scalardb -n -f / --version +``` + +## ScalarDB Server のデプロイメントを削除します + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardl-auditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardl-auditor.mdx new file mode 100644 index 00000000..c47596c9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardl-auditor.mdx @@ -0,0 +1,48 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Auditor のデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDL Auditor をデプロイする方法について説明します。カスタム値ファイルを準備する必要があります。ScalarDL Auditor および ScalarDL Schema Loader のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [ScalarDL Auditor のカスタム値ファイルを構成する](configure-custom-values-scalardl-auditor.mdx) +* [ScalarDL Schema Loaderのカスタム値ファイルを構成する](configure-custom-values-scalardl-schema-loader.mdx) + +## 秘密鍵ファイルと証明書ファイルを準備する + +ScalarDL Auditor をデプロイするときは、秘密鍵ファイルと証明書ファイルを ScalarDL Auditor ポッドにマウントするための Secrete リソースを作成する必要があります。 + +ScalarDL ポッドに秘密鍵ファイルと証明書ファイルをマウントする方法の詳細については、[ScalarDL Helm Charts のポッドに秘密鍵ファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドにキーファイルと証明書ファイルをマウントする)を参照してください。 + +## ScalarDL Auditor のスキーマの作成 (ScalarDL Schema Loader のデプロイ) + +ScalarDL Auditor をデプロイする前に、バックエンドデータベースに ScalarDL Auditor のスキーマを作成する必要があります。 + +```console +helm install scalar-labs/schema-loading -n -f / --version +``` + +## ScalarDL Auditor のデプロイ + +```console +helm install scalar-labs/scalardl-audit -n -f / --version +``` + +## ScalarDL Auditor の展開をアップグレードする + +```console +helm upgrade scalar-labs/scalardl-audit -n -f / --version +``` + +## ScalarDL Auditor および ScalarDL Schema Loader のデプロイメントを削除する + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardl-ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardl-ledger.mdx new file mode 100644 index 00000000..0b78bf5b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/how-to-deploy-scalardl-ledger.mdx @@ -0,0 +1,50 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger のデプロイ方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Scalar Helm Chart を使用して ScalarDL Ledger をデプロイする方法について説明します。カスタム値ファイルを準備する必要があります。ScalarDL Ledger および ScalarDL Schema Loader のカスタム値ファイルの詳細については、次のドキュメントを参照してください。 + +* [ScalarDL Ledger のカスタム値ファイルを構成する](configure-custom-values-scalardl-ledger.mdx) +* [ScalarDL Schema Loaderのカスタム値ファイルを構成する](configure-custom-values-scalardl-schema-loader.mdx) + +## 秘密鍵ファイルを準備します (オプション / ScalarDL Auditor を使用する場合は必要です) + +ScalarDL Ledger の [asset proofs](https://scalardl.scalar-labs.com/ja-jp/docs/latest/how-to-use-proof) を使用する場合は、秘密鍵ファイルを ScalarDL Ledger ポッドにマウントするための Secrete リソースを作成する必要があります。ScalarDL Auditor を使用する場合はアセット証明が必要です。 + +ScalarDL ポッドにキー/証明書ファイルをマウントする方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDL Helm Charts のポッドに秘密鍵ファイルと証明書ファイルをマウントする](mount-files-or-volumes-on-scalar-pods.mdx#scalardl-helm-charts-のポッドに秘密鍵ファイルと証明書ファイルをマウントする) + +## ScalarDL Ledger のスキーマの作成 (ScalarDL Schema Loader のデプロイ) + +ScalarDL Ledger をデプロイする前に、バックエンドデータベースに ScalarDL Ledger のスキーマを作成する必要があります。 + +```console +helm install scalar-labs/schema-loading -n -f / --version +``` + +## ScalarDL Ledger のデプロイ + +```console +helm install scalar-labs/scalardl -n -f / --version +``` + +## ScalarDL Ledger の展開をアップグレードする + +```console +helm upgrade scalar-labs/scalardl -n -f / --version +``` + +## ScalarDL Ledger および ScalarDL Schema Loader のデプロイメントを削除する + +```console +helm uninstall -n +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx new file mode 100644 index 00000000..fd11df55 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/mount-files-or-volumes-on-scalar-pods.mdx @@ -0,0 +1,142 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar 製品ポッドにファイルまたはボリュームをマウントします + +ScalarDB Server、ScalarDB Cluster、ScalarDB Analytics with PostgreSQL、または ScalarDL Helm Charts (ScalarDL Ledger および ScalarDL Auditor) を使用する場合、Scalar 製品ポッドに任意のファイルまたはボリュームをマウントできます。 + +## ScalarDL Helm Charts のポッドに秘密鍵ファイルと証明書ファイルをマウントする + +ScalarDL Auditor を実行するには、秘密鍵ファイルと証明書ファイルをマウントする必要があります。 + +* 構成例 + * ScalarDL Ledger + ```yaml + ledger: + ledgerProperties: | + ... + scalar.dl.ledger.proof.enabled=true + scalar.dl.ledger.auditor.enabled=true + scalar.dl.ledger.proof.private_key_path=/keys/private-key + ``` + * ScalarDL Auditor + ```yaml + auditor: + auditorProperties: | + ... + scalar.dl.auditor.private_key_path=/keys/private-key + scalar.dl.auditor.cert_path=/keys/certificate + ``` + +この例では、**秘密鍵** ファイルと **証明書** ファイルをコンテナ内の `/keys` ディレクトリにマウントする必要があります。そして、`private-key` と `certificate` という名前のファイルをマウントする必要があります。これらのファイルをマウントするには、`extraVolumes` および `extraVolumeMounts` を使用できます。 + +1. Kubernetes マニフェストと同じ構文を使用して、カスタム値ファイルに `extraVolumes` と `extraVolumeMounts` を設定します。`mountPath` キーにディレクトリ名を指定する必要があります。 + * 例 + * ScalarDL Ledger + ```yaml + ledger: + extraVolumes: + - name: ledger-keys + secret: + secretName: ledger-keys + extraVolumeMounts: + - name: ledger-keys + mountPath: /keys + readOnly: true + ``` + * ScalarDL Auditor + ```yaml + auditor: + extraVolumes: + - name: auditor-keys + secret: + secretName: auditor-keys + extraVolumeMounts: + - name: auditor-keys + mountPath: /keys + readOnly: true + ``` + +1. キーと証明書ファイルを含む `Secret` リソースを作成します。 + + Secret のキーにはファイル名を指定する必要があります。 + + * 例 + * ScalarDL Ledger + ```console + kubectl create secret generic ledger-keys \ + --from-file=tls.key=./ledger-key.pem + ``` + * ScalarDL Auditor + ```console + kubectl create secret generic auditor-keys \ + --from-file=tls.key=./auditor-key.pem \ + --from-file=certificate=./auditor-cert.pem + ``` + +1. 上記のカスタム値ファイルを使用して Scalar 製品をデプロイします。 + + Scalar 製品を展開した後、次のように秘密鍵ファイルと証明書ファイルが `/keys` ディレクトリにマウントされます。 + + * 例 + * ScalarDL Ledger + ```console + ls -l /keys/ + ``` + + 次のような結果が表示されます: + + ```console + total 0 + lrwxrwxrwx 1 root root 18 Jun 27 03:12 private-key -> ..data/private-key + ``` + * ScalarDL Auditor + ```console + ls -l /keys/ + ``` + + 次のような結果が表示されます: + + ```console + total 0 + lrwxrwxrwx 1 root root 18 Jun 27 03:16 certificate -> ..data/certificate + lrwxrwxrwx 1 root root 18 Jun 27 03:16 private-key -> ..data/private-key + ``` + +## emptyDir をマウントしてヒープダンプファイルを取得します + +カスタム値ファイルで次のキーを使用して、emptyDir を Scalar 製品ポッドにマウントできます。たとえば、このボリュームを使用して、Scalar 製品のヒープダンプを取得できます。 + +* キー + * `scalardb.extraVolumes` / `scalardb.extraVolumeMounts` (ScalarDB Server) + * `scalardbCluster.extraVolumes` / `scalardbCluster.extraVolumeMounts` (ScalarDB Cluster) + * `scalardbAnalyticsPostgreSQL.extraVolumes` / `scalardbAnalyticsPostgreSQL.extraVolumeMounts` (ScalarDB Analytics with PostgreSQL) + * `ledger.extraVolumes` / `ledger.extraVolumeMounts` (ScalarDL Ledger) + * `auditor.extraVolumes` / `auditor.extraVolumeMounts` (ScalarDL Auditor) + +* 例 (ScalarDB Server) + ```yaml + scalardb: + extraVolumes: + - name: heap-dump + emptyDir: {} + extraVolumeMounts: + - name: heap-dump + mountPath: /dump + ``` + +この例では、次のように ScalarDB Server ポッドにマウントされたボリュームを確認できます。 + +```console +ls -ld /dump +``` + +次のような結果が表示されます: + +```console +drwxrwxrwx 2 root root 4096 Feb 6 07:43 /dump +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/use-secret-for-credentials.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/use-secret-for-credentials.mdx new file mode 100644 index 00000000..2f62352c --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/helm-charts/use-secret-for-credentials.mdx @@ -0,0 +1,246 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Secret リソースを使用して資格情報を環境変数としてプロパティファイルに渡す方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Kubernetes の `Secret` リソースを介して、**username** や **password** などの資格情報を環境変数として渡すことができます。Scalar 製品の以前のバージョンの Docker イメージは、プロパティファイルのテンプレート化に `dockerize` コマンドを使用します。Scalar 製品の最新バージョンの Docker イメージは、環境変数から直接値を取得します。 + +注記:次の環境変数名は、Scalar Helm Chart の内部で使用されるため、カスタム値ファイルで使用できません。 +```console +HELM_SCALAR_DB_CONTACT_POINTS +HELM_SCALAR_DB_CONTACT_PORT +HELM_SCALAR_DB_USERNAME +HELM_SCALAR_DB_PASSWORD +HELM_SCALAR_DB_STORAGE +HELM_SCALAR_DL_LEDGER_PROOF_ENABLED +HELM_SCALAR_DL_LEDGER_AUDITOR_ENABLED +HELM_SCALAR_DL_LEDGER_PROOF_PRIVATE_KEY_PATH +HELM_SCALAR_DL_AUDITOR_SERVER_PORT +HELM_SCALAR_DL_AUDITOR_SERVER_PRIVILEGED_PORT +HELM_SCALAR_DL_AUDITOR_SERVER_ADMIN_PORT +HELM_SCALAR_DL_AUDITOR_LEDGER_HOST +HELM_SCALAR_DL_AUDITOR_CERT_HOLDER_ID +HELM_SCALAR_DL_AUDITOR_CERT_VERSION +HELM_SCALAR_DL_AUDITOR_CERT_PATH +HELM_SCALAR_DL_AUDITOR_PRIVATE_KEY_PATH +SCALAR_DB_LOG_LEVEL +SCALAR_DL_LEDGER_LOG_LEVEL +SCALAR_DL_AUDITOR_LOG_LEVEL +SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME +SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME +``` + +1. 環境変数名をカスタム値ファイルのプロパティ構成に設定します。使用している製品に応じて、次の例を参照してください。 + + + + ```yaml + scalardbCluster: + scalardbClusterNodeProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + + + ```yaml + scalardbAnalyticsPostgreSQL: + databaseProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + + +

    ScalarDB Server 3.8以降 (Apache Commons Text 構文)

    + + ```yaml + scalardb: + databaseProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

    ScalarDB Server 3.7以前 (Go テンプレート構文)

    + + ```yaml + scalardb: + databaseProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
    + +

    ScalarDL Ledger 3.8以降 (Apache Commons Text 構文)

    + + ```yaml + ledger: + ledgerProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

    ScalarDL Ledger 3.7以前 (Go テンプレート構文)

    + + ```yaml + ledger: + ledgerProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
    + +

    ScalarDL Auditor 3.8以降 (Apache Commons Text 構文)

    + + ```yaml + auditor: + auditorProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

    ScalarDL Auditor 3.7以前 (Go テンプレート構文)

    + + ```yaml + auditor: + auditorProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
    + +

    ScalarDL Schema Loader 3.8以降 (Apache Commons Text 構文)

    + + ```yaml + schemaLoading: + databaseProperties: | + ... + scalar.db.username=${env:SCALAR_DB_USERNAME} + scalar.db.password=${env:SCALAR_DB_PASSWORD} + ... + ``` + +

    ScalarDL Schema Loader 3.7以前 (Go テンプレート構文)

    + + ```yaml + schemaLoading: + databaseProperties: | + ... + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + ... + ``` +
    +
    + +1. 資格情報を含む `Secret` リソースを作成します。 + `Secret` のキーとして環境変数名を指定する必要があります。 + * 例 + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_USERNAME=postgres \ + --from-literal=SCALAR_DB_PASSWORD=postgres + ``` + +1. カスタム値ファイル内の次のキーに `Secret` 名を設定します。使用している製品に応じて、次の例を参照してください。 + + + + **キー:** `scalardbCluster.secretName` + + ```yaml + scalardbCluster: + secretName: "scalardb-cluster-credentials-secret" + ``` + + + **キー:** `scalardbAnalyticsPostgreSQL.secretName` + + ```yaml + scalardbAnalyticsPostgreSQL: + secretName: "scalardb-analytics-postgresql-credentials-secret" + ``` + + + **キー:** `scalardb.secretName` + + ```yaml + scalardb: + secretName: "scalardb-credentials-secret" + ``` + + + **キー:** `ledger.secretName` + + ```yaml + ledger: + secretName: "ledger-credentials-secret" + ``` + + + **キー:** `auditor.secretName` + + ```yaml + auditor: + secretName: "auditor-credentials-secret" + ``` + + + **キー:** `schemaLoading.secretName` + + ```yaml + schemaLoading: + secretName: "schema-loader-ledger-credentials-secret" + ``` + + + +1. 上記のカスタム値ファイルを使用して Scalar 製品をデプロイします。 + + Scalar 製品をデプロイした後、Go テンプレート文字列 (環境変数) は `Secret` の値に置き換えられます。 + + * 例 + * カスタム値ファイル + + ```yaml + scalardb: + databaseProperties: | + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.username={{ default .Env.SCALAR_DB_USERNAME "" }} + scalar.db.password={{ default .Env.SCALAR_DB_PASSWORD "" }} + scalar.db.storage=jdbc + ``` + + * コンテナ内のプロパティファイル + ```properties + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres + scalar.db.username=postgres + scalar.db.password=postgres + scalar.db.storage=jdbc + ``` + + Apache Commons Text 構文を使用する場合、Scalar 製品は環境変数から直接値を取得します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/data_model.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/data_model.png new file mode 100644 index 00000000..15a0e4d4 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/data_model.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/getting-started-ERD.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/getting-started-ERD.png new file mode 100644 index 00000000..1a6d13c5 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/getting-started-ERD.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb-architecture.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb-architecture.png new file mode 100644 index 00000000..c44efa81 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb-architecture.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb.png new file mode 100644 index 00000000..658486cb Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb_data_model.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb_data_model.png new file mode 100644 index 00000000..7a02fa23 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/scalardb_data_model.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/software_stack.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/software_stack.png new file mode 100644 index 00000000..75fba6e6 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/software_stack.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/two_phase_commit_load_balancing.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/two_phase_commit_load_balancing.png new file mode 100644 index 00000000..5cdc26f0 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/two_phase_commit_load_balancing.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/two_phase_commit_sequence_diagram.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/two_phase_commit_sequence_diagram.png new file mode 100644 index 00000000..116ef635 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/images/two_phase_commit_sequence_diagram.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/index.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/index.mdx new file mode 100644 index 00000000..c554090b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/index.mdx @@ -0,0 +1,41 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB + +import { CardRowAbout, CardRowQuickstart, CardRowDevelop, CardRowDeploy, CardRowMigrate, CardRowManage, CardRowReference } from '/src/components/Cards/ja-jp/3.14'; + +ScalarDB は、さまざまなデータベース向けのハイブリッドトランザクション/分析処理 (HTAP) エンジンです。データベース上でミドルウェアとして実行され、ACID トランザクションとリアルタイム分析を実現することでさまざまなデータベースを仮想的に統合し、複数のデータベースまたは単一のデータベースの複数のインスタンスの管理の複雑さを簡素化します。 + +**ScalarDB について** + + + +**はじめる** + + + +**開発** + + + +**デプロイ** + + + +**移行** + + + +**管理** + + + +**トラブルシューティングと参照** + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-backup-and-restore.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-backup-and-restore.mdx new file mode 100644 index 00000000..c0588d9b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-backup-and-restore.mdx @@ -0,0 +1,27 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# データベースのバックアップと復元 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB で使用されるデータベースのバックアップと復元の方法について説明します。 + +## データベースのバックアップと復元の基本ガイドライン + +バックアップを実行する前に、[ScalarDB で使用されるデータベースのバックアップと復元方法](backup-restore.mdx)を必ずお読みください。 + +## Kubernetes 環境で ScalarDB を使用する場合のデータベースのバックアップ + +Kubernetes 環境でデータベースをバックアップする方法の詳細については、[Kubernetes 環境で NoSQL データベースをバックアップする](scalar-kubernetes/BackupNoSQL.mdx)を参照してください。 + +## Kubernetes 環境で ScalarDB を使用する場合のデータベースの復元 + +Kubernetes 環境でデータベースを復元する方法の詳細については、[Kubernetes 環境でデータベースを復元する](scalar-kubernetes/RestoreDatabase.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-monitor-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-monitor-overview.mdx new file mode 100644 index 00000000..8ac01978 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-monitor-overview.mdx @@ -0,0 +1,25 @@ +--- +tags: + - Enterprise Option +displayed_sidebar: docsJapanese +--- + +# 監視の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar Manager は、Kubernetes クラスター環境内の ScalarDB の集中管理および監視ソリューションであり、次のことが可能になります。 + +- ScalarDB の可用性を確認します。 +- ScalarDB が使用するデータベースでトランザクションの一貫性のある期間を作成する一時停止ジョブをスケジュールまたは実行します。 +- Grafana ダッシュボードを介して ScalarDB の時系列メトリックとログを確認します。 + +Scalar Manager の詳細については、[Scalar Manager 概要](scalar-manager/overview.mdx)を参照してください。 + +## Scalar Manager をデプロイする + +Helm Chart を使用して Scalar Manager をデプロイできます。 + +Scalar Manager をデプロイする方法の詳細については、[Scalar Manager のデプロイ](helm-charts/getting-started-scalar-manager.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-overview.mdx new file mode 100644 index 00000000..ea2139a2 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/manage-overview.mdx @@ -0,0 +1,30 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 運用の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このカテゴリでは、ScalarDB の運用に役立つガイドに従うことができます。 + +- ScalarDB をスケーリングする方法の詳細については、[スケール](scalar-kubernetes/HowToScaleScalarDB.mdx)を参照してください。 +- ScalarDB をアップグレードする方法の詳細については、[アップグレード](scalar-kubernetes/HowToUpgradeScalarDB.mdx)を参照してください。 + +## 監視 + +このサブカテゴリでは、ScalarDB デプロイメントを監視する方法を学習できます。 + +このサブカテゴリの概要については、[監視](manage-monitor-overview.mdx)を参照してください。 + +## バックアップと復元 + +このサブカテゴリでは、ScalarDB デプロイメントに接続されているデータベースをバックアップおよび復元する方法を学習できます。 + +このサブカテゴリの概要については、[データベースのバックアップと復元](manage-backup-and-restore.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/migrate-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/migrate-overview.mdx new file mode 100644 index 00000000..dfaf61aa --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/migrate-overview.mdx @@ -0,0 +1,18 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 移行の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +テーブルのインポート、またはアプリケーションとデータベースを ScalarDB ベースの環境に移行する方法の詳細については、次のガイドを参照してください: + +- [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](schema-loader-import.mdx) +- [アプリケーションとデータベースを ScalarDB ベースの環境に移行する方法](scalardb-sql/migration-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/multi-storage-transactions.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/multi-storage-transactions.mdx new file mode 100644 index 00000000..58ae7bcb --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/multi-storage-transactions.mdx @@ -0,0 +1,72 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# マルチストレージトランザクション + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB トランザクションは、*マルチストレージトランザクション* と呼ばれる機能を使用することで、ACID 準拠を維持しながら複数のストレージまたはデータベースにまたがることができます。 + +このページでは、マルチストレージトランザクションの仕組みと、ScalarDB でこの機能を設定する方法について説明します。 + +## ScalarDB でのマルチストレージトランザクションの仕組み + +ScalarDB では、`マルチストレージ` 実装は複数のストレージインスタンスを保持し、名前空間名から適切なストレージインスタンスへのマッピングを持っています。操作が実行されると、マルチストレージトランザクション機能は、名前空間ストレージマッピングを使用して指定された名前空間から適切なストレージインスタンスを選択し、そのストレージインスタンスを使用します。 + +## マルチストレージトランザクションをサポートするように ScalarDB を設定する方法 + +マルチストレージトランザクションを有効にするには、`scalar.db.transaction_manager` の値として `consensus-commit` を指定し、`scalar.db.storage` の値として `multi-storage` を指定し、ScalarDB プロパティファイルでデータベースを設定する必要があります。 + +以下は、マルチストレージトランザクションの設定例です。 + +```properties +# Consensus Commit is required to support multi-storage transactions. +scalar.db.transaction_manager=consensus-commit + +# Multi-storage implementation is used for Consensus Commit. +scalar.db.storage=multi-storage + +# Define storage names by using a comma-separated format. +# In this case, "cassandra" and "mysql" are used. +scalar.db.multi_storage.storages=cassandra,mysql + +# Define the "cassandra" storage. +# When setting storage properties, such as `storage`, `contact_points`, `username`, and `password`, for multi-storage transactions, the format is `scalar.db.multi_storage.storages..`. +# For example, to configure the `scalar.db.contact_points` property for Cassandra, specify `scalar.db.multi_storage.storages.cassandra.contact_point`. +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=localhost +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra + +# Define the "mysql" storage. +# When defining JDBC-specific configurations for multi-storage transactions, you can follow a similar format of `scalar.db.multi_storage.storages..`. +# For example, to configure the `scalar.db.jdbc.connection_pool.min_idle` property for MySQL, specify `scalar.db.multi_storage.storages.mysql.jdbc.connection_pool.min_idle`. +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://localhost:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +# Define the JDBC-specific configurations for the "mysql" storage. +scalar.db.multi_storage.storages.mysql.jdbc.connection_pool.min_idle=5 +scalar.db.multi_storage.storages.mysql.jdbc.connection_pool.max_idle=10 +scalar.db.multi_storage.storages.mysql.jdbc.connection_pool.max_total=25 + +# Define namespace mapping from a namespace name to a storage. +# The format is ":,...". +scalar.db.multi_storage.namespace_mapping=user:cassandra,coordinator:mysql + +# Define the default storage that's used if a specified table doesn't have any mapping. +scalar.db.multi_storage.default_storage=cassandra +``` + +追加の設定については、[ScalarDB 設定](configurations.mdx)を参照してください。 + +## 実践的なチュートリアル + +実践的なチュートリアルについては、[マルチストレージトランザクションをサポートするサンプルアプリケーションを作成する](scalardb-samples/multi-storage-transaction-sample/README.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/overview.mdx new file mode 100644 index 00000000..9344262f --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/overview.mdx @@ -0,0 +1,82 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDB の概要と主な使用例について説明します。 + +## ScalarDB とは + +ScalarDB は、さまざまなデータベース向けのハイブリッドトランザクション/分析処理 (HTAP) エンジンです。データベース上でミドルウェアとして実行され、ACID トランザクションとリアルタイム分析を実現することでさまざまなデータベースを仮想的に統合し、複数のデータベースまたは単一のデータベースの複数のインスタンスの管理の複雑さを簡素化します。 + +![ScalarDB が複雑なデータ管理アーキテクチャを簡素化する方法。](images/scalardb.png) + +多用途のソリューションである ScalarDB は、次のようなさまざまなデータベースをサポートしています。 + +- MariaDB、Microsoft SQL Server、MySQL、Oracle Database、PostgreSQL、SQLite などの JDBC をサポートするリレーショナルデータベース、および Amazon Aurora、Google AlloyDB、TiDB、YugabyteDB などの互換性のあるデータベース。 +- Amazon DynamoDB、Apache Cassandra、Azure Cosmos DB などの NoSQL データベース。 + +ScalarDB がサポートするデータベースの詳細については、[データベース](requirements.mdx#データベース) を参照してください。 + +## ScalarDB を選ぶ理由 + +グローバルトランザクションマネージャー、データフェデレーションエンジン、HTAP システムなどのいくつかのソリューションは、同様の目標を持っていますが、次の観点で制限があります。 + +- グローバルトランザクションマネージャー (Oracle MicroTx や Atomikos など) は、限られた異種データベースセット (XA 準拠のデータベースのみなど) でトランザクションを実行するように設計されています。 +- データフェデレーションエンジン (Denodo や Starburst など) は、異種データベースで分析クエリを実行するように設計されています。 +- HTAP システム (TiDB や SingleStore など) は、同種データベースでのみトランザクションと分析クエリの両方を実行します。 + +言い換えれば、これらはデータベースを仮想的に統合しますが、制限があります。たとえば、データフェデレーションエンジンを使用すると、ユーザーは複数のデータベースにまたがる仮想ビューで読み取り専用の分析クエリを実行できます。ただし、多くの場合、データベースごとに更新クエリを個別に実行する必要があります。 + +他のソリューションとは異なり、ScalarDB は、異種データベースでトランザクションクエリと分析クエリの両方を実行できる機能を備えているため、データベース管理を大幅に簡素化できます。 + +次の表は、ScalarDB が他のソリューションとどのように異なるかをまとめたものです。 + +| | 異種データベース間のトランザクション | 異種データベース間の分析 | +| :--------------------------------------------------------------: | :----------------------------------------------------------------------------: | :--------------------------------: | +| グローバルトランザクションマネージャー (Oracle MicroTx や Atomikos など) | はい(ただし、既存のソリューションでは限られたデータベースのセットしかサポートされていません) | いいえ | +| データフェデレーションエンジン (Denodo や Starburst など) | いいえ | はい | +| HTAP システム (TiDB や SingleStore など) | いいえ (同種のデータベースのみサポート) | いいえ (同種のデータベースのみサポート) | +| **ScalarDB** | **はい (各種データベースに対応)** | **はい** | + +## ScalarDB の使用例 + +ScalarDB はさまざまな用途で使用できます。ScalarDB の主な使用例を3つ紹介します。 + +### サイロ化されたデータベースを簡単に管理 + +多くの企業は、アジャイルなビジネスオペレーションをサポートするために複数の組織、部門、ビジネスユニットで構成されており、その結果、サイロ化された情報システムになることがよくあります。特に、異なる組織では、異なるデータベースを使用して異なるアプリケーションを管理する可能性があります。このようなサイロ化されたデータベースの管理は、アプリケーションが各データベースと個別に通信し、データベース間の違いを適切に処理する必要があるため、困難です。 + +ScalarDB は、統一されたインターフェイスを使用してサイロ化されたデータベースの管理を簡素化し、ユーザーがデータベースを1つのデータベースのように扱えるようにします。たとえば、ユーザーは複数のデータベースに対して (分析的な) 結合クエリを、それぞれのデータベースとやり取りすることなく実行できます。 + +### 複数のデータベース間の一貫性の管理 + +マイクロサービスアーキテクチャなどの最新のアーキテクチャでは、システムでサービスとそのデータベースを小さなサブセットに分割して、システムのモジュール性と開発効率を高めることが推奨されています。しかし、多様なデータベース、特に異なる種類のデータベースを管理するのは困難です。なぜなら、Saga や TCC などのトランザクション管理パターンを使用しても、アプリケーションはそれらのデータベースの正しい状態 (言い換えれば一貫性) を保証する必要があるからです。 + +ScalarDB は、正確性の保証 (言い換えれば、厳密なシリアル化可能性を備えた ACID) によって、このような多様なデータベースの管理を簡素化します。これにより、データベース間の一貫性の保証を気にすることなく、アプリケーション開発に集中できます。 + +### データメッシュでのデータ管理の簡素化 + +企業は、データ利用を合理化および拡張するために、[データメッシュ](https://martinfowler.com/articles/data-mesh-principles.html)の構築に時間を費やしてきました。ただし、データメッシュの構築は必ずしも簡単ではありません。たとえば、分散データの管理方法には多くの技術的な問題があります。 + +ScalarDB は、データメッシュ内のすべてのデータベースに統一された API を提供することで、データメッシュ内の分散データベースの管理を簡素化し「データをプロダクトとして扱う(Data as a Product)」という原則に簡単に適合させます。 + +### データベース移行のハードルを下げる + +アプリケーションは、データベースが提供する特定の機能のために、特定のデータベースを使用するようにロックされる傾向があります。このようなデータベースロックインにより、データベースのアップグレードや変更が妨げられます。アップグレードや変更を行うには、多くの場合、アプリケーションの書き直しが必要になるからです。 + +ScalarDB は、多様なデータベースに統一されたインターフェイスを提供します。したがって、ScalarDB インターフェイスを使用してアプリケーションを作成すると、そのアプリケーションは移植可能になり、アプリケーションを書き直すことなくシームレスなデータベース移行を実現できます。 + +## さらに読む + +- [ScalarDB Technical Overview](https://speakerdeck.com/scalar/scalar-db-universal-transaction-manager) +- [ScalarDB Research Paper [VLDB'23]](https://dl.acm.org/doi/10.14778/3611540.3611563) \ No newline at end of file diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-overview.mdx new file mode 100644 index 00000000..30de2164 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-overview.mdx @@ -0,0 +1,46 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# クイックスタート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このカテゴリでは、ScalarDB を介してトランザクションとクエリの実行を開始する方法についてのクイックスタートチュートリアルに従うことができます。 + +このサブカテゴリの概要については、[ScalarDB Core クイックスタートの概要](quickstart-scalardb-core-overview.mdx)を参照してください。 + +## ScalarDB Core ライブラリを介してトランザクションを実行してみる + +このサブカテゴリでは、Apache 2 ライセンスの下で公開されている ScalarDB Core ライブラリを介して ACID トランザクションを実行する方法に関するチュートリアルに従うことができます。 + +## ScalarDB Cluster を介してトランザクションを実行してみる + +このサブカテゴリでは、ScalarDB Core ライブラリをラップする [gRPC](https://grpc.io/) サーバーである ScalarDB Cluster を介して ACID トランザクションを実行する方法に関するチュートリアルを参照できます。 + +このサブカテゴリの概要については、[ScalarDB Cluster クイックスタートの概要](quickstart-scalardb-cluster-overview.mdx)を参照してください。 + +:::note + +ScalarDB Cluster は Enterprise エディションでのみ利用できます。 + +::: + +## ScalarDB Analytics で分析クエリを実行してみる + +このサブカテゴリでは、ScalarDB Analytics というコンポーネントを使用して、ScalarDB を通じて書き込んだデータベースに対して分析クエリを実行する方法に関するチュートリアルを参照できます。ScalarDB Analytics は現在、ScalarDB トランザクションを通じて更新される ScalarDB 管理データベースのみを対象としていますが、将来的には ScalarDB 管理以外のデータベースも対象とする予定です。 + +このサブカテゴリの概要については、[ScalarDB Analytics クイックスタートの概要](quickstart-scalardb-analytics-overview.mdx)を参照してください。 + +:::note + +- ScalarDB Analytics with PostgreSQL は Apache 2 ライセンスでのみ利用可能で、商用ライセンスは必要ありません。 +- ScalarDB Analytics with Spark はパブリックプレビュー中です。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-analytics-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-analytics-overview.mdx new file mode 100644 index 00000000..612fc4b7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-analytics-overview.mdx @@ -0,0 +1,18 @@ +--- +tags: + - Community + - Enterprise Option + - Public Preview +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics クイックスタートの概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このサブカテゴリでは、ScalarDB Analytics というコンポーネントを使用して、ScalarDB で作成したデータベースに対して分析クエリを実行する方法に関するチュートリアルを確認できます。 + +- PostgreSQL を介して分析クエリを実行するには、[ScalarDB Analytics with PostgreSQL をはじめよう](scalardb-analytics-postgresql/getting-started.mdx)を参照してください。 +- Spark を介して分析クエリを実行するには、[ScalarDB Analytics をはじめよう](scalardb-samples/scalardb-analytics-spark-sample/README.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-cluster-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-cluster-overview.mdx new file mode 100644 index 00000000..8e0e658f --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-cluster-overview.mdx @@ -0,0 +1,19 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster クイックスタートの概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このサブカテゴリでは、ScalarDB Core ライブラリをラップする [gRPC](https://grpc.io/) サーバーである ScalarDB Cluster を介して ACID トランザクションを実行する方法に関するチュートリアルを確認できます。 + +- トランザクションの実行を試すには、[ScalarDB Cluster をはじめよう](scalardb-cluster/getting-started-with-scalardb-cluster.mdx)を参照してください。 +- JDBC 経由の SQL インターフェースを介してトランザクションの実行を試すには、[JDBC 経由の ScalarDB Cluster SQL をはじめよう](scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx)を参照してください。 +- Spring Data JDBC 経由で SQL インターフェースを介してトランザクションを実行するには、[Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx)を参照してください。 +- GraphQL インターフェースを介してトランザクションを実行するには、[ScalarDB Cluster GraphQL をはじめよう](scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-core-overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-core-overview.mdx new file mode 100644 index 00000000..b1218739 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/quickstart-scalardb-core-overview.mdx @@ -0,0 +1,18 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Core クイックスタートの概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このサブカテゴリでは、Apache 2 ライセンスで公開されている ScalarDB Core ライブラリを使用して ACID トランザクションを実行する方法に関するチュートリアルに従うことができます。 + +- トランザクションの実行を試すには、[ScalarDB をはじめよう](getting-started-with-scalardb.mdx)を参照してください。 +- Kotlin を使用してトランザクションの実行を試すには、[Kotlin を使って ScalarDB をはじめよう](getting-started-with-scalardb-by-using-kotlin.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/releases/release-notes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/releases/release-notes.mdx new file mode 100644 index 00000000..c4ae1631 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/releases/release-notes.mdx @@ -0,0 +1,102 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB 3.14 リリースノート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページには、ScalarDB 3.14 のリリースノートのリストが含まれています。 + +## v3.14.1 + +**発売日:** 2025年01月23日 + +### まとめ + +このリリースには、いくつかの改善とバグ修正が含まれています。 + +### Community edition + +#### 改善点 + +- ScalarDB は、MySQL 8.4 および 8.0、PostgreSQL 17、16、15、14、13、Amazon Aurora PostgreSQL 16、15、14、13、Amazon Aurora MySQL 3 および 2 をサポートするようになりました。(#2302) + +#### バグの修正 + +- Cosmos DB アダプターの主鍵列の検証を追加しました。検証により、主鍵列のテキスト値に不正な文字 (`:`、`/`、`\`、`#`、`?`) が含まれていないことが保証されます。(#2292) +- Consensus Commit のトランザクションで同じレコードに対して複数のミューテーションが発生する動作を修正しました。 (#2340) +- Cosmos アダプターで存在しないレコードを削除するときの動作を修正しました。(#2341) +- GetBuilder と ScanBuilder のバグを修正しました。(#2352) + +### Enterprise edition + +#### バグの修正 + +##### ScalarDB SQL + +- [Spring Data JDBC For ScalarDB] `existsById()` API が動作しないというバグを修正しました。 + +## v3.14.0 + +**発売日:** 2024年11月22日 + +### まとめ + +このリリースには、多くの機能強化、改善、バグ修正、脆弱性修正が含まれています。 + +### Community edition + +#### 機能強化 + +- ScalarDB に暗号化された列の概念を追加しました。([#1907](https://github.com/scalar-labs/scalardb/pull/1907) [#1975](https://github.com/scalar-labs/scalardb/pull/1975)) +- MariaDB 11.4 および Oracle 19 のサポートを追加しました。([#2061](https://github.com/scalar-labs/scalardb/pull/2061)) + +#### 改善点 + +- MySQL および Oracle の鍵列サイズを変更するオプションを追加し、デフォルトとして 128 バイトを使用しました。([#2245](https://github.com/scalar-labs/scalardb/pull/2245)) +- メタデータキャッシュの有効期限 (`scalar.db.metadata.cache_expiration_time_secs`) のデフォルト値を 60 秒に変更しました。([#2274](https://github.com/scalar-labs/scalardb/pull/2274)) + +#### バグの修正 + +- Get/Scan オブジェクトで指定されたテーブルが Consensus Commit で見つからない場合に `NullPointerException` が発生するバグを修正しました。([#2083](https://github.com/scalar-labs/scalardb/pull/2083)) +- グループコミットの前に遅延リカバリが発生すると、Coordinator の状態が不整合になるという稀なケースの問題を修正しました。([#2135](https://github.com/scalar-labs/scalardb/pull/2135)) +- セキュリティの問題を修正するために、mysql ドライバーをアップグレードしました。[CVE-2023-22102](https://github.com/advisories/GHSA-m6vm-37g8-gqvh "CVE-2023-22102") ([#2238](https://github.com/scalar-labs/scalardb/pull/2238)) + +### Enterprise edition + +#### 機能強化 + +##### ScalarDB Cluster + +- [#1907](https://github.com/scalar-labs/scalardb/pull/1907) で導入された暗号化された列のサポートを追加しました。 +- Coordinator テーブルのグループコミット機能のサポートを追加しました。 +- 暗号化のサポートを追加しました。 +- 現在ログインしているユーザーを取得するための `DistributedTransactionAdmin` および `Metadata` の `getCurrentUser()` のサポートを追加しました。 + +##### ScalarDB SQL + +- メタデータ API の [#1907](https://github.com/scalar-labs/scalardb/pull/1907) で導入された暗号化された列のサポートを追加しました。 +- `CREATE TABLE` および `ALTER TABLE ADD COLUMN` ステートメントの暗号化された列のサポートを追加しました。 +- 指定されたユーザーのユーザーと権限をそれぞれ一覧表示する `SHOW USERS` コマンドと `SHOW GRANTS` コマンドを追加しました。 + +#### 改善点 + +##### ScalarDB GraphQL + +- このアップデートにより、`scalar.db.graphql.namespaces` が指定されていない場合、GraphQL サーバーは、すべての ScalarDB 管理名前空間内のすべてのテーブルに対して GraphQL スキーマを生成します。 + +#### バグの修正 + +##### ScalarDB Cluster + +- メッセージのない例外をキャッチすると `NullPointerException` が発生するバグを修正しました。 +- セキュリティ問題を修正するため、`grpc_health_probe` をアップグレードしました。[CVE-2024-34156](https://github.com/advisories/GHSA-crqm-pwhx-j97f "CVE-2024-34156") +- セキュリティ問題を修正するため、`scalar-admin` をアップグレードしました。[CVE-2024-25638](https://github.com/advisories/GHSA-cfxw-4h78-h7fw "CVE-2024-25638") +- セキュリティ問題を修正するため、Protobuf Java ライブラリをアップグレードしました。[CVE-2024-7254](https://github.com/advisories/GHSA-735f-pc8j-v9w8 "CVE-2024-7254") diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/releases/release-support-policy.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/releases/release-support-policy.mdx new file mode 100644 index 00000000..90ea3487 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/releases/release-support-policy.mdx @@ -0,0 +1,115 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# リリースサポートポリシー + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDL のメジャーバージョンリリースとマイナーバージョンリリースに対する Scalar のサポートポリシーについて説明します。 + +## 用語と定義 + +- **メンテナンスサポート:** Scalar は、商用ライセンスを持つ顧客に、コード修正やドキュメントを含む製品アップデートと、[サポートポータル](https://support.scalar-labs.com/)を通じて技術サポートを提供します。 指定された日付まで。 +- **アシスタンスサポート:** Scalar は、[サポートポータル](https://support.scalar-labs.com/)を通じて、FAQ および問い合わせの形式でコード以外の質問に対して限定的な技術サポートを顧客に提供します。 指定された日付までは商用ライセンスが付与されます。 +- **延長サポート:** 延長サポートは、メンテナンスサポートまたはアシスタンスサポートが終了したバージョンのサポートを希望する商用ライセンスを持つ顧客向けのアドオンとして利用できます。 + +## リリースサポートタイムライン + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    バージョン発売日メンテナンスサポート終了日サポートサポート終了日延長サポート
    3.142024-11-222026-02-202026-08-18お問い合わせ
    3.132024-07-082025-11-222026-05-21お問い合わせ
    3.122024-02-172025-07-082026-01-04お問い合わせ
    3.112023-12-272025-02-162025-08-15お問い合わせ
    3.102023-07-202024-12-262025-06-24お問い合わせ
    3.9*2023-04-272024-07-192025-01-15お問い合わせ
    3.8*2023-01-172024-04-262024-10-23お問い合わせ
    3.7*2022-09-032024-01-172024-07-15お問い合わせ
    3.6*2022-07-082023-09-032024-03-01お問い合わせ
    3.5*2022-02-162023-07-082024-01-04お問い合わせ
    3.4*2021-12-022023-02-162023-08-15お問い合わせ
    + +\* この製品バージョンは、メンテナンスサポートまたはアシスタンスサポートではサポートされなくなりました。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/requirements.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/requirements.mdx new file mode 100644 index 00000000..a2bc5c3d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/requirements.mdx @@ -0,0 +1,259 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB の要件 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDB を正しく使用するために必要なツールとそのバージョンについて説明します。 + +## クライアント SDK + +ScalarDB は Java で記述されているため、ScalarDB を操作する最も簡単な方法は、Java Client SDK を使用することです。 + +- [ScalarDB Core 用 SDK](add-scalardb-to-your-build.mdx) +- [ScalarDB Cluster 用 SDK](scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx) + +### Java + +次の Java Software Development (JDK) が検証され、サポートされています。 + +- **[Oracle JDK](https://www.oracle.com/java/):** 8、11、17、または21 (LTS バージョン) +- **[OpenJDK](https://openjdk.org/) ([Eclipse Temurin](https://adoptium.net/temurin/)、[Amazon Corretto](https://aws.amazon.com/corretto/)、または [Microsoft Build of OpenJDK](https://learn.microsoft.com/en-us/java/openjdk/)):** 8、11、17、または21 (LTS バージョン) + +### .NET + +ScalarDB は、ScalarDB Cluster と呼ばれる gRPC サーバーとして提供され、proto ファイルから生成された .NET クライアントをラップする [.NET Client SDK](scalardb-cluster-dotnet-client-sdk/index.mdx) も備えています。 + +次の .NET バージョンが検証され、サポートされています。 + +- [.NET 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) +- [.NET 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) + +### その他の言語 + +ScalarDB Cluster は gRPC バージョン1.65.0を使用するため、好みの言語で生成されたクライアントを使用して独自のクライアントを作成できます。 + +## データベース + +ScalarDB は、次のデータベースとそのバージョン上で実行されるミドルウェアです。 + +### リレーショナルデータベース + + + + +| バージョン | Oracle Database 23ai | Oracle Database 21c | Oracle Database 19c | +|:------------------|:---------------------|:--------------------|:--------------------| +| **ScalarDB 3.15** | ✅ | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | ✅ | + + + + +| バージョン | MySQL 8.4 | MySQL 8.0 | +|:------------------|:----------|:----------| +| **ScalarDB 3.15** | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | + + + + +| バージョン | PostgreSQL 17 | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | +|:------------------|:--------------|:--------------|:--------------|:--------------|---------------| +| **ScalarDB 3.15** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | ✅ | ✅ | ✅ | + + + + +| バージョン | Aurora MySQL 3 | Aurora MySQL 2 | +|:------------------|:---------------|:---------------| +| **ScalarDB 3.15** | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | + + + + +| バージョン | Aurora PostgreSQL 16 | Aurora PostgreSQL 15 | Aurora PostgreSQL 14 | Aurora PostgreSQL 13 | +|:------------------|:---------------------|:---------------------|:---------------------|:---------------------| +| **ScalarDB 3.15** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | ✅ | ✅ | + + + + +| バージョン | MariaDB 11.4 | MariaDB 10.11 | +|:------------------|:-------------|:--------------| +| **ScalarDB 3.15** | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | + + + + +| バージョン | SQL Server 2022 | SQL Server 2019 | SQL Server 2017 | +|:------------------|:----------------|:----------------|:----------------| +| **ScalarDB 3.15** | ✅ | ✅ | ✅ | +| **ScalarDB 3.14** | ✅ | ✅ | ✅ | +| **ScalarDB 3.13** | ✅ | ✅ | ✅ | +| **ScalarDB 3.12** | ✅ | ✅ | ✅ | +| **ScalarDB 3.11** | ✅ | ✅ | ✅ | +| **ScalarDB 3.10** | ✅ | ✅ | ✅ | +| **ScalarDB 3.9** | ✅ | ✅ | ✅ | +| **ScalarDB 3.8** | ✅ | ✅ | ✅ | +| **ScalarDB 3.7** | ✅ | ✅ | ✅ | + + + + +| バージョン | SQLite 3 | +|:------------------|:---------| +| **ScalarDB 3.15** | ✅ | +| **ScalarDB 3.14** | ✅ | +| **ScalarDB 3.13** | ✅ | +| **ScalarDB 3.12** | ✅ | +| **ScalarDB 3.11** | ✅ | +| **ScalarDB 3.10** | ✅ | +| **ScalarDB 3.9** | ✅ | +| **ScalarDB 3.8** | ❌ | +| **ScalarDB 3.7** | ❌ | + + + + +| バージョン | YugabyteDB 2 | +|:------------------|:-------------| +| **ScalarDB 3.15** | ✅ | +| **ScalarDB 3.14** | ✅ | +| **ScalarDB 3.13** | ✅ | +| **ScalarDB 3.12** | ❌ | +| **ScalarDB 3.11** | ❌ | +| **ScalarDB 3.10** | ❌ | +| **ScalarDB 3.9** | ❌ | +| **ScalarDB 3.8** | ❌ | +| **ScalarDB 3.7** | ❌ | + + + + +### NoSQL データベース + + + + +| バージョン | DynamoDB | +|:------------------|:---------| +| **ScalarDB 3.15** | ✅ | +| **ScalarDB 3.14** | ✅ | +| **ScalarDB 3.13** | ✅ | +| **ScalarDB 3.12** | ✅ | +| **ScalarDB 3.11** | ✅ | +| **ScalarDB 3.10** | ✅ | +| **ScalarDB 3.9** | ✅ | +| **ScalarDB 3.8** | ✅ | +| **ScalarDB 3.7** | ✅ | + + + + +| バージョン | Cassandra 4.1 | Cassandra 4.0 | Cassandra 3.11 | Cassandra 3.0 | +|:------------------|:--------------|:--------------|:---------------|:--------------| +| **ScalarDB 3.15** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.14** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.13** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.12** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.11** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.10** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.9** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.8** | ❌ | ❌ | ✅ | ✅ | +| **ScalarDB 3.7** | ❌ | ❌ | ✅ | ✅ | + + + + +| バージョン | Cosmos DB for NoSQL | +|:------------------|:--------------------| +| **ScalarDB 3.15** | ✅ | +| **ScalarDB 3.14** | ✅ | +| **ScalarDB 3.13** | ✅ | +| **ScalarDB 3.12** | ✅ | +| **ScalarDB 3.11** | ✅ | +| **ScalarDB 3.10** | ✅ | +| **ScalarDB 3.9** | ✅ | +| **ScalarDB 3.8** | ✅ | +| **ScalarDB 3.7** | ✅ | + + + + +:::note + +各データベースの設定方法の詳細については、[ScalarDB の基盤となるデータベースの設定](./database-configurations.mdx) を参照してください。 + +::: + +## Kubernetes + +ScalarDB は、本番環境では Kubernetes プラットフォーム上の Pod として提供されます。ScalarDB は次のプラットフォームとツールをサポートしています。 + +### プラットフォーム + +- **[Kubernetes](https://kubernetes.io/):** 1.28 - 1.32 + - **[Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/jp/eks/)** + - **[Azure Kubernetes Service (AKS)](https://azure.microsoft.com/ja-jp/products/kubernetes-service)** +- **[Red Hat OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift):** TBD + +### パッケージマネージャー + +- **[Helm](https://helm.sh/):** 3.5+ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/roadmap.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/roadmap.mdx new file mode 100644 index 00000000..32683350 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/roadmap.mdx @@ -0,0 +1,111 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB ロードマップ + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このロードマップは、ScalarDB の今後の計画の概要を示しています。このロードマップの目的は、今後どのような変更が行われる可能性があるかを把握できるようにし、進捗状況をより詳しく追跡し、主要なマイルストーンを把握し、開発中にフィードバックを提供することです。このロードマップは、ScalarDB の新しいバージョンがリリースされるたびに更新されます。 + +:::warning + +開発の過程で、このロードマップはユーザーのニーズやフィードバックに基づいて変更される可能性があります。**このロードマップの内容に従ってリリース計画をスケジュールしないでください。** + +機能リクエストがある場合、または機能開発を優先したい場合は、[GitHub](https://github.com/scalar-labs/scalardb/issues) で問題を作成してください。 + +::: + +### CY2025 Q1 + +#### 新しい機能 + +- **ベクトルストアの抽象化** + - ユーザーは、ScalarDB の新しいベクトルストアインターフェースを介して、ベクトルストアに埋め込み表現 (ベクトル) を保存および検索できるようになります。この機能により、ユーザーは、既存の ScalarDB インターフェースを介してデータベースからデータを読み取り、データから埋め込み表現を作成し、新しいインターフェースを介してベクトルストアに埋め込み表現を保存および検索することで、大規模言語モデル (LLM) を使用した検索拡張生成 (RAG) を実現するプロセスを簡素化できます。 + +#### セキュリティ + +- **属性ベースのアクセス制御** + - ユーザーは、基盤となるデータベースへのアクセスをよりきめ細かく制御できるようになります。ScalarDB は、ユーザーがテーブルに対して特定の操作を発行する権限があるかどうかを制御する現在の単純な認可に加えて、ユーザーとレコードの属性に基づいて、ユーザーが特定のレコードにアクセスできるかどうかを制御します。 + +#### ユーザビリティ + +- **時間関連のデータ型の追加** + - ユーザーは時間関連のデータ型を使用できるようになり、既存のアプリケーションから移行が容易になります。 + +#### クラウドサポート + +- **Azure Marketplace でのコンテナオファリング** + - ユーザーは Azure コンテナオファリングを使用して ScalarDB Cluster をデプロイできるようになります。これにより、ユーザーは従量課金制のサブスクリプションモデルを使用できます。 +- **Google Cloud Platform (GCP) のサポート** + - ユーザーは GCP の Google Kubernetes Engine (GKE) に ScalarDB Cluster をデプロイできるようになります。 + +### CY2025 Q2 + +#### 新しい機能 + +- **ネイティブセカンダリインデックス** + - ユーザーは柔軟なセカンダリインデックスを定義できるようになります。既存のセカンダリインデックスは、サポートされているデータベースのセカンダリインデックスの共通機能に基づいて実装されているため、制限があります。したがって、たとえば、複数列のインデックスを定義することはできません。新しいセカンダリインデックスは ScalarDB レイヤーで作成されるため、複数列のインデックスなど、より柔軟なインデックスを作成できます。 + +#### 追加のデータベース + +- **Databricks** + - ユーザーは、ScalarDB Cluster を介して基盤となるデータベースとして Databricks を使用できます。 +- **Snowflake** + - ユーザーは、ScalarDB Cluster を介して基盤となるデータベースとして Snowflake を使用できます。 + +#### ユーザビリティ + +- **10進データ型の追加** + - ユーザーは10進データ型を使用できるため、10進数を高精度で処理できます。 +- **Extra-write strategy の削除** + - ユーザーは、トランザクションをシリアライザブルにするためのオプションである extra-write strategy を使用できなくなります。ScalarDB は現在、トランザクションをシリアライザブルにするために2つの戦略 (extra-read strategy と extra-write strategy) を提供していますが、extra-write strategy にはいくつかの制限があります。たとえば、ユーザーは同じトランザクションで書き込み操作とスキャン操作を発行できません。したがって、この戦略は削除され、ユーザーはアプリケーションを作成するときにこのような制限について心配する必要がなくなります。 +- **ScalarDB Analytics のガバナンスの改善** + - ユーザーは、ScalarDB Core 機能を使用して認証および認可できるようになります。 + +#### パフォーマンス + +- **ScalarDB Analytics での WAL-interpreted view の削除** + - ユーザーは、WAL-interpreted view の代わりに ScalarDB Core を使用してコミットされたデータを読み取ることができます。これにより、性能の改善が期待できます。 + +### CY2025 Q3 + +#### ユーザビリティ + +- **ビュー** + - ユーザーは、複数の異なるデータベースをより簡単でシンプルな方法で管理できるように、ビューを定義できるようになります。 +- **集計用の SQL 操作の追加** + - ユーザーは、ScalarDB SQL で集計操作を発行できるようになります。 +- **大規模スキャンによるメモリ不足エラーの排除** + - ユーザーは、メモリ不足エラーを経験することなく、大規模スキャンを発行できます。 +- **一時停止期間中の読み取り操作の有効化** + - ユーザーは、一時停止期間中でも読み取り操作を発行できるため、バックアップを取りながらデータを読み取ることができます。 + +#### スケーラビリティと可用性 + +- **半同期レプリケーション** + - ユーザーは、災害復旧可能な方法で ScalarDB ベースのアプリケーションのデータを複製できます。たとえば、東京でプライマリサービスを提供し、大阪でスタンバイサービスを提供するとします。東京で壊滅的な障害が発生した場合、プライマリサービスを大阪に切り替えることで、データ損失や長時間のダウンタイムなしでサービスを継続できます。 + +### CY2025 Q4 + +#### パフォーマンス + +- **1フェーズコミットの最適化** + - ユーザーは、単一のパーティションに書き込む単純なトランザクションの実行速度が速くなります。ScalarDB は、基礎となるデータベースの単一パーティション線形化可能な操作を利用して、トランザクションが1つのパーティションのみを更新する場合、正確さを犠牲にすることなく、レコード準備フェーズとコミット状態フェーズを省略します。 +- **ScalarDB メタデータの管理に必要なストレージ領域の削減** + - ユーザーが ScalarDB を実行するために使用するストレージ領域が少なくなる可能性があります。ScalarDB は、コミットされたトランザクションがコミットされた後に、コミットされたトランザクションの以前のイメージを削除します。ただし、コミットされたトランザクションが実際のストレージ領域に影響を与えるかどうかは、基礎となるデータベースによって異なります。 +- **読み取り専用トランザクションのコーディネータ書き込みの省略** + - ユーザーは、読み取り専用トランザクションにおけるコーディネータ書き込みを省略することで、当該トランザクションをより早く実行できるようになります。 + +#### クラウドサポート + +- **Red Hat OpenShift サポート** + - ユーザーは、OpenShift 環境で ScalarDB Cluster 用の Red Hat 認定 Helm Charts を使用できます。 +- **Google Cloud Marketplace のコンテナオファリング** + - ユーザーは、Google Cloud コンテナオファリングを使用して ScalarDB Cluster をデプロイできます。これにより、ユーザーは従量課金制のサブスクリプションモデルを使用できます。 \ No newline at end of file diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-non-transactional-storage-operations-through-library.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-non-transactional-storage-operations-through-library.mdx new file mode 100644 index 00000000..e1b2be79 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-non-transactional-storage-operations-through-library.mdx @@ -0,0 +1,275 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# コアライブラリを通じて非トランザクションストレージ操作を実行する + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB Core ライブラリを通じて非トランザクションストレージ操作を実行する方法について説明します。 + +## 準備 + +このガイドでは、ScalarDB サンプルリポジトリのサンプルを使用して、データベースと ScalarDB をセットアップします。 + +### ScalarDB サンプルリポジトリのクローンを作成する + +**Terminal** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-sample +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](requirements.mdx#データベース)を参照してください。 + + + +

    MySQLをローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の MySQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://localhost:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://localhost:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の SQL Server のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://localhost:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://localhost:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントをお持ちでない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を設定する

    + + [既定の整合性レベルを設定する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル**を**強力**に設定します。 + +

    ScalarDB を設定する

    + + 以下の手順では、ローカル環境に JDK が適切にインストールおよび設定されており、Azure で Cosmos DB for NoSQL アカウントが適切に設定されていることを前提としています。 + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。`scalar.db.contact_points` と `scalar.db.password` の値は、説明に従って必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Cassandra のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +ScalarDB の設定の包括的なリストについては、[ScalarDB 設定](configurations.mdx)を参照してください。 + +## 非トランザクションストレージ操作を実行するようにScalarDBを設定する + +非トランザクションストレージ操作を実行するには、設定ファイル **database.properties** で `scalar.db.transaction_manager` プロパティを `single-crud-operation` に設定する必要があります。 + +```properties +scalar.db.transaction_manager=single-crud-operation +``` + +## スキーマを作成またはインポートする + +ScalarDB には、実装固有のデータモデルとスキーマにマップされる独自のデータモデルとスキーマがあります。 + +- **データベーススキーマを作成する必要がありますか?** [ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 +- **既存のデータベースをインポートする必要がありますか?** [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](schema-loader-import.mdx)を参照してください。 + +## Java アプリケーションを作成する + +このセクションでは、ScalarDB Core ライブラリをプロジェクトに追加する方法と、Java を使用して非トランザクションストレージ操作を実行するように設定する方法について説明します。 + +### ScalarDB をプロジェクトに追加する + +ScalarDB ライブラリは、[Maven Central Repository](https://mvnrepository.com/artifact/com.scalar-labs/scalardb) で入手できます。Gradle または Maven を使用して、ライブラリをビルド依存関係としてアプリケーションに追加できます。 + +ビルドツールを選択し、手順に従って ScalarDB のビルド依存関係をアプリケーションに追加します。 + + + + Gradle を使用して ScalarDB のビルド依存関係を追加するには、アプリケーションの `build.gradle` に以下を追加します。 + + ```gradle + dependencies { + implementation 'com.scalar-labs:scalardb:3.14.1' + } + ``` + + + Maven を使用して ScalarDB のビルド依存関係を追加するには、アプリケーションの `pom.xml` に以下を追加します。 + + ```xml + + com.scalar-labs + scalardb + 3.14.1 + + ``` + + + +### Java API を使用する + +Java API の詳細については、[ScalarDB Java API ガイド](api-guide.mdx)を参照してください。 + +:::note + +非トランザクションストレージ操作には、次の制限が適用されます: + +- トランザクションの開始はサポートされていません。詳細については、[トランザクションを開始せずにトランザクションを実行する](api-guide.mdx#トランザクションを開始せずにトランザクションを実行する)を参照してください。 +- 1つのトランザクションで複数のミューテーションを実行することはサポートされていません。 + +::: + +### 詳細はこちら + +- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-non-transactional-storage-operations-through-primitive-crud-interface.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-non-transactional-storage-operations-through-primitive-crud-interface.mdx new file mode 100644 index 00000000..c0bd067f --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-non-transactional-storage-operations-through-primitive-crud-interface.mdx @@ -0,0 +1,881 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# プリミティブ CRUD インターフェースを介して非トランザクションストレージ操作を実行する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、プリミティブ CRUD インターフェース (Storage API とも呼ばれる) を通じて非トランザクションストレージ操作を実行する方法について説明します。このガイドでは、読者が ScalarDB について高度な知識を持っていることを前提としています。 + +既存のストレージおよびデータベースシステム上でストレージに依存しない、またはデータベースに依存しない ACID トランザクションを実現するためのキーの1つは、ScalarDB が提供するストレージ抽象化機能です。ストレージ抽象化は、[データモデル](design.mdx#データモデル) と、データモデルに基づいて操作を発行する API (Storage API) を定義します。 + +ほとんどの場合、[Transactional API](api-guide.mdx#transactional-api) を使用することになりますが、別のオプションとして Storage API を使用することもできます。 + +Storage API を使用する利点は次のとおりです。 + +- トランザクション API と同様に、基盤となるストレージ実装についてあまり気にせずにアプリケーションコードを作成できます。 +- アプリケーション内の一部のデータに対してトランザクションが必要ない場合は、Storage API を使用してトランザクションを部分的に回避し、実行を高速化できます。 + +:::warning + +ストレージ API を直接使用したり、トランザクション API とストレージ API を混在させたりした場合、予期しない動作が発生する可能性があります。たとえば、ストレージ API はトランザクション機能を提供できないため、操作の実行時に障害が発生すると、API によって異常やデータの不整合が発生する可能性があります。 + +したがって、ストレージ API の使用には *非常に* 注意し、何をしているのかを正確に理解している場合にのみ使用してください。 + +::: + +## ストレージ API の例 + +このセクションでは、基本的な電子マネーアプリケーションでストレージ API を使用する方法について説明します。 + +:::warning + +この例では電子マネーアプリケーションが簡略化されており、実稼働環境には適していません。 + +::: + +### ScalarDB の設定 + +開始する前に、[ScalarDB をはじめよう](getting-started-with-scalardb.mdx) で説明されているのと同じ方法で ScalarDB を設定する必要があります。 + +これを念頭に置いて、このストレージ API の例では、設定ファイル `scalardb.properties` が存在することを前提としています。 + +### データベーススキーマの設定 + +アプリケーションでデータベーススキーマ (データを整理する方法) を定義する必要があります。サポートされているデータ型の詳細については、[ScalarDB と他のデータベース間のデータ型マッピング](schema-loader.mdx#scalardb-と他のデータベース間のデータ型マッピング)を参照してください。 + +この例では、`scalardb/docs/getting-started` ディレクトリに `emoney-storage.json` という名前のファイルを作成します。次に、次の JSON コードを追加してスキーマを定義します。 + +:::note + +次の JSON では、`transaction` フィールドが `false` に設定されており、このテーブルを Storage API で使用する必要があることを示しています。 + +::: + +```json +{ + "emoney.account": { + "transaction": false, + "partition-key": [ + "id" + ], + "clustering-key": [], + "columns": { + "id": "TEXT", + "balance": "INT" + } + } +} +``` + +スキーマを適用するには、[ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases) ページに移動し、使用している ScalarDB のバージョンに一致する ScalarDB Schema Loader を `getting-started` フォルダーにダウンロードします。 + +次に、`` をダウンロードした ScalarDB Schema Loader のバージョンに置き換えて、次のコマンドを実行します。 + +```console +java -jar scalardb-schema-loader-.jar --config scalardb.properties -f emoney-storage.json +``` + +### サンプルコード + +以下は、Storage API を使用する電子マネーアプリケーションのサンプルソースコードです。 + +:::warning + +前述のとおり、Storage API はトランザクション機能を提供できないため、操作の実行中に障害が発生すると、API によって異常やデータの不整合が発生する可能性があります。したがって、Storage API の使用には十分注意し、何をしているのかを正確に理解している場合にのみ使用してください。 + +::: + +```java +public class ElectronicMoney { + + private static final String SCALARDB_PROPERTIES = + System.getProperty("user.dir") + File.separator + "scalardb.properties"; + private static final String NAMESPACE = "emoney"; + private static final String TABLENAME = "account"; + private static final String ID = "id"; + private static final String BALANCE = "balance"; + + private final DistributedStorage storage; + + public ElectronicMoney() throws IOException { + StorageFactory factory = StorageFactory.create(SCALARDB_PROPERTIES); + storage = factory.getStorage(); + } + + public void charge(String id, int amount) throws ExecutionException { + // Retrieve the current balance for id + Get get = + Get.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, id)) + .build(); + Optional result = storage.get(get); + + // Calculate the balance + int balance = amount; + if (result.isPresent()) { + int current = result.get().getInt(BALANCE); + balance += current; + } + + // Update the balance + Put put = + Put.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, id)) + .intValue(BALANCE, balance) + .build(); + storage.put(put); + } + + public void pay(String fromId, String toId, int amount) throws ExecutionException { + // Retrieve the current balances for ids + Get fromGet = + Get.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, fromId)) + .build(); + Get toGet = + Get.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, toId)) + .build(); + Optional fromResult = storage.get(fromGet); + Optional toResult = storage.get(toGet); + + // Calculate the balances (it assumes that both accounts exist) + int newFromBalance = fromResult.get().getInt(BALANCE) - amount; + int newToBalance = toResult.get().getInt(BALANCE) + amount; + if (newFromBalance < 0) { + throw new RuntimeException(fromId + " doesn't have enough balance."); + } + + // Update the balances + Put fromPut = + Put.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, fromId)) + .intValue(BALANCE, newFromBalance) + .build(); + Put toPut = + Put.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, toId)) + .intValue(BALANCE, newToBalance) + .build(); + storage.put(fromPut); + storage.put(toPut); + } + + public int getBalance(String id) throws ExecutionException { + // Retrieve the current balances for id + Get get = + Get.newBuilder() + .namespace(NAMESPACE) + .table(TABLENAME) + .partitionKey(Key.ofText(ID, id)) + .build(); + Optional result = storage.get(get); + + int balance = -1; + if (result.isPresent()) { + balance = result.get().getInt(BALANCE); + } + return balance; + } + + public void close() { + storage.close(); + } +} +``` + +## ストレージ API ガイド + +ストレージ API は、管理 API と CRUD API で設定されています。 + +### 管理 API + +このセクションで説明するように、管理操作をプログラムで実行できます。 + +:::note + +管理操作を実行するために使用できる別の方法は、[Schema Loader](schema-loader.mdx) を使用することです。 + +::: + +#### `DistributedStorageAdmin` インスタンスを取得する + +管理操作を実行するには、まず `DistributedStorageAdmin` インスタンスを取得する必要があります。次のように `StorageFactory` から `DistributedStorageAdmin` インスタンスを取得できます。 + +```java +StorageFactory storageFactory = StorageFactory.create(""); +DistributedStorageAdmin admin = storageFactory.getStorageAdmin(); +``` + +設定の詳細については、[ScalarDB 設定](configurations.mdx)を参照してください。 + +すべての管理操作を実行したら、次のように `DistributedStorageAdmin` インスタンスを閉じる必要があります。 + +```java +admin.close(); +``` + +#### 名前空間を作成する + +テーブルは1つの名前空間に属するため、テーブルを作成する前に名前空間を作成する必要があります。 + +名前空間は次のように作成できます。 + +```java +// Create the namespace "ns". If the namespace already exists, an exception will be thrown. +admin.createNamespace("ns"); + +// Create the namespace only if it does not already exist. +boolean ifNotExists = true; +admin.createNamespace("ns", ifNotExists); + +// Create the namespace with options. +Map options = ...; +admin.createNamespace("ns", options); +``` + +作成オプションの詳細については、[作成オプション](api-guide.mdx#作成オプション)を参照してください。 + +#### テーブルを作成する + +テーブルを作成するときは、テーブルメタデータを定義してからテーブルを作成する必要があります。 + +テーブルメタデータを定義するには、`TableMetadata` を使用できます。次に、テーブルの列、パーティションキー、クラスタリングキー (クラスタリング順序を含む)、およびセカンダリインデックスを定義する方法を示します。 + +```java +// Define the table metadata. +TableMetadata tableMetadata = + TableMetadata.newBuilder() + .addColumn("c1", DataType.INT) + .addColumn("c2", DataType.TEXT) + .addColumn("c3", DataType.BIGINT) + .addColumn("c4", DataType.FLOAT) + .addColumn("c5", DataType.DOUBLE) + .addPartitionKey("c1") + .addClusteringKey("c2", Scan.Ordering.Order.DESC) + .addClusteringKey("c3", Scan.Ordering.Order.ASC) + .addSecondaryIndex("c4") + .build(); +``` + +ScalarDB のデータモデルの詳細については、[データモデル](design.mdx#データモデル)を参照してください。 + +次に、次のようにテーブルを作成します。 + +```java +// Create the table "ns.tbl". If the table already exists, an exception will be thrown. +admin.createTable("ns", "tbl", tableMetadata); + +// Create the table only if it does not already exist. +boolean ifNotExists = true; +admin.createTable("ns", "tbl", tableMetadata, ifNotExists); + +// Create the table with options. +Map options = ...; +admin.createTable("ns", "tbl", tableMetadata, options); +``` + +#### セカンダリインデックスを作成する + +セカンダリインデックスは次のように作成できます。 + +```java +// Create a secondary index on column "c5" for table "ns.tbl". If a secondary index already exists, an exception will be thrown. +admin.createIndex("ns", "tbl", "c5"); + +// Create the secondary index only if it does not already exist. +boolean ifNotExists = true; +admin.createIndex("ns", "tbl", "c5", ifNotExists); + +// Create the secondary index with options. +Map options = ...; +admin.createIndex("ns", "tbl", "c5", options); +``` + +#### テーブルに新しい列を追加する + +次のように、テーブルに新しい非パーティションキー列を追加できます。 + +```java +// Add a new column "c6" with the INT data type to the table "ns.tbl". +admin.addNewColumnToTable("ns", "tbl", "c6", DataType.INT) +``` + +:::warning + +テーブルに新しい列を追加する場合は、基盤となるストレージによって実行時間が大きく異なる可能性があるため、慎重に検討する必要があります。それに応じて計画を立て、特にデータベースが本番環境で実行されている場合は、次の点を考慮してください。 + +- **Cosmos DB for NoSQL および DynamoDB の場合:** テーブルスキーマは変更されないため、列の追加はほぼ瞬時に行われます。別のテーブルに格納されているテーブルメタデータのみが更新されます。 +- **Cassandra の場合:** 列を追加すると、スキーマメタデータのみが更新され、既存のスキーマレコードは変更されません。クラスタートポロジが実行時間の主な要因です。スキーマメタデータの変更は、ゴシッププロトコルを介して各クラスターノードに共有されます。このため、クラスターが大きいほど、すべてのノードが更新されるまでの時間が長くなります。 +- **リレーショナルデータベース (MySQL、Oracle など) の場合:** 列の追加は実行にそれほど時間がかかりません。 + +::: + +#### テーブルを切り捨てる + +テーブルを切り捨てるには、次のようにします。 + +```java +// Truncate the table "ns.tbl". +admin.truncateTable("ns", "tbl"); +``` + +#### セカンダリインデックスを削除する + +セカンダリインデックスは次のように削除できます。 + +```java +// Drop the secondary index on column "c5" from table "ns.tbl". If the secondary index does not exist, an exception will be thrown. +admin.dropIndex("ns", "tbl", "c5"); + +// Drop the secondary index only if it exists. +boolean ifExists = true; +admin.dropIndex("ns", "tbl", "c5", ifExists); +``` + +#### テーブルを削除する + +テーブルを削除するには、次のようにします。 + +```java +// Drop the table "ns.tbl". If the table does not exist, an exception will be thrown. +admin.dropTable("ns", "tbl"); + +// Drop the table only if it exists. +boolean ifExists = true; +admin.dropTable("ns", "tbl", ifExists); +``` + +#### 名前空間を削除する + +名前空間を削除するには、次のようにします。 + +```java +// Drop the namespace "ns". If the namespace does not exist, an exception will be thrown. +admin.dropNamespace("ns"); + +// Drop the namespace only if it exists. +boolean ifExists = true; +admin.dropNamespace("ns", ifExists); +``` + +#### 既存の名前空間を取得する + +既存の名前空間は次のように取得できます。 + +```java +Set namespaces = admin.getNamespaceNames(); +``` + +#### 名前空間のテーブルを取得する + +名前空間のテーブルは次のように取得できます。 + +```java +// Get the tables of the namespace "ns". +Set tables = admin.getNamespaceTableNames("ns"); +``` + +#### テーブルメタデータを取得する + +テーブルメタデータは次のように取得できます。 + +```java +// Get the table metadata for "ns.tbl". +TableMetadata tableMetadata = admin.getTableMetadata("ns", "tbl"); +``` + +#### 名前空間を修復する + +名前空間が不明な状態の場合 (名前空間が基盤となるストレージに存在するが ScalarDB メタデータが存在しない、またはその逆)、このメソッドは必要に応じて名前空間とそのメタデータを再作成します。 + +名前空間は次のように修復できます。 + +```java +// Repair the namespace "ns" with options. +Map options = ...; + admin.repairNamespace("ns", options); +``` + +#### テーブルを修復する + +テーブルが不明な状態の場合 (テーブルは基盤となるストレージに存在するが ScalarDB メタデータは存在しない、またはその逆)、このメソッドは必要に応じてテーブル、そのセカンダリインデックス、およびそのメタデータを再作成します。 + +テーブルは次のように修復できます。 + +```java +// Repair the table "ns.tbl" with options. +TableMetadata tableMetadata = + TableMetadata.newBuilder() + ... + .build(); +Map options = ...; +admin.repairTable("ns", "tbl", tableMetadata, options); +``` + +#### 最新の ScalarDB API をサポートするように環境をアップグレードする + +ScalarDB API の最新バージョンをサポートするように ScalarDB 環境をアップグレードできます。通常、リリースノートに記載されているように、アプリケーション環境が使用する ScalarDB バージョンを更新した後、このメソッドを実行する必要があります。 + +```java +// Upgrade the ScalarDB environment. +Map options = ...; +admin.upgrade(options); +``` + +### CRUD 操作を実装する + +次のセクションでは、CRUD 操作について説明します。 + +#### `DistributedStorage` インスタンスを取得する + +Storage API で CRUD 操作を実行するには、`DistributedStorage` インスタンスを取得する必要があります。 + +インスタンスは次のように取得できます。 + +```java +StorageFactory storageFactory = StorageFactory.create(""); +DistributedStorage storage = storageFactory.getStorage(); +``` + +すべての CRUD 操作を実行したら、次のように `DistributedStorage` インスタンスを閉じる必要があります。 + +```java +storage.close(); +``` + +#### `Get` 操作 + +`Get` は、主キーで指定された単一のレコードを取得する操作です。 + +まず `Get` オブジェクトを作成し、次に次のように `storage.get()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Get` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .projections("c1", "c2", "c3", "c4") + .build(); + +// Execute the `Get` operation. +Optional result = storage.get(get); +``` + +また、投影を指定して、返される列を選択することもできます。 + +`Key` オブジェクトの構築方法の詳細については、[キーの構築](api-guide.mdx#キーの構築)を参照してください。また、`Result` オブジェクトの処理方法の詳細については、[Result オブジェクトの処理](api-guide.mdx#result-オブジェクトの処理)を参照してください。 + +##### 一貫性レベルを指定する + +Storage API の各操作 (`Get`、`Scan`、`Put`、`Delete`) で一貫性レベルを次のように指定できます。 + +```java +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .consistency(Consistency.LINEARIZABLE) // Consistency level + .build(); +``` + +次の表は、3つの一貫性レベルについて説明しています。 + +| 一貫性レベル | 説明 | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `SEQUENTIAL` | 順次一貫性は、基礎となるストレージ実装によってすべての操作が何らかの順次順序で実行されるようにされ、各プロセスの操作がこの順序で実行されることを前提としています。 | +| `EVENTUAL` | 結果一貫性は、基礎となるストレージ実装によってすべての操作が最終的に実行されることを前提としています。 | +| `LINEARIZABLE` | 線形化可能な一貫性は、基礎となるストレージ実装によって各操作が呼び出しから完了までの間のある時点でアトミックに実行されるようにされることを前提としています。 | + +##### セカンダリインデックスを使用して `Get` を実行する + +セカンダリインデックスを使用して `Get` 操作を実行できます。 + +パーティションキーを指定する代わりに、次のようにインデックスキー (インデックス付き列) を指定してセカンダリインデックスを使用できます。 + +```java +// Create a `Get` operation by using a secondary index. +Key indexKey = Key.ofFloat("c4", 1.23F); + +Get get = + Get.newBuilder() + .namespace("ns") + .table("tbl") + .indexKey(indexKey) + .projections("c1", "c2", "c3", "c4") + .build(); + +// Execute the `Get` operation. +Optional result = storage.get(get); +``` + +:::note + +結果に複数のレコードがある場合、`storage.get()` は例外をスローします。 + +::: + +#### `Scan` 操作 + +`Scan` は、パーティション内の複数のレコードを取得する操作です。`Scan` 操作では、クラスタリングキーの境界とクラスタリングキー列の順序を指定できます。 + +まず `Scan` オブジェクトを作成し、次に次のように `storage.scan()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Scan` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key startClusteringKey = Key.of("c2", "aaa", "c3", 100L); +Key endClusteringKey = Key.of("c2", "aaa", "c3", 300L); + +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .start(startClusteringKey, true) // Include startClusteringKey + .end(endClusteringKey, false) // Exclude endClusteringKey + .projections("c1", "c2", "c3", "c4") + .orderings(Scan.Ordering.desc("c2"), Scan.Ordering.asc("c3")) + .limit(10) + .build(); + +// Execute the `Scan` operation. +Scanner scanner = storage.scan(scan); +``` + +クラスタリングキー境界を省略するか、`start` 境界または `end` 境界のいずれかを指定できます。`orderings` を指定しない場合は、テーブルの作成時に定義したクラスタリング順序で結果が並べられます。 + +さらに、`projections` を指定して返される列を選択し、`limit` を使用して `Scan` 操作で返されるレコードの数を指定できます。 + +##### `Scanner` オブジェクトの処理 + +Storage API の `Scan` 操作は `Scanner` オブジェクトを返します。 + +`Scanner` オブジェクトから結果を1つずつ取得する場合は、次のように `one()` メソッドを使用できます。 + +```java +Optional result = scanner.one(); +``` + +または、すべての結果のリストを取得する場合は、次のように `all()` メソッドを使用できます。 + +```java +List results = scanner.all(); +``` + +さらに、`Scanner` は `Iterable` を実装しているので、次のように for-each ループ内で `Scanner` を使用できます。 + +```java +for (Result result : scanner) { + ... +} +``` + +結果を取得した後は、`Scanner` オブジェクトを閉じることを忘れないでください。 + +```java +scanner.close(); +``` + +または、次のように `try`-with-resources を使用することもできます。 + +```java +try (Scanner scanner = storage.scan(scan)) { + ... +} +``` + +##### セカンダリインデックスを使用して `Scan` を実行する + +セカンダリインデックスを使用して `Scan` 操作を実行できます。 + +パーティションキーを指定する代わりに、次のようにインデックスキー (インデックス付き列) を指定してセカンダリインデックスを使用できます。 + +```java +// Create a `Scan` operation by using a secondary index. +Key indexKey = Key.ofFloat("c4", 1.23F); + +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .indexKey(indexKey) + .projections("c1", "c2", "c3", "c4") + .limit(10) + .build(); + +// Execute the `Scan` operation. +Scanner scanner = storage.scan(scan); +``` + +:::note + +セカンダリインデックスを使用して、`Scan` でクラスタリングキーの境界と順序を指定することはできません。 + +::: + +##### パーティションキーを指定せずに `Scan` を実行して、テーブルのすべてのレコードを取得します + +パーティションキーを指定せずに `Scan` 操作を実行できます。 + +ビルダーで `partitionKey()` メソッドを呼び出す代わりに、次のように `all()` メソッドを呼び出して、パーティションキーを指定せずにテーブルをスキャンできます。 + +```java +// Create a `Scan` operation without specifying a partition key. +Key partitionKey = Key.ofInt("c1", 10); +Key startClusteringKey = Key.of("c2", "aaa", "c3", 100L); +Key endClusteringKey = Key.of("c2", "aaa", "c3", 300L); + +Scan scan = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .all() + .projections("c1", "c2", "c3", "c4") + .limit(10) + .build(); + +// Execute the `Scan` operation. +Scanner scanner = storage.scan(scan); +``` + +:::note + +パーティションキーを指定せずに `Scan` でクラスタリングキーの境界と順序を指定することはできません。 + +::: + +#### `Put` 操作 + +`Put` は、主キーで指定されたレコードを配置する操作です。この操作はレコードの upsert 操作として動作し、レコードが存在する場合はレコードを更新し、レコードが存在しない場合はレコードを挿入します。 + +まず `Put` オブジェクトを作成し、次に次のように `storage.put()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Put` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +// Execute the `Put` operation. +storage.put(put); +``` + +次のように `null` 値を持つレコードを配置することもできます。 + +```java +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", null) + .doubleValue("c5", null) + .build(); +``` + +:::note + +`Put` 操作ビルダーで `enableImplicitPreRead()`、`disableImplicitPreRead()`、または `implicitPreReadEnabled()` を指定した場合、それらは無視されます。 + +::: + +#### `Delete` 操作 + +`Delete` は、主キーで指定されたレコードを削除する操作です。 + +まず `Delete` オブジェクトを作成し、次に次のように `storage.delete()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create a `Delete` operation. +Key partitionKey = Key.ofInt("c1", 10); +Key clusteringKey = Key.of("c2", "aaa", "c3", 100L); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .build(); + +// Execute the `Delete` operation. +storage.delete(delete); +``` + +#### 条件付きの `Put` および `Delete` + +条件をチェックするロジックを実装することで、操作を実行する前に満たす必要がある任意の条件 (たとえば、銀行口座の残高は0以上である必要があります) を記述できます。または、`Put` や `Delete` などのミューテーション操作で単純な条件を記述することもできます。 + +`Put` または `Delete` 操作に条件が含まれている場合、指定された条件が満たされた場合にのみ操作が実行されます。操作の実行時に条件が満たされていない場合は、`NoMutationException` という例外がスローされます。 + +##### `Put` の条件 + +Storage API の `Put` 操作では、指定された条件が一致した場合にのみ `Put` 操作が実行されるようにする条件を指定できます。この操作は、条件が比較され、更新がアトミックに実行される比較とスワップの操作に似ています。 + +`Put` 操作では次のように条件を指定できます。 + +```java +// Build a condition. +MutationCondition condition = + ConditionBuilder.putIf(ConditionBuilder.column("c4").isEqualToFloat(0.0F)) + .and(ConditionBuilder.column("c5").isEqualToDouble(0.0)) + .build(); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .condition(condition) // condition + .build(); +``` + +`putIf` 条件以外に、`putIfExists` および `putIfNotExists` 条件を次のように指定できます。 + +```java +// Build a `putIfExists` condition. +MutationCondition putIfExistsCondition = ConditionBuilder.putIfExists(); + +// Build a `putIfNotExists` condition. +MutationCondition putIfNotExistsCondition = ConditionBuilder.putIfNotExists(); +``` + +##### `Delete` の条件 + +`Put` 操作と同様に、Storage API の `Delete` 操作でも条件を指定できます。 + +`Delete` 操作では、次のように条件を指定できます。 + +```java +// Build a condition. +MutationCondition condition = + ConditionBuilder.deleteIf(ConditionBuilder.column("c4").isEqualToFloat(0.0F)) + .and(ConditionBuilder.column("c5").isEqualToDouble(0.0)) + .build(); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKey) + .condition(condition) // condition + .build(); +``` + +`deleteIf` 条件を使用するだけでなく、次のように `deleteIfExists` 条件を指定することもできます。 + +```java +// Build a `deleteIfExists` condition. +MutationCondition deleteIfExistsCondition = ConditionBuilder.deleteIfExists(); +``` + +#### ミューテート操作 + +ミューテートは、単一のパーティションで複数のミューテート (`Put` および `Delete` 操作) を実行する操作です。 + +まずミューテートオブジェクトを作成し、次に次のように `storage.mutate()` メソッドを使用してオブジェクトを実行する必要があります。 + +```java +// Create `Put` and `Delete` operations. +Key partitionKey = Key.ofInt("c1", 10); + +Key clusteringKeyForPut = Key.of("c2", "aaa", "c3", 100L); + +Put put = + Put.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKeyForPut) + .floatValue("c4", 1.23F) + .doubleValue("c5", 4.56) + .build(); + +Key clusteringKeyForDelete = Key.of("c2", "bbb", "c3", 200L); + +Delete delete = + Delete.newBuilder() + .namespace("ns") + .table("tbl") + .partitionKey(partitionKey) + .clusteringKey(clusteringKeyForDelete) + .build(); + +// Execute the operations. +storage.mutate(Arrays.asList(put, delete)); +``` + +:::note + +Mutate 操作では、単一のパーティションのミューテーションのみが受け入れられます。それ以外の場合は、例外がスローされます。 + +さらに、Mutate 操作で複数の条件を指定すると、すべての条件が一致した場合にのみ操作が実行されます。 + +::: + +#### CRUD 操作のデフォルト名前空間 + +すべての CRUD 操作のデフォルト名前空間は、ScalarDB 設定のプロパティを使用して設定できます。 + +```properties +scalar.db.default_namespace_name= +``` + +名前空間を指定しない操作では、設定で設定されたデフォルトの名前空間が使用されます。 + +```java +// This operation will target the default namespace. +Scan scanUsingDefaultNamespace = + Scan.newBuilder() + .table("tbl") + .all() + .build(); +// This operation will target the "ns" namespace. +Scan scanUsingSpecifiedNamespace = + Scan.newBuilder() + .namespace("ns") + .table("tbl") + .all() + .build(); +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-transactions-through-scalardb-core-library.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-transactions-through-scalardb-core-library.mdx new file mode 100644 index 00000000..61e64e40 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/run-transactions-through-scalardb-core-library.mdx @@ -0,0 +1,223 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Core ライブラリを介してトランザクションを実行する + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB Core ライブラリを使用して、ScalarDB プロパティファイルを設定し、1フェーズまたは2フェーズのコミットインターフェイスを介してトランザクションを実行するためのスキーマを作成する方法について説明します。 + +## 準備 + +このガイドでは、ScalarDB サンプルリポジトリのサンプルを使用して、データベースと ScalarDB をセットアップします。 + +### ScalarDB サンプルリポジトリのクローンを作成する + +**Terminal** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-sample +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](requirements.mdx#データベース)を参照してください。 + + + +

    MySQLをローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の MySQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://localhost:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://localhost:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の SQL Server のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://localhost:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://localhost:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントをお持ちでない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を設定する

    + + [既定の整合性レベルを設定する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル**を**強力**に設定します。 + +

    ScalarDB を設定する

    + + 以下の手順では、ローカル環境に JDK が適切にインストールおよび設定されており、Azure で Cosmos DB for NoSQL アカウントが適切に設定されていることを前提としています。 + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。`scalar.db.contact_points` と `scalar.db.password` の値は、説明に従って必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-sample` ディレクトリの `docker-compose.yml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB を設定する

    + + `scalardb-samples/scalardb-sample` ディレクトリの **database.properties** ファイルには、ScalarDB のデータベース設定が含まれています。**database.properties** ファイル内の Cassandra のプロパティのコメントを解除して、設定が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=localhost + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +ScalarDB の設定の包括的なリストについては、[ScalarDB 設定](configurations.mdx)を参照してください。 + +## スキーマを作成またはインポートする + +ScalarDB には、実装固有のデータモデルとスキーマにマップされる独自のデータモデルとスキーマがあります。 + +- **データベーススキーマを作成する必要がありますか?** [ScalarDB Schema Loader](schema-loader.mdx) を参照してください。 +- **既存のデータベースをインポートする必要がありますか?** [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](schema-loader-import.mdx)を参照してください。 + +## Javaを使用してトランザクションを実行する + +- **1フェーズコミットインターフェイスを使用してトランザクションを実行しますか?** [ScalarDB Java API ガイド](api-guide.mdx#transactional-api)を参照してください。 +- **2フェーズコミットインターフェイスを使用してトランザクションを実行しますか?** [2フェーズコミットインターフェースを使用したトランザクション](two-phase-commit-transactions.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AccessScalarProducts.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AccessScalarProducts.mdx new file mode 100644 index 00000000..156edb6e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AccessScalarProducts.mdx @@ -0,0 +1,198 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes クラスター環境にデプロイされた ScalarDB または ScalarDL をアプリケーションから利用できるようにする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Kubernetes クラスター環境にデプロイされた ScalarDB または ScalarDL をアプリケーションから利用できるようにする方法について説明します。ScalarDB または ScalarDL をアプリケーションから利用できるようにするには、`-envoy` という名前の Kubernetes サービスリソース経由で Scalar Envoy を使用します。`-envoy` は次のようないくつかの方法で使用できます。 + +* ScalarDB または ScalarDL と同じ Kubernetes クラスター内から直接。 +* Kubernetes クラスターの外部からのロードバランサー経由。 +* `kubectl port-forward` コマンドを使用して踏み台サーバーから実行します (テスト目的のみ)。 + +リソース名 `-envoy` は Helm リリース名に基づいて決定されます。次のコマンドを実行すると、helm リリース名を確認できます。 + +```console +helm list -n ns-scalar +``` + +次のような結果が表示されます: + +```console +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +scalardb ns-scalar 1 2023-02-09 19:31:40.527130674 +0900 JST deployed scalardb-2.5.0 3.8.0 +scalardl-auditor ns-scalar 1 2023-02-09 19:32:03.008986045 +0900 JST deployed scalardl-audit-2.5.1 3.7.1 +scalardl-ledger ns-scalar 1 2023-02-09 19:31:53.459548418 +0900 JST deployed scalardl-4.5.1 3.7.1 +``` + +次のコマンドを実行すると、envoy サービス名 `-envoy` を確認することもできます。 + +```console +kubectl get service -n ns-scalar +``` + +次のような結果が表示されます: + +```console +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-envoy LoadBalancer 10.99.245.143 60051:31110/TCP 2m2s +scalardb-envoy-metrics ClusterIP 10.104.56.87 9001/TCP 2m2s +scalardb-headless ClusterIP None 60051/TCP 2m2s +scalardb-metrics ClusterIP 10.111.213.194 8080/TCP 2m2s +scalardl-auditor-envoy LoadBalancer 10.111.141.43 40051:31553/TCP,40052:31171/TCP 99s +scalardl-auditor-envoy-metrics ClusterIP 10.104.245.188 9001/TCP 99s +scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 99s +scalardl-auditor-metrics ClusterIP 10.105.119.158 8080/TCP 99s +scalardl-ledger-envoy LoadBalancer 10.96.239.167 50051:32714/TCP,50052:30857/TCP 109s +scalardl-ledger-envoy-metrics ClusterIP 10.97.204.18 9001/TCP 109s +scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 109s +scalardl-ledger-metrics ClusterIP 10.104.216.189 8080/TCP 109s +``` + +## 同じ Kubernetes クラスター内からサービスリソースを介して、ScalarDB または ScalarDL へのアプリケーション (クライアント) リクエストを直接実行します。 + +アプリケーション (クライアント) を ScalarDB または ScalarDL と同じ Kubernetes クラスターにデプロイする場合 (たとえば、アプリケーション [クライアント] を同じ Kubernetes クラスター内の別のノードグループまたはプールにデプロイする場合)、アプリケーションは次の方法で ScalarDB または ScalarDL にアクセスできます。Kubernetes サービスリソースを使用します。サービスリソース名 (FQDN) の形式は、`-envoy..svc.cluster.local` です。 + +以下は、`ns-scalar` 名前空間での ScalarDB および ScalarDL のデプロイメントの例です。 + +* **ScalarDB Server** + ```console + scalardb-envoy.ns-scalar.svc.cluster.local + ``` +* **ScalarDL Ledger** + ```console + scalardl-ledger-envoy.ns-scalar.svc.cluster.local + ``` +* **ScalarDL Auditor** + ```console + scalardl-auditor-envoy.ns-scalar.svc.cluster.local + ``` + +Kubernetes サービスリソースを使用する場合、アプリケーション (クライアント) のプロパティファイルに上記の FQDN を次のように設定する必要があります。 + +* **ScalarDB Server のクライアントプロパティファイル** + ```properties + scalar.db.contact_points=-envoy..svc.cluster.local + scalar.db.contact_port=60051 + scalar.db.storage=grpc + scalar.db.transaction_manager=grpc + ``` +* **ScalarDL Ledger のクライアントプロパティファイル** + ```properties + scalar.dl.client.server.host=-envoy..svc.cluster.local + scalar.dl.ledger.server.port=50051 + scalar.dl.ledger.server.privileged_port=50052 + ``` +* **ScalarDL Auditor モードが有効になっている ScalarDL Ledger のクライアントプロパティファイル** + ```properties + # Ledger + scalar.dl.client.server.host=-envoy..svc.cluster.local + scalar.dl.ledger.server.port=50051 + scalar.dl.ledger.server.privileged_port=50052 + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=-envoy..svc.cluster.local + scalar.dl.auditor.server.port=40051 + scalar.dl.auditor.server.privileged_port=40052 + ``` + +## Kubernetes クラスターの外部からロードバランサー経由で ScalarDB または ScalarDL へのアプリケーション (クライアント) リクエストを実行します + +ScalarDB または ScalarDL の Kubernetes クラスターの外部の環境にアプリケーション (クライアント) をデプロイする場合 (たとえば、アプリケーション [クライアント] を別の Kubernetes クラスター、コンテナープラットフォーム、またはサーバーにデプロイする場合)、アプリケーションは ScalarDB または ScalarDL にアクセスできます。各クラウドサービスが提供するロードバランサーを利用します。 + +カスタム値ファイルで `envoy.service.type` を `LoadBalancer` に設定することで、ロードバランサーを作成できます。カスタム値ファイルを構成した後、ロードバランサーを使用して、Kubernetes サービスリソースを通じて Scalar Envoy を使用できるようになります。注釈を使用してロードバランサーの構成を設定することもできます。 + +カスタム値ファイルの設定方法の詳細については、[サービス設定](../helm-charts/configure-custom-values-envoy.mdx#サービス構成)を参照してください。 + +ロードバランサを使用する場合、アプリケーション (クライアント) のプロパティファイルにロードバランサのFQDNまたはIPアドレスを以下のように設定する必要があります。 + +* **ScalarDB Server のクライアントプロパティファイル** + ```properties + scalar.db.contact_points= + scalar.db.contact_port=60051 + scalar.db.storage=grpc + scalar.db.transaction_manager=grpc + ``` +* **ScalarDL Ledger のクライアントプロパティファイル** + ```properties + scalar.dl.client.server.host= + scalar.dl.ledger.server.port=50051 + scalar.dl.ledger.server.privileged_port=50052 + ``` +* **ScalarDL Auditor モードが有効になっている ScalarDL Ledger のクライアントプロパティファイル** + ```properties + # Ledger + scalar.dl.client.server.host= + scalar.dl.ledger.server.port=50051 + scalar.dl.ledger.server.privileged_port=50052 + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host= + scalar.dl.auditor.server.port=40051 + scalar.dl.auditor.server.privileged_port=40052 + ``` + +ロードバランサーの具体的な実装とアクセス方法は、Kubernetes クラスターに依存します。マネージド Kubernetes クラスターを使用している場合は、クラウドサービスプロバイダーに基づいて次の公式ドキュメントを参照してください。 + +* **Amazon Elastic Kubernetes Service (EKS)** + * [Network load balancing on Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html) +* **Azure Kubernetes Service (AKS)** + * [Use a public standard load balancer in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/load-balancer-standard) + * [Use an internal load balancer with Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/internal-lb) + +## 踏み台サーバーから ScalarDB または ScalarDL へのクライアントリクエストを実行します (テスト目的のみ。運用環境では推奨されません) + +`kubectl port-forward` コマンドを実行すると、踏み台サーバーから ScalarDB または ScalarDL へのクライアントリクエストを実行できます。ただし、ScalarDL Auditor モード環境を作成する場合、2つの Kubernetes クラスターにアクセスするには、1つの踏み台サーバーから異なる kubeconfig ファイルを使用して2つの `kubectl port-forward` コマンドを実行する必要があります。 + +1. **(ScalarDL Auditor モードのみ)** ScalarDL Ledger の踏み台サーバーで、ScalarDL Auditor の Kubernetes クラスターにアクセスするために既存の kubeconfig ファイルを構成するか、新しい kubeconfig ファイルを追加します。管理対象の各 Kubernetes クラスターの kubeconfig ファイルを構成する方法の詳細については、[kubeconfig の構成](CreateBastionServer.mdx#kubeconfig-の構成)を参照してください。 +2. 踏み台サーバーから各サービスへのポート転送を構成します。 + * **ScalarDB Server** + ```console + kubectl port-forward -n svc/-envoy 60051:60051 + ``` + * **ScalarDL Ledger** + ```console + kubectl --context port-forward -n svc/-envoy 50051:50051 + kubectl --context port-forward -n svc/-envoy 50052:50052 + ``` + * **ScalarDL Auditor** + ```console + kubectl --context port-forward -n svc/-envoy 40051:40051 + kubectl --context port-forward -n svc/-envoy 40052:40052 + ``` +3. `localhost` 経由で ScalarDB または ScalarDL にアクセスするようにプロパティファイルを設定します。 + * **ScalarDB Server のクライアントプロパティファイル** + ```properties + scalar.db.contact_points=localhost + scalar.db.contact_port=60051 + scalar.db.storage=grpc + scalar.db.transaction_manager=grpc + ``` + * **ScalarDL Ledger のクライアントプロパティファイル** + ```properties + scalar.dl.client.server.host=localhost + scalar.dl.ledger.server.port=50051 + scalar.dl.ledger.server.privileged_port=50052 + ``` + * **ScalarDL Auditor モードが有効になっている ScalarDL Ledger のクライアントプロパティファイル** + ```properties + # Ledger + scalar.dl.client.server.host=localhost + scalar.dl.ledger.server.port=50051 + scalar.dl.ledger.server.privileged_port=50052 + + # Auditor + scalar.dl.client.auditor.enabled=true + scalar.dl.client.auditor.host=localhost + scalar.dl.auditor.server.port=40051 + scalar.dl.auditor.server.privileged_port=40052 + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AwsMarketplaceGuide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AwsMarketplaceGuide.mdx new file mode 100644 index 00000000..c503f8a6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AwsMarketplaceGuide.mdx @@ -0,0 +1,472 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# AWS Marketplace を通じて Scalar 製品をインストールする方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar 製品 (ScalarDB、ScalarDL、およびそれらのツール) は、AWS Marketplace でコンテナイメージとして入手できます。 このガイドでは、AWS Marketplace を通じて Scalar 製品をインストールする方法について説明します。 + +:::note + +- 一部の Scalar 製品は商用ライセンスで利用可能であり、AWS Marketplace ではそれらの製品を従量課金制 (PAYG) 料金で提供しています。従量課金制料金を使用する場合、AWS は使用量に基づいて Scalar 製品のライセンス料を請求します。 +- 以前は、AWS Marketplace でライセンス持ち込み (BYOL) オプションが提供されていました。ただし、このオプションは廃止され、削除されたため、AWS Marketplace ではサポートされなくなりました。 +- BYOL オプションは、AWS Marketplace ではなく、次のパブリックコンテナリポジトリで提供されています。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact-jp)ください。 + - [ScalarDB Cluster Enterprise Standard](https://github.com/orgs/scalar-labs/packages/container/package/scalardb-cluster-node-byol-standard) + - [ScalarDB Cluster Enterprise Premium](https://github.com/orgs/scalar-labs/packages/container/package/scalardb-cluster-node-byol-premium) + - [ScalarDL Ledger](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-ledger-byol) + - [ScalarDL Auditor](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-auditor-byol) + +::: + +## AWS Marketplace から Scalar 製品を購読する + +1. Scalar 製品を選択すると、AWS Marketplace へのリンクが表示されます。 + + + + ScalarDB Enterprise のエディションを選択します。 + + + | PAYG | BYOL (非推奨) | + |:---------------------------------------------------------------------------------|:---------------------------------------------------------------------------------| + | [ScalarDB Cluster](https://aws.amazon.com/marketplace/pp/prodview-jx6qxatkxuwm4) | [ScalarDB Cluster](https://aws.amazon.com/marketplace/pp/prodview-alcwrmw6v4cfy) | + + + | PAYG | BYOL (非推奨) | + |:---------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------| + | [ScalarDB Cluster](https://aws.amazon.com/marketplace/pp/prodview-djqw3zk6dwyk6) | [ScalarDB Cluster](https://aws.amazon.com/marketplace/pp/prodview-alcwrmw6v4cfy) | + + + + + | PAYG | BYOL (非推奨) | + |:---------------------------------------------------------------------------------|:---------------------------------------------------------------------------------| + | [ScalarDL Ledger](https://aws.amazon.com/marketplace/pp/prodview-wttioaezp5j6e) | [ScalarDL Ledger](https://aws.amazon.com/marketplace/pp/prodview-3jdwfmqonx7a2) | + + + | PAYG | BYOL (非推奨) | + |:---------------------------------------------------------------------------------|:---------------------------------------------------------------------------------| + | [ScalarDL Auditor](https://aws.amazon.com/marketplace/pp/prodview-ke3yiw4mhriuu) | [ScalarDL Auditor](https://aws.amazon.com/marketplace/pp/prodview-tj7svy75gu7m6) | + + + +1. [**購読を続ける**] を選択します。 + +1. IAM ユーザーを使用して AWS Marketplace にサインインします。 + すでにサインインしている場合、この手順は自動的にスキップされます。 + +1. **利用規約**を読み、**利用規約に同意する**を選択します。 + 時間がかかります。完了すると、**発効日**列に現在の日付が表示されます。 + また、AWS コンソールの [Manage subscriptions](https://us-east-1.console.aws.amazon.com/marketplace/home#/subscriptions) ページでも製品を確認できます。 + +## Scalar Helm Charts を使用して AWS Marketplace から EKS (Amazon Elastic Kubernetes Service) にコンテナをデプロイする +AWS Marketplace で Scalar 製品をサブスクライブすると、AWS Marketplace のプライベートコンテナレジストリ ([ECR](https://aws.amazon.com/ecr/)) から Scalar 製品のコンテナイメージをプルできます。このセクションでは、プライベートコンテナーレジストリから [EKS](https://aws.amazon.com/eks/) クラスターに従量課金制の価格で Scalar 製品をデプロイする方法について説明します。 + +1. OIDC プロバイダーを作成します。 + + ScalarDL ポッドから AWS Marketplace Metering Service を実行するには、ID およびアクセス管理 (IAM) OpenID Connect (OIDC) プロバイダーを作成する必要があります。 + + ```console + eksctl utils associate-iam-oidc-provider --region --cluster --approve + ``` + + 詳細については、[Creating an IAM OIDC provider for your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) を参照してください。 + +1. サービスアカウントを作成します。 + + ポッドが AWS Marketplace Metering Service を実行できるようにするには、[IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) を使用できます。 + + ```console + eksctl create iamserviceaccount \ + --name \ + --namespace \ + --region \ + --cluster \ + --attach-policy-arn arn:aws:iam::aws:policy/AWSMarketplaceMeteringFullAccess \ + --approve \ + --override-existing-serviceaccounts + ``` + +1. インストールする Scalar 製品の Helm Chart のカスタム値ファイルを更新します。 + カスタム値ファイルの `[].image.repository` の値として、AWS Marketplace のプライベートコンテナレジストリ (ECR) を指定する必要があります。また、前の手順で作成したサービスアカウント名を `[].serviceAccount.serviceAccountName` の値として指定し、 `[].serviceAccount.automountServiceAccountToken` を `true` に設定する必要があります。使用している製品に応じて、次の例を参照してください。 + + + + ScalarDB Enterprise のエディションを選択します。 + + + `scalardb-cluster-standard-custom-values.yaml` ファイル内: + + ```yaml + scalardbCluster: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-cluster-node-aws-payg-standard" + serviceAccount: + serviceAccountName: "" + automountServiceAccountToken: true + ``` + + :::note + + 設定の詳細については、[ScalarDB Cluster のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardb-cluster.mdx)を参照してください。 + + ::: + + + + `scalardb-cluster-premium-custom-values.yaml` ファイル内: + + ```yaml + scalardbCluster: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-cluster-node-aws-payg-premium" + serviceAccount: + serviceAccountName: "" + automountServiceAccountToken: true + ``` + + :::note + + 設定の詳細については、[ScalarDB Cluster のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardb-cluster.mdx)を参照してください。 + + ::: + + + + + +

    ScalarDL Ledger

    + + `scalardl-ledger-custom-values.yaml` ファイル内: + + ```yaml + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-ledger-aws-payg" + serviceAccount: + serviceAccountName: "" + automountServiceAccountToken: true + ``` + + :::note + + 設定の詳細については、[ScalarDL Ledger のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-ledger.mdx)を参照してください。 + + ::: + +

    ScalarDL Schema Loader for Ledger

    + + `schema-loader-ledger-custom-values.yaml` ファイル内の `[].image.repository` 構成を更新する必要はありません。ScalarDL Schema Loader のコンテナイメージは、[パブリックコンテナリポジトリ](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-schema-loader)で提供されています。 + + :::note + + 設定の詳細については、[ScalarDL Schema Loader のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx)を参照してください。 + + ::: + +
    + +

    ScalarDL Auditor

    + + `scalardl-auditor-custom-values.yaml` ファイル内: + + ```yaml + auditor: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-auditor-aws-payg" + serviceAccount: + serviceAccountName: "" + automountServiceAccountToken: true + ``` + + :::note + + 設定の詳細については、[ScalarDL Auditor のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-auditor.mdx)を参照してください。 + + ::: + +

    ScalarDL Schema Loader for Auditor

    + + `schema-loader-auditor-custom-values.yaml` ファイル内の `[].image.repository` 構成を更新する必要はありません。ScalarDL Schema Loader のコンテナイメージは、[パブリックコンテナリポジトリ](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-schema-loader) で提供されています。 + + :::note + + 設定の詳細については、[ScalarDL Schema Loader のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx)を参照してください。 + + ::: + +
    +
    + +1. Helm Charts を上記のカスタム値ファイルと組み合わせて使用して、Scalar 製品をデプロイします。使用している製品に応じて、次の例を参照してください。 + + + + ScalarDB Enterprise のエディションを選択します。 + + + ```console + helm install scalardb-cluster-standard scalar-labs/scalardb-cluster -f scalardb-cluster-standard-custom-values.yaml + ``` + + + ```console + helm install scalardb-cluster-premium scalar-labs/scalardb-cluster -f scalardb-cluster-premium-custom-values.yaml + ``` + + + + +

    ScalarDL Ledger

    + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + +

    ScalarDL Schema Loader for Ledger

    + + ```console + helm install schema-loader scalar-labs/schema-loading -f ./schema-loader-ledger-custom-values.yaml + ``` +
    + +

    ScalarDL Auditor

    + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + +

    ScalarDL Schema Loader for Auditor

    + + ```console + helm install schema-loader scalar-labs/schema-loading -f ./schema-loader-auditor-custom-values.yaml + ``` +
    +
    + +## **[非推奨] [BYOL]** Scalar Helm Chart を使用して AWS Marketplace から EKS (Amazon Elastic Kubernetes Service) にコンテナをデプロイする + +AWS Marketplace で Scalar 製品をサブスクライブすると、AWS Marketplace のプライベートコンテナレジストリ ([ECR](https://aws.amazon.com/ecr/)) から Scalar 製品のコンテナイメージをプルできます。このセクションでは、プライベートコンテナーレジストリから [EKS](https://aws.amazon.com/eks/) クラスターに BYOL オプションを使用して Scalar 製品をデプロイする方法について説明します。 + +1. インストールする Scalar 製品の Helm Chart のカスタム値ファイルを更新します。 + AWS Marketplace のプライベートコンテナレジストリ (ECR) をカスタム値ファイルの `[].image.repository` の値として指定する必要があります。使用している製品に応じて、次の例を参照してください。 + + + + ```yaml + scalardbCluster: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-cluster-node-aws-byol" + ``` + + :::note + + 設定の詳細については、[ScalarDB Cluster のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardb-cluster.mdx)を参照してください。 + + ::: + + + +

    ScalarDL Ledger

    + + `scalardl-ledger-custom-values.yaml` ファイル内: + + ```yaml + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger" + ``` + + :::note + + 設定の詳細については、[ScalarDL Ledger のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-ledger.mdx)を参照してください。 + + ::: + +

    ScalarDL Schema Loader for Ledger

    + + `schema-loader-ledger-custom-values.yaml` ファイル内の `[].image.repository` 構成を更新する必要はありません。ScalarDL Schema Loader のコンテナイメージは、[パブリックコンテナリポジトリ](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-schema-loader) で提供されています。 + + :::note + + 設定の詳細については、[ScalarDL Schema Loader のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx)を参照してください。 + + ::: + +
    + +

    ScalarDL Auditor

    + + `scalardl-auditor-custom-values.yaml` ファイル内: + + ```yaml + auditor: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-auditor" + ``` + + :::note + + 設定の詳細については、[ScalarDL Auditor のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-auditor.mdx)を参照してください。 + + ::: + +

    ScalarDL Schema Loader for Auditor

    + + `schema-loader-auditor-custom-values.yaml` ファイル内の `[].image.repository` 構成を更新する必要はありません。ScalarDL Schema Loader のコンテナイメージは、[パブリックコンテナリポジトリ](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-schema-loader) で提供されています。 + + :::note + + 設定の詳細については、[ScalarDL Schema Loader のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx)を参照してください。 + + ::: + +
    +
    + +1. 上記のカスタム値ファイルを含む Helm Chart を使用して、Scalar 製品をデプロイします。使用している製品に応じて、次の例を参照してください。 + + + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f scalardb-cluster-custom-values.yaml + ``` + + +

    ScalarDL Ledger

    + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + +

    ScalarDL Schema Loader for Ledger

    + + ```console + helm install schema-loader scalar-labs/schema-loading -f ./schema-loader-ledger-custom-values.yaml + ``` +
    + +

    ScalarDL Auditor

    + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + +

    ScalarDL Schema Loader for Auditor

    + + ```console + helm install schema-loader scalar-labs/schema-loading -f ./schema-loader-auditor-custom-values.yaml + ``` +
    +
    + +## **[非推奨] [BYOL]** Scalar Helm Chart を使用して、AWS Marketplace から EKS 以外の Kubernetes にコンテナをデプロイする + +1. [AWS Official Document (Installing or updating the latest version of the AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) に従って `aws` コマンドをインストールします。 + +1. [AWS Official Document (Configuration basics)](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) に従って、認証情報を使用して AWS CLI を設定します。 + +1. AWS Marketplace の ECR からコンテナイメージをプルするための `reg-ecr-mp-secrets` シークレットリソースを作成します。 + + ```console + kubectl create secret docker-registry reg-ecr-mp-secrets \ + --docker-server=709825985650.dkr.ecr.us-east-1.amazonaws.com \ + --docker-username=AWS \ + --docker-password=$(aws ecr get-login-password --region us-east-1) + ``` + +1. インストールする Scalar 製品の Helm Chart のカスタム値ファイルを更新します。 + AWS Marketplace のプライベートコンテナレジストリ (ECR) をカスタム値ファイルの `[].image.repository` の値として指定する必要があります。 + また、`[].imagePullSecrets` の値として `reg-ecr-mp-secrets` を指定する必要があります。使用している製品に応じて、次の例を参照してください。 + + + + ```yaml + scalardbCluster: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardb-cluster-node-aws-byol" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ``` + + :::note + + 設定の詳細については、[ScalarDB Cluster のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardb-cluster.mdx)を参照してください。 + + ::: + + + +

    ScalarDL Ledger

    + + `scalardl-ledger-custom-values.yaml` ファイル内: + + ```yaml + ledger: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-ledger" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ``` + + :::note + + 設定の詳細については、[ScalarDL Ledger のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-ledger.mdx)を参照してください。 + + ::: + +

    ScalarDL Schema Loader for Ledger

    + + `schema-loader-ledger-custom-values.yaml` ファイル内の `[].image.repository` 構成を更新する必要はありません。ScalarDL Schema Loader のコンテナイメージは、[パブリックコンテナリポジトリ](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-schema-loader)で提供されています。 + + :::note + + 設定の詳細については、[ScalarDL Schema Loader のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx)を参照してください。 + + ::: + +
    + +

    ScalarDL Auditor

    + + `scalardl-auditor-custom-values.yaml` ファイル内: + + ```yaml + auditor: + image: + repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalar-auditor" + imagePullSecrets: + - name: "reg-ecr-mp-secrets" + ``` + + :::note + + 設定の詳細については、[ScalarDL Auditor のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-auditor.mdx)を参照してください。 + + ::: + +

    ScalarDL Schema Loader for Auditor

    + + `schema-loader-auditor-custom-values.yaml` ファイル内の `[].image.repository` 構成を更新する必要はありません。ScalarDL Schema Loader のコンテナイメージは、[パブリックコンテナリポジトリ](https://github.com/orgs/scalar-labs/packages/container/package/scalardl-schema-loader)で提供されています。 + + :::note + + 設定の詳細については、[ScalarDL Schema Loader のカスタム値ファイルを構成する](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx)を参照してください。 + + ::: + +
    +
    + +1. 上記のカスタム値ファイルを含む Helm Chart を使用して、Scalar 製品をデプロイします。 + * 例 + このドキュメントの **[非推奨] [BYOL] Scalar Helm Chart を使用して AWS Marketplace から EKS (Amazon Elastic Kubernetes Service) にコンテナをデプロイする** セクションを参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AzureMarketplaceGuide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AzureMarketplaceGuide.mdx new file mode 100644 index 00000000..e9d69bd5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/AzureMarketplaceGuide.mdx @@ -0,0 +1,239 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Azure Marketplace を通じて Scalar 製品をインストールする方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::warning + +現在、Scalar 製品は Azure Marketplace では入手できません。Scalar 製品のコンテナイメージを取得するその他の方法については、[Scalar 製品のコンテナイメージを取得する方法](./HowToGetContainerImages.mdx)を参照してください。 + +::: + +Scalar 製品 (ScalarDB、ScalarDL、およびそれらのツール) は、コンテナーオファーとして Azure Marketplace で提供されます。このガイドでは、Azure Marketplace を通じて Scalar 製品をインストールする方法について説明します。 + +一部の Scalar 製品は商用ライセンスに基づいてライセンスされており、Azure Marketplace では BYOL (Bring Your Own License) として提供されていることに注意してください。適切なライセンスを持っていることを確認してください。 + +## Microsoft Azure Marketplace から Scalar 製品を入手する + +1. Scalar 製品を選択すると、Microsoft Azure Marketplace へのリンクが表示されます。 + + + + - [ScalarDB](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) + + + - [ScalarDL](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardl) + + + +1. **Get It Now** を選択します。 + +1. 職場の電子メールアドレスを使用して Azure Marketplace にサインインします。 + Microsoft Azureのアカウントとして使用している仕事用メールアドレスをご利用ください。 + すでにサインインしている場合、この手順は自動的にスキップされます。 + +1. あなたの情報を入力してください。 + **会社**は必須ではありませんが、入力してください。 + +1. 必要な **ソフトウェアプラン** をプルダウンから選択します。 + **ソフトウェアプラン** とは、コンテナイメージとライセンスの組み合わせを意味します。ご使用の *ソフトウェアプラン* を選択してください。 + +1. [**続行**] を選択します。 + [**続行**] を選択すると、自動的に Azure ポータルに移動します。 + +1. プライベートコンテナーレジストリ (Azure Container Registry) を作成します。 + 画面上のコマンドに従って、プライベートコンテナーレジストリを作成してください。 + Scalar 製品のコンテナイメージは、プライベートコンテナレジストリにコピーされます。 + +1. 必要に応じてこれらの手順を繰り返します。 + Kubernetes 上で Scalar 製品を実行するには複数のコンテナーイメージが必要ですが、Azure Marketplace は一度に1つのコンテナーイメージのみをコピーします。したがって、必要に応じて複数のソフトウェアプランを購読する (繰り返し購読操作) 必要があります。 + - 必要なコンテナイメージは以下となります。コンテナイメージの詳細を表示するには、Scalar 製品を選択します。 + + + + - ScalarDB Cluster (BYOL) + - [非推奨] ScalarDB Server のデフォルト (2vCPU、 4GiB Memory) + - [非推奨] ScalarDB GraphQL Server (optional) + - [非推奨] ScalarDB SQL Server (optional) + + + - ScalarDL Ledger のデフォルト (2vCPU、 4GiB Memory) + - ScalarDL Auditor のデフォルト (2vCPU、 4GiB Memory) + - **ScalarDL Auditor** はオプションです。**ScalarDL Auditor** を使用している場合は、サブスクライブしてください。 + - ScalarDL Schema Loader + + + +これで、プライベートコンテナーレジストリから Scalar 製品のコンテナーイメージをプルできるようになりました。 +Azure Container Registry の詳細については、 [Azure Container Registry documentation](https://docs.microsoft.com/en-us/azure/container-registry/) を参照してください。 + +## Scalar Helm Charts を使用して、プライベートコンテナーレジストリから AKS (Azure Kubernetes Service) にコンテナーをデプロイします。 + +1. AKS クラスターを作成するときに、プライベートコンテナーレジストリ (Azure Container Registry) を指定します。 + * GUI (Azure ポータル) + [**統合**] タブの **Azure Container Registry** パラメーターで、プライベートコンテナーレジストリを指定してください。 + * CLI ([az aks create](https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-create) コマンド) + `--attach-acr` フラグにプライベートコンテナーレジストリの名前を指定してください。また、`--attach-acr` フラグを指定した [az aks update](https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update) コマンドを使用して、既存の AKS クラスターの Azure Container Registry 統合を構成できます。詳細は [Azure Official Document](https://docs.microsoft.com/en-us/azure/aks/cluster-container-registry-integration) をご参照ください。 + +1. インストールする Scalar 製品の Helm Chart のカスタム値ファイルを更新します。 + プライベートコンテナレジストリをカスタム値ファイルの `[].image.repository` の値として指定する必要があります。使用している製品に応じて、次の例を参照してください。 + + + + ```yaml + scalardbCluster: + image: + repository: "example.azurecr.io/scalarinc/scalardb-cluster-node-azure-byol" + ``` + + + 使用している ScalarDL 製品を選択します。 + + + `scalardl-ledger-custom-values.yaml` ファイル内: + + ```yaml + ledger: + image: + repository: "example.azurecr.io/scalarinc/scalar-ledger" + ``` + + + `scalardl-auditor-custom-values.yaml` ファイル内: + + ```yaml + auditor: + image: + repository: "example.azurecr.io/scalarinc/scalar-auditor" + ``` + + + `schema-loader-custom-values.yaml` ファイル内: + + ```yaml + schemaLoading: + image: + repository: "example.azurecr.io/scalarinc/scalardl-schema-loader" + ``` + + + + + +1. 上記のカスタム値ファイルを含む Helm Chart を使用して、Scalar 製品をデプロイします。使用している製品に応じて、次の例を参照してください。 + + + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f scalardb-cluster-custom-values.yaml + ``` + + + 使用している ScalarDL 製品を選択します。 + + + ```console + helm install scalardl-ledger scalar-labs/scalardl -f ./scalardl-ledger-custom-values.yaml + ``` + + + ```console + helm install scalardl-auditor scalar-labs/scalardl-audit -f ./scalardl-auditor-custom-values.yaml + ``` + + + ```console + helm install schema-loader scalar-labs/schema-loading -f ./schema-loader-custom-values.yaml + ``` + + + + + +## Scalar Helm Chart を使用して、プライベートコンテナーレジストリから AKS (Azure Kubernetes Service) 以外の Kubernetes にコンテナーをデプロイします。 + +1. [Azure Official Document (How to install the Azure CLI)](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) に従って`az`コマンドをインストールします。 + +1. Azure CLI を使用してサインインします。 + ```console + az login + ``` + +1. [Azure Official Document (Azure Container Registry authentication with service principals)](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) に従って、プライベートコンテナーレジストリへの認証用の **service principal** を作成します。 + 次のステップでは、**Service principal ID** と **Service principal パスワード**を使用します。 + +1. プライベートコンテナーレジストリからコンテナーイメージをプルするための `reg-acr-secrets` シークレットリソースを作成します。 + ```console + kubectl create secret docker-registry reg-acr-secrets \ + --docker-server= \ + --docker-username= \ + --docker-password= + ``` + +1. インストールする Scalar 製品の Helm Chart のカスタム値ファイルを更新します。 + プライベートコンテナレジストリをカスタム値ファイルの `[].image.repository` の値として指定する必要があります。 + また、`[].imagePullSecrets` の値として `reg-acr-secrets` を指定する必要があります。使用している製品に応じて、次の例を参照してください。 + + + + ```yaml + scalardbCluster: + image: + repository: "example.azurecr.io/scalarinc/scalardb-cluster-node-azure-byol" + imagePullSecrets: + - name: "reg-acr-secrets" + ``` + + + 使用している ScalarDL 製品を選択します。 + + + `scalardl-ledger-custom-values.yaml` ファイル内: + + ```yaml + ledger: + image: + repository: "example.azurecr.io/scalarinc/scalar-ledger" + imagePullSecrets: + - name: "reg-acr-secrets" + ``` + + + `scalardl-auditor-custom-values.yaml` ファイル内: + + ```yaml + auditor: + image: + repository: "example.azurecr.io/scalarinc/scalar-auditor" + imagePullSecrets: + - name: "reg-acr-secrets" + ``` + + + `schema-loader-custom-values.yaml` ファイル内: + + ```yaml + schemaLoading: + image: + repository: "example.azurecr.io/scalarinc/scalardl-schema-loader" + imagePullSecrets: + - name: "reg-acr-secrets" + ``` + + + + + +1. 上記のカスタム値ファイルを含む Helm Chart を使用して、Scalar 製品をデプロイします。 + * 例 + このドキュメントの **Scalar Helm Charts を使用して、プライベートコンテナーレジストリから AKS (Azure Kubernetes Service) にコンテナーをデプロイします** セクションを参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupNoSQL.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupNoSQL.mdx new file mode 100644 index 00000000..afc68ea3 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupNoSQL.mdx @@ -0,0 +1,149 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes 環境で NoSQL データベースをバックアップする + +このガイドでは、ScalarDB または ScalarDL が Kubernetes 環境で使用するマネージドデータベースのトランザクション的に一貫したバックアップを作成する方法について説明します。NoSQL データベースまたは複数のデータベースを使用する場合は、トランザクション的に一貫したバックアップを作成するために ScalarDB または ScalarDL を**一時停止する必要がある**ことに注意してください。 + +ScalarDB がデータベースをバックアップする方法の詳細については、[A Guide on How to Backup and Restore Databases Used Through ScalarDB](https://scalardb.scalar-labs.com/docs/latest/backup-restore/) を参照してください。 + +このガイドでは、ポイントインタイムリカバリ (PITR) または同等の機能を使用していることを前提としています。そのため、復旧のためには継続的な取引がない期間を設ける必要があります。その後、PITR を使用してデータをその特定の期間に復元できます。進行中のトランザクションがない期間を作成せずにデータをある時点に復元すると、復元されたデータはトランザクション的に不整合となり、ScalarDB または ScalarDL がデータを適切に処理できなくなる可能性があります。 + +## データを復元する期間を作成し、バックアップを実行します + +1. バックアップ操作を開始する前に、`kubectl get pod` コマンドを実行して、次の4つの点を確認します。 + * **ScalarDB または ScalarDL ポッドの数。** ポッドの数を書き留めて、その数をバックアップの実行後のポッドの数と比較できるようにします。 + * **`NAME` 列の ScalarDB または ScalarDL ポッド名。** バックアップの実行後にそれらの名前とポッド名を比較できるように、ポッド名を書き留めます。 + * **ScalarDB または ScalarDL ポッドのステータスは、`STATUS` 列で `Running` になっています。** バックアップを続行する前に、ポッドが実行中であることを確認してください。次のステップではポッドを一時停止する必要があります。 + * ** `RESTARTS` 列の各ポッドの再起動回数。** バックアップ実行後の再起動回数と比較できるように、各ポッドの再起動回数を書き留めます。 +2. `scalar-admin` を使用して、ScalarDB または ScalarDL ポッドを一時停止します。ポッドを一時停止する方法の詳細については、このガイドの [`scalar-admin` の使用の詳細](BackupNoSQL.mdx#scalar-admin-の使用の詳細)セクションを参照してください。 +3. `pause completed` 時間を書き留めます。PITR 機能を使用してデータを復元する場合は、その時間を参照する必要があります。 +4. バックアップ機能を使用して、各データベースをバックアップします。自動バックアップと PITR 機能を有効にしている場合、管理されたデータベースは自動的にバックアップを実行します。クライアントクロックとデータベースクロック間のクロックスキューの問題を回避するのに十分な長い期間を作成できるように、約10秒待つ必要があることに注意してください。この10秒の期間は、PITR 機能を使用してデータを復元できる正確な期間です。 +5. `scalar-admin` を使用して、ScalarDB または ScalarDL ポッドの一時停止を解除します。ポッドの一時停止を解除する方法の詳細については、このガイドの [`scalar-admin` の使用の詳細](BackupNoSQL.mdx#scalar-admin-の使用の詳細)の使用の詳細」セクションを参照してください。 +6. `unpause started` 時刻を確認します。PITR 機能を使用してデータを復元できる正確な期間を確認するには、`unpause started` 時間を確認する必要があります。 +7. バックアップの実行後にポッドのステータスを確認します。バックアップ操作完了後、`kubectl get pod` コマンドを使用して以下の4点を確認する必要があります。 + * **ScalarDB または ScalarDL ポッドの数。** この数が、バックアップを実行する前に書き留めたポッドの数と一致することを確認します。 + * **`NAME` 列の ScalarDB または ScalarDL ポッド名。** 名前がバックアップを実行する前に書き留めたポッド名と一致することを確認します。 + * **ScalarDB または ScalarDL ポッドのステータスは、`STATUS` 列で `Running` になっています。** + * **`RESTARTS` 列の各ポッドの再起動回数。** カウントが、バックアップを実行する前に書き留めた再起動回数と一致することを確認します。 + + **2つの値のいずれかが異なる場合は、バックアップ操作を最初から再試行する必要があります。** 値が異なる理由は、バックアップの実行中に追加または再起動されたポッドが原因である可能性があります。そのような場合、それらのポッドは `unpause` 状態で実行されます。ポッドが `unpause` 状態にあると、バックアップデータのトランザクションの不整合が発生します。 +8. **(Amazon DynamoDB のみ)** DynamoDB の PITR 機能を使用する場合、この機能は PITR を使用して別の名前テーブルでデータを復元するため、バックアップを作成するために追加の手順を実行する必要があります。データを復元できる正確な期間を作成した後の追加手順の詳細については、[Kubernetes 環境でのデータベースの復元](RestoreDatabase.mdx#amazon-dynamodb) を参照してください。 + +## 複数のデータベースをバックアップする + +[Multi-storage Transactions](https://scalardb.scalar-labs.com/docs/latest/multi-storage-transactions/) または [Two-phase Commit Transactions](https://scalardb.scalar-labs.com/docs/latest/two-phase-commit-transactions/) 機能が使用するデータベースが2つ以上ある場合は、ScalarDB または ScalarDL のすべてのインスタンスを一時停止し、データベース内に進行中のトランザクションが存在しない同じ期間を作成する必要があります。 + +複数のデータベース間の整合性を確保するには、PITR 機能を使用してデータベースを同じ時点に復元する必要があります。 + +## `scalar-admin` の使用の詳細 + +### Kubernetes リソース名を確認する + +SRV サービス URL を `-s (--srv-service-url)` フラグに指定する必要があります。Kubernetes 環境では、SRV サービス URL の形式は `_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local` です。 + +Scalar Helm Chart を使用して ScalarDB または ScalarDL をデプロイする場合、`my-svc` および `my-namespace` は環境によって異なる場合があります。ヘッドレスサービス名を `my-svc` として指定し、名前空間を `my-namespace` として指定する必要があります。 + +* 例 + * ScalarDB Server + ```console + _scalardb._tcp.-headless..svc.cluster.local + ``` + * ScalarDL Ledger + ```console + _scalardl-admin._tcp.-headless..svc.cluster.local + ``` + * ScalarDL Auditor + ```console + _scalardl-auditor-admin._tcp.-headless..svc.cluster.local + ``` + +Helm リリース名によって、ヘッドレスサービス名 `-headless` が決まります。次のコマンドを実行すると、helm リリース名を確認できます。 + +```console +helm list -n ns-scalar +``` + +次のような結果が表示されます: + +```console +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +scalardb ns-scalar 1 2023-02-09 19:31:40.527130674 +0900 JST deployed scalardb-2.5.0 3.8.0 +scalardl-auditor ns-scalar 1 2023-02-09 19:32:03.008986045 +0900 JST deployed scalardl-audit-2.5.1 3.7.1 +scalardl-ledger ns-scalar 1 2023-02-09 19:31:53.459548418 +0900 JST deployed scalardl-4.5.1 3.7.1 +``` + +次のコマンドを実行すると、ヘッドレスサービス名 `-headless` を確認することもできます。 + +```console +kubectl get service -n ns-scalar +``` + +次のような結果が表示されます: + +```console +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-envoy LoadBalancer 10.99.245.143 60051:31110/TCP 2m2s +scalardb-envoy-metrics ClusterIP 10.104.56.87 9001/TCP 2m2s +scalardb-headless ClusterIP None 60051/TCP 2m2s +scalardb-metrics ClusterIP 10.111.213.194 8080/TCP 2m2s +scalardl-auditor-envoy LoadBalancer 10.111.141.43 40051:31553/TCP,40052:31171/TCP 99s +scalardl-auditor-envoy-metrics ClusterIP 10.104.245.188 9001/TCP 99s +scalardl-auditor-headless ClusterIP None 40051/TCP,40053/TCP,40052/TCP 99s +scalardl-auditor-metrics ClusterIP 10.105.119.158 8080/TCP 99s +scalardl-ledger-envoy LoadBalancer 10.96.239.167 50051:32714/TCP,50052:30857/TCP 109s +scalardl-ledger-envoy-metrics ClusterIP 10.97.204.18 9001/TCP 109s +scalardl-ledger-headless ClusterIP None 50051/TCP,50053/TCP,50052/TCP 109s +scalardl-ledger-metrics ClusterIP 10.104.216.189 8080/TCP 109s +``` + +### 一時停止 + +Kubernetes 環境の ScalarDB または ScalarDL ポッドに一時停止リクエストを送信できます。 + +* 例 + * ScalarDB Server + ```console + kubectl run scalar-admin-pause --image=ghcr.io/scalar-labs/scalar-admin: --restart=Never -it -- -c pause -s _scalardb._tcp.-headless..svc.cluster.local + ``` + * ScalarDL Ledger + ```console + kubectl run scalar-admin-pause --image=ghcr.io/scalar-labs/scalar-admin: --restart=Never -it -- -c pause -s _scalardl-admin._tcp.-headless..svc.cluster.local + ``` + * ScalarDL Auditor + ```console + kubectl run scalar-admin-pause --image=ghcr.io/scalar-labs/scalar-admin: --restart=Never -it -- -c pause -s _scalardl-auditor-admin._tcp.-headless..svc.cluster.local + ``` + +### 一時停止を解除する + +Kubernetes 環境の ScalarDB または ScalarDL ポッドに一時停止解除リクエストを送信できます。 + +* 例 + * ScalarDB Server + ```console + kubectl run scalar-admin-unpause --image=ghcr.io/scalar-labs/scalar-admin: --restart=Never -it -- -c unpause -s _scalardb._tcp.-headless..svc.cluster.local + ``` + * ScalarDL Ledger + ```console + kubectl run scalar-admin-unpause --image=ghcr.io/scalar-labs/scalar-admin: --restart=Never -it -- -c unpause -s _scalardl-admin._tcp.-headless..svc.cluster.local + ``` + * ScalarDL Auditor + ```console + kubectl run scalar-admin-unpause --image=ghcr.io/scalar-labs/scalar-admin: --restart=Never -it -- -c unpause -s _scalardl-auditor-admin._tcp.-headless..svc.cluster.local + ``` + +### `pause completed` 時刻と `unpause started` 時刻を確認する + +`scalar-admin` ポッドは、`pause completed` 時刻と `unpause started` 時刻を標準出力に出力します。`kubectl logs` コマンドを実行すると、それらの時間を確認することもできます。 + +```console +kubectl logs scalar-admin-pause +``` +```console +kubectl logs scalar-admin-unpause +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupRDB.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupRDB.mdx new file mode 100644 index 00000000..cb8586f8 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupRDB.mdx @@ -0,0 +1,21 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes 環境で RDB をバックアップする + +このガイドでは、ScalarDB または ScalarDL が Kubernetes 環境で使用する単一のリレーショナルデータベース (RDB) のバックアップを作成する方法について説明します。このガイドは、クラウドサービスプロバイダーの管理されたデータベースを使用していることを前提としていることに注意してください。 + +[Multi-storage Transactions](https://scalardb.scalar-labs.com/docs/latest/multi-storage-transactions/) または [Two-phase Commit Transactions](https://scalardb.scalar-labs.com/docs/latest/two-phase-commit-transactions/) 機能が使用する RDB が2つ以上ある場合は、代わりに [Kubernetes 環境で NoSQL データベースをバックアップする](BackupNoSQL.mdx)の手順に従う必要があります。 + +## バックアップを実行する + +バックアップを実行するには、管理されたデータベースで使用できる自動バックアップ機能を有効にする必要があります。この機能を有効にすると、追加のバックアップ操作を実行する必要がなくなります。各管理データベースのバックアップ構成の詳細については、次のガイドを参照してください。 + +* [AWS での ScalarDB/ScalarDL デプロイメント用のデータベースのセットアップ](SetupDatabaseForAWS.mdx) +* [Azure 上で ScalarDB/ScalarDL デプロイメント用のデータベースをセットアップする](SetupDatabaseForAzure.mdx) + +マネージド RDB はトランザクションの観点からバックアップデータの一貫性を保つため、マネージド RDB のポイントインタイムリカバリ (PITR) 機能を使用して、バックアップデータを任意の時点に復元できます。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupRestoreGuide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupRestoreGuide.mdx new file mode 100644 index 00000000..bc70bfc1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/BackupRestoreGuide.mdx @@ -0,0 +1,48 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes 環境で ScalarDB または ScalarDL データをバックアップおよび復元する + +このガイドでは、Kubernetes 環境で ScalarDB または ScalarDL データをバックアップおよび復元する方法について説明します。このガイドは、クラウドサービスプロバイダーのマネージドデータベースを ScalarDB または ScalarDL のバックエンドデータベースとして使用していることを前提としていることに注意してください。以下は、このガイドで使用が想定されている管理データベースのリストです。 + +* NoSQL: トランザクションをサポートしません + * Amazon DynamoDB + * Azure Cosmos DB for NoSQL +* リレーショナルデータベース (RDB):トランザクションをサポート + * Amazon RDS + * MySQL + * Oracle + * PostgreSQL + * SQL Server + * Amazon Aurora + * MySQL + * PostgreSQL + * Azureデータベース + * MySQL + * PostgreSQL + +ScalarDB で使用されるデータベースをトランザクション的に一貫した方法でバックアップおよび復元する方法の詳細については、[A Guide on How to Backup and Restore Databases Used Through ScalarDB](https://scalardb.scalar-labs.com/docs/latest/backup-restore/) を参照してください。 + +## バックアップを実行する + +### 使用しているデータベースの種類とデータベースの数を確認します。 + +バックアップと復元の実行方法は、データベースの種類 (NoSQL または RDB) と使用しているデータベースの数によって異なります。 + +#### NoSQL または複数のデータベース + +NoSQL データベースを使用している場合、または [Multi-storage Transactions](https://scalardb.scalar-labs.com/docs/latest/multi-storage-transactions/) または [Two-phase Commit Transactions](https://scalardb.scalar-labs.com/docs/latest/two-phase-commit-transactions/) 機能が使用するデータベースが2つ以上ある場合、詳細については [Kubernetes 環境で NoSQL データベースをバックアップする](BackupNoSQL.mdx)を参照してください。バックアップの実行方法について。 + +#### 単一 RDB + +単一のRDBを使用している場合のバックアップ方法については、[Kubernetes環境でRDBをバックアップする](BackupRDB.mdx)を参照してください。 + +[Multi-storage Transactions](https://scalardb.scalar-labs.com/docs/latest/multi-storage-transactions/) または [Two-phase Commit Transactions](https://scalardb.scalar-labs.com/docs/latest/two-phase-commit-transactions/) 機能が使用する RDB が2つ以上ある場合は、代わりに [Kubernetes 環境で NoSQL データベースをバックアップする](BackupNoSQL.mdx)の手順に従う必要があります。 + +## データベースを復元する + +管理されたデータベースからデータを復元する方法の詳細については、[Kubernetes 環境でのデータベースの復元](RestoreDatabase.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDB.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDB.mdx new file mode 100644 index 00000000..1ee3c5e8 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDB.mdx @@ -0,0 +1,107 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# ScalarDB Server 用の AKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB Server デプロイ用の Azure Kubernetes Service (AKS) クラスターを作成するための要件と推奨事項について説明します。ScalarDB Server を AKS クラスターにデプロイする方法の詳細については、[AKS に ScalarDB Server をデプロイする](ManualDeploymentGuideScalarDBServerOnAKS.mdx)を参照してください。 + +## あなたが始める前に + +次の要件、推奨事項、およびプロジェクトの要件に基づいて AKS クラスターを作成する必要があります。AKS クラスターの作成方法の詳細については、環境で使用しているツールに基づいて、次の Microsoft 公式ドキュメントを参照してください。 + +* [Azure CLI](https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-cli) +* [PowerShell](https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-powershell) +* [Azure Portal](https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-portal) + +## 要件 + +ScalarDB Server を展開するときは、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して AKS クラスターを作成します。 +* Kubernetes のバージョンとプロジェクトの要件に基づいて AKS クラスターを構成します。 + +## 推奨事項 (オプション) + +以下に、ScalarDB Server を展開するための推奨事項をいくつか示します。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### 少なくとも3つのワーカーノードと3つのポッドを作成します + +AKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の [サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardb-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なる [availability zones](https://learn.microsoft.com/en-us/azure/availability-zones/az-overview) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDB Server ノードプールのワーカーノードには 4vCPU / 8GB メモリノードを使用します。 + +商用ライセンスの観点から、ScalarDB Server を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDB Server ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDB Server ポッド (2vCPU / 4GB) +* Envoy プロキシ +* アプリケーションポッド (同じワーカーノード上でアプリケーションのポッドを実行することを選択した場合) +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、運用環境では、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが最小条件となります。また、システムのワークロードに応じて、AKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDB Server ポッド、アプリケーションのポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### ScalarDB Server ポッドのノードプールを作成する + +AKS は、既定でシステムポッド (AKS を実行し続けるために使用される) に優先される **agentpool** という名前のシステムノードプールを1つ作成します。ScalarDB Server ポッド用に **user** モードで別のノードプールを作成し、この追加のノードプールに ScalarDB Server ポッドをデプロイすることをお勧めします。 + +### AKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler](https://learn.microsoft.com/en-us/azure/aks/concepts-scale#horizontal-pod-autoscaler) を使用して ScalarDB Server ポッドを自動的にスケーリングする場合は、AKS でもクラスターオートスケーラーを構成する必要があります。詳細については、Microsoft の公式ドキュメント [Cluster autoscaler](https://learn.microsoft.com/en-us/azure/aks/concepts-scale#cluster-autoscaler) を参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、AKS がスケーリング後にネットワークの問題なく動作できるように、十分な数の IP が存在することを確認するために、AKS の仮想ネットワーク (VNet) にサブネットを作成する必要があります。必要な IP の数は、ネットワークプラグインによって異なります。必要な IP 数の詳細については、以下を参照してください。 + +* [Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) +* [Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) + +### プライベートネットワーク上に AKS クラスターを作成する + +ScalarDB Server はインターネットアクセス経由でユーザーにサービスを直接提供しないため、プライベートネットワーク (VNet のプライベートサブネット) 上に AKS クラスターを作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDB Server にアクセスすることをお勧めします。 + +### 必要に応じて、Azure CNI を使用して AKS クラスターを作成します。 + +AKS の既定のネットワークプラグインは [kubenet](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) です。要件が kubenet と一致しない場合は、[Azure Container Networking Interface (CNI)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) を使用する必要があります。 + +たとえば、1つの AKS クラスターに複数の ScalarDB Server 環境をデプロイし (マルチテナントの ScalarDB Server をデプロイするなど)、[Kubernetes NetworkPolicies](https://kubernetes.io/docs/concepts/services-networking/network-policies/) を使用して各テナント間の接続を制御したい場合、kubenet は Calico Network のみをサポートします。[Azure support team does not support](https://learn.microsoft.com/en-us/azure/aks/use-network-policies#differences-between-azure-network-policy-manager-and-calico-network-policy-and-their-capabilities) ポリシー。Calico ネットワークポリシーは、Calico コミュニティまたは追加の有料サポートを通じてのみサポートされることに注意してください。 + +ただし、Azure サポートチームとエンジニアリングチームは Azure CNI をサポートします。したがって、Kubernetes NetworkPolicies を使用して Azure サポートチームからサポートを受けたい場合は、Azure CNI を使用する必要があります。kubenet と Azure CNI の違いの詳細については、次の Microsoft 公式ドキュメントを参照してください。 + +* [Network concepts for applications in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/concepts-network) +* [Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) +* [Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDB Server では未使用の接続を制限する必要があります。未使用の接続を制限するには、[network security groups](https://learn.microsoft.com/en-us/azure/virtual-network/network-security-groups-overview) など、Azure のいくつかのセキュリティ機能を使用できます。 + +ScalarDB Server がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDB Server + * 60051/TCP (クライアントからのリクエストを受け付ける) + * 8080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDB Server とともに使用) + * 60051/TCP (ScalarDB Server の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 構成ファイル (`database.properties`) で ScalarDB Server のデフォルトのリスニングポートを変更する場合は、構成したポートを使用して接続を許可する必要があります。 +- AKS 自体が使用する接続も許可する必要があります。AKS トラフィック要件の詳細については、[Control egress traffic using Azure Firewall in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/limit-egress-traffic) を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDL.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDL.mdx new file mode 100644 index 00000000..ad064480 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDL.mdx @@ -0,0 +1,113 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger の AKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Ledger デプロイ用の Azure Kubernetes Service (AKS) クラスターを作成するための要件と推奨事項について説明します。ScalarDL Ledger を AKS クラスターにデプロイする方法の詳細については、[AKS に ScalarDL Ledger をデプロイする](ManualDeploymentGuideScalarDLOnAKS.mdx)を参照してください。 + +## あなたが始める前に + +次の要件、推奨事項、およびプロジェクトの要件に基づいて AKS クラスターを作成する必要があります。AKS クラスターの作成方法の詳細については、環境で使用しているツールに基づいて、次の Microsoft 公式ドキュメントを参照してください。 + +* [Azure CLI](https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-cli) +* [PowerShell](https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-powershell) +* [Azure portal](https://learn.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-portal) + +## 要件 + +ScalarDL Ledger を展開するときは、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して AKS クラスターを作成します。 +* Kubernetes のバージョンとプロジェクトの要件に基づいて AKS クラスターを構成します。 + +:::warning + +ScalarDL でのビザンチン障害検出が適切に機能するには、ScalarDL Ledger デプロイと同じ AKS クラスターにアプリケーションポッドをデプロイしないでください。 + +::: + +## 推奨事項 (オプション) + +以下は、ScalarDL Ledger を展開するための推奨事項の一部です。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### 少なくとも3つのワーカーノードと3つのポッドを作成します + +AKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の [サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なる [availability zones](https://learn.microsoft.com/en-us/azure/availability-zones/az-overview) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDL Ledger ノードプールのワーカーノードには 4vCPU / 8GB メモリノードを使用します + +商用ライセンスの観点から、ScalarDL Ledger を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDL Ledger ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDL Ledger ポッド (2vCPU / 4GB) +* Envoy プロキシ +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが運用環境の最小環境となります。また、システムのワークロードに応じて、AKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDL Ledger ポッドなど) も考慮する必要があります。さらに、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、 ワーカーノードのリソースを決定するときは、ワーカーノード上のポッドの最大数を考慮する必要があります。 + +### ScalarDL Ledger ポッドのノードプールを作成する + +AKS は、既定でシステムポッド (AKS を実行し続けるために使用される) に優先される **agentpool** という名前のシステムノードプールを1つ作成します。ScalarDL Ledger ポッド用に **user** モードで別のノードプールを作成し、この追加のノードプールに ScalarDL Ledger ポッドをデプロイすることをお勧めします。 + +### AKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler](https://learn.microsoft.com/en-us/azure/aks/concepts-scale#horizontal-pod-autoscaler) を使用して ScalarDL Ledger ポッドを自動的にスケーリングする場合は、クラスターを構成する必要があります。AKS のオートスケーラーも同様です。詳細については、[Cluster autoscaler](https://learn.microsoft.com/en-us/azure/aks/concepts-scale#cluster-autoscaler) にある Microsoft の公式ドキュメントを参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、AKS がスケーリング後にネットワークの問題なく動作できるように、十分な数の IP が存在することを確認するために、AKS の仮想ネットワーク (VNet) にサブネットを作成する必要があります。必要な IP の数は、ネットワークプラグインによって異なります。必要な IP 数の詳細については、以下を参照してください。 + +* [Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) +* [Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) + +### プライベートネットワーク上に AKS クラスターを作成する + +ScalarDL Ledger はインターネットアクセス経由でユーザーにサービスを直接提供しないため、プライベートネットワーク (VNet のプライベートサブネット) 上に AKS クラスターを作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDL Ledger にアクセスすることをお勧めします。 + +### 必要に応じて、Azure CNI を使用して AKS クラスターを作成します。 + +AKS の既定のネットワークプラグインは [kubenet](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) です。要件が kubenet と一致しない場合は、[Azure Container Networking Interface (CNI)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) を使用する必要があります。 + +たとえば、1つの AKS クラスターに複数の ScalarDL Ledger 環境をデプロイし (マルチテナントの ScalarDL Ledger をデプロイするなど)、[Kubernetes NetworkPolicies](https://kubernetes.io/docs/concepts/services-networking/network-policies/) を使用して各テナント間の接続を制御する場合、kubenet は Calico ネットワークポリシーのみをサポートします。[Azure サポートチームはサポートしていません](https://learn.microsoft.com/en-us/azure/aks/use-network-policies#differences-between-azure-network-policy-manager-and-calico-network-policy-and-their-capabilities)。Calico ネットワークポリシーは、Calico コミュニティまたは追加の有料サポートを通じてのみサポートされることに注意してください。 + +ただし、Azure サポートチームとエンジニアリングチームは Azure CNI をサポートします。したがって、Kubernetes NetworkPolicies を使用して Azure サポートチームからサポートを受けたい場合は、Azure CNI を使用する必要があります。kubenet と Azure CNI の違いの詳細については、次の Microsoft 公式ドキュメントを参照してください。 + +* [Network concepts for applications in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/concepts-network) +* [Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) +* [Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDL Ledger では未使用の接続を制限する必要があります。未使用の接続を制限するには、[ネットワークセキュリティグループ] など、Azure のいくつかのセキュリティ機能を使用できます。 + +ScalarDL Ledger がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDL Ledger + * 50051/TCP (クライアントからのリクエストを受け付ける) + * 50052/TCP (クライアントからの特権リクエストを受け入れます) + * 50053/TCP (scalar-admin クライアントツールからの一時停止および一時停止解除リクエストを受け入れます) + * 8080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDL Ledger とともに使用) + * 50051/TCP (ScalarDL Ledger の負荷分散) + * 50052/TCP (ScalarDL Ledger の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 設定ファイル (`ledger.properties`) で ScalarDL Ledger のデフォルトのリスニングポートを変更する場合は、設定したポートを使用して接続を許可する必要があります。 +- AKS 自体が使用する接続も許可する必要があります。AKS トラフィック要件の詳細については、[Azure Kubernetes Service (AKS) の Azure Firewall を使用した下りトラフィックの制御](https://learn.microsoft.com/en-us/azure/aks/limit-egress-traffic)を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDLAuditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDLAuditor.mdx new file mode 100644 index 00000000..84fba9c5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarDLAuditor.mdx @@ -0,0 +1,132 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger および ScalarDL Auditor 用の AKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Ledger および ScalarDL Auditor のデプロイ用の Azure Kubernetes Service (AKS) クラスターを作成するための要件と推奨事項について説明します。AKS クラスターに ScalarDL Ledger と ScalarDL Auditor をデプロイする方法の詳細については、[AKS に ScalarDL Ledger と ScalarDL Auditor をデプロイする](ManualDeploymentGuideScalarDLAuditorOnAKS.mdx)を参照してください。 + +## あなたが始める前に + +次の要件、推奨事項、およびプロジェクトの要件に基づいて AKS クラスターを作成する必要があります。AKS クラスターの作成方法の詳細については、環境で使用しているツールに基づいて、次の Microsoft 公式ドキュメントを参照してください。 + +* [Azure CLI](https://learn.microsoft.com/ja-jp/azure/aks/learn/quick-kubernetes-deploy-cli) +* [PowerShell](https://learn.microsoft.com/ja-jp/azure/aks/learn/quick-kubernetes-deploy-powershell) +* [Azure portal](https://learn.microsoft.com/ja-jp/azure/aks/learn/quick-kubernetes-deploy-portal) + +## 要件 + +ScalarDL Ledger と ScalarDL Auditor を展開する場合は、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して2つの AKS クラスターを作成します。 + * ScalarDL Ledger 用の1つの AKS クラスター + * ScalarDL Auditor 用の1つの AKS クラスター +* Kubernetes のバージョンとプロジェクトの要件に基づいて AKS クラスターを構成します。 + * 仮想ネットワーク(VNet) は以下のように設定します。 + * [Virtual network peering](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-manage-peering) を使用して、**AKS の VNet (Ledger 用)** と **AKS の VNet (Auditor 用)** を接続します。これを行うには、VNet の作成時に **AKS の VNet (Ledger 用)** と **AKS の VNet (Auditor 用)** に異なる IP 範囲を指定する必要があります。 + * ScalarDL (Auditor モード) が適切に動作するように **Ledger と Auditor 間の接続**を許可します。 + * これらのネットワーク要件の詳細については、[ScalarDL Auditor Mode のネットワークピアリングの構成](NetworkPeeringForScalarDLAuditor.mdx)を参照してください。 + +:::warning + +ScalarDL でのビザンチン障害検出が適切に機能するには、ScalarDL Ledger および ScalarDL Auditor のデプロイと同じ AKS クラスターにアプリケーションポッドをデプロイしないでください。 + +::: + +## 推奨事項 (オプション) + +以下は、ScalarDL Ledger および ScalarDL Auditor を展開するための推奨事項の一部です。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### AKS クラスターごとに少なくとも3つのワーカーノードと3つのポッドを作成します。 + +AKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。ワーカーノードに3つのPodを分散させるための `podAntiAffinity` の [ScalarDL Ledgerサンプル設定](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-custom-values.yaml) と [ScalarDL Auditorサンプル設定](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-audit-custom-values.yaml)をご覧ください。 + +:::note + +ワーカーノードを異なる[アベイラビリティゾーン](https://learn.microsoft.com/en-us/azure/availability-zones/az-overview) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDL Ledger および ScalarDL Auditor ノードプールのワーカーノードには 4vCPU / 8GB メモリノードを使用します。 + +商用ライセンスの観点から、ScalarDL Ledger または ScalarDL Auditor を実行する各ポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDL Ledger および ScalarDL Auditor ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDL Ledger の AKS クラスター + * ScalarDL Ledger ポッド (2vCPU / 4GB) + * Envoy プロキシ + * 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) + * Kubernetes コンポーネント +* ScalarDL Auditor 用の AKS クラスター + * ScalarDL Auditor ポッド (2vCPU / 4GB) + * Envoy プロキシ + * 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) + * Kubernetes コンポーネント + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods-per-aks-cluster)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。また、ビザンチン障害検出が適切に機能するには、ScalarDL Ledger および ScalarDL Auditor のデプロイと同じ AKS クラスターにアプリケーションポッドをデプロイできないことに注意してください。 + +ただし、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが運用環境の最小環境となります。また、システムのワークロードに応じて、AKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDL Ledger ポッド、ScalarDL Auditor ポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### ScalarDL Ledger および ScalarDL Auditor ポッドのノードプールを作成する + +AKS は、既定でシステムポッド (AKS を実行し続けるために使用される) に優先される **agentpool** という名前のシステムノードプールを1つ作成します。ScalarDL Ledger および ScalarDL Auditor ポッド用に **user** モードで追加のノードプールを作成し、それらの追加のノードプールに ScalarDL Ledger および ScalarDL Auditor ポッドをデプロイすることをお勧めします。 + +### AKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler)](https://learn.microsoft.com/en-us/azure/aks/concepts-scale#horizontal-pod-autoscaler) を使用して ScalarDL Ledger および ScalarDL Auditor ポッドを自動的にスケーリングする場合は、AKS でもクラスターオートスケーラーを構成する必要があります。詳細については、Microsoft の公式ドキュメント [Cluster autoscaler](https://learn.microsoft.com/en-us/azure/aks/concepts-scale#cluster-autoscaler) を参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、AKS がスケーリング後にネットワークの問題なく動作できるように、十分な数の IP が存在することを確認するために AKS 用の VNet にサブネットを作成する必要があります。必要な IP の数は、ネットワークプラグインによって異なります。必要な IP 数の詳細については、以下を参照してください。 + +* [Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) +* [Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) + +### プライベートネットワーク上に AKS クラスターを作成する + +ScalarDL Ledger と ScalarDL Auditor はインターネットアクセス経由でユーザーに直接サービスを提供しないため、プライベートネットワーク (VNet のプライベートサブネット) 上に AKS クラスターを作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDL Ledger および ScalarDL Auditor にアクセスすることをお勧めします。 + +### 必要に応じて、Azure CNI を使用して AKS クラスターを作成します。 + +AKS の既定のネットワークプラグインは [kubenet](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) です。要件が kubenet と一致しない場合は、[Azure Container Networking Interface (CNI)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) を使用する必要があります。 + +たとえば、複数の ScalarDL Ledger 環境と ScalarDL Auditor 環境を2つの AKS クラスターではなく1つの AKS クラスターのみにデプロイし (マルチテナントの ScalarDL をデプロイするなど)、[Kubernetes NetworkPolicies](https://kubernetes.io/docs/concepts/services-networking/network-policies/) を使用して各テナント間の接続を制御する場合、kubenet は Calico ネットワークポリシーのみ。[Azure サポートチームはサポートしていません](https://learn.microsoft.com/en-us/azure/aks/use-network-policies#differences-between-azure-network-policy-manager-and-calico-network-policy-and-their-capabilities)。Calico ネットワークポリシーは、Calico コミュニティまたは追加の有料サポートを通じてのみサポートされることに注意してください。 + +ただし、Azure サポートチームとエンジニアリングチームは Azure CNI をサポートします。したがって、Kubernetes NetworkPolicies を使用して Azure サポートチームからサポートを受けたい場合は、Azure CNI を使用する必要があります。kubenet と Azure CNI の違いの詳細については、次の Microsoft 公式ドキュメントを参照してください。 + +* [Network concepts for applications in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/concepts-network) +* [Use kubenet networking with your own IP address ranges in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-kubenet) +* [Configure Azure CNI networking in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni) + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDL および ScalarDL Auditor では、未使用の接続を制限する必要があります。未使用の接続を制限するには、[network security groups](https://learn.microsoft.com/en-us/azure/virtual-network/network-security-groups-overview) などの Azure のセキュリティ機能を使用できます。 + +ScalarDL Ledger および ScalarDL Auditor がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDL Ledger + * 50051/TCP (クライアントおよび ScalarDL Auditor からのリクエストを受け入れる) + * 50052/TCP (クライアントおよび ScalarDL Auditor からの特権リクエストを受け入れます) + * 50053/TCP (scalar-admin クライアントツールからの一時停止/一時停止解除リクエストを受け入れます) + * 8080/TCP (監視リクエストを受け付ける) +* ScalarDL Auditor + * 40051/TCP (クライアントからのリクエストを受け付ける) + * 40052/TCP (クライアントからの特権リクエストを受け入れます) + * 40053/TCP (scalar-admin クライアントツールからの一時停止および一時停止解除リクエストを受け入れます) + * 8080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDL Ledger および ScalarDL Auditor とともに使用) + * 50051/TCP (ScalarDL Ledger の負荷分散) + * 50052/TCP (ScalarDL Ledger の負荷分散) + * 40051/TCP (ScalarDL Auditor の負荷分散) + * 40052/TCP (ScalarDL Auditor の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 設定ファイル (それぞれ `ledger.properties` と `auditor.properties`) で ScalarDL Ledger と ScalarDL Auditor のデフォルトのリスニングポートを変更する場合は、設定したポートを使用して接続を許可する必要があります。 +- AKS 自体が使用する接続も許可する必要があります。AKS トラフィック要件の詳細については、[Control egress traffic using Azure Firewall in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/limit-egress-traffic) を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarProducts.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarProducts.mdx new file mode 100644 index 00000000..9e8927fc --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateAKSClusterForScalarProducts.mdx @@ -0,0 +1,24 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar 製品用の AKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar 製品用の Azure Kubernetes Service (AKS) クラスターを作成するには、次を参照してください。 + +* [ScalarDB Server 用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarDB.mdx) +* [ScalarDL Ledger 用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarDL.mdx) +* [ScalarDL Ledger および ScalarDL Auditor 用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarDLAuditor.mdx) + +Scalar 製品を AKS にデプロイするには、次を参照してください。 + +* [AKS に ScalarDB Server をデプロイする](ManualDeploymentGuideScalarDBServerOnAKS.mdx) +* [AKS に ScalarDL Ledger をデプロイする](ManualDeploymentGuideScalarDLOnAKS.mdx) +* [ScalarDL Ledger と ScalarDL Auditor を AKS にデプロイする](ManualDeploymentGuideScalarDLAuditorOnAKS.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateBastionServer.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateBastionServer.mdx new file mode 100644 index 00000000..059eb28b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateBastionServer.mdx @@ -0,0 +1,51 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 踏み台サーバーを作成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、踏み台サーバーを作成し、Scalar 製品を展開するためのいくつかのツールをインストールする方法について説明します。 + +## Kubernetes クラスターと同じプライベートネットワーク上にサーバーを作成します + +Scalar 製品用の Kubernetes クラスターはプライベートネットワーク上に作成することをお勧めします。プライベートネットワーク上に Kubernetes クラスターを作成する場合は、Kubernetes クラスターにアクセスするために、同じプライベートネットワーク上に踏み台サーバーを作成する必要があります。 + +## ツールをインストールする + +公式ドキュメントに従って、次のツールを踏み台サーバーにインストールしてください。 + +* [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) +* [helm](https://helm.sh/docs/intro/install/) + +## kubeconfig の構成 + +kubectl コマンドをインストールした後、Kubernetes クラスターにアクセスできるように **kubeconfig** を構成する必要があります。各マネージド Kubernetes での kubeconfig の設定方法の詳細については、次の公式ドキュメントを参照してください。 + +Amazon EKS (Amazon Elastic Kubernetes Service) を使用する場合は、公式ドキュメント [Installing or updating the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) に従って **AWS CLI** をインストールする必要があります。その後、[Creating or updating a kubeconfig file for an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) で kubeconfig を設定する方法を確認できます。 + +AKS (Azure Kubernetes Service) を使用する場合は、公式ドキュメント [How to install the Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) に従って **Azure CLI** をインストールする必要があります。その後、[az aks get-credentials](https://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-get-credentials) で kubeconfig を構成する方法を確認できます。 + +## インストールを確認する + +ツールがインストールされているかどうかは、次のようにして確認できます。 + +* kubectl + ```console + kubectl version --client + ``` +* helm + ```console + helm version + ``` + +次のように、kubeconfig が適切に構成されているかどうかを確認することもできます。URL 応答が表示された場合、kubectl はクラスターにアクセスするように正しく構成されています。 +```console +kubectl cluster-info +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDB.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDB.mdx new file mode 100644 index 00000000..57c58162 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDB.mdx @@ -0,0 +1,90 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# (非推奨) ScalarDB Server 用の EKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +:::warning + +ScalarDB Server は非推奨になりました。代わりに [ScalarDB Cluster](ManualDeploymentGuideScalarDBClusterOnEKS.mdx) を使用してください。 + +::: + +このドキュメントでは、ScalarDB Server デプロイメント用の Amazon Elastic Kubernetes Service (EKS) クラスターを作成するための要件と推奨事項について説明します。ScalarDB Server を EKS クラスターにデプロイする方法の詳細については、[ScalarDB Server を Amazon EKS にデプロイする](ManualDeploymentGuideScalarDBServerOnEKS.mdx)を参照してください。 + +## あなたが始める前に + +EKS クラスターは、次の要件、推奨事項、およびプロジェクトの要件に基づいて作成する必要があります。EKS クラスターの作成方法の詳細については、Amazon の公式ドキュメント [Creating an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) を参照してください。 + +## 要件 + +ScalarDB Server を展開するときは、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して EKS クラスターを作成します。 +* Kubernetes のバージョンとプロジェクトの要件に基づいて EKS クラスターを構成します。 + +## 推奨事項 (オプション) + +以下に、ScalarDB Server を展開するための推奨事項をいくつか示します。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### 少なくとも3つのワーカーノードと3つのポッドを作成します + +EKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の[サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardb-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なる [availability zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDB Server ノードグループのワーカーノードには 4vCPU / 8GB メモリノードを使用します。 + +商用ライセンスの観点から、ScalarDB Server を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDB Server ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDB Server ポッド (2vCPU / 4GB) +* Envoy プロキシ +* アプリケーションポッド (同じワーカーノード上でアプリケーションのポッドを実行することを選択した場合) +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、運用環境では、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが最小条件となります。システムのワークロードに応じて、EKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDB Server ポッド、アプリケーションのポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### EKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) を使用して ScalarDB Server ポッドを自動的にスケーリングする場合は、EKS でクラスターオートスケーラーも構成する必要があります。詳細については、Amazon の公式ドキュメント [Autoscaling](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html#cluster-autoscaler) を参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、プレフィックス (`/24` など) を付けて EKS 用の Amazon Virtual Private Cloud (VPC) にサブネットを作成し、十分な数の IP が存在することを確認して、EKS がクラスターオートスケーラーなしで動作できるようにする必要があります。スケーリング後のネットワークの問題。 + +### プライベートネットワーク上に EKS クラスターを作成する + +ScalarDB Server はインターネットアクセス経由でユーザーにサービスを直接提供しないため、プライベートネットワーク (VPC 内のプライベートサブネット) 上に EKS クラスターを作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDB Server にアクセスすることをお勧めします。 + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDB Server では未使用の接続を制限する必要があります。未使用の接続を制限するには、[security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) や [network access control lists](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) など、AWS のいくつかのセキュリティ機能を使用できます。 + +ScalarDB Server がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDB Server + * 60051/TCP (クライアントからのリクエストを受け付ける) + * 8080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDB Server とともに使用) + * 60051/TCP (ScalarDB Server の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 構成ファイル (`database.properties`) で ScalarDB Server のデフォルトのリスニングポートを変更する場合は、構成したポートを使用して接続を許可する必要があります。 +- EKS 自体が使用する接続も許可する必要があります。Amazon EKS セキュリティグループの要件の詳細については、[Amazon EKS security group requirements and considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDBCluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDBCluster.mdx new file mode 100644 index 00000000..4a46d3c6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDBCluster.mdx @@ -0,0 +1,90 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster 用の EKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB Cluster 展開用の Amazon Elastic Kubernetes Service (EKS) クラスターを作成するための要件と推奨事項について説明します。ScalarDB Cluster を EKS クラスターにデプロイする方法の詳細については、[Amazon EKS に ScalarDB Cluster をデプロイする](ManualDeploymentGuideScalarDBClusterOnEKS.mdx) を参照してください。 + +## あなたが始める前に + +EKS クラスターは、次の要件、推奨事項、およびプロジェクトの要件に基づいて作成する必要があります。EKS クラスターの作成方法の詳細については、Amazon の公式ドキュメント [Creating an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) を参照してください。 + +## 要件 + +ScalarDB Cluster をデプロイする場合は、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して EKS クラスターを作成します。 +* Kubernetes のバージョンとプロジェクトの要件に基づいて EKS クラスターを構成します。 + +## 推奨事項 (オプション) + +以下は、ScalarDB Cluster をデプロイするための推奨事項の一部です。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### 少なくとも3つのワーカーノードと3つのポッドを作成します + +EKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の[サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardb-cluster-custom-values-indirect-mode.yaml)を参照できます。 + +:::note + +ワーカーノードを異なる [availability zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDB Cluster ノードグループのワーカーノードには 4vCPU / 8GB メモリノードを使用します。 + +商用ライセンスの観点から、ScalarDB Cluster を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDB Cluster ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDB Cluster ポッド (2vCPU / 4GB) +* Envoy プロキシ (`indirect` クライアントモードを使用する場合、または Java 以外のプログラミング言語を使用する場合) +* アプリケーションポッド (同じワーカーノード上でアプリケーションのポッドを実行することを選択した場合) +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +:::note + +`direct-kubernetes` モードを使用する場合は、Envoy ポッドをデプロイする必要はありません。 + +::: + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、運用環境では、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが最小条件となります。システムのワークロードに応じて、EKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDB Cluster ポッド、アプリケーションのポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### EKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) を使用して ScalarDB Cluster ポッドを自動的にスケーリングする場合は、EKS でもクラスターオートスケーラーを構成する必要があります。詳細については、Amazon の公式ドキュメント [Autoscaling](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html#cluster-autoscaler) を参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、プレフィックス (`/24` など) を付けて EKS 用の Amazon Virtual Private Cloud (VPC) にサブネットを作成し、十分な数の IP が存在することを確認して、EKS がクラスターオートスケーラーなしで動作できるようにする必要があります。スケーリング後のネットワークの問題。 + +### プライベートネットワーク上に EKS クラスターを作成する + +ScalarDB Cluster はインターネットアクセス経由でユーザーにサービスを直接提供しないため、EKS クラスターはプライベートネットワーク (VPC 内のプライベートサブネット) 上に作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDB Cluster にアクセスすることをお勧めします。 + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDB Cluster で未使用の接続を制限する必要があります。未使用の接続を制限するには、[security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) や [network access control lists](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) など、AWS のいくつかのセキュリティ機能を使用できます。 + +ScalarDB Cluster がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDB Cluster + * 60053/TCP (クライアントからの gRPC または SQL リクエストを受け入れます) + * 8080/TCP (クライアントからの GraphQL リクエストを受け入れます) + * 9080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDB Cluster の `間接` モードで使用) + * 60053/TCP (ScalarDB Cluster の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 構成ファイル (`scalardb-cluster-node.properties`) で ScalarDB Clusterのデフォルトのリスニングポートを変更する場合は、構成したポートを使用して接続を許可する必要があります。 +- EKS 自体が使用する接続も許可する必要があります。Amazon EKS セキュリティグループの要件の詳細については、[Amazon EKS security group requirements and considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDL.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDL.mdx new file mode 100644 index 00000000..2e58840a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDL.mdx @@ -0,0 +1,90 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger の EKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Ledger デプロイ用の Amazon Elastic Kubernetes Service (EKS) クラスターを作成するための要件と推奨事項について説明します。ScalarDL Ledger を EKS クラスターにデプロイする方法の詳細については、[ScalarDL Ledger を Amazon EKS にデプロイする](ManualDeploymentGuideScalarDLOnEKS.mdx)を参照してください。 + +## あなたが始める前に + +EKS クラスターは、次の要件、推奨事項、およびプロジェクトの要件に基づいて作成する必要があります。EKS クラスターの作成方法の詳細については、Amazon の公式ドキュメント [Creating an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) を参照してください。 + +## 要件 + +ScalarDL Ledger を展開するときは、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して EKS クラスターを作成します。 +* Kubernetes のバージョンとプロジェクトの要件に基づいて EKS クラスターを構成します。 + +:::warning + +ScalarDL でのビザンチン障害検出が適切に機能するには、ScalarDL Ledger デプロイメントと同じ EKS クラスターにアプリケーションポッドをデプロイしないでください。 + +::: + +## 推奨事項 (オプション) + +以下は、ScalarDL Ledger を展開するための推奨事項の一部です。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### 少なくとも3つのワーカーノードと3つのポッドを作成します + +EKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の[サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なる [availability zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDL Ledger ノードグループのワーカーノードには 4vCPU / 8GB メモリノードを使用します + +商用ライセンスの観点から、ScalarDL Ledger を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDL Ledger ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDL Ledger ポッド (2vCPU / 4GB) +* Envoy プロキシ +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが運用環境の最小環境となります。システムのワークロードに応じて、EKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDL Ledger ポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### EKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) を使用して ScalarDL Ledger ポッドを自動的にスケーリングする場合は、EKS でクラスターオートスケーラーも構成する必要があります。詳細については、Amazon の公式ドキュメント [Autoscaling](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html#cluster-autoscaler) を参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、プレフィックス (`/24`など) を付けて EKS 用の Amazon Virtual Private Cloud (VPC) にサブネットを作成し、十分な数の IP が存在することを確認して、EKS がクラスターオートスケーラーなしで動作できるようにする必要があります。スケーリング後のネットワークの問題。 + +### プライベートネットワーク上に EKS クラスターを作成する + +ScalarDL Ledger はインターネットアクセス経由でユーザーにサービスを直接提供しないため、プライベートネットワーク (VPC 内のプライベートサブネット) 上に EKS クラスターを作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDL Ledger にアクセスすることをお勧めします。 + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDL Ledger では未使用の接続を制限する必要があります。未使用の接続を制限するには、[security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) や [network access control lists](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) など、AWS のいくつかのセキュリティ機能を使用できます。 + +ScalarDL Ledger がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDL Ledger + * 50051/TCP (クライアントからのリクエストを受け付ける) + * 50052/TCP (クライアントからの特権リクエストを受け入れます) + * 50053/TCP (scalar-admin クライアントツールからの一時停止および一時停止解除リクエストを受け入れます) + * 8080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDL Ledger とともに使用) + * 50051/TCP (ScalarDL Ledger の負荷分散) + * 50052/TCP (ScalarDL Ledger の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 設定ファイル (`ledger.properties`) で ScalarDL Ledger のデフォルトのリスニングポートを変更する場合は、設定したポートを使用して接続を許可する必要があります。 +- EKS 自体が使用する接続も許可する必要があります。Amazon EKS セキュリティグループの要件の詳細については、[Amazon EKS security group requirements and considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDLAuditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDLAuditor.mdx new file mode 100644 index 00000000..191c562f --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarDLAuditor.mdx @@ -0,0 +1,109 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger および ScalarDL Auditor 用の EKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Ledger および ScalarDL Auditor のデプロイ用の Amazon Elastic Kubernetes Service (EKS) クラスターを作成するための要件と推奨事項について説明します。ScalarDL Ledger と ScalarDL Auditor を EKS クラスターにデプロイする方法の詳細については、[ScalarDL Ledger と ScalarDL Auditor を Amazon EKS にデプロイする](ManualDeploymentGuideScalarDLAuditorOnEKS.mdx) を参照してください。 + +## あなたが始める前に + +EKS クラスターは、次の要件、推奨事項、およびプロジェクトの要件に基づいて作成する必要があります。EKS クラスターの作成方法の詳細については、Amazon の公式ドキュメント [Creating an Amazon EKS cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) を参照してください。 + +## 要件 + +ScalarDL Ledger と ScalarDL Auditor を展開する場合は、次のことを行う必要があります。 + +* [サポートされている Kubernetes バージョン](https://scalardb.scalar-labs.com/docs/latest/requirements/#kubernetes)を使用して2つの EKS クラスターを作成します。 + * ScalarDL Ledger 用の1つの EKS クラスター + * ScalarDL Auditor 用の1つの EKS クラスター +* Kubernetes のバージョンとプロジェクトの要件に基づいて EKS クラスターを構成します。 + ※ Amazon Virtual Private Cloud (VPC) は次のように設定します。 + * **EKS の VPC (Ledger 用)** と **EKS の VPC (Auditor 用)** を [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) を使用して接続します。これを行うには、VPC の作成時に **EKS の VPC (Ledger 用)** と **EKS の VPC (Auditor 用)** に異なる IP 範囲を指定する必要があります。 + * ScalarDL (Auditor モード) が適切に動作するように **Ledger と Auditor 間の接続**を許可します。 + * これらのネットワーク要件の詳細については、[ScalarDL Auditor Mode のネットワークピアリングの構成](NetworkPeeringForScalarDLAuditor.mdx)を参照してください。 + +:::warning + +ScalarDL でのビザンチン障害検出が適切に機能するには、ScalarDL Ledger および ScalarDL Auditor のデプロイメントと同じ EKS クラスターにアプリケーションポッドをデプロイしないでください。 + +::: + +## 推奨事項 (オプション) + +以下は、ScalarDL Ledger および ScalarDL Auditor を展開するための推奨事項の一部です。これらの推奨事項は必須ではないため、ニーズに基づいてこれらの推奨事項を適用するかどうかを選択できます。 + +### EKS クラスターごとに少なくとも3つのワーカーノードと3つのポッドを作成します + +EKS クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つの Pod をワーカーノードに分散させるための `podAntiAffinity` の [ScalarDL Ledger サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-custom-values.yaml)と [ScalarDL Auditor サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-audit-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なる [availability zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html) (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ScalarDL Ledger および ScalarDL Auditor ノードグループのワーカーノードには 4vCPU / 8GB メモリノードを使用します。 + +商用ライセンスの観点から、ScalarDL Ledger または ScalarDL Auditor を実行する各ポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDL Ledger および ScalarDL Auditor ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDL Ledger 用の EKS クラスター + * ScalarDL Ledger ポッド (2vCPU / 4GB) + * Envoy プロキシ + * 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) + * Kubernetes コンポーネント +* ScalarDL Auditor 用の EKS クラスター + * ScalarDL Auditor ポッド (2vCPU / 4GB) + * Envoy プロキシ + * 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) + * Kubernetes コンポーネント + +これを念頭に置き、[少なくとも3つのワーカーノードと3つのポッドを作成する](#create-at-least-three-worker-nodes-and-three-pods-per-eks-cluster)で説明されているように、少なくとも 4vCPU / 8 GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。また、ビザンチン障害検出が適切に機能するには、ScalarDL Ledger および ScalarDL Auditor のデプロイメントと同じ EKS クラスターにアプリケーションポッドをデプロイできないことを覚えておいてください。 + +ただし、実稼働環境としては、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを持つ3つのノードが必要です。システムのワークロードに応じて、EKS クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDL Ledger ポッド、ScalarDL Auditor ポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### EKS でクラスターオートスケーラーを構成する + +[Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) を使用して ScalarDL Ledger または ScalarDL Auditor ポッドを自動的にスケーリングする場合は、EKS でクラスターオートスケーラーも構成する必要があります。詳細については、Amazon の公式ドキュメント [Autoscaling](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html#cluster-autoscaler) を参照してください。 + +さらに、クラスターオートスケーラーを構成する場合は、スケーリング後にネットワークの問題なく EKS が動作できるように、十分な数の IP が存在することを確認するために、プレフィックス (`/24` など) を付けて EKS 用の VPC にサブネットを作成する必要があります。 + +### プライベートネットワーク上に EKS クラスターを作成する + +ScalarDL Ledger と ScalarDL Auditor はインターネットアクセス経由でユーザーに直接サービスを提供しないため、プライベートネットワーク (VPC 内のプライベートサブネット) 上に EKS クラスターを作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDL Ledger および ScalarDL Auditor にアクセスすることをお勧めします。 + +### 要件に基づいていくつかのセキュリティ機能を使用して接続を制限する + +ScalarDL Ledger および ScalarDL Auditor で未使用の接続を制限する必要があります。未使用の接続を制限するには、[security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) や [network access control lists](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) など、AWS のいくつかのセキュリティ機能を使用できます。 + +ScalarDL Ledger および ScalarDL Auditor がデフォルトで使用する接続 (ポート) は次のとおりです。 + +* ScalarDL Ledger + * 50051/TCP (クライアントおよび ScalarDL Auditor からのリクエストを受け入れる) + * 50052/TCP (クライアントおよび ScalarDL Auditor からの特権リクエストを受け入れます) + * 50053/TCP (scalar-admin クライアントツールからの一時停止および一時停止解除リクエストを受け入れます) + * 8080/TCP (監視リクエストを受け付ける) +* ScalarDL Auditor + * 40051/TCP (クライアントからのリクエストを受け付ける) + * 40052/TCP (クライアントからの特権リクエストを受け入れます) + * 40053/TCP (scalar-admin クライアントツールからの一時停止および一時停止解除リクエストを受け入れます) + * 8080/TCP (監視リクエストを受け付ける) +* Scalar Envoy (ScalarDL Ledger および ScalarDL Auditor とともに使用) + * 50051/TCP (ScalarDL Ledger の負荷分散) + * 50052/TCP (ScalarDL Ledger の負荷分散) + * 40051/TCP (ScalarDL Auditor の負荷分散) + * 40052/TCP (ScalarDL Auditor の負荷分散) + * 9001/TCP (Scalar Envoy 自体の監視リクエストを受け入れます) + +:::note + +- 設定ファイル (それぞれ `ledger.properties` と `auditor.properties`) で ScalarDL Ledger と ScalarDL Auditor のデフォルトのリスニングポートを変更する場合は、設定したポートを使用して接続を許可する必要があります。 +- EKS 自体が使用する接続も許可する必要があります。Amazon EKS セキュリティグループの要件の詳細については、[Amazon EKS security group requirements and considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) を参照してください。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarProducts.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarProducts.mdx new file mode 100644 index 00000000..fce1470b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/CreateEKSClusterForScalarProducts.mdx @@ -0,0 +1,25 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar 製品用の Amazon Elastic Kubernetes Service (EKS) クラスターを作成するには、以下を参照してください。 + +* [ScalarDB Cluster 用の EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarDBCluster.mdx) +* [(非推奨) ScalarDB Server 用の EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarDB.mdx) +* [ScalarDL Ledger 用の EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarDL.mdx) +* [ScalarDL Ledger および ScalarDL Auditor 用の EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarDLAuditor.mdx) + +Scalar 製品を Amazon EKS にデプロイするには、以下を参照してください。 + +* [ScalarDB Server を Amazon EKS (Amazon Elastic Kubernetes Service) にデプロイする](ManualDeploymentGuideScalarDBServerOnEKS.mdx) +* [ScalarDL Ledger を Amazon EKS (Amazon Elastic Kubernetes Service) にデプロイする](ManualDeploymentGuideScalarDLOnEKS.mdx) +* [ScalarDL Ledger と ScalarDL Auditor を Amazon EKS (Amazon Elastic Kubernetes Service) にデプロイする](ManualDeploymentGuideScalarDLAuditorOnEKS.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx new file mode 100644 index 00000000..3cf970de --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToCreateKeyAndCertificateFiles.mdx @@ -0,0 +1,151 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar 製品で TLS 接続に利用する秘密鍵と証明書ファイルを作成する方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB Cluster および ScalarDL で TLS 接続に利用する秘密鍵と証明書ファイルを作成する方法について説明します。TLS 機能を有効にする場合は、秘密鍵と証明書ファイルを準備する必要があります。 + +## 証明書の要件 + +* 秘密鍵と証明書ファイルのアルゴリズムとしては `RSA` または `ECDSA` のみ使用可能です。 + +## サンプルの秘密鍵と証明書ファイルを作成する手順の例 + +[`cfssl` および `cfssljson`](https://github.com/cloudflare/cfssl) を使用して、サンプルの秘密鍵と証明書ファイルを作成できます。`cfssl` と `cfssljson` をまだインストールしていない場合は、まずインストールしてください。 + +:::note + +* `openssl` などの他のツールを使用して、秘密鍵と証明書ファイルを作成することもできます。あるいは、サードパーティ CA またはプライベート CA の管理者に本番環境用の秘密鍵と証明書の作成を依頼することもできます。 +* この例では自己署名証明書を作成します。ただし、これらの証明書を運用環境では使用しないことを強くお勧めします。セキュリティ要件に基づいて実稼働環境用の証明書ファイルを作成するように、信頼できる発行者 (パブリック CA またはプライベート CA) に依頼してください。 + +::: + +1. 作業ディレクトリを作成します。 + + ```console + mkdir -p ${HOME}/scalar/example/certs/ + ``` + +1. 作業ディレクトリを `${HOME}/scalar/example/certs/` ディレクトリに変更します。 + + ```console + cd ${HOME}/scalar/example/certs/ + ``` + +1. CA の情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalar/example/certs/ca.json + { + "CN": "scalar-example-ca", + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Example CA" + } + ] + } + EOF + ``` + +1. CA の秘密鍵と証明書ファイルを作成します。 + + ```console + cfssl gencert -initca ca.json | cfssljson -bare ca + ``` + +1. CA の設定情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalar/example/certs/ca-config.json + { + "signing": { + "default": { + "expiry": "87600h" + }, + "profiles": { + "scalar-example-ca": { + "expiry": "87600h", + "usages": [ + "signing", + "key encipherment", + "server auth" + ] + } + } + } + } + EOF + ``` + +1. サーバーの情報を含む JSON ファイルを作成します。 + + ```console + cat << 'EOF' > ${HOME}/scalar/example/certs/server.json + { + "CN": "scalar-example-server", + "hosts": [ + "server.scalar.example.com", + "localhost" + ], + "key": { + "algo": "ecdsa", + "size": 256 + }, + "names": [ + { + "C": "JP", + "ST": "Tokyo", + "L": "Shinjuku", + "O": "Scalar Example Server" + } + ] + } + EOF + ``` + +1. サーバーの秘密鍵と証明書ファイルを作成します。 + + ```console + cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json -profile scalar-example-ca server.json | cfssljson -bare server + ``` + +1. 秘密鍵と証明書ファイルが作成されたことを確認します。 + + ```console + ls -1 + ``` + + [コマンド実行結果] + + ```console + ca-config.json + ca-key.pem + ca.csr + ca.json + ca.pem + server-key.pem + server.csr + server.json + server.pem + ``` + + この場合: + + * `server-key.pem` は秘密鍵ファイルです。 + * `server.pem` は証明書ファイルです。 + * `ca.pem` はルート CA 証明書ファイルです。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToGetContainerImages.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToGetContainerImages.mdx new file mode 100644 index 00000000..9867c099 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToGetContainerImages.mdx @@ -0,0 +1,28 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar 製品のコンテナイメージの取得方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar 製品のコンテナイメージは、いくつかの方法で取得できます。以下のいずれかの方法をお選びください。 + + + + 商用ライセンスをお持ちの場合は、パブリックコンテナーリポジトリからコンテナイメージを取得できます。コンテナイメージの使用方法の詳細については、[コンテナイメージの使用方法](./HowToUseContainerImages.mdx)を参照してください。 + + + Scalar 製品は AWS Marketplace から入手できます。AWS Marketplace の詳細については、[AWS Marketplace 経由で Scalar 製品をインストールする方法](./AwsMarketplaceGuide.mdx)を参照してください。 + + + 現在、Azure Marketplace の Scalar 製品は利用できません。代わりに他の方法を使用してください。 + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToScaleScalarDB.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToScaleScalarDB.mdx new file mode 100644 index 00000000..addedef2 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToScaleScalarDB.mdx @@ -0,0 +1,49 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB をスケーリングする方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB をスケーリングする方法について説明します。ここでは、[Scalar Helm Chart](https://github.com/scalar-labs/helm-charts) (推奨されているデプロイ方法) を使用して ScalarDB Cluster をデプロイしていることを前提としています。 + +:::note + +ScalarDB Cluster 側にボトルネックがある場合は、ScalarDB Cluster をスケーリングすることでパフォーマンスの問題を解決できる場合があります。ただし、パフォーマンスの問題はバックエンドデータベースのボトルネックによって発生することがあります。このような場合、ScalarDB Cluster をスケーリングしてもパフォーマンスの問題は解決されません。 + +代わりに、ボトルネックが存在する場所を確認してください。ボトルネックがバックエンドデータベースに存在する場合は、バックエンドデータベースのスケーリングを検討してください。 + +::: + + + + + 1. カスタム値ファイルに以下を追加します。`` を、スケーリングするポッドの数に置き換えます。 + + ```yaml + scalardbCluster: + replicaCount: + ``` + + 1. 更新されたカスタム値ファイルを使用する次の `helm upgrade` コマンドを実行して、ScalarDB Cluster のデプロイメントをアップグレードします。説明に従って、山括弧内の内容を必ず置き換えてください。 + + ```console + helm upgrade scalar-labs/scalardb-cluster -n -f / --version + ``` + + + + + ScalarDB Core は Java ライブラリとして提供されます。そのため、アプリケーションをスケールさせると、ScalarDB もアプリケーションに合わせてスケールされます。 + + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToScaleScalarDL.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToScaleScalarDL.mdx new file mode 100644 index 00000000..dda47411 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToScaleScalarDL.mdx @@ -0,0 +1,58 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL をスケーリングする方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDL をスケーリングする方法について説明します。ここでは、[Scalar Helm Chart](https://github.com/scalar-labs/helm-charts) (推奨されているデプロイ方法) を使用して ScalarDL をデプロイしていることを前提としています。 + +:::note + +ScalarDL 側にボトルネックがある場合は、ScalarDL をスケーリングすることでパフォーマンスの問題を解決できる場合があります。ただし、パフォーマンスの問題はバックエンドデータベースのボトルネックによって発生することがあります。このような場合、ScalarDL をスケーリングしてもパフォーマンスの問題は解決されません。 + +代わりに、ボトルネックが存在する場所を確認してください。ボトルネックがバックエンドデータベースに存在する場合は、バックエンドデータベースのスケーリングを検討してください。 + +::: + + + + + 1. カスタム値ファイルに以下を追加します。`` を、スケーリングするポッドの数に置き換えます。 + + ```yaml + ledger: + replicaCount: + ``` + + 1. 更新されたカスタム値ファイルを使用する次の `helm upgrade` コマンドを実行して、ScalarDL Ledger のデプロイメントをアップグレードします。説明に従って、山括弧内の内容を必ず置き換えてください。 + + ```console + helm upgrade scalar-labs/scalardl -n -f / --version + ``` + + + + + 1. カスタム値ファイルに以下を追加します。`` を、スケーリングするポッドの数に置き換えます。 + + ```yaml + auditor: + replicaCount: + ``` + + 1. 更新されたカスタム値ファイルを使用する次の `helm upgrade` コマンドを実行して、ScalarDL Auditor のデプロイメントをアップグレードします。説明に従って、山括弧内の内容を必ず置き換えてください。 + + ```console + helm upgrade scalar-labs/scalardl-audit -n -f / --version + ``` + + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUpgradeScalarDB.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUpgradeScalarDB.mdx new file mode 100644 index 00000000..fac778aa --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUpgradeScalarDB.mdx @@ -0,0 +1,89 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB のアップグレード方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB を新しいバージョンにアップグレードする方法について説明します。 + +## 始める前に + +新しいバージョンにアップグレードする前に、[ScalarDB Cluster 互換性マトリックス](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/compatibility/)をチェックして、ScalarDB Cluster とクライアント SDK 間の互換性を確認してください。 + +## アップグレード + +ScalarDB のバージョンのアップグレードについて詳しくは、実行するアップグレードの種類を選択してください。 + + + + メジャーバージョンでは下位互換性が維持されません。そのため、あるメジャーバージョンから別のメジャーバージョンにアップグレードするときには、特別な操作が必要になる場合があります。例: + + - バックエンドデータベース側のデータベーススキーマを更新します。 + - アプリケーションの API を更新します。 + + メジャーバージョンにアップグレードするときに必要なものの詳細については、アップグレードするメジャーバージョンのリリースノートを参照してください。 + + + マイナーバージョンは下位互換性を維持します。そのため、特別な操作を行わなくても、ScalarDB を同じメジャーバージョン内のマイナーバージョンから別のマイナーバージョンにアップグレードできます。たとえば、バックエンドデータベース側のデータベーススキーマを更新したり、アプリケーション内の API を更新したりする必要はありません。 + + + + [Scalar Helm Chart](https://github.com/scalar-labs/helm-charts) を使用して ScalarDB Cluster をデプロイする場合は、次のようにして ScalarDB Cluster のデプロイをアップグレードできます。 + + 1. ScalarDB Cluster Helm Chart のバージョンを環境変数として設定します。これを行うには、次のコマンドを実行して、チャートのバージョンを環境変数 `SCALAR_DB_CLUSTER_CHART_VERSION` に設定します。 + + ```console + SCALAR_DB_CLUSTER_CHART_VERSION=1.5.0 + ``` + + :::tip + + ScalarDB Cluster バージョンに対応するチャートバージョンを検索するには、次のコマンドを実行します。 + + ```console + helm search repo scalar-labs/scalardb-cluster -l + ``` + + 次のコマンドは役に立つかもしれませんが、山括弧内の内容を ScalarDB Cluster のバージョンに置き換えてください。 + + ```console + SCALAR_DB_CLUSTER_VERSION=..; SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + + ::: + + 1. 次のように山括弧内の内容を置き換えて、ScalarDB Cluster のデプロイメントをアップグレードします。 + + ```console + helm upgrade scalar-labs/scalardb-cluster -n -f / --version ${SCALAR_DB_CLUSTER_CHART_VERSION} + ``` + + ScalarDB Cluster のデプロイメントをアップグレードした後は、アプリケーション側の [ScalarDB Cluster Java Client SDK](https://mvnrepository.com/artifact/com.scalar-labs/scalardb-cluster-java-client-sdk) または [ScalarDB Cluster .NET Client SDK](https://www.nuget.org/packages/ScalarDB.Net.Client) のバージョンをアップグレードすることを検討する必要があります。 + + + ScalarDB Core は Java ライブラリとして提供されます。そのため、Java プロジェクトの依存関係を更新し、アプリケーションを再構築して ScalarDB のバージョンをアップグレードできます。 + + + + + パッチバージョンは下位互換性を維持します。そのため、特別な操作を行わなくても、メジャーバージョンとマイナーバージョンが同じであれば、ScalarDB をあるパッチバージョンから別のパッチバージョンにアップグレードできます。たとえば、バックエンドデータベース側でデータベーススキーマを更新したり、アプリケーションで API を更新したりする必要はありません。 + + パッチバージョンへのアップグレード方法は、マイナーバージョンへのアップグレード方法と同様です。アップグレード方法の詳細については、[マイナーバージョンへのアップグレード](?versions=upgrade-minor-version)タブを参照してください。 + + + +:::warning + +ScalarDB は、以前のバージョン (メジャー、マイナー、またはパッチ) へのダウングレードをサポートしていません。新しいバージョンへのアップグレードのみ可能です。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUpgradeScalarDL.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUpgradeScalarDL.mdx new file mode 100644 index 00000000..31d2c704 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUpgradeScalarDL.mdx @@ -0,0 +1,117 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL のアップグレード方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDL の新しいバージョンにアップグレードする方法について説明します。 + +## 始める前に + +新しいバージョンにアップグレードする前に、[ScalarDL 互換性マトリックス](https://scalardl.scalar-labs.com/docs/latest/compatibility/)をチェックして、ScalarDL とクライアント SDK 間の互換性を確認してください。 + +## アップグレード + +ScalarDL のバージョンのアップグレードについて詳しくは、実行するアップグレードの種類を選択してください。 + + + + メジャーバージョンでは下位互換性が維持されません。そのため、あるメジャーバージョンから別のメジャーバージョンにアップグレードするときには、特別な操作が必要になる場合があります。例: + + - バックエンドデータベース側のデータベーススキーマを更新します。 + - アプリケーションの API を更新します。 + + メジャーバージョンにアップグレードするときに必要なものの詳細については、アップグレードするメジャーバージョンのリリースノートを参照してください。 + + + マイナーバージョンは下位互換性を維持します。そのため、特別な操作を行わなくても、ScalarDL を同じメジャーバージョン内のマイナーバージョンから別のマイナーバージョンにアップグレードできます。たとえば、バックエンドデータベース側のデータベーススキーマを更新したり、アプリケーション内の API を更新したりする必要はありません。 + + + + [Scalar Helm Chart](https://github.com/scalar-labs/helm-charts) を使用して ScalarDL Ledger をデプロイする場合は、次のようにして ScalarDL Ledger のデプロイをアップグレードできます。 + + 1. ScalarDL Ledger Helm Chart のバージョンを環境変数として設定します。これを行うには、次のコマンドを実行して、チャートのバージョンを環境変数 `SCALAR_DL_LEDGER_CHART_VERSION` に設定します。 + + ```console + SCALAR_DL_LEDGER_CHART_VERSION=4.8.0 + ``` + + :::tip + + ScalarDL Ledger バージョンに対応するチャートバージョンは、次のように検索できます。 + + ```console + helm search repo scalar-labs/scalardl -l + ``` + + 次のコマンドは役に立つかもしれませんが、山括弧内の内容を ScalarDL Ledger のバージョンに置き換えてください。 + + ```console + SCALAR_DL_VERSION=..; SCALAR_DL_LEDGER_CHART_VERSION=$(helm search repo scalar-labs/scalardl -l | grep -v -e "scalar-labs/scalardl-audit" | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + + ::: + + 1. 次のように山括弧内の内容を置き換えて、ScalarDL Ledger デプロイメントをアップグレードします。 + + ```console + helm upgrade scalar-labs/scalardl -n -f / --version ${SCALAR_DL_LEDGER_CHART_VERSION} + ``` + + ScalarDL Ledger デプロイメント (および Auditor モードを使用している場合は ScalarDL Auditor デプロイメント) をアップグレードした後、アプリケーション側で [ScalarDL Java Client SDK](https://mvnrepository.com/artifact/com.scalar-labs/scalardl-java-client-sdk) のバージョンをアップグレードすることを検討する必要があります。 + + + [Scalar Helm Chart](https://github.com/scalar-labs/helm-charts) を使用して ScalarDL Auditor をデプロイする場合は、次のようにして ScalarDL Auditor のデプロイをアップグレードできます。 + + 1. ScalarDL Auditor Helm Chart のバージョンを環境変数として設定します。これを行うには、次のコマンドを実行して、チャートのバージョンを環境変数 `SCALAR_DL_AUDITOR_CHART_VERSION` に設定します。 + + ```console + SCALAR_DL_AUDITOR_CHART_VERSION=2.8.0 + ``` + + :::tip + + ScalarDL Auditor バージョンに対応するチャートバージョンは、次のように検索できます。 + + ```console + helm search repo scalar-labs/scalardl-audit -l + ``` + + 次のコマンドは役に立つかもしれませんが、山括弧内の内容を ScalarDL Auditor のバージョンに置き換えてください。 + + ```console + SCALAR_DL_VERSION=..; SCALAR_DL_AUDITOR_CHART_VERSION=$(helm search repo scalar-labs/scalardl-audit -l | grep -F "${SCALAR_DL_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + + ::: + + 1. 次のように山括弧内の内容を置き換えて、ScalarDL Auditor のデプロイメントをアップグレードします。 + + ```console + helm upgrade scalar-labs/scalardl-audit -n -f / --version ${SCALAR_DL_AUDITOR_CHART_VERSION} + ``` + + ScalarDL Auditor デプロイメントと ScalarDL Ledger デプロイメントをアップグレードした後、アプリケーション側で [ScalarDL Java Client SDK](https://mvnrepository.com/artifact/com.scalar-labs/scalardl-java-client-sdk) のバージョンをアップグレードすることを検討する必要があります。 + + + + + パッチバージョンは下位互換性を維持します。そのため、特別な操作を行わなくても、メジャーバージョンとマイナーバージョンが同じであれば、ScalarDL を 1つのパッチバージョンから別のパッチバージョンにアップグレードできます。たとえば、バックエンドデータベース側でデータベーススキーマを更新したり、アプリケーションで API を更新したりする必要はありません。 + + パッチバージョンへのアップグレード方法は、マイナーバージョンへのアップグレード方法と同様です。アップグレード方法の詳細については、[マイナーバージョンへのアップグレード](?versions=upgrade-minor-version)タブを参照してください。 + + + +:::warning + +ScalarDL は、以前のバージョン (メジャー、マイナー、またはパッチ) へのダウングレードをサポートしていません。新しいバージョンへのアップグレードのみ可能です。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUseContainerImages.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUseContainerImages.mdx new file mode 100644 index 00000000..61a7ec7f --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/HowToUseContainerImages.mdx @@ -0,0 +1,139 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# コンテナイメージの使用方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +パブリックコンテナリポジトリからコンテナイメージをプルできます。コンテナイメージを使用する場合は、`.properties` ファイルにライセンスキーと証明書を設定する必要があります。 + +## 前提条件 + +パブリックコンテナイメージは、次の製品とバージョンで利用できます。 + +* ScalarDB Cluster v3.12以降 +* ScalarDL v3.9以降 + +## パブリックコンテナリポジトリからコンテナイメージをプルします。 + +各製品のコンテナイメージをパブリックコンテナリポジトリからプルできます。コンテナイメージをプルするには、Scalar 製品を選択して、コンテナイメージへのリンクを表示します。 + + + + ScalarDB Enterprise のエディションを選択します。 + + + https://github.com/orgs/scalar-labs/packages/container/package/scalardb-cluster-node-byol-standard + + + https://github.com/orgs/scalar-labs/packages/container/package/scalardb-cluster-node-byol-premium + + + + + https://github.com/orgs/scalar-labs/packages/container/package/scalardl-ledger-byol + + + https://github.com/orgs/scalar-labs/packages/container/package/scalardl-auditor-byol + + + +Scalar Helm Chart を使用する場合は、カスタム値ファイルに `*.image.repository` を次のように設定してください。Scalar 製品を選択して、`*.image.repository` を設定する方法を確認してください。 + + + + ScalarDB Enterprise のエディションを選択します。 + + + ```yaml + scalardbCluster: + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-standard" + ``` + + + ```yaml + scalardbCluster: + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium" + ``` + + + + + ```yaml + ledger: + image: + repository: "ghcr.io/scalar-labs/scalardl-ledger-byol" + ``` + + + ```yaml + auditor: + image: + repository: "ghcr.io/scalar-labs/scalardl-auditor-byol" + ``` + + + +## `.properties` ファイルにライセンスキーを設定します + +コンテナイメージを実行するには、`.properties` ファイルに `ライセンスキー` と `証明書` を設定する必要があります。Scalar 製品を選択して、`license key` と `certificate` を設定する方法を確認してください。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)までご連絡ください。 + + + + ```properties + scalar.db.cluster.node.licensing.license_key= + scalar.db.cluster.node.licensing.license_check_cert_pem= + ``` + + + ```properties + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem= + ``` + + + ```properties + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem= + ``` + + + +Scalar Helm Chart を使用する場合は、カスタム値ファイルのプロパティを次のように設定してください。Scalar 製品を選択して、カスタム値ファイルでプロパティを設定する方法を確認します。 + + + + ```yaml + scalardbCluster: + scalardbClusterNodeProperties: | + scalar.db.cluster.node.licensing.license_key= + scalar.db.cluster.node.licensing.license_check_cert_pem= + ``` + + + ```yaml + ledger: + ledgerProperties: | + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem= + ``` + + + ```yaml + auditor: + auditorProperties: | + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem= + ``` + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/K8sLogCollectionGuide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/K8sLogCollectionGuide.mdx new file mode 100644 index 00000000..0ca21c3d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/K8sLogCollectionGuide.mdx @@ -0,0 +1,186 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes クラスター上の Scalar 製品からのログの収集 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Helm を使用して Grafana Loki と Promtail を Kubernetes にデプロイする方法について説明します。このドキュメントに従うと、Kubernetes 環境で Scalar 製品のログを収集できます。 + +マネージド Kubernetes クラスターを使用しており、監視とログ記録にクラウドサービス機能を使用したい場合は、次のドキュメントを参照してください。 + +* [Logging and monitoring on Amazon EKS](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/amazon-eks-logging-monitoring.html) +* [Monitoring Azure Kubernetes Service (AKS) with Azure Monitor](https://learn.microsoft.com/en-us/azure/aks/monitor-aks) + +## 前提条件 + +* Kubernetes クラスターを作成します。 + * [Scalar 製品用の EKS クラスターを作成する](CreateEKSClusterForScalarProducts.mdx) + * [Scalar 製品用の AKS クラスターを作成する](CreateAKSClusterForScalarProducts.mdx) +* 踏み台サーバーを作成し、`kubeconfig` を設定します。 + * [踏み台サーバーの作成](CreateBastionServer.mdx) +* Prometheus Operator をデプロイします (収集されたログを調査するために Grafana を使用します) + * [Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx) + +## Grafana helm リポジトリを追加します + +このドキュメントでは、Prometheus Operator のデプロイメントに Helm を使用します。 + +```console +helm repo add grafana https://grafana.github.io/helm-charts +``` +```console +helm repo update +``` + +## カスタム値ファイルを準備する + +loki-stack のサンプルファイル [scalar-loki-stack-custom-values.yaml](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalar-loki-stack-custom-values.yaml) を入手してください。Scalar 製品のロギングには、このサンプルファイルの構成をお勧めします。 + +### カスタム値ファイルで nodeSelector を設定する (オプション) + +Kubernetes ワーカーノードにラベルを追加している場合は、次のようにカスタム値ファイル (scalar-loki-stack-custom-values.yaml) で nodeSelector を設定する必要がある場合があります。使用している製品に応じて、次の例を参照してください。 + + + + 使用している ScalarDB 製品を選択します。 + + + ```yaml + promtail: + nodeSelector: + scalar-labs.com/dedicated-node: scalardb-cluster + ``` + + + ```yaml + promtail: + nodeSelector: + scalar-labs.com/dedicated-node: scalardb + ``` + + + + + 使用している ScalarDL 製品を選択します。 + + + ```yaml + promtail: + nodeSelector: + scalar-labs.com/dedicated-node: scalardl-ledger + ``` + + + ```yaml + promtail: + nodeSelector: + scalar-labs.com/dedicated-node: scalardl-auditor + ``` + + + + + +### カスタム値ファイルで許容値を設定する (オプション) + +Kubernetes ワーカーノードにテイントを追加している場合は、次のようにカスタム値ファイル (scalar-loki-stack-custom-values.yaml) で許容値を設定する必要がある場合があります。使用している製品に応じて、次の例を参照してください。 + + + + 使用している ScalarDB 製品を選択します。 + + + ```yaml + promtail: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb-cluster + ``` + + + ```yaml + promtail: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardb + ``` + + + + + 使用している ScalarDL 製品を選択します。 + + + ```yaml + promtail: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardl-ledger + ``` + + + ```yaml + promtail: + tolerations: + - effect: NoSchedule + key: scalar-labs.com/dedicated-node + operator: Equal + value: scalardl-auditor + ``` + + + + + +## Loki と Promtail をデプロイする + +Loki と Promtail は、Prometheus や Grafana と同じ名前空間 `Monitoring` にデプロイすることをお勧めします。`Monitoring` 名前空間は、ドキュメント [Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)ですでに作成済みです。 + +```console +helm install scalar-logging-loki grafana/loki-stack -n monitoring -f scalar-loki-stack-custom-values.yaml +``` + +## Loki と Promtail がデプロイされているかどうかを確認する + +Loki および Promtail ポッドが適切にデプロイされている場合は、次のコマンドを使用して、`STATUS` が `Running` であることが確認できます。promtail ポッドは DaemonSet としてデプロイされるため、promtail ポッドの数は Kubernetes ノードの数によって異なります。次の例では、Kubernetes クラスター内に Scalar 製品のワーカーノードが3つあります。 + +```console +kubectl get pod -n monitoring +``` + +次のような結果が表示されます: + +```console +NAME READY STATUS RESTARTS AGE +scalar-logging-loki-0 1/1 Running 0 35m +scalar-logging-loki-promtail-2fnzn 1/1 Running 0 32m +scalar-logging-loki-promtail-2pwkx 1/1 Running 0 30m +scalar-logging-loki-promtail-gfx44 1/1 Running 0 32m +``` + +## Grafana ダッシュボードでログを表示する + +収集されたログは、次のように Grafana ダッシュボードで確認できます。 + +1. Grafana ダッシュボードにアクセスします。 +1. `Explore` ページに移動します。 +1. 左上のプルダウンから `Loki` を選択します。 +1. ログを問い合わせる条件を設定する。 +1. 右上の `Run query` ボタンを選択します。 + +Grafana ダッシュボードへのアクセス方法の詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/K8sMonitorGuide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/K8sMonitorGuide.mdx new file mode 100644 index 00000000..69faf426 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/K8sMonitorGuide.mdx @@ -0,0 +1,160 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes クラスター上の Scalar 製品の監視 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、Helm を使用して Prometheus Operator を Kubernetes にデプロイする方法について説明します。このドキュメントに従うと、Prometheus、Alertmanager、および Grafana を使用して、Kubernetes 環境上の Scalar 製品を監視できるようになります。 + +マネージド Kubernetes クラスターを使用しており、監視とログ記録にクラウドサービス機能を使用したい場合は、次のドキュメントを参照してください。 + +* [Logging and monitoring on Amazon EKS](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/amazon-eks-logging-monitoring.html) +* [Monitoring Azure Kubernetes Service (AKS) with Azure Monitor](https://learn.microsoft.com/en-us/azure/aks/monitor-aks) + +## 前提条件 + +* Kubernetes クラスターを作成します。 + * [Scalar 製品用の EKS クラスターを作成する](CreateEKSClusterForScalarProducts.mdx) + * [Scalar 製品用の AKS クラスターを作成する](CreateAKSClusterForScalarProducts.mdx) +* 踏み台サーバーを作成し、`kubeconfig`を設定します。 + * [踏み台サーバーの作成](CreateBastionServer.mdx) + +## prometheus-community helm リポジトリを追加します + +このドキュメントでは、Prometheus Operator のデプロイメントに Helm を使用します。 + +```console +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +``` +```console +helm repo update +``` + +## カスタム値ファイルを準備する + +kube-prometheus-stack のサンプルファイル [scalar-prometheus-custom-values.yaml](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalar-prometheus-custom-values.yaml) を取得してください。Scalar 製品の監視には、このサンプルファイルの構成をお勧めします。 + +このサンプルファイルでは、サービスリソースは Kubernetes クラスターの外部からのアクセスに公開されていません。Kubernetes クラスターの外部からダッシュボードにアクセスしたい場合は、`*.service.type` を `LoadBalancer` に設定するか、`*.ingress.enabled` を `true` に設定する必要があります。 + +kube-prometheus-stackの設定の詳細については、以下の公式ドキュメントを参照してください。 + +* [kube-prometheus-stack - Configuration](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#configuration) + +## Prometheus Operator をデプロイする + +Scalar 製品は、Prometheus Operator がデフォルトで `monitoring` 名前空間にデプロイされていることを前提としています。したがって、`monitoring` 名前空間を作成し、`monitoring` 名前空間に Prometheus Operator をデプロイしてください。 + +1. Kubernetes 上に名前空間 `monitoring` を作成します。 + ```console + kubectl create namespace monitoring + ``` + +1. kube-prometheus-stack をデプロイします。 + ```console + helm install scalar-monitoring prometheus-community/kube-prometheus-stack -n monitoring -f scalar-prometheus-custom-values.yaml + ``` + +## Prometheus Operator がデプロイされているかどうかを確認する + +Prometheus Operator (Prometheus、Alertmanager、Grafana を含む) ポッドが適切にデプロイされている場合は、次のコマンドを使用して `STATUS` が `Running` であることを確認できます。 + +```console +kubectl get pod -n monitoring +``` + +次のような結果が表示されます: + +```console +NAME READY STATUS RESTARTS AGE +alertmanager-scalar-monitoring-kube-pro-alertmanager-0 2/2 Running 0 55s +prometheus-scalar-monitoring-kube-pro-prometheus-0 2/2 Running 0 55s +scalar-monitoring-grafana-cb4f9f86b-jmkpz 3/3 Running 0 62s +scalar-monitoring-kube-pro-operator-865bbb8454-9ppkc 1/1 Running 0 62s +``` + +## Helm Chart を使用して Scalar 製品をデプロイ (またはアップグレード) + +1. Scalar 製品の Prometheus 監視を有効にするには、カスタム値ファイルの次の構成に `true` を設定する必要があります。 + + * 構成 + * `*.prometheusRule.enabled` + * `*.grafanaDashboard.enabled` + * `*.serviceMonitor.enabled` + + 各Scalar製品のカスタム値ファイルの詳細については、以下のドキュメントを参照してください。 + + * [ScalarDB Cluster](../helm-charts/configure-custom-values-scalardb-cluster.mdx#prometheus-および-grafana-構成-実稼働環境で推奨) + * [(Deprecated) ScalarDB Server](../helm-charts/configure-custom-values-scalardb.mdx#prometheusgrafana-構成-運用環境で推奨) + * [(Deprecated) ScalarDB GraphQL](../helm-charts/configure-custom-values-scalardb-graphql.mdx#prometheusgrafana-構成-運用環境で推奨) + * [ScalarDL Ledger](../helm-charts/configure-custom-values-scalardl-ledger.mdx#prometheusgrafana-構成-運用環境で推奨) + * [ScalarDL Auditor](../helm-charts/configure-custom-values-scalardl-auditor.mdx#prometheusgrafana-構成-運用環境で推奨) + +1. 上記のカスタム値ファイルを含む Helm Chart を使用して、Scalar 製品をデプロイ (またはアップグレード) します。 + + Scalar 製品の導入/アップグレード方法の詳細については、次のドキュメントを参照してください。 + + * [ScalarDB Cluster](../helm-charts/how-to-deploy-scalardb-cluster.mdx) + * [(Deprecated) ScalarDB Server](../helm-charts/how-to-deploy-scalardb.mdx) + * [(Deprecated) ScalarDB GraphQL](../helm-charts/how-to-deploy-scalardb-graphql.mdx) + * [ScalarDL Ledger](../helm-charts/how-to-deploy-scalardl-ledger.mdx) + * [ScalarDL Auditor](../helm-charts/how-to-deploy-scalardl-auditor.mdx) + +## ダッシュボードにアクセスする方法 + +`*.service.type` を `LoadBalancer` に設定するか、`*.ingress.enabled` を `true` に設定すると、Kubernetes の Service または Ingress 経由でダッシュボードにアクセスできます。具体的な実装とアクセス方法はKubernetesクラスタに依存します。マネージド Kubernetes クラスターを使用する場合、詳細についてはクラウドプロバイダーの公式ドキュメントを参照してください。 + +* EKS + * [Network load balancing on Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html) + * [Application load balancing on Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html) +* AKS + * [Use a public standard load balancer in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/load-balancer-standard) + * [Create an ingress controller in Azure Kubernetes Service (AKS)](https://learn.microsoft.com/en-us/azure/aks/ingress-basic) + +## ローカルマシンからダッシュボードにアクセスします (テスト目的のみ / 運用環境では推奨されません) + +`kubectl port-forward` コマンドを使用して、ローカルマシンから各ダッシュボードにアクセスできます。 + +1. ローカルマシンから各サービスへのポート転送。 + * Prometheus + ```console + kubectl port-forward -n monitoring svc/scalar-monitoring-kube-pro-prometheus 9090:9090 + ``` + * Alertmanager + ```console + kubectl port-forward -n monitoring svc/scalar-monitoring-kube-pro-alertmanager 9093:9093 + ``` + * Grafana + ```console + kubectl port-forward -n monitoring svc/scalar-monitoring-grafana 3000:3000 + ``` + +1. 各ダッシュボードにアクセスします。 + * Prometheus + ```console + http://localhost:9090/ + ``` + * Alertmanager + ```console + http://localhost:9093/ + ``` + * Grafana + ```console + http://localhost:3000/ + ``` + * 注記: + * Grafanaのユーザーとパスワードは以下で確認できます。 + * ユーザー + ```console + kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-user}' | base64 -d + ``` + * パスワード + ```console + kubectl get secrets scalar-monitoring-grafana -n monitoring -o jsonpath='{.data.admin-password}' | base64 -d + ``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBClusterOnEKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBClusterOnEKS.mdx new file mode 100644 index 00000000..abf62867 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBClusterOnEKS.mdx @@ -0,0 +1,70 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Amazon Elastic Kubernetes Service (EKS) に ScalarDB Cluster をデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB Cluster を Amazon Elastic Kubernetes Service (EKS) にデプロイする方法について説明します。 + +このガイドでは、AWS 環境に次の2つの環境のいずれかを作成します。環境は、使用する [client mode](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#client-modes) によって異なります。 + +* **[`direct-kubernetes` client mode](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#direct-kubernetes-client-mode).** このモードでは、ScalarDB Cluster のデプロイメントと同じ EKS クラスターにアプリケーションをデプロイします。 + + ![image](./images/png/EKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png) + +* **[`indirect` client mode](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#indirect-client-mode).** このモードでは、ScalarDB Cluster のデプロイメントを含む EKS クラスターとは異なる環境にアプリケーションをデプロイします。 + + ![image](./images/png/EKS_ScalarDB_Cluster_Indirect_Mode.drawio.png) + +## ステップ1. AWS Marketplace で ScalarDB Cluster にサブスクライブする + +ScalarDB Cluster コンテナイメージを取得するには、AWS Marketplace にアクセスし、[ScalarDB Cluster Standard Edition (Pay-As-You-Go)](https://aws.amazon.com/marketplace/pp/prodview-jx6qxatkxuwm4) または [ScalarDB Cluster Premium Edition (Pay-As-You-Go)](https://aws.amazon.com/marketplace/pp/prodview-djqw3zk6dwyk6) をサブスクライブする必要があります。AWS Marketplace で ScalarDB Cluster をサブスクライブする方法の詳細については、[AWS Marketplace から Scalar 製品を購読する](AwsMarketplaceGuide.mdx#aws-marketplace-から-scalar-製品を購読する)を参照してください。 + +## ステップ2. EKS クラスターを作成する + +ScalarDB Cluster のデプロイメント用の EKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ3. ScalarDB Cluster のデータベースをセットアップする + +ScalarDB Cluster をデプロイする前にデータベースを準備する必要があります。ScalarDB がサポートするデータベースのタイプを確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[AWS での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAWS.mdx)を参照してください。 + +## ステップ4. 踏み台サーバーを作成する + +EKS 上で ScalarDB Cluster をデプロイおよび管理するためのいくつかのツールを実行するには、**ステップ2**で作成した EKS クラスターの同じ Amazon Virtual Private Cloud (VPC) 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ5. Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ3**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDB Cluster の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +**注意:** ScalarDB Cluster がデプロイされている EKS クラスターとは異なる環境にアプリケーションをデプロイする場合 (つまり、`indirect` クライアントモードを使用する場合)、`envoy.enabled` パラメーターを次のように設定する必要があります。アプリケーションから Scalar Envoy にアクセスするには、`true` と `envoy.service.type` パラメータを `LoadBalancer` に設定します。 + +## ステップ6. Scalar Helm Chart を使用して ScalarDB Cluster をデプロイする + +ScalarDB Cluster の Helm Chart を使用して、EKS クラスターに ScalarDB Cluster をデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注意:** `kubectl create ns scalardb-cluster` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardb-cluster` オプションを使用して名前空間に ScalarDB Cluster をデプロイすることをお勧めします。 + +## ステップ7. ScalarDB Cluster のデプロイメントのステータスを確認する + +EKS クラスターに ScalarDB Cluster をデプロイした後、各コンポーネントのステータスを確認する必要があります。詳細については、[Kubernetes 環境で実行するときに定期的に確認するコンポーネント](./ RegularCheck.mdx) を参照してください。 + +## ステップ8. ScalarDB Cluster のデプロイメントを監視する + +EKS クラスターに ScalarDB Cluster をデプロイした後、特に本番環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ステップ9. アプリケーションをデプロイする + +[`direct-kubernetes` client mode](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#direct-kubernetes-client-mode) を使用する場合は、追加の Kubernetes リソースをデプロイする必要があります。詳細については、[Deploy your client application on Kubernetes with `direct-kubernetes` mode](../helm-charts/how-to-deploy-scalardb-cluster.mdx#direct-kubernetes-モードを使用してクライアント-アプリケーションを-kubernetes-にデプロイします) を参照してください。 + +## EKS から ScalarDB Cluster を削除 + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBServerOnAKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBServerOnAKS.mdx new file mode 100644 index 00000000..6d195871 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBServerOnAKS.mdx @@ -0,0 +1,67 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# [非推奨] Azure Kubernetes Service (AKS) に ScalarDB Server をデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB Server を Azure Kubernetes Service (AKS) にデプロイする方法について説明します。 + +このガイドでは、Azure 環境に次の2つの環境のいずれかを作成します。2つの環境の違いは、アプリケーションのデプロイをどのように計画するかです。 + +* アプリケーションを ScalarDB Server デプロイメントと同じ AKS クラスターにデプロイします。この場合、アプリケーションから Scalar Envoy にアクセスするために Azure が提供するロードバランサーを使用する必要はありません。 + + ![image](./images/png/AKS_ScalarDB_Server_App_In_Cluster.drawio.png) + +* ScalarDB Server デプロイを含む AKS クラスターとは異なる環境にアプリケーションをデプロイします。この場合、アプリケーションから Scalar Envoy にアクセスするには、Azure が提供するロードバランサーを使用する必要があります。 + + ![image](./images/png/AKS_ScalarDB_Server_App_Out_Cluster.drawio.png) + +## ステップ1. Azure Marketplace で ScalarDB Server にサブスクライブする + +[Azure Marketplace](https://azuremarketplace.microsoft.com/en/marketplace/apps/scalarinc.scalardb) にアクセスし、ScalarDB Server をサブスクライブして、ScalarDB Server コンテナーイメージを取得する必要があります。Azure Marketplace で ScalarDB Server をサブスクライブする方法の詳細については、[Microsoft Azure Marketplace から Scalar 製品を入手する](AzureMarketplaceGuide.mdx#microsoft-azure-marketplace-から-scalar-製品を入手する)を参照してください。 + +## ステップ2. AKS クラスターを作成する + +ScalarDB Server デプロイ用の AKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ3. ScalarDB Server のデータベースをセットアップする + +ScalarDB Server を展開する前にデータベースを準備する必要があります。ScalarDB がサポートするデータベースのタイプを確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[Azure での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAzure.mdx)を参照してください。 + +## ステップ4. 踏み台サーバーを作成する + +AKS 上で ScalarDB Server をデプロイおよび管理するためのいくつかのツールを実行するには、**手順2**で作成した AKS クラスターの同じ Azure Virtual Networks (VNet) 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ5. Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ3**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDB Server の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file of Scalar Helm Chart](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +**注:** ScalarDB Server がデプロイされている AKS クラスターとは異なる環境にアプリケーションをデプロイする場合、Scalar Envoy にアクセスするには、`envoy.service.type` パラメーターを `LoadBalancer` に設定する必要があります。応用。 + +## ステップ6. Scalar Helm Chart を使用して ScalarDB Server をデプロイする + +ScalarDB Server の Helm Chart を使用して、AKS クラスターに ScalarDB Server をデプロイします。詳細については、[Deploy Scalar Products using Scalar Helm Chart](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注意:** `kubectl create ns scalardb` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardb` オプションを使用して名前空間に ScalarDB Server をデプロイすることをお勧めします。 + +## ステップ7. ScalarDB Server デプロイメントのステータスを確認する + +ScalarDB Server を AKS クラスターにデプロイした後、各コンポーネントの状態を確認する必要があります。詳細については、[Kubernetes 環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ8. ScalarDB Server の展開を監視する + +ScalarDB Server を AKS クラスターにデプロイした後、特に運用環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ScalarDB Server を AKS から削除します + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBServerOnEKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBServerOnEKS.mdx new file mode 100644 index 00000000..92c7f178 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDBServerOnEKS.mdx @@ -0,0 +1,67 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium + - Deprecated +displayed_sidebar: docsJapanese +--- + +# ScalarDB Server を Amazon Elastic Kubernetes Service (EKS) にデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、Amazon Elastic Kubernetes Service (EKS) に ScalarDB Server をデプロイする方法について説明します。 + +このガイドでは、AWS 環境に次の2つの環境のいずれかを作成します。2つの環境の違いは、アプリケーションのデプロイをどのように計画するかです。 + +* アプリケーションを ScalarDB Server デプロイメントと同じ EKS クラスターにデプロイします。この場合、アプリケーションから Scalar Envoy にアクセスするために AWS が提供するロードバランサーを使用する必要はありません。 + + ![image](./images/png/EKS_ScalarDB_Server_App_In_Cluster.drawio.png) + +* ScalarDB Server デプロイメントを含む EKS クラスターとは異なる環境にアプリケーションをデプロイします。この場合、アプリケーションから Scalar Envoy にアクセスするには、AWS が提供するロードバランサーを使用する必要があります。 + + ![image](./images/png/EKS_ScalarDB_Server_App_Out_Cluster.drawio.png) + +## ステップ1. AWS Marketplace で ScalarDB Server にサブスクライブする + +[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-rzbuhxgvqf4d2) にアクセスし、ScalarDB Server をサブスクライブして、ScalarDB Server コンテナイメージを取得する必要があります。AWS Marketplace で ScalarDB Server をサブスクライブする方法の詳細については、[AWS Marketplace から Scalar 製品を購読する](AwsMarketplaceGuide.mdx#aws-marketplace-から-scalar-製品を購読する)を参照してください。 + +## ステップ2. EKS クラスターを作成する + +ScalarDB Server デプロイメント用の EKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarProducts.mdx) を参照してください。 + +## ステップ3. ScalarDB Server のデータベースをセットアップする + +ScalarDB Server を展開する前にデータベースを準備する必要があります。ScalarDB がサポートするデータベースのタイプを確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[AWS での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAWS.mdx)を参照してください。 + +## ステップ4. 踏み台サーバーを作成する + +EKS 上で ScalarDB Server をデプロイおよび管理するためのいくつかのツールを実行するには、**ステップ2**で作成した EKS クラスターの同じ Amazon Virtual Private Cloud (VPC) 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ5. Scalar Helm Chartのカスタム値ファイルを準備する + +**ステップ3**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDB Server の Scalar Helm Chartのカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +**注意:** ScalarDB Server がデプロイされている EKS クラスターとは異なる環境にアプリケーションをデプロイする場合は、`envoy.service.type` パラメーターを `LoadBalancer` に設定して、ユーザーから Scalar Envoy にアクセスする必要があります。応用。 + +## ステップ6. Scalar Helm Chart を使用して ScalarDB Server をデプロイする + +ScalarDB Server の Helm Chart を使用して、ScalarDB Server を EKS クラスターにデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注意:** `kubectl create ns scalardb` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardb` オプションを使用して名前空間に ScalarDB Server をデプロイすることをお勧めします。 + +## ステップ7. ScalarDB Server デプロイメントのステータスを確認する + +EKS クラスターに ScalarDB Server をデプロイした後、各コンポーネントのステータスを確認する必要があります。詳細については、[Kubernetes環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ8. ScalarDB Server の展開を監視する + +EKS クラスターに ScalarDB Server をデプロイした後、特に本番環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ScalarDB Server を EKS から削除する + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLAuditorOnAKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLAuditorOnAKS.mdx new file mode 100644 index 00000000..62e83d6a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLAuditorOnAKS.mdx @@ -0,0 +1,105 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger と ScalarDL Auditor を Azure Kubernetes Service (AKS) にデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、Azure Kubernetes Service (AKS) に ScalarDL Ledger と ScalarDL Auditor をデプロイする方法について説明します。 + +このガイドでは、Azure 環境に次の3つの環境のいずれかを作成します。ビザンチン障害検出を適切に機能させるには、ScalarDL Ledger と ScalarDL Auditor を異なる管理ドメイン (つまり、別の環境) に展開することをお勧めします。 + +* 別の Azure アカウントを使用する (最も推奨される方法) + + ![image](./images/png/AKS_ScalarDL_Auditor_Multi_Account.drawio.png) + +* 別の Azure Virtual Networks (VNet) を使用する (2番目に推奨される方法) + + ![image](./images/png/AKS_ScalarDL_Auditor_Multi_VNet.drawio.png) + +* 異なる名前空間を使用する (3番目に推奨される方法) + + ![image](./images/png/AKS_ScalarDL_Auditor_Multi_Namespace.drawio.png) + +**注意:** このガイドは、2番目に推奨される方法「別の VNet を使用する」に従います。 + +## ステップ1. ScalarDL Ledger および ScalarDL Auditor コンテナーイメージを取得する + +ScalarDL Ledger および ScalarDL Auditor コンテナーイメージを取得する必要があります。Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナイメージを取得する方法](HowToGetContainerImages.mdx)を参照してください。 + +## ステップ2. ScalarDL Ledger の AKS クラスターを作成する + +ScalarDL Ledger デプロイ用の AKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ3. ScalarDL Auditor の AKS クラスターを作成する + +ScalarDL Auditor デプロイ用の AKS クラスターも作成する必要があります。詳細については、[Scalar 製品用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ4. ScalarDL Ledger のデータベースをセットアップする + +ScalarDL Ledger を展開する前にデータベースを準備する必要があります。ScalarDL Ledger は内部で ScalarDB を使用してデータベースにアクセスするため、ScalarDB がサポートするデータベースの種類を確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[Azure での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAzure.mdx)を参照してください。 + +## ステップ5. ScalarDL Auditor のデータベースをセットアップする + +ScalarDL Auditor を展開する前にデータベースを準備する必要もあります。ScalarDL Auditor は内部で ScalarDB を使用してデータベースにアクセスするため、ScalarDB がサポートするデータベースの種類を確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[Azure での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAzure.mdx)を参照してください。 + +## ステップ6. ScalarDL Ledger の踏み台サーバーを作成する + +AKS で ScalarDL Ledger をデプロイおよび管理するためのいくつかのツールを実行するには、**手順2**で作成した AKS クラスターの同じ VNet に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ7. ScalarDL Auditor の踏み台サーバーを作成する + +AKS で ScalarDL Auditor をデプロイおよび管理するためのいくつかのツールを実行するには、**手順3**で作成した AKS クラスターの同じ VNet に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ8. 2つの AKS クラスター間のネットワークピアリングを作成する + +ScalarDL を適切に動作させるには、ScalarDL Ledger と ScalarDL Auditor が相互に接続する必要があります。[仮想ネットワークピアリング](https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-peering-overview)を使用して2つの VNet を接続する必要があります。詳細については、[ScalarDL Auditor モードのネットワークピアリングの構成](NetworkPeeringForScalarDLAuditor.mdx)を参照してください。 + +## ステップ9. ScalarDL Ledger と ScalarDL Schema Loader の両方の Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ4**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDL Ledger と ScalarDL Schema Loader (Ledger 用) の両方の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx を参照してください。 + +## ステップ10. Scalar Helm Chart を使用して ScalarDL Ledger をデプロイする + +ScalarDL Ledger の Helm Chart を使用して、ScalarDL Ledger を AKS クラスターにデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注意:** `kubectl create ns scalardl-ledger` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardl-ledger` オプションを使用して名前空間に ScalarDL Ledger をデプロイすることをお勧めします。 + +## ステップ11. ScalarDL Auditor と ScalarDL Schema Loader の両方の Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ5**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDL Auditor と ScalarDL Schema Loader (Auditor 用) の両方の Scalar Helm Chart のカスタム値ファイルを構成する必要もあります 。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +## ステップ12. Scalar Helm Chart を使用して ScalarDL Auditor をデプロイする + +ScalarDL Auditor の Helm Chart を使用して、AKS クラスターに ScalarDL Auditor をデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注意:** `kubectl create ns scalardl-auditor` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardl-auditor` オプションを使用して名前空間に ScalarDL Auditor をデプロイすることをお勧めします。 + +## ステップ13. ScalarDL Ledger 導入のステータスを確認する + +ScalarDL Ledger を AKS クラスターにデプロイした後、各コンポーネントの状態を確認する必要があります。詳細については、[Kubernetes環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ14. ScalarDL Auditor デプロイメントのステータスを確認する + +ScalarDL Auditor を AKS クラスターにデプロイした後、各コンポーネントの状態を確認する必要があります。詳細については、[Kubernetes環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ15. ScalarDL Ledger の展開を監視する + +AKS クラスターに ScalarDL Ledger をデプロイした後、特に運用環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ステップ16. ScalarDL Auditor の展開を監視する + +AKS クラスターに ScalarDL Auditor をデプロイした後、特に運用環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](./K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ScalarDL Ledger と ScalarDL Auditor を AKS から削除します + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLAuditorOnEKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLAuditorOnEKS.mdx new file mode 100644 index 00000000..3b0d498d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLAuditorOnEKS.mdx @@ -0,0 +1,105 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger と ScalarDL Auditor を Amazon Elastic Kubernetes Service (EKS) にデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDL Ledger と ScalarDL Auditor を Amazon Elastic Kubernetes Service (EKS) にデプロイする方法について説明します。 + +このガイドでは、AWS 環境に次の3つの環境のいずれかを作成します。ビザンチン障害検出を適切に機能させるには、ScalarDL Ledger と ScalarDL Auditor を異なる管理ドメイン (つまり、別の環境) に展開することをお勧めします。 + +* 別の AWS アカウントを使用する (最も推奨される方法) + + ![image](./images/png/EKS_ScalarDL_Auditor_Multi_Account.drawio.png) + +* 異なる Amazon Virtual Private Cloud (VPC) を使用する (2番目に推奨される方法) + + ![image](./images/png/EKS_ScalarDL_Auditor_Multi_VPC.drawio.png) + +* 異なる名前空間を使用する (3番目に推奨される方法) + + ![image](./images/png/EKS_ScalarDL_Auditor_Multi_Namespace.drawio.png) + +**注記:** このガイドは、2番目に推奨される方法「別の VPC を使用する」に従います。 + +## ステップ1. AWS Marketplace で ScalarDL Ledger と ScalarDL Auditor を購読する + +[AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=bd4cd7de-49cd-433f-97ba-5cf71d76ec7b) から ScalarDL Ledger および ScalarDL Auditor コンテナイメージを取得し、ScalarDL Ledger および ScalarDL Auditor をサブスクライブする必要があります。AWS Marketplace で ScalarDL Ledger および ScalarDL Auditor を購読する方法の詳細については、[AWS Marketplace から Scalar 製品を購読する](AwsMarketplaceGuide.mdx#aws-marketplace-から-scalar-製品を購読する)を参照してください。 + +## ステップ2. ScalarDL Ledger の EKS クラスターを作成する + +ScalarDL Ledger デプロイメント用の EKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ3. ScalarDL Auditor 用の EKS クラスターを作成する + +ScalarDL Auditor デプロイメント用の EKS クラスターも作成する必要があります。詳細については、[Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ4. ScalarDL Ledger のデータベースをセットアップする + +ScalarDL Ledger を展開する前にデータベースを準備する必要があります。ScalarDL Ledger は内部で ScalarDB を使用してデータベースにアクセスするため、ScalarDB がサポートするデータベースの種類を確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[AWS での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAWS.mdx)を参照してください。 + +## ステップ5. ScalarDL Auditor のデータベースをセットアップする + +ScalarDL Auditor を展開する前にデータベースを準備する必要もあります。ScalarDL Auditor は内部で ScalarDB を使用してデータベースにアクセスするため、ScalarDB がサポートするデータベースの種類を確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[AWS での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAWS.mdx)を参照してください。 + +## ステップ6. ScalarDL Ledger の踏み台サーバーを作成する + +EKS 上で ScalarDL Ledger をデプロイおよび管理するためのいくつかのツールを実行するには、**ステップ2**で作成した EKS クラスターの同じ VPC 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ7. ScalarDL Auditor の踏み台サーバーを作成する + +EKS 上で ScalarDL Auditor をデプロイおよび管理するためのいくつかのツールを実行するには、**ステップ3**で作成した EKS クラスターの同じ VPC 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ8. 2つの EKS クラスター間のネットワークピアリングを作成する + +ScalarDL を適切に動作させるには、ScalarDL Ledger と ScalarDL Auditor が相互に接続する必要があります。[VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) を使用して2つの VPC を接続する必要があります。詳細については、[ScalarDL Auditor モードのネットワークピアリングの構成](NetworkPeeringForScalarDLAuditor.mdx)を参照してください。 + +## ステップ9. ScalarDL Ledger および ScalarDL Schema Loader の Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ4**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDL Ledger および ScalarDL Schema Loader (Ledger 用) の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +## ステップ10. Scalar Helm Chart を使用して ScalarDL Ledger をデプロイする + +ScalarDL Ledger の Helm Chart を使用して、ScalarDL Ledger を EKS クラスターにデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注記:** `kubectl create ns scalardl-ledger` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardl-ledger` オプションを使用して名前空間に ScalarDL Ledger をデプロイすることをお勧めします。 + +## ステップ11. ScalarDL Auditor と ScalarDL Schema Loader の両方の Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ5**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDL Auditor と ScalarDL Schema Loader (Auditor 用) の両方の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +## ステップ12. Scalar Helm Chart を使用して ScalarDL Auditor をデプロイする + +ScalarDL Auditor の Helm Chart を使用して、ScalarDL Auditor を EKS クラスターにデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注記:** `kubectl create ns scalardl-auditor` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardl-auditor` オプションを使用して名前空間に ScalarDL Auditor をデプロイすることをお勧めします。 + +## ステップ13. ScalarDL Ledger 導入のステータスを確認する + +EKS クラスターに ScalarDL Ledger をデプロイした後、各コンポーネントのステータスを確認する必要があります。詳細については、[Kubernetes環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ14. ScalarDL Auditor デプロイメントのステータスを確認する + +EKS クラスターに ScalarDL Auditor をデプロイした後、各コンポーネントのステータスを確認する必要があります。詳細については、[Kubernetes 環境で実行するときに定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ15. ScalarDL Ledger の展開を監視する + +EKS クラスターに ScalarDL Ledger をデプロイした後、特に本番環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ステップ16. ScalarDL Auditor の展開を監視する + +EKS クラスターに ScalarDL Auditor をデプロイした後、特に運用環境で、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## EKS から ScalarDL Ledger と ScalarDL Auditor を削除 + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLOnAKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLOnAKS.mdx new file mode 100644 index 00000000..c9dab5a1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLOnAKS.mdx @@ -0,0 +1,57 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# Azure Kubernetes Service (AKS) に ScalarDL Ledger をデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、**ScalarDL Ledger** を Azure Kubernetes Service (AKS) にデプロイする方法について説明します。 + +このガイドでは、Azure 環境に次の環境を作成します。 + +![image](./images/png/AKS_ScalarDL_Ledger.drawio.png) + +## ステップ1. ScalarDL Ledger コンテナーイメージを取得する + +ScalarDL Ledger コンテナーイメージを取得する必要があります。Scalar 製品のコンテナリポジトリの詳細については、[Scalar 製品のコンテナイメージを取得する方法](HowToGetContainerImages.mdx)を参照してください。 + +## ステップ2. AKS クラスターを作成する + +ScalarDL Ledger デプロイ用の AKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の AKS クラスターを作成するためのガイドライン](CreateAKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ3. ScalarDL Ledger のデータベースをセットアップする + +ScalarDL Ledger を展開する前にデータベースを準備する必要があります。ScalarDL Ledger は内部で ScalarDB を使用してデータベースにアクセスするため、ScalarDB がサポートするデータベースの種類を確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[Azure での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAzure.mdx) を参照してください。 + +## ステップ4. 踏み台サーバーを作成する + +AKS で ScalarDL Ledger をデプロイおよび管理するためのいくつかのツールを実行するには、**手順2**で作成した AKS クラスターの同じ Azure Virtual Network (VNet) 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ5. ScalarDL Ledger と ScalarDL Schema Loader の両方の Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ3**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDL Ledger と ScalarDL Schema Loader (Ledger 用) の両方の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +## ステップ6. Scalar Helm Chart を使用して ScalarDL Ledger をデプロイする + +ScalarDL Ledger の Helm Chart を使用して、AKS クラスターに ScalarDL Ledger をデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注記:** `kubectl create ns scalardl-ledger` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardl-ledger` オプションを使用して名前空間に ScalarDL Ledger をデプロイすることをお勧めします。 + +## ステップ7. ScalarDL Ledger 導入のステータスを確認する + +ScalarDL Ledger を AKS クラスターにデプロイした後、各コンポーネントの状態を確認する必要があります。詳細については、[Kubernetes環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ8. ScalarDL Ledger の展開を監視する + +AKS クラスターに ScalarDL Ledger をデプロイした後、特に運用環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## ScalarDL Ledger を AKS から削除する + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLOnEKS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLOnEKS.mdx new file mode 100644 index 00000000..4b3f8747 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ManualDeploymentGuideScalarDLOnEKS.mdx @@ -0,0 +1,57 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledger を Amazon Elastic Kubernetes Service (EKS) にデプロイする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、**ScalarDL Ledger** を Amazon Elastic Kubernetes Service (EKS) にデプロイする方法について説明します。 + +このガイドでは、AWS 環境アカウントに次の環境を作成します。 + +![image](./images/png/EKS_ScalarDL_Ledger.drawio.png) + +## ステップ1. AWS Marketplace で ScalarDL Ledger を購読する + +[AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-3jdwfmqonx7a2) から ScalarDL Ledger コンテナイメージを取得し、ScalarDL にサブスクライブする必要があります。AWS Marketplace で ScalarDL Ledger を購読する方法の詳細については、[AWS Marketplace から Scalar 製品を購読する](AwsMarketplaceGuide.mdx#aws-marketplace-から-scalar-製品を購読する)を参照してください。 + +## ステップ2. EKS クラスターを作成する + +ScalarDL Ledger デプロイメント用の EKS クラスターを作成する必要があります。詳細については、[Scalar 製品用の Amazon EKS クラスターを作成するためのガイドライン](CreateEKSClusterForScalarProducts.mdx)を参照してください。 + +## ステップ3. ScalarDL Ledger のデータベースをセットアップする + +ScalarDL Ledger を展開する前にデータベースを準備する必要があります。ScalarDL Ledger は内部で ScalarDB を使用してデータベースにアクセスするため、ScalarDB がサポートするデータベースの種類を確認するには、[ScalarDB Supported Databases](https://scalardb.scalar-labs.com/docs/latest/requirements#databases) を参照してください。 + +データベースのセットアップの詳細については、[AWS での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ](SetupDatabaseForAWS.mdx)を参照してください。 + +## ステップ4. 踏み台サーバーを作成する + +EKS で ScalarDL Ledger をデプロイおよび管理するためのいくつかのツールを実行するには、**ステップ2**で作成した EKS クラスターの同じ Amazon Virtual Private Cloud (VPC) 内に踏み台サーバーを準備する必要があります。詳細については、[踏み台サーバーの作成](CreateBastionServer.mdx)を参照してください。 + +## ステップ5. ScalarDL Ledger と ScalarDL Schema Loader の両方の Scalar Helm Chart のカスタム値ファイルを準備する + +**ステップ3**で作成したデータベース内の情報へのアクセスなどのタスクを実行するには、環境に基づいて ScalarDL Ledger と ScalarDL Schema Loader (Ledger 用) の両方の Scalar Helm Chart のカスタム値ファイルを構成する必要があります。詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + +## ステップ6. Scalar Helm Chart を使用して ScalarDL Ledger をデプロイする + +ScalarDL Ledger の Helm Chart を使用して、ScalarDL Ledger を EKS クラスターにデプロイします。詳細については、[Deploy Scalar products using Scalar Helm Charts](../helm-charts/how-to-deploy-scalar-products.mdx) を参照してください。 + +**注記:** `kubectl create ns scalardl-ledger` コマンドを使用して専用の名前空間を作成し、`helm install` コマンドで `-n scalardl-ledger` オプションを使用して名前空間に ScalarDL Ledger をデプロイすることをお勧めします。 + +## ステップ7. ScalarDL Ledger 導入のステータスを確認する + +EKS クラスターに ScalarDL Ledger をデプロイした後、各コンポーネントのステータスを確認する必要があります。詳細については、[Kubernetes環境で実行する場合に定期的に確認するコンポーネント](RegularCheck.mdx)を参照してください。 + +## ステップ8. ScalarDL Ledger の展開を監視する + +EKS クラスターに ScalarDL Ledger をデプロイした後、特に本番環境では、デプロイされたコンポーネントを監視し、そのログを収集することをお勧めします。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +## EKS から ScalarDL Ledger を削除 + +作成した環境を削除する場合は、作成時とは逆の順序ですべてのリソースを削除してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/NetworkPeeringForScalarDLAuditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/NetworkPeeringForScalarDLAuditor.mdx new file mode 100644 index 00000000..239981ca --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/NetworkPeeringForScalarDLAuditor.mdx @@ -0,0 +1,61 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Auditor モード用にネットワークピアリングを構成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDL Auditor モードで複数のプライベートネットワークを接続し、ネットワークピアリングを実行する方法について説明します。ScalarDL Auditor モードが正しく動作するには、ScalarDL Ledger を ScalarDL Auditor に接続する必要があります。 + +## 接続する必要があるネットワーク + +ScalarDL Auditor モード (ビザンチン障害検出) を正しく機能させるには、3つのプライベートネットワークを接続する必要があります。 + +* [ScalarDL Ledger ネットワーク] ↔ [ScalarDL Auditor ネットワーク] +* [ScalarDL Ledger ネットワーク] ↔ [アプリケーション(クライアント)ネットワーク] +* [ScalarDL Auditor ネットワーク] ↔ [アプリケーション (クライアント) ネットワーク] + +## ネットワーク要件 + +### IP アドレス範囲 + +プライベートネットワーク間で IP アドレスが競合しないようにするには、異なる IP アドレス範囲を持つプライベートネットワークが必要です。例えば: + +* **ScalarDL Ledger のプライベートネットワーク:** 10.1.0.0/16 +* **ScalarDL Auditor のプライベートネットワーク:** 10.2.0.0/16 +* **アプリケーション (クライアント) のプライベートネットワーク:** 10.3.0.0/16 + +### 接続 + +ScalarDL Ledger、ScalarDL Auditor、およびアプリケーション (クライアント) を接続するためのデフォルトのネットワークポートは、デフォルトでは次のとおりです。各プライベートネットワーク間でこれらの接続を許可する必要があります。 + +* **ScalarDL Ledger** + * **50051/TCP:** アプリケーション (クライアント) および Scalar Envoy 経由の ScalarDL Auditor からのリクエストを受け入れます。 + * **50052/TCP:** アプリケーション (クライアント) および Scalar Envoy 経由の ScalarDL Auditor からの特権リクエストを受け入れます。 +* **ScalarDL Auditor** + * **40051/TCP:** Scalar Envoy を介してアプリケーション (クライアント) および ScalarDL Ledger からのリクエストを受け入れます。 + * **40052/TCP:** アプリケーション (クライアント) および Scalar Envoy 経由の ScalarDL Ledger からの特権リクエストを受け入れます。 +* **Scalar Envoy** (ScalarDL Ledger および ScalarDL Auditor とともに使用) + * **50051/TCP:** アプリケーション (クライアント) および ScalarDL Auditor からの ScalarDL Ledger に対するリクエストを受け入れます。 + * **50052/TCP:** アプリケーション (クライアント) および ScalarDL Auditor からの ScalarDL Ledger に対する特権リクエストを受け入れます。 + * **40051/TCP:** アプリケーション (クライアント) および ScalarDL Ledger からの ScalarDL Auditor のリクエストを受け入れます。 + * **40052/TCP:** アプリケーション (クライアント) および ScalarDL Ledger からの ScalarDL Auditor に対する特権リクエストを受け入れます。 + +構成ファイル (ledger.properties または auditor.properties) で ScalarDL のリスニングポートをデフォルトから変更する場合は、構成したポートを使用して接続を許可する必要があることに注意してください。 + +## プライベートネットワークピアリング + +各クラウドのプライベートネットワークの接続方法については公式ドキュメントを参照してください。 + +### Amazon VPC ピアリング + +アマゾンウェブサービス (AWS) 環境で Virtual Private Cloud (VPC) をピアリングする方法の詳細については、Amazon の公式ドキュメント [Create a VPC peering connection](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) を参照してください。 + +### Azure VNet ピアリング + +Azure 環境で仮想ネットワークをピアリングする方法の詳細については、Microsoft の公式ドキュメント [Virtual network peering](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-peering-overview) を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDBCluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDBCluster.mdx new file mode 100644 index 00000000..a1eed1be --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDBCluster.mdx @@ -0,0 +1,157 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster の制作チェックリスト + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチェックリストは、実稼働環境に ScalarDB Cluster をデプロイする際の推奨事項を提供します。 + +## あなたが始める前に + +このチェックリストでは、推奨される管理対象 Kubernetes クラスターに ScalarDB Cluster をデプロイしていることを前提としています。 + +## 実稼働チェックリスト: ScalarDB Cluster + +以下は、運用環境で ScalarDB Cluster をセットアップする際の推奨事項のチェックリストです。 + +### ポッドと Kubernetes ワーカーノードの数 + +Kubernetes クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の[サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardb-cluster-custom-values-indirect-mode.yaml)を参照できます。 + +:::note + +ワーカーノードを異なるアベイラビリティゾーン (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### ワーカーノードの仕様 + +商用ライセンスの観点から、ScalarDB Cluster を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。また、ScalarDB Cluster ポッド以外の一部のポッドがワーカーノード上に存在します。 + +つまり、次のコンポーネントは1つのワーカーノード上で実行できます。 + +* ScalarDB Cluster ポッド (2vCPU / 4GB) +* Envoy プロキシ (`indirect` クライアントモードを使用する場合、または Java 以外のプログラミング言語を使用する場合) +* アプリケーションポッド (同じワーカーノード上でアプリケーションのポッドを実行することを選択した場合) +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +:::note + +`direct-kubernetes` モードを使用する場合は、Envoy ポッドをデプロイする必要はありません。 + +::: + +これを念頭に置いて、[ポッドと Kubernetes ワーカーノードの数](ProductionChecklistForScalarDBCluster.mdx#ポッドと-kubernetes-ワーカーノードの数)で説明されているように、少なくとも 4vCPU / 8GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、実稼働環境では、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが最小限です。システムのワークロードに応じて、Kubernetes クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDB Cluster ポッド、アプリケーションのポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングすることを計画している場合は、ワーカーノード上のポッドの最大数を考慮してワーカーノードのリソースを決定する必要があります。 + +#### 通信網 + +ScalarDB Cluster はインターネットアクセス経由でユーザーに直接サービスを提供しないため、Kubernetes クラスターはプライベートネットワーク上に作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDB Cluster にアクセスすることをお勧めします。 + +### 監視とログ記録 + +デプロイされたコンポーネントを監視し、そのログを収集する必要があります。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および `Kubernetes クラスター上の Scalar 製品からのログの収集](./K8sLogCollectionGuide.mdx)を参照してください。 + +### バックアップと復元 + +バックエンドデータベースで自動バックアップ機能とポイントインタイムリカバリ (PITR) 機能を有効にする必要があります。詳細については、[ScalarDB/ScalarDL 導入用のデータベースのセットアップ](SetupDatabase.mdx)を参照してください。 + +## 運用チェックリスト: ScalarDB Cluster にアクセスするクライアントアプリケーション + +以下は、実稼働環境で ScalarDB Cluster にアクセスするクライアントアプリケーションをセットアップする際の推奨事項のチェックリストです。 + +### クライアントモード (Java クライアントライブラリのみ) + +アプリケーションに Java を使用する場合、公式の Java クライアントライブラリを使用できます。この場合、[`direct-kubernetes mode`](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#direct-kubernetes-client-mode) または [`indirect mode`](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#indirect-client-mode) の2つのクライアントモードのいずれかを選択できます。 + +パフォーマンスの観点から、`direct-kubernetes` モードの使用をお勧めします。`direct-kubernetes` モードを使用するには、アプリケーションポッドを ScalarDB Cluster ポッドと同じ Kubernetes クラスターにデプロイする必要があります。この場合、Envoy ポッドをデプロイする必要はありません。 + +何らかの理由で Java アプリケーションポッドを ScalarDB Cluster ポッドと同じ Kubernetes クラスターにデプロイできない場合は、`indirect` モードを使用する必要があります。この場合、Envoy ポッドをデプロイする必要があります。 + +:::note + +クライアントモード設定は Java クライアントライブラリ専用です。アプリケーションに Java 以外のプログラミング言語を使用する場合 (基本的に、[gRPC API](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-grpc-api-guide) または [gRPC SQL API](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-sql-grpc-api-guide) をプログラミング言語から直接使用する場合)、そのような構成は存在しません。この場合、Envoy ポッドをデプロイする必要があります。 + +::: + +### トランザクションマネージャーの構成 (Java クライアントライブラリのみ) + +クライアントアプリケーションは、常に ScalarDB Cluster を通じてデータベースにアクセスする必要があります。リクエストが適切に実行されていることを確認するには、クライアントアプリケーションのプロパティファイルをチェックし、CRUD API の使用時に `scalar.db.transaction_manager=cluster` が設定されていることを確認します。 + +#### 実稼働環境に推奨 + +```mermaid +flowchart LR + app["アプリ
    gRPC を使用した ScalarDB Cluster ライブラリ"] + server["ScalarDB Cluster
    Consensus Commit を備えた
    ScalarDBライブラリ"] + db[(基盤となるストレージまたはデータベース)] + app --> server --> db +``` + +#### 本番環境では推奨されません (テスト目的のみ) + +```mermaid +flowchart LR + app["アプリ
    Consensus Commit を備えた
    ScalarDB Cluster ライブラリ"] + db[(基盤となるストレージまたはデータベース)] + app --> db +``` + +### SQL 接続構成 (Java クライアントライブラリのみ) + +クライアントアプリケーションは、常に ScalarDB Cluster を通じてデータベースにアクセスする必要があります。リクエストが適切に実行されていることを確認するには、クライアントアプリケーションのプロパティファイルをチェックし、SQL API を使用するときに `scalar.db.sql.connection_mode=cluster` が設定されていることを確認します。 + +#### 実稼働環境に推奨 + +```mermaid +flowchart LR + app["アプリ
    ScalarDB SQL ライブラリ (クラスターモード)"] + server["ScalarDB Cluster
    Consensus Commit を備えた
    ScalarDB ライブラリ"] + db[(基盤となるストレージまたはデータベース)] + app --> server --> db +``` + +#### 運用環境では推奨されません (テスト目的のみ) + +```mermaid +flowchart LR + app["アプリ
    ScalarDB SQL ライブラリ (ダイレクトモード)"] + db[(基盤となるストレージまたはデータベース)] + app --> db +``` + +### `direct-kubernetes` クライアントモードを使用する場合のクライアントアプリケーションのデプロイメント (Java クライアントライブラリのみ) + +[`direct-kubernetes` client mode](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api#direct-kubernetes-client-mode) を使用する場合は、クライアントアプリケーションを ScalarDB Cluster デプロイメントと同じ Kubernetes クラスターにデプロイする必要があります。 + +また、`direct-kubernetes` クライアントモードを使用する場合は、クライアントアプリケーションが適切に動作するように追加の Kubernetes リソースをデプロイする必要があります。詳細については、[Deploy your client application on Kubernetes with `direct-kubernetes` mode](../helm-charts/how-to-deploy-scalardb-cluster.mdx#direct-kubernetes-モードを使用してクライアント-アプリケーションを-kubernetes-にデプロイします) を参照してください。 + +### トランザクション処理 (Java クライアントライブラリと gRPC API) + +トランザクションを [`begin()`](https://scalardb.scalar-labs.com/docs/latest/api-guide#begin-or-start-a-transaction) した後、アプリケーションが常に [`commit()`](https://scalardb.scalar-labs.com/docs/latest/api-guide#commit-a-transaction) または [`rollback()`](https://scalardb.scalar-labs.com/docs/latest/api-guide#roll-back-or-abort-a-transaction) を実行するようにする必要があります。アプリケーションが `commit()` または `rollback()` を実行しない場合、アプリケーションで予期しない問題が発生したり、バックエンドデータベースから一貫性のないデータが読み取られる可能性があります。 + +:::note + +[gRPC API](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-grpc-api-guide) または [SQL gRPC API](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-sql-grpc-api-guide) を使用する場合、アプリケーションは、`Begin` サービスを呼び出してトランザクションを開始した後、`Commit` サービスまたは `Rollback` サービスを呼び出す必要があります。 + +::: + +### 例外処理 (Java クライアントライブラリと gRPC API) + +アプリケーションがトランザクション例外を処理することを確認する必要があります。詳細については、使用している API のドキュメントを参照してください。 + +* [Handle exceptions (Transactional API)](https://scalardb.scalar-labs.com/docs/latest/api-guide#handle-exceptions). +* [Handle exceptions (two-phase commit transactions API)](https://scalardb.scalar-labs.com/docs/latest/two-phase-commit-transactions#handle-exceptions) +* [Execute transactions (ScalarDB SQL API)](https://scalardb.scalar-labs.com/docs/latest/scalardb-sql/sql-api-guide#execute-transactions) +* [Handle SQLException (ScalarDB JDBC)](https://scalardb.scalar-labs.com/docs/latest/scalardb-sql/jdbc-guide#handle-sqlexception) +* [Error handling (ScalarDB Cluster gRPC API)](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-grpc-api-guide#error-handling-1) +* [Error handling (ScalarDB Cluster SQL gRPC API)](https://scalardb.scalar-labs.com/docs/latest/scalardb-cluster/scalardb-cluster-sql-grpc-api-guide#error-handling-1) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDLAuditor.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDLAuditor.mdx new file mode 100644 index 00000000..56e5c658 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDLAuditor.mdx @@ -0,0 +1,176 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Auditor の制作チェックリスト + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチェックリストは、ScalarDL Auditor を運用環境に展開する際の推奨事項を提供します。 + +## あなたが始める前に + +このチェックリストでは、推奨される管理対象 Kubernetes クラスターに ScalarDL Auditor をデプロイしていることを前提としています。 + +## プロダクションチェックリスト: ScalarDL Auditor + +以下は、運用環境で ScalarDL Auditor をセットアップする際の推奨事項のチェックリストです。 + +### ScalarDL の可用性 + +Kubernetes クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の[サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-audit-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なるアベイラビリティゾーン (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### リソース + +商用ライセンスの観点から、ScalarDL Auditor を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDL Auditor ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDL Auditor ポッド (2vCPU / 4GB) +* Envoy プロキシ +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +これを念頭に置いて、[ScalarDL の可用性](#scalardl-availability)で説明されているように、少なくとも 4vCPU / 8GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが運用環境の最小環境となります。システムのワークロードに応じて、Kubernetes クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDL Auditor ポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### 通信網 + +ScalarDL Auditor はインターネットアクセス経由でユーザーにサービスを直接提供しないため、Kubernetes クラスターはプライベートネットワーク上に作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDL Auditor にアクセスすることをお勧めします。 + +### 監視とログ記録 + +デプロイされたコンポーネントを監視し、そのログを収集する必要があります。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +### バックアップと復元 + +バックエンドデータベースで自動バックアップ機能とポイントインタイムリカバリ (PITR) 機能を有効にする必要があります。詳細については、[ScalarDB/ScalarDL 導入用のデータベースのセットアップ](SetupDatabase.mdx)を参照してください。 + +### ScalarDL Auditor の展開 + +ScalarDL でのビザンチン障害検出が適切に機能するには、ScalarDL Ledger デプロイメントと同じ Kubernetes クラスターに ScalarDL Auditor ポッドをデプロイしないでください。代わりに、ScalarDL Ledger デプロイメントの管理ドメイン以外の環境 (Kubernetes クラスター以外) に ScalarDL Auditor ポッドをデプロイする必要があります。 + +#### 実稼働環境に必要 + +```mermaid +graph LR + subgraph "ScalarDL" + subgraph "管理ドメイン 1" + subgraph "Ledger 用の Kubernetes クラスター" + B-1[ScalarDL Ledger] + end + end + subgraph "管理ドメイン 2" + subgraph "Auditor 用の Kubernetes クラスター" + C-1[ScalarDL Auditor] + end + end + end +``` + +#### 運用環境では推奨されません (テスト目的のみ) + +```mermaid +graph LR + subgraph "Kubernetes クラスター" + direction LR + A-1[ScalarDL Ledger] + A-2[ScalarDL Auditor] + end +``` + +### ScalarDL Ledger と ScalarDL Auditor 間の接続 + +ScalarDL Auditor モードが正しく動作するには、ScalarDL Ledger と ScalarDL Auditor 間の接続を許可する必要があります。 + +```mermaid +graph LR + subgraph "Ledger 用の Kubernetes クラスター" + A-1[ScalarDL Ledger] + end + subgraph "Auditor 用の Kubernetes クラスター" + B-1[ScalarDL Auditor] + end + A-1 --- B-1 +``` + +ScalarDL は、ScalarDL Ledger と ScalarDL Auditor 間の接続に次のポートを使用します。ScalarDL Ledger と ScalarDL Auditor の間で次の接続を許可する必要があります。 + +* ScalarDL Ledger + * 50051/TCP + * 50052/TCP +* ScalarDL Auditor + * 40051/TCP + * 40052/TCP + +### 秘密鍵と証明書 + +認証に PKI を使用する場合は、ScalarDL Ledger および ScalaDL Auditor に登録する秘密鍵と証明書が次の要件を満たしていることを確認する必要があります。 + +```console +Algorithm : ECDSA +Hash function : SHA256 +Curve parameter : P-256 +``` + +詳しくは [How to get a certificate](https://scalardl.scalar-labs.com/ja-jp/docs/latest/ca/caclient-getting-started) をご覧ください。 + +## 実稼働チェックリスト: ScalarDL Auditor にアクセスするクライアントアプリケーション + +以下は、運用環境で ScalarDL Auditor にアクセスするクライアントアプリケーションをセットアップする際の推奨事項のチェックリストです。 + +### クライアントアプリケーションのデプロイメント + +ScalarDL でのビザンチン障害検出が適切に機能するには、ScalarDL デプロイメントと同じ Kubernetes クラスターにアプリケーションポッドをデプロイしないでください。代わりに、ScalarDL デプロイメントの管理ドメイン以外の環境 (Kubernetes クラスター以外) にアプリケーションをデプロイする必要があります。 + +#### 実稼働環境に必要 + +```mermaid +graph LR + subgraph "管理ドメイン 1" + subgraph "別の環境" + A-1[ユーザーアプリケーション] + end + end + subgraph "ScalarDL" + subgraph "管理ドメイン 2" + subgraph "Ledger 用の Kubernetes クラスター" + B-1[ScalarDL Ledger] + end + end + subgraph "管理ドメイン 3" + subgraph "Auditor 用の Kubernetes クラスター" + C-1[ScalarDL Auditor] + end + end + end + A-1 --> B-1 + A-1 --> C-1 +``` + +#### 運用環境では推奨されません (テスト目的のみ) + +```mermaid +graph LR + subgraph "Kubernetes クラスター" + direction LR + A-1[ユーザーアプリケーション] + A-2[ScalarDL Ledger] + A-3[ScalarDL Auditor] + end + A-1 --> A-2 + A-1 --> A-3 +``` + +### クライアントアプリケーションのチェックリスト + +また、[運用チェックリスト: ScalarDL Ledger にアクセスするクライアントアプリケーション](ProductionChecklistForScalarDLLedger.mdx#運用チェックリスト-scalardl-ledger-にアクセスするクライアントアプリケーション)を満たしていることも確認する必要があります。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDLLedger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDLLedger.mdx new file mode 100644 index 00000000..e21ee260 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarDLLedger.mdx @@ -0,0 +1,162 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# ScalarDL Ledgerの制作チェックリスト + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチェックリストは、実稼働環境に ScalarDL Ledger を展開する際の推奨事項を提供します。 + +## あなたが始める前に + +このチェックリストでは、推奨される管理対象 Kubernetes クラスターに ScalarDL Ledger をデプロイしていることを前提としています。 + +## プロダクションチェックリスト: ScalarDL Ledger + +以下は、運用環境で ScalarDL Ledger をセットアップする際の推奨事項のチェックリストです。 + +### ScalarDL の可用性 + +Kubernetes クラスターの高可用性を確保するには、少なくとも3つのワーカーノードを使用し、ワーカーノード全体に少なくとも3つのポッドをデプロイする必要があります。3つのポッドをワーカーノードに分散させるための `podAntiAffinity` の[サンプル構成](https://github.com/scalar-labs/scalar-kubernetes/blob/master/conf/scalardl-custom-values.yaml)を参照できます。 + +:::note + +ワーカーノードを異なるアベイラビリティゾーン (AZ) に配置すると、AZ の障害に耐えることができます。 + +::: + +### リソース + +商用ライセンスの観点から、ScalarDL Ledger を実行する1つのポッドのリソースは 2vCPU / 4GB メモリに制限されます。ScalarDL Ledger ポッドに加えて、Kubernetes は次のコンポーネントの一部を各ワーカーノードにデプロイできます。 + +* ScalarDL Ledger ポッド (2vCPU / 4GB) +* Envoy プロキシ +* 監視コンポーネント (`kube-prometheus-stack` などの監視コンポーネントをデプロイする場合) +* Kubernetes コンポーネント + +これを念頭に置いて、[ScalarDL の可用性](#scalardl-availability) で説明されているように、少なくとも 4vCPU / 8GB のメモリリソースを持つワーカーノードを使用し、可用性のために少なくとも3つのワーカーノードを使用する必要があります。 + +ただし、ノードあたり少なくとも 4vCPU / 8GB のメモリリソースを備えた3つのノードが運用環境の最小環境となります。システムのワークロードに応じて、Kubernetes クラスターのリソース (ワーカーノードの数、ノードあたりの vCPU、ノードあたりのメモリ、ScalarDL Ledger ポッドなど) も考慮する必要があります。また、[Horizontal Pod Autoscaling (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) などの機能を使用してポッドを自動的にスケーリングする予定の場合は、ワーカーノードのリソースを決定するときにワーカーノード上の最大ポッド数を考慮する必要があります。 + +### 通信網 + +ScalarDL Ledger はインターネットアクセス経由でユーザーにサービスを直接提供しないため、Kubernetes クラスターはプライベートネットワーク上に作成する必要があります。アプリケーションからプライベートネットワーク経由で ScalarDL Ledger にアクセスすることをお勧めします。 + +### 監視とログ記録 + +デプロイされたコンポーネントを監視し、そのログを収集する必要があります。詳細については、[Kubernetes クラスター上の Scalar 製品の監視](K8sMonitorGuide.mdx)および [Kubernetes クラスター上の Scalar 製品からのログの収集](K8sLogCollectionGuide.mdx)を参照してください。 + +### バックアップと復元 + +バックエンドデータベースで自動バックアップ機能とポイントインタイムリカバリ (PITR) 機能を有効にする必要があります。詳細については、[ScalarDB/ScalarDL 導入用のデータベースのセットアップ](SetupDatabase.mdx) を参照してください。 + +## 運用チェックリスト: ScalarDL Ledger にアクセスするクライアントアプリケーション + +以下は、運用環境で ScalarDL Ledger にアクセスするクライアントアプリケーションをセットアップする際の推奨事項のチェックリストです。 + +### クライアントアプリケーションのデプロイメント + +ScalarDL でのビザンチン障害検出が適切に機能するには、アプリケーションポッドを ScalarDL Ledger デプロイメントと同じ Kubernetes クラスターにデプロイしないでください。代わりに、ScalarDL Ledger デプロイメントの管理ドメイン以外の環境 (Kubernetes クラスター以外) にアプリケーションをデプロイする必要があります。 + +#### 実稼働環境に必要 + +```mermaid +graph LR + subgraph "管理ドメイン 1" + subgraph "別の環境" + A-1[ユーザーアプリケーション] + end + end + subgraph "管理ドメイン 2" + subgraph "Kubernetes クラスター" + B-1[ScalarDL Ledger] + end + end + A-1 --> B-1 +``` + +#### 運用環境では推奨されません (テスト目的のみ) + +```mermaid +graph LR + subgraph "Kubernetes クラスター" + direction LR + A-1[ユーザーアプリケーション] --> A-2[ScalarDL Ledger] + end +``` + +### コントラクトと機能 + +コントラクトと機能がガイドラインに従っているかどうかを確認するには、次を参照してください。 + +* [A Guide on How to Write a Good Contract for ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/how-to-write-contract) +* [A Guide on How to Write Function for ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/how-to-write-function) + +### コントラクトのバージョン管理 + +コントラクトを登録した後は、既存のコントラクトを上書きすることはできません。したがって、コントラクトのバージョン管理を検討する必要があります。次の2つの方法のいずれかを推奨します。 + +#### `クラス名` を使用したバージョニング + +```console +Contract ID : FooV1 +Binary Name : com.example.contract.FooV1 +Class file (Class Name) : src/main/java/com/example/contract/FooV1.class +--- +Contract ID : FooV2 +Binary Name : com.example.contract.FooV2 +Class file (Class Name) : src/main/java/com/example/contract/FooV2.class +``` + +#### `Package Name` を使用したバージョニング + +```console +Contract ID : FooV3 +Binary Name : com.example.contract.v3.Foo +Class file (Class Name) : src/main/java/com/example/contract/v3/Foo.class +--- +Contract ID : FooV4 +Binary Name : com.example.contract.v4.Foo +Class file (Class Name) : src/main/java/com/example/contract/v4/Foo.class +``` + +### コントラクト上の制限 + +コントラクト登録時にバイナリ名、パッケージ名、クラス名が異なる場合、登録後にそのコントラクトを実行することはできません。 + +#### バイナリ名とクラス名が異なります (このコントラクトは実行できません) + +```console +Contract ID : FooV5 +Binary Name : com.example.contract.FooV5 +Class file (Class Name) : src/main/java/com/example/contract/FooV6.class +``` + +#### バイナリ名とパッケージ名が異なります (本コントラクトは実行できません) + +```console +Contract ID : FooV7 +Binary Name : com.example.contract.v7.Foo +Class file (Class Name) : src/main/java/com/example/contract/v8/Foo.class +``` + +### 秘密鍵と証明書 + +認証に PKI を使用する場合、ScalarDL Ledger に登録する秘密鍵と証明書が次の要件を満たしていることを確認する必要があります。 + +```console +Algorithm : ECDSA +Hash function : SHA256 +Curve parameter : P-256 +``` + +詳しくは [How to get a certificate](https://scalardl.scalar-labs.com/ja-jp/docs/latest/ca/caclient-getting-started) をご覧ください。 + +### 例外処理 + +アプリケーションが例外を処理することを確認する必要があります。詳細については、[A Guide on How to Handle Errors in ScalarDL](https://scalardl.scalar-labs.com/ja-jp/docs/latest/how-to-handle-errors) を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarProducts.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarProducts.mdx new file mode 100644 index 00000000..ccdb9a9a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/ProductionChecklistForScalarProducts.mdx @@ -0,0 +1,18 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar 製品の制作チェックリスト + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +デプロイメントを本番環境に向けて準備するには、次を参照してください。 + +* [ScalarDB Cluster の制作チェックリスト](ProductionChecklistForScalarDBCluster.mdx) +* [ScalarDL Ledger の制作チェックリスト](ProductionChecklistForScalarDLLedger.mdx) +* [ScalarDL Auditor の制作チェックリスト](ProductionChecklistForScalarDLAuditor.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/RegularCheck.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/RegularCheck.mdx new file mode 100644 index 00000000..1e6a40c1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/RegularCheck.mdx @@ -0,0 +1,99 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes 環境で実行するときに定期的にチェックするコンポーネント + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +手動デプロイメントガイドによってデプロイされたコンポーネントのほとんどは、マネージド Kubernetes サービスと Kubernetes 自己修復機能の助けを借りて自己修復されます。予期しない動作が発生したときに発生するアラートも設定されています。したがって、マネージド Kubernetes クラスターに Scalar 製品をデプロイするために毎日行うべきことはそれほど多くありません。ただし、システムのステータスを定期的にチェックして、すべてが正常に動作しているかどうかを確認することをお勧めします。ここでは、定期的に実行しておきたいことのリストを示します。 + +## Kubernetes リソース + +### ポッドがすべて正常なスタチューであるかどうかを確認する + +Kubernetes 名前空間を確認してください。 + +* Scalar 製品デプロイメントの `default` (または Scalar 製品をデプロイするときに指定された名前空間) +* Prometheus Operator と Loki の `monitoring` + +確認すべき内容: + +* `STATUS` はすべて `Running` です。 +* ポッドはさまざまなノードに均等に分散されます。 + +```console +kubectl get pod -o wide -n +``` + +次のような結果が表示されます: + +```console +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +scalardb-7876f595bd-2jb28 1/1 Running 0 2m35s 10.244.2.6 k8s-worker2 +scalardb-7876f595bd-rfvk6 1/1 Running 0 2m35s 10.244.1.8 k8s-worker +scalardb-7876f595bd-xfkv4 1/1 Running 0 2m35s 10.244.3.8 k8s-worker3 +scalardb-envoy-84c475f77b-cflkn 1/1 Running 0 2m35s 10.244.1.7 k8s-worker +scalardb-envoy-84c475f77b-tzmc9 1/1 Running 0 2m35s 10.244.3.7 k8s-worker3 +scalardb-envoy-84c475f77b-vztqr 1/1 Running 0 2m35s 10.244.2.5 k8s-worker2 +``` + +```console +kubectl get pod -n monitoring -o wide +``` + +次のような結果が表示されます: + +```console +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +alertmanager-scalar-monitoring-kube-pro-alertmanager-0 2/2 Running 1 (11m ago) 12m 10.244.2.4 k8s-worker2 +prometheus-scalar-monitoring-kube-pro-prometheus-0 2/2 Running 0 12m 10.244.1.5 k8s-worker +scalar-logging-loki-0 1/1 Running 0 13m 10.244.2.2 k8s-worker2 +scalar-logging-loki-promtail-2c4k9 0/1 Running 0 13m 10.244.0.5 k8s-control-plane +scalar-logging-loki-promtail-8r48b 1/1 Running 0 13m 10.244.3.2 k8s-worker3 +scalar-logging-loki-promtail-b26c6 1/1 Running 0 13m 10.244.2.3 k8s-worker2 +scalar-logging-loki-promtail-sks56 1/1 Running 0 13m 10.244.1.2 k8s-worker +scalar-monitoring-grafana-77c4dbdd85-4mrn7 3/3 Running 0 12m 10.244.3.4 k8s-worker3 +scalar-monitoring-kube-pro-operator-7575dd8bbd-bxhrc 1/1 Running 0 12m 10.244.1.3 k8s-worker +``` + +### ノードがすべて正常なステータスであるかどうかを確認します + +確認すべき内容: + +* `STATUS` はすべて `Ready` です。 + +```console +kubectl get nodes +``` + +次のような結果が表示されます: + +```console +NAME STATUS ROLES AGE VERSION +k8s-control-plane Ready control-plane 16m v1.25.3 +k8s-worker Ready 15m v1.25.3 +k8s-worker2 Ready 15m v1.25.3 +k8s-worker3 Ready 15m v1.25.3 +``` + +## Prometheus ダッシュボード (Scalar 製品のアラート) + +ドキュメント [Kubernetes クラスター上の Scalar 製品のモニタリング](K8sMonitorGuide.mdx)に従って、Prometheus ダッシュボードにアクセスします。[**アラート**] タブで、アラートのステータスを確認できます。 + +確認すべき内容: + +* すべてのアラートは **緑色 (非アクティブ)** + +何らかの問題が発生している場合は、**赤色 (起動中)** のステータスが表示されます。 + +## Grafana ダッシュボード (Scalar 製品のメトリクス) + +ドキュメント [Kubernetes クラスター上の Scalar 製品のモニタリング](K8sMonitorGuide.mdx)に従って、Grafana ダッシュボードにアクセスします。[**ダッシュボード**] タブには、Scalar 製品のダッシュボードが表示されます。これらのダッシュボードでは、Scalar 製品のいくつかのメトリクスを確認できます。 + +これらのダッシュボードは問題に直接対処することはできませんが、通常からの変化 (トランザクションエラーの増加など) を確認して、問題を調査するためのヒントを得ることができます。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/RestoreDatabase.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/RestoreDatabase.mdx new file mode 100644 index 00000000..3e299a9a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/RestoreDatabase.mdx @@ -0,0 +1,164 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Kubernetes 環境でデータベースを復元する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、ScalarDB または ScalarDL が Kubernetes 環境で使用するデータベースを復元する方法について説明します。このガイドは、クラウドサービスプロバイダーのマネージドデータベースを ScalarDB または ScalarDL のバックエンドデータベースとして使用していることを前提としていることに注意してください。 + +## データベースをリストアする手順 + +1. ScalarDB または ScalarDL ポッドを**0**にスケールインして、バックエンドデータベースへのリクエストを停止します。Helm コマンドで `--set *.replicaCount=0` フラグを使用すると、ポッドを**0**にスケールインできます。 + * ScalarDB Server + ```console + helm upgrade scalar-labs/scalardb -n -f /path/to/ --set scalardb.replicaCount=0 + ``` + * ScalarDL Ledger + ```console + helm upgrade scalar-labs/scalardl -n -f /path/to/ --set ledger.replicaCount=0 + ``` + * ScalarDL Auditor + ```console + helm upgrade scalar-labs/scalardl-audit -n -f /path/to/ --set auditor.replicaCount=0 + ``` +2. ポイントインタイムリカバリ (PITR) 機能を使用してデータベースを復元します。 + + 管理データベースに基づいてデータベースを復元する方法の詳細については、このガイドの[管理されたデータベースに基づいてデータを復元するための補足手順](RestoreDatabase.mdx#管理されたデータベースに基づいてデータを復元するための補足手順)セクションを参照してください。 + + NoSQL または複数のデータベースを使用している場合は、[Kubernetes 環境での NoSQL データベースのバックアップ](BackupNoSQL.mdx)のバックアップ手順に従うときに作成した一時停止期間の中間点を指定する必要があります。 +3. 新しく復元されたデータベースに基づいて **database.properties**、**ledger.properties**、または **auditor.properties** を更新します。 + + PITR 機能はデータベースを別のインスタンスとして復元するため、新しく復元されたデータベースにアクセスするには、ScalarDB または ScalarDL のカスタム値ファイル内のエンドポイント情報を更新する必要があります。カスタム値ファイルの設定方法の詳細については、[Configure a custom values file for Scalar Helm Charts](../helm-charts/configure-custom-values-file.mdx) を参照してください。 + + Amazon DynamoDB を使用している場合、データは別のインスタンスではなく別のテーブル名で復元されることに注意してください。つまり、データの復元後にエンドポイントは変更されません。代わりに、Amazon DynamoDB 内のテーブルの名前を変更してデータを復元する必要があります。同じテーブル名でデータを復元する方法の詳細については、このガイドの [Amazon DynamoDB](RestoreDatabase.mdx#amazon-dynamodb) セクションを参照してください。 +4. Helm コマンドの `--set *.replicaCount=N` フラグを使用して、ScalarDB または ScalarDL ポッドを**1**以上にスケールアウトし、クライアントからのリクエストの受け入れを開始します。 + * ScalarDB Server + ```console + helm upgrade scalar-labs/scalardb -n -f /path/to/ --set scalardb.replicaCount=3 + ``` + * ScalarDL Ledger + ```console + helm upgrade scalar-labs/scalardl -n -f /path/to/ --set ledger.replicaCount=3 + ``` + * ScalarDL Auditor + ```console + helm upgrade scalar-labs/scalardl-audit -n -f /path/to/ --set auditor.replicaCount=3 + ``` + +## 管理されたデータベースに基づいてデータを復元するための補足手順 + +### Amazon DynamoDB + +PITR 機能を使用すると、Amazon DynamoDB は別のテーブル名でデータを復元します。したがって、同じテーブル名でデータを復元するには、追加の手順に従う必要があります。 + +#### ステップ + +1. バックアップを作成します。 + 1. 一時停止期間の中間点を復元ポイントとして選択します。 + 2. PITR を使用してテーブル A をテーブル B に復元します。 + 3. 復元されたテーブル B のバックアップを実行します。次に、バックアップの名前がバックアップ B に適切であることを確認します。 + 4. テーブル B を取り外します。 + + PITR を使用して DynamoDB テーブルを復元する方法、および DynamoDB テーブルのバックアップを手動で実行する方法の詳細については、Amazon の次の公式ドキュメントを参照してください。 + + * [Restoring a DynamoDB table to a point in time](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/PointInTimeRecovery.Tutorial.html) + * [Backing up a DynamoDB table](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup.Tutorial.html) + + この **バックアップの作成** ステップは、[Kubernetes 環境で NoSQL データベースをバックアップする](BackupNoSQL.mdx#データを復元する期間を作成しバックアップを実行します) のバックアップ操作の一部として実行できます。 + +2. バックアップから復元します。 + 1. テーブル A を取り外します。 + 2. バックアップ B を使用して、A という名前のテーブルを作成します。 + +3. 環境に応じて、必要に応じてテーブル構成を更新します。 + + 自動スケーリングポリシーなどの一部の構成は復元後に設定されないため、必要に応じてこれらの構成を手動で設定する必要がある場合があります。詳細については、Amazon の公式ドキュメント[Backing up and restoring DynamoDB tables with DynamoDB: How it works](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CreateBackup.html) を参照してください。 + + たとえば、ScalarDB Schema Loader または ScalarDL Schema Loader を使用してテーブルを作成している場合、自動スケーリングはデフォルトで有効になります。したがって、DynamoDB で復元されたテーブルの自動スケーリングを手動で有効にする必要があります。DynamoDB で自動スケーリングを有効にする方法の詳細については、Amazon の公式ドキュメント [Enabling DynamoDB auto scaling on existing tables](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.Console.html#AutoScaling.Console.ExistingTable) を参照してください。 + + さらに、データベースを復元した後は、PITR 機能が無効になり、読み取り/書き込み容量モードがデフォルト値にリセットされます。環境に応じて、必要に応じてこれらの構成を手動で設定する必要があります。復元されたテーブルの一部の構成については、[AWS (Amazon DynamoDB) での ScalarDB/ScalarDL デプロイメント用のデータベースのセットアップ](SetupDatabaseForAWS.mdx#amazon-dynamodb)を参照してください。 + +### NoSQL 用 Azure Cosmos DB + +PITR 機能を使用する場合、Azure Cosmos DB は別のアカウントを使用してデータを復元します。したがって、カスタム値ファイル内のエンドポイント構成を更新する必要があります。 + +#### ステップ + +1. アカウントを復元します。PITR を使用して Azure Cosmos DB アカウントを復元する方法の詳細については、[Restore an Azure Cosmos DB account that uses continuous backup mode](https://learn.microsoft.com/en-us/azure/cosmos-db/restore-account-continuous-backup) を参照してください。 + +2. 復元されたアカウントの **デフォルトの整合性レベル** をデフォルト値から **Strong** に変更します。この値の変更方法の詳細については、Microsoft の公式ドキュメント [Configure the default consistency level](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level) を参照してください。 + +3. 新しく復元されたアカウントに基づいて、ScalarDB Schema Loader または ScalarDL Schema Loader の **database.properties** を更新します。 + + ScalarDB は、ScalarDB Schema Loader または ScalarDL Schema Loader を使用してスキーマを作成するときにインストールされるストアドプロシージャを使用して Cosmos DB アダプターを実装します。ただし、Cosmos DB の PITR 機能はストアドプロシージャを復元しないため、復元後にすべてのテーブルに必要なストアドプロシージャを再インストールする必要があります。ScalarDB Schema Loader または ScalarDL Schema Loader の `--repair-all` オプションを使用して、必要なストアドプロシージャを再インストールできます。 + * **ScalarDB テーブル:** ScalarDB Schema Loader の **database.properties** を構成する方法の詳細については、[Configure ScalarDB for Cosmos DB for NoSQL](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) を参照してください。 + + * **ScalarDL テーブル:** ScalarDL Schema Loader のカスタム値ファイルの設定方法の詳細については、[Configure a custom values file for ScalarDL Schema Loader](../helm-charts/configure-custom-values-scalardl-schema-loader.mdx) を参照してください。 + +4. 次のように、ScalarDB Schema Loader または ScalarDL Schema Loader で `--repair-all` フラグを使用してストアドプロシージャを再作成します。 + + * ScalarDB テーブル + ```console + java -jar scalardb-schema-loader-.jar --config /path/to/ -f /path/to/ [--coordinator] --repair-all + ``` + * ScalarDL Ledger テーブル + ```console + helm install repair-schema-ledger scalar-labs/schema-loading -n -f /path/to/ --set "schemaLoading.commandArgs={--repair-all}" + ``` + * ScalarDL Auditor テーブル + ```console + helm install repair-schema-auditor scalar-labs/schema-loading -n -f /path/to/ --set "schemaLoading.commandArgs={--repair-all}" + ``` + + ScalarDB Schema Loader でのテーブルの修復の詳細については、[Repair tables](https://scalardb.scalar-labs.com/docs/latest/schema-loader#repair-tables) を参照してください。 + +5. 環境に応じて、必要に応じてテーブル構成を更新します。復元されたアカウントの構成については、[Azure での ScalarDB/ScalarDL デプロイ用のデータベースのセットアップ (Azure Cosmos DB for NoSQL)](SetupDatabaseForAzure.mdx#azure-cosmos-db-for-nosql) を参照してください。 + +### Amazon RDS + +PITR 機能を使用する場合、Amazon RDS は別のデータベースインスタンスを使用してデータを復元します。したがって、カスタム値ファイル内のエンドポイント構成を更新する必要があります。 + +#### ステップ + +1. データベースインスタンスを復元します。PITR を使用して Amazon RDS インスタンスを復元する方法の詳細については、Amazon の次の公式ドキュメントを参照してください。 + * [Restoring a DB instance to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.html) + * [Restoring a Multi-AZ DB cluster to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIT.MultiAZDBCluster.html) + +2. 環境に応じて、必要に応じてテーブル構成を更新します。復元されたデータベースインスタンスの構成については、[AWS での ScalarDB/ScalarDL デプロイメント用のデータベースのセットアップ (Amazon RDS for MySQL、PostgreSQL、Oracle、および SQL Server)](SetupDatabaseForAWS.mdx#mysqlpostgresqloraclesql-server-用の-amazon-rds) を参照してください。 + +### Amazon Aurora + +PITR 機能を使用する場合、Amazon Aurora は別のデータベースクラスターを使用してデータを復元します。したがって、カスタム値ファイル内のエンドポイント構成を更新する必要があります。 + +#### ステップ + +1. データベースクラスターを復元します。PITR を使用して Amazon Aurora クラスターを復元する方法の詳細については。Amazon の公式ドキュメント [Restoring a DB cluster to a specified time](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-pitr.html) を参照してください。 + +2. 環境に応じて、必要に応じてレプリカ (リーダー) を追加してデータベースクラスターをマルチ AZ クラスターにします。 + + Amazon Aurora の PITR 機能は、マルチ AZ 構成を使用してデータベースクラスターを復元できません。データベースクラスターをマルチ AZ クラスターとして復元する場合は、データベースクラスターの復元後にリーダーを追加する必要があります。リーダーの追加方法の詳細については、Amazon の公式ドキュメント [Adding Aurora Replicas to a DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-replicas-adding.html) を参照してください。 + +3. 環境に応じて、必要に応じてテーブル構成を更新します。復元されたデータベースクラスターの構成については、[AWS での ScalarDB/ScalarDL デプロイメント用のデータベースのセットアップ (Amazon Aurora MySQL および Amazon Aurora PostgreSQL)](SetupDatabaseForAWS.mdx#amazon-aurora-mysql-と-amazon-aurora-postgresql) を参照してください。 + +### Azure Database for MySQL/PostgreSQL + +PITR 機能を使用する場合、Azure Database for MySQL/PostgreSQL は別のサーバーを使用してデータを復元します。したがって、カスタム値ファイル内のエンドポイント構成を更新する必要があります。 + +#### ステップ + +1. データベースサーバーを復元します。PITR を使用して Azure Database for MySQL/PostgreSQL サーバーを復元する方法の詳細については、次を参照してください。 + + * [Point-in-time restore of a Azure Database for MySQL Flexible Server using Azure portal](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-restore-server-portal) + * [Backup and restore in Azure Database for PostgreSQL - Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-backup-restore) + +2. 環境に応じて、必要に応じてテーブル構成を更新します。復元されたデータベースサーバーの構成については、次を参照してください。 + + * [Azure 上で ScalarDB/ScalarDL デプロイ用のデータベースをセットアップする (Azure Database for MySQL)](SetupDatabaseForAzure.mdx#azure-database-for-mysql) + * [Azure 上で ScalarDB/ScalarDL デプロイ用のデータベースをセットアップする (Azure Database for PostgreSQL)](SetupDatabaseForAzure.mdx#azure-database-for-postgresql) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabase.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabase.mdx new file mode 100644 index 00000000..4d778c82 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabase.mdx @@ -0,0 +1,17 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB/ScalarDL デプロイメント用のデータベースをセットアップする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、クラウドサービス上で ScalarDB/ScalarDL を展開するためのデータベースをセットアップする方法について説明します。 + +* [AWS での ScalarDB/ScalarDL デプロイメント用のデータベースのセットアップ](SetupDatabaseForAWS.mdx) +* [Azure 上で ScalarDB/ScalarDL デプロイメント用のデータベースをセットアップする](SetupDatabaseForAzure.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabaseForAWS.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabaseForAWS.mdx new file mode 100644 index 00000000..886bc251 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabaseForAWS.mdx @@ -0,0 +1,186 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# AWS で ScalarDB/ScalarDL デプロイメント用のデータベースをセットアップする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、AWS で ScalarDB/ScalarDL をデプロイするためのデータベースをセットアップする方法について説明します。 + +## Amazon DynamoDB + +### 認証方法 + +DynamoDB を使用する場合、ScalarDB/ScalarDL プロパティファイルに `REGION`、`ACCESS_KEY_ID`、および `SECRET_ACCESS_KEY` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points= +scalar.db.username= +scalar.db.password= +scalar.db.storage=dynamo +``` + +DynamoDB のプロパティの詳細については、次のドキュメントを参照してください。 + +* [Configure ScalarDB for DynamoDB](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) + +### 必要な構成/手順 + +DynamoDB はデフォルトで AWS で使用できます。使用するために手動で何かを設定する必要はありません。 + +### オプションの構成/手順 + +#### ポイントインタイムリカバリを有効にする (運用環境で推奨) + +DynamoDB のバックアップ/復元方法として PITR を有効にすることができます。[ScalarDB Schema Loader](https://scalardb.scalar-labs.com/docs/latest/schema-loader) を使用してスキーマを作成すると、デフォルトでテーブルの PITR 機能が有効になります。詳細については公式ドキュメントを参照してください。 + +* [Point-in-time recovery for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/PointInTimeRecovery.html) + +ポイントインタイムリカバリ機能により自動的かつ継続的にバックアップが作成されるため、バックアップ操作のダウンタイム (一時停止期間) を短縮できるため、この機能をお勧めします。Scalar 製品データのバックアップ/復元方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar 製品のバックアップ復元ガイド](BackupRestoreGuide.mdx) + +#### 監視を構成する (運用環境で推奨) + +DynamoDB のネイティブ機能を使用して、DynamoDB のモニタリングとロギングを設定できます。詳細については公式ドキュメントを参照してください。 + +* [Monitoring and logging](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/monitoring.html) + +メトリクスとログは、運用環境で問題が発生したときにそれを調査するのに役立つため、これをお勧めします。 + +#### VPC エンドポイントを使用する (本番環境で推奨) + +// この機能は Scalar 製品ではまだテストされていないことに注意してください。 +// TODO: この機能を Scalar 製品でテストする必要があります。 + +* [Using Amazon VPC endpoints to access DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/vpc-endpoints-dynamodb.html) + +WAN 経由ではないプライベート内部接続によりシステムの安全性が高まるため、これをお勧めします。 + +#### 読み取り/書き込み容量の構成 (環境に応じてオプション) + +要件に基づいて、DynamoDB テーブルの **読み取り/書き込み容量** を構成できます。読み取り/書き込み容量の詳細については、公式ドキュメントを参照してください。 + +* [Read/write capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) + +テーブルの作成時に、ScalarDB/DL Schema Loader を使用して読み取り/書き込み容量を構成できます。ScalarDB/DL Schema Loader を使用して読み取り/書き込み容量 (RU) を構成する方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDB Schema Loader](https://scalardb.scalar-labs.com/docs/latest/schema-loader) + +## MySQL、PostgreSQL、Oracle、SQL Server 用の Amazon RDS + +### 認証方法 + +RDS を使用する場合、ScalarDB/ScalarDL プロパティファイルに `JDBC_URL`、`USERNAME`、および `PASSWORD` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points= +scalar.db.username= +scalar.db.password= +scalar.db.storage=jdbc +``` + +RDS (JDBCデータベース) のプロパティの詳細については、以下のドキュメントを参照してください。 + +* [Configure ScalarDB for JDBC databases](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) + +### 必要な構成/手順 + +#### RDS データベースインスタンスを作成する + +RDS データベースインスタンスを作成する必要があります。詳細については公式ドキュメントを参照してください。 + +* [Configuring an Amazon RDS DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_RDS_Configuring.html) + +### オプションの構成/手順 + +#### 自動バックアップを有効にする (運用環境で推奨) + +自動バックアップを有効にすることができます。詳細については公式ドキュメントを参照してください。 + +* [Working with backups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) + +自動バックアップ機能によりポイントインタイムリカバリ機能が有効になるため、これをお勧めします。データを特定の時点まで復元できます。Scalar 製品で複数のデータベースを使用する場合、バックアップ操作のダウンタイム (一時停止時間) を短縮できます。Scalar 製品データのバックアップ/復元方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar 製品のバックアップ復元ガイド](BackupRestoreGuide.mdx) + +#### 監視を構成する (運用環境で推奨) + +RDS のネイティブ機能を使用して、RDS の監視とログ記録を構成できます。詳細については公式ドキュメントを参照してください。 + +* [Monitoring metrics in an Amazon RDS instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) +* [Monitoring events, logs, and streams in an Amazon RDS DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitor_Logs_Events.html) + +メトリクスとログは、運用環境で問題が発生したときにそれを調査するのに役立つため、これをお勧めします。 + +#### パブリックアクセスを無効にする (運用環境で推奨) + +パブリックアクセスはデフォルトでは無効になっています。次のように、EKS クラスター上の Scalar 製品ポッドから RDS データベースインスタンスにアクセスできます。 + +* EKS クラスターと同じ VPC 上に RDS データベースインスタンスを作成します。 +* [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) を使用して、Scalar 製品デプロイの RDS 用 VPC と EKS クラスター用 VPC を接続します。(// TODO: この機能を Scalar 製品でテストする必要があります。) + +WAN 経由ではないプライベート内部接続によりシステムの安全性が高まるため、これをお勧めします。 + +## Amazon Aurora MySQL と Amazon Aurora PostgreSQL + +### 認証方法 + +Amazon Aurora を使用する場合、ScalarDB/ScalarDL プロパティファイルに `JDBC_URL`、`USERNAME`、および `PASSWORD` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points= +scalar.db.username= +scalar.db.password= +scalar.db.storage=jdbc +``` + +Amazon Aurora (JDBC データベース) のプロパティの詳細については、次のドキュメントを参照してください。 + +* [Configure ScalarDB for JDBC databases](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) + +### 必要な構成/手順 + +#### Amazon Aurora DB クラスターを作成する + +Amazon Aurora DB クラスターを作成する必要があります。詳細については公式ドキュメントを参照してください。 + +* [Configuring your Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraSettingUp.html) + +### オプションの構成/手順 + +#### バックアップ構成を構成します (環境に応じてオプション) + +Amazon Aurora はデフォルトで自動的にバックアップを取得します。バックアップ機能を手動で有効にする必要はありません。 + +バックアップ保持期間やバックアップウィンドウなどのバックアップ構成を変更する場合は、それらを構成できます。詳細については公式ドキュメントを参照してください。 + +* [Backing up and restoring an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/BackupRestoreAurora.html) + +Scalar 製品データのバックアップ/復元方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar 製品のバックアップ復元ガイド](BackupRestoreGuide.mdx) + +#### 監視を構成する (運用環境で推奨) + +Amazon Aurora のネイティブ機能を使用して、Amazon Aurora のモニタリングとロギングを設定できます。詳細については公式ドキュメントを参照してください。 + +* [Monitoring metrics in an Amazon Aurora cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/MonitoringAurora.html) +* [Monitoring events, logs, and streams in an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_Monitor_Logs_Events.html) + +メトリクスとログは、運用環境で問題が発生したときにそれを調査するのに役立つため、これをお勧めします。 + +#### パブリックアクセスを無効にする (運用環境で推奨) + +パブリックアクセスはデフォルトでは無効になっています。次のように、EKS クラスター上の Scalar 製品ポッドから Amazon Aurora DB クラスターにアクセスできます。 + +* EKS クラスターと同じ VPC 上に Amazon Aurora DB クラスターを作成します。 +* [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) を使用して、Scalar 製品デプロイメント用の Amazon Aurora DB クラスターの VPC と EKS クラスターの VPC を接続します。(// TODO: この機能を Scalar 製品でテストする必要があります。) + +WAN 経由ではないプライベート内部接続によりシステムの安全性が高まるため、これをお勧めします。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabaseForAzure.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabaseForAzure.mdx new file mode 100644 index 00000000..26b7bfe7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/SetupDatabaseForAzure.mdx @@ -0,0 +1,210 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Azure で ScalarDB/ScalarDL デプロイ用のデータベースをセットアップする + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このガイドでは、Azure 上で ScalarDB/ScalarDL デプロイ用のデータベースをセットアップする方法について説明します。 + +## Azure Cosmos DB for NoSQL + +### 認証方法 + +Cosmos DB for NoSQL を使用する場合は、ScalarDB/ScalarDL プロパティファイルで `COSMOS_DB_URI` と `COSMOS_DB_KEY` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points= +scalar.db.password= +scalar.db.storage=cosmos +``` + +Cosmos DB for NoSQL のプロパティの詳細については、次のドキュメントを参照してください。 + +* [Configure ScalarDB for Cosmos DB for NoSQL](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) + +### 必要な構成/手順 + +#### Azure Cosmos DB アカウントを作成する + +NoSQL (コア) API を使用して Azure Cosmos DB アカウントを作成する必要があります。**Capacity mode**を作成するときは、**Provisioned throughput**として設定する必要があります。詳細については公式ドキュメントを参照してください。 + +* [Quickstart: Create an Azure Cosmos DB account, database, container, and items from the Azure portal](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/quickstart-portal) + +#### デフォルトの整合性構成を構成する + +**Default consistency level**を**Strong**に設定する必要があります。詳細については公式ドキュメントを参照してください。 + +* [Configure the default consistency level](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/how-to-manage-consistency#config/ure-the-default-consistency-level) + +### オプションの構成/手順 + +#### バックアップ構成を構成する (実稼働環境で推奨) + +PITR の **Backup modes**を **Continuous backup mode**として構成できます。詳細については公式ドキュメントを参照してください。 + +* [Backup modes](https://learn.microsoft.com/en-us/azure/cosmos-db/online-backup-and-restore#backup-modes) + +継続バックアップモードでは自動的かつ継続的にバックアップが取得されるため、バックアップ操作のダウンタイム (一時停止期間) を短縮できるため、このモードをお勧めします。Scalar 製品データのバックアップ/復元方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar 製品のバックアップ復元ガイド](BackupRestoreGuide.mdx) + +#### 監視を構成する (運用環境で推奨) + +Cosmos DB の監視は、ネイティブ機能を使用して構成できます。詳細については、公式ドキュメントを参照してください。 + +* [Azure Cosmos DB を監視する](https://learn.microsoft.com/en-us/azure/cosmos-db/monitor) + +メトリックとログは、運用環境で問題が発生したときに調査するのに役立つため、推奨されます。 + +#### サービスエンドポイントを有効にする (運用環境で推奨) + +仮想ネットワーク (VNet) の特定のサブネットからのアクセスのみを許可するように Azure Cosmos DB アカウントを構成できます。詳細については公式ドキュメントを参照してください。 + +* [Configure access to Azure Cosmos DB from virtual networks (VNet)](https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-configure-vnet-service-endpoint) + +WAN 経由ではないプライベート内部接続によりシステムの安全性が高まるため、これをお勧めします。 + +#### リクエストユニットを構成します (環境に応じてオプション) + +要件に基づいて Cosmos DB の **Request Units** を構成できます。リクエスト単位の詳細については公式ドキュメントを参照してください。 + +* [Request Units in Azure Cosmos DB](https://learn.microsoft.com/en-us/azure/cosmos-db/request-units) + +テーブルの作成時に、ScalarDB/DL Schema Loader を使用してリクエストユニットを構成できます。ScalarDB/DL Schema Loader を使用してリクエストユニット (RU) を構成する方法の詳細については、次のドキュメントを参照してください。 + +* [ScalarDB Schema Loader](https://scalardb.scalar-labs.com/docs/latest/schema-loader) + +## Azure Database for MySQL + +### 認証方法 + +Azure Database for MySQL を使用する場合は、ScalarDB/ScalarDL プロパティファイルで `JDBC_URL`、`USERNAME`、および `PASSWORD` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points= +scalar.db.username= +scalar.db.password= +scalar.db.storage=jdbc +``` + +Azure Database for MySQL (JDBC データベース) のプロパティの詳細については、次のドキュメントを参照してください。 + +* [Configure ScalarDB for JDBC databases](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) + +### 必要な構成/手順 + +#### データベースサーバーを作成する + +データベースサーバーを作成する必要があります。詳細については公式ドキュメントを参照してください。 + +* [Quickstart: Use the Azure portal to create an Azure Database for MySQL Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/quickstart-create-server-portal) + +導入には **Single Server** または **Flexible Server** を選択できます。ただし、Azure では Flexible Server が推奨されます。このドキュメントは、Flexible Server の使用を前提としています。導入モデルの詳細については、公式ドキュメントを参照してください。 + +* [What is Azure Database for MySQL?](https://learn.microsoft.com/en-us/azure/mysql/single-server/overview#deployment-models) + +### オプションの構成/手順 + +#### バックアップ構成を構成します (環境に応じてオプション) + +Azure Database for MySQL は、既定でバックアップを取得します。バックアップ機能を手動で有効にする必要はありません。 + +バックアップの保持期間など、一部のバックアップ構成を変更する場合は、それを構成できます。詳細については公式ドキュメントを参照してください。 + +* [Backup and restore in Azure Database for MySQL Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-backup-restore) + +Scalar 製品データのバックアップ/復元方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar 製品のバックアップ復元ガイド](BackupRestoreGuide.mdx) + +#### 監視を構成する (運用環境で推奨) + +Azure Database for MySQL のネイティブ機能を使用して、その監視を構成できます。詳細については公式ドキュメントを参照してください。 + +* [Monitor Azure Database for MySQL Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-monitoring) + +メトリクスとログは、運用環境で問題が発生したときにそれを調査するのに役立つため、これをお勧めします。 + +#### パブリックアクセスを無効にする (運用環境で推奨) + +**Private access (VNet Integration)** を **Connectivity method** として構成できます。詳細については公式ドキュメントを参照してください。 + +* [Connectivity and networking concepts for Azure Database for MySQL - Flexible Server](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-networking) + +次のように、AKS クラスター上の Scalar 製品ポッドからデータベースサーバーにアクセスできます。 + +* AKS クラスターと同じ VNet 上にデータベースサーバーを作成します。 +* [Virtual network peering](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-peering-overview) を使用して、Scalar 製品デプロイのデータベースサーバー用の VNet と AKS クラスター用の VNet を接続します。(// TODO: この機能を Scalar 製品でテストする必要があります。) + +WAN 経由ではないプライベート内部接続によりシステムの安全性が高まるため、これをお勧めします。 + +## Azure Database for PostgreSQL + +### 認証方法 + +Azure Database for PostgreSQL を使用する場合は、ScalarDB/ScalarDL プロパティファイルで `JDBC_URL`、`USERNAME`、および `PASSWORD` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points= +scalar.db.username= +scalar.db.password= +scalar.db.storage=jdbc +``` + +Azure Database for PostgreSQL (JDBC データベース) のプロパティの詳細については、次のドキュメントを参照してください。 + +* [Configure ScalarDB for JDBC databases](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb#set-up-your-database-for-scalardb) + +### 必要な構成/手順 + +#### データベースサーバーを作成する + +データベースサーバーを作成する必要があります。詳細については公式ドキュメントを参照してください。 + +* [Quickstart: Create an Azure Database for PostgreSQL - Flexible Server in the Azure portal](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/quickstart-create-server-portal) + +導入には **Single Server** または **Flexible Server** を選択できます。ただし、Azure では Flexible Server が推奨されます。このドキュメントは、Flexible Server の使用を前提としています。導入モデルの詳細については、公式ドキュメントを参照してください。 + +* [What is Azure Database for PostgreSQL?](https://learn.microsoft.com/en-us/azure/postgresql/single-server/overview#deployment-models) + +### オプションの構成/手順 + +#### バックアップ構成を構成します (環境に応じてオプション) + +Azure Database for PostgreSQL は、既定でバックアップを取得します。バックアップ機能を手動で有効にする必要はありません。 + +バックアップの保持期間など、一部のバックアップ構成を変更する場合は、それを構成できます。詳細については公式ドキュメントを参照してください。 + +* [Backup and restore in Azure Database for PostgreSQL - Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-backup-restore) + +Scalar 製品データのバックアップ/復元方法の詳細については、次のドキュメントを参照してください。 + +* [Scalar 製品のバックアップ復元ガイド](BackupRestoreGuide.mdx) + +#### 監視を構成する (運用環境で推奨) + +Azure Database for PostgreSQL のネイティブ機能を使用して、その監視を構成できます。詳細については公式ドキュメントを参照してください。 + +* [Monitor metrics on Azure Database for PostgreSQL - Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-monitoring) + +メトリクスとログは、運用環境で問題が発生したときにそれを調査するのに役立つため、これをお勧めします。 + +#### パブリックアクセスを無効にする (運用環境で推奨) + +**Private access (VNet Integration)** を **Connectivity method** として構成できます。詳細については公式ドキュメントを参照してください。 + +* [Networking overview for Azure Database for PostgreSQL - Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-networking) + +次のように、AKS クラスター上の Scalar 製品ポッドからデータベースサーバーにアクセスできます。 + +* AKS クラスターと同じ VNet 上にデータベースサーバーを作成します。 +* [Virtual network peering](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-peering-overview) を使用して、Scalar 製品デプロイのデータベースサーバー用の VNet と AKS クラスター用の VNet を接続します。(// TODO: この機能を Scalar 製品でテストする必要があります。) + +WAN 経由ではないプライベート内部接続によりシステムの安全性が高まるため、これをお勧めします。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/Envoy.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/Envoy.mdx new file mode 100644 index 00000000..4804ac8b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/Envoy.mdx @@ -0,0 +1,157 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Envoy アラート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +## EnvoyClusterDown + +これは最も重要なアラートであり、Envoy クラスターがリクエストを処理できないことを示します。このアラートは最優先で処理する必要があります。 + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] EnvoyClusterDown - critical +Alert: Envoy cluster is down - critical + Description: Envoy cluster is down, no resquest can be process + Details: + • alertname: EnvoyClusterDown + • deployment: prod-scalardl-envoy +``` + +#### 解決済み + +``` +[RESOLVED] EnvoyClusterDown - critical +Alert: Envoy cluster is down - critical + Description: Envoy cluster is down, no resquest can be process + Details: + • alertname: EnvoyClusterDown + • deployment: prod-scalardl-envoy +``` + +### 必要なアクション + +* `kubectl get deployments. prod-scalardl-envoy` で設定されたレプリカの数を確認します。 +* `kubectl describe deployments. prod-scalardl-envoy` はデプロイメントを説明するために設定されたレプリカの数を確認します。 +* `kubectl get node -o wide` でノードのステータスを確認します。 +* ログサーバーをチェックして、モニターサーバー `/log/kubernetes//-/kube.log` 上の kubernetes ログで障害の根本原因を特定します。 +* 既知の問題があるかどうかをクラウドプロバイダーに確認してください。たとえば、Azure の彫像は[ここ](https://status.azure.com/en-us/status)で確認できます。 + +## EnvoyClusterDegraded + +このアラートは、Kubernetes クラスターが Envoy ポッドを開始できないかどうかを示します。これは、クラスターにデプロイメントを実行するための十分なリソースがない、または1つまたは複数の Kubernetes ノードが失われたことを意味します。 + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] EnvoyClusterDegraded - warning +Alert: Envoy cluster is running in a degraded mode - warning + Description: Envoy cluster is running in a degraded mode, some of the Envoy pods are not healthy + Details: + • alertname: EnvoyClusterDegraded + • deployment: prod-scalardl-envoy +``` + +#### 解決済み + +``` +[RESOLVED] EnvoyClusterDegraded - warning +Alert: Envoy cluster is running in a degraded mode - warning + Description: Envoy cluster is running in a degraded mode, some of the Envoy pods are not healthy + Details: + • alertname: EnvoyClusterDegraded + • deployment: prod-scalardl-envoy +``` + +### 必要なアクション + +* ログサーバーをチェックして、モニターサーバー `/log/kubernetes//-/kube.log` または `kubectl logs prod-scalardl-envoy-xxxx-yyyy` 上の kubernetes ログに関する障害の根本原因を特定します。 +* `kubectl describe deployments prod-scalardl-envoy` で kubernetes のデプロイメントを確認します。 +* `kubectl get replicasets.apps` でレプリカセットを確認します。 +* `kubectl get node -o wide` でノードのステータスを確認します。 +* 既知の問題があるかどうかをクラウドプロバイダーに確認してください。たとえば、Azure の彫像は[ここ](https://status.azure.com/en-us/status)で確認できます。 + +## EnvoyPodsPending + +このアラートは、kubernetes クラスターが Envoy ポッドを開始できないかどうか、つまりクラスターに十分なリソースがないことを示します。 + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] EnvoyPodsPending - warning +Alert: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default in pending status - warning + Description: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default has been in pending status for more than 1 minute. + Details: + • alertname: EnvoyPodsPending + • deployment: prod-scalardl-envoy +``` + +#### 解決済み + +``` +[RESOLVED:1] EnvoyPodsPending - warning +Alert: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default in pending status - warning + Description: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default has been in pending status for more than 1 minute. + Details: + • alertname: EnvoyPodsPending + • deployment: prod-scalardl-envoy +``` + +### 必要なアクション + +* ログ サーバーをチェックして、モニター サーバー `/log/kube//*.log` 上の kubernetes ログに関する障害の根本原因を特定します。 +* `kubectl describe pod prod-scalardl-envoy-xxxx-yyyy` で Kubernetes デプロイメントを確認します。 + +## EnvoyPodsError + +このアラートは、次のいずれかの理由で Kubernetes クラスターが Envoy ポッドを開始できないかどうかを知らせます。 + +* CrashLoopBackOff +* CreateContainerConfigError +* CreateContainerError +* ErrImagePull +* ImagePullBackOff +* InvalidImageName + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] EnvoyPodsError - warning +Alert: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default has an error status - warning + Description: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default has been in pending status for more than 1 minutes. + Details: + • alertname: EnvoyPodsError + • deployment: prod-scalardl-envoy +``` + +#### 解決済み + +``` +[RESOLVED:1] EnvoyPodsError - warning +Alert: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default has an error status - warning + Description: Pod prod-scalardl-envoy-xxxx-yyyy in namespace default has been in pending status for more than 1 minutes. + Details: + • alertname: EnvoyPodsError + • deployment: prod-scalardl-envoy +``` + +### 必要なアクション + +* `kubectl describe pod prod-scalardl-envoy-xxxx-yyyy` で Kubernetes デプロイメントを確認します。 +* ログ サーバーをチェックして、モニター サーバー `/log/kubernetes//-/kube.log` 上の kubernetes ログで障害の根本原因を特定します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/Ledger.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/Ledger.mdx new file mode 100644 index 00000000..f23aac4a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/Ledger.mdx @@ -0,0 +1,157 @@ +--- +tags: + - Enterprise +displayed_sidebar: docsJapanese +--- + +# Ledger アラート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +## LedgerClusterDown + +これは最も重要なアラートであり、Ledger クラスターがリクエストを処理できないことを示します。このアラートは最優先で処理する必要があります。 + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] LedgerClusterDown - critical +Alert: Ledger cluster is down - critical + Description: Ledger cluster is down, no resquest can be process. + Details: + • alertname: LedgerClusterDown + • deployment: prod-scalardl-ledger +``` + +#### 解決済み + +``` +[RESOLVED] LedgerClusterDown - critical +Alert: Ledger cluster is down - critical + Description: Ledger cluster is down, no resquest can be process. + Details: + • alertname: LedgerClusterDown + • deployment: prod-scalardl-ledger +``` + +### 必要なアクション + +* `kubectl get deployments. prod-scalardl-ledger` で設定されたレプリカの数を確認します。 +* `kubectl describe deployments. prod-scalardl-ledger` はデプロイメントを説明するために設定されたレプリカの数を確認します。 +* `kubectl get node -o wide` でノードのステータスを確認します。 +* ログサーバーをチェックして、モニターサーバー `/log/kubernetes//-/kube.log` 上の kubernetes ログで障害の根本原因を特定します。 +* 既知の問題があるかどうかをクラウドプロバイダーに確認してください。たとえば、Azure の彫像は[ここ](https://status.azure.com/en-us/status)で確認できます。 + +## LedgerClusterDegraded + +このアラートは、Kubernetes クラスターが Ledger ポッドを開始できないかどうかを示します。これは、クラスターにデプロイメントを実行するための十分なリソースがない、または1つまたは複数の Kubernetes ノードが失われたことを意味します。 + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] LedgerClusterDegraded - warning +Alert: Ledger cluster is running in a degraded mode - warning + Description: Ledger cluster is running in a degraded mode, some of the Ledger pods are not healthy. + Details: + • alertname: LedgerClusterDegraded + • deployment: prod-scalardl-ledger +``` + +#### 解決済み + +``` +[RESOLVED] LedgerClusterDegraded - warning +Alert: Ledger cluster is running in a degraded mode - warning + Description: Ledger cluster is running in a degraded mode, some of the Ledger pods are not healthy. + Details: + • alertname: LedgerClusterDegraded + • deployment: prod-scalardl-ledger +``` + +### 必要なアクション + +* ログサーバーをチェックして、モニターサーバー `/log/kubernetes//-/kube.log` 上の kubernetes ログに関する障害の根本原因を特定します。 +* `kubectl describe deployments prod-scalardl-ledger` で kubernetes のデプロイメントを確認します。 +* `kubectl get replicasets.apps` でレプリカセットを確認します。 +* `kubectl get node -o wide` でノードのステータスを確認します。 +* 既知の問題があるかどうかをクラウドプロバイダーに確認してください。たとえば、Azure の彫像は[ここ](https://status.azure.com/en-us/status)で確認できます。 + +## LedgerPodsPending + +このアラートは、kubernetes クラスターが Ledger ポッドを開始できないかどうか、つまりクラスターに十分なリソースがないことを示します。 + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] LedgerPodsPending - warning +Alert: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default in pending status - warning + Description: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default has been in pending status for more than 1 minute. + Details: + • alertname: LedgerPodsPending + • deployment: prod-scalardl-ledger +``` + +#### 解決済み + +``` +[RESOLVED:1] LedgerPodsPending - warning +Alert: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default in pending status - warning + Description: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default has been in pending status for more than 1 minute. + Details: + • alertname: LedgerPodsPending + • deployment: prod-scalardl-ledger +``` + +### 必要なアクション + +* ログ サーバーをチェックして、モニター サーバー `/log/kubernetes//-/kube.log` 上の kubernetes ログに関する障害の根本原因を特定します。 +* `kubectl describe pod prod-scalardl-ledger-xxxx-yyyy` で Kubernetes デプロイメントを確認します。 + +## LedgerPodsError + +このアラートは、次のいずれかの理由で Kubernetes クラスターが Ledger ポッドを開始できないかどうかを知らせます。 + +* CrashLoopBackOff +* CreateContainerConfigError +* CreateContainerError +* ErrImagePull +* ImagePullBackOff +* InvalidImageName + +### アラートの例 + +#### ファイアリング + +``` +[FIRING:1] LedgerPodsError - warning +Alert: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default has an error status - warning + Description: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default has been in pending status for more than 1 minutes. + Details: + • alertname: LedgerPodsError + • deployment: prod-scalardl-ledger +``` + +#### 解決済み + +``` +[RESOLVED:1] LedgerPodsError - warning +Alert: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default has an error status - warning + Description: Pod prod-scalardl-ledger-xxxx-yyyy in namespace default has been in pending status for more than 1 minutes. + Details: + • alertname: LedgerPodsError + • deployment: prod-scalardl-ledger +``` + +### 必要なアクション + +* `kubectl describe pod prod-scalardl-ledger-xxxx-yyyy` で Kubernetes デプロイメントを確認します。 +* ログ サーバーをチェックして、モニター サーバー +* `/log/kubernetes//-/kube.log` 上の kubernetes ログで障害の根本原因を特定します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/README.mdx new file mode 100644 index 00000000..5f4ddb73 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/alerts/README.mdx @@ -0,0 +1,17 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Scalar アラート + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このセクションでは、アラートの種類と実行する必要があるアクションについて説明します。 + +* [Envoy アラート](Envoy.mdx) +* [Ledger アラート](Ledger.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png new file mode 100644 index 00000000..5ceef088 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Cluster_Indirect_Mode.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Cluster_Indirect_Mode.drawio.png new file mode 100644 index 00000000..feef0d81 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Cluster_Indirect_Mode.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Server_App_In_Cluster.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Server_App_In_Cluster.drawio.png new file mode 100644 index 00000000..c6c9e06e Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Server_App_In_Cluster.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Server_App_Out_Cluster.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Server_App_Out_Cluster.drawio.png new file mode 100644 index 00000000..028fbe7c Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDB_Server_App_Out_Cluster.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_Account.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_Account.drawio.png new file mode 100644 index 00000000..76e1aa16 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_Account.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_Namespace.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_Namespace.drawio.png new file mode 100644 index 00000000..026b4a2d Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_Namespace.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_VNet.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_VNet.drawio.png new file mode 100644 index 00000000..92eba96d Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Auditor_Multi_VNet.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Ledger.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Ledger.drawio.png new file mode 100644 index 00000000..9ee4fd22 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/AKS_ScalarDL_Ledger.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png new file mode 100644 index 00000000..00fef239 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Cluster_Direct_Kubernetes_Mode.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Cluster_Indirect_Mode.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Cluster_Indirect_Mode.drawio.png new file mode 100644 index 00000000..db122e17 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Cluster_Indirect_Mode.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Server_App_In_Cluster.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Server_App_In_Cluster.drawio.png new file mode 100644 index 00000000..c49fbe4f Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Server_App_In_Cluster.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Server_App_Out_Cluster.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Server_App_Out_Cluster.drawio.png new file mode 100644 index 00000000..d8dcde16 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDB_Server_App_Out_Cluster.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_Account.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_Account.drawio.png new file mode 100644 index 00000000..1d9e7889 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_Account.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_Namespace.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_Namespace.drawio.png new file mode 100644 index 00000000..bea249f3 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_Namespace.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_VPC.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_VPC.drawio.png new file mode 100644 index 00000000..30d5af46 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Auditor_Multi_VPC.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Ledger.drawio.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Ledger.drawio.png new file mode 100644 index 00000000..ce5fd7b5 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-kubernetes/images/png/EKS_ScalarDL_Ledger.drawio.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-licensing/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-licensing/README.mdx new file mode 100644 index 00000000..8b009baf --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-licensing/README.mdx @@ -0,0 +1,110 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 製品ライセンスキーの設定方法 + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar 製品を実行するには、`.properties` ファイルを作成し、製品のライセンスキーと証明書をそのファイルに追加する必要があります。 `.properties` ファイルで、使用している製品に基づいて次の構成のいずれかをコピーし、その内容を `.properties` ファイルに貼り付けて、`` をライセンスキーに置き換えます。 + +:::note + +ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)までご連絡ください。 + +::: + +:::warning + +トライアルライセンスを使用している場合は、使用している Scalar 製品をインターネットに接続する必要があります。トライアルライセンスが有効で期限が切れていないかどうかを確認するには、インターネット接続が必要です。 + +::: + +## ScalarDB + +使用している製品を選択して、製品のライセンスキーと証明書の構成を確認します。 + +### ScalarDB Enterprise Edition + + + + ```properties + scalar.db.cluster.node.licensing.license_key= + scalar.db.cluster.node.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICKzCCAdKgAwIBAgIIBXxj3s8NU+owCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMSMwIQYDVQQDExplbnRlcnByaXNlLnNjYWxhci1sYWJzLmNv\nbTAeFw0yMzExMTYwNzExNTdaFw0yNDAyMTUxMzE2NTdaMGwxCzAJBgNVBAYTAkpQ\nMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2hpbmp1a3UxFTATBgNVBAoTDFNj\nYWxhciwgSW5jLjEjMCEGA1UEAxMaZW50ZXJwcmlzZS5zY2FsYXItbGFicy5jb20w\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATJx5gvAr+GZAHcBpUvDFDsUlFo4GNw\npRfsntzwStIP8ac3dew7HT4KbGBWei0BvIthleaqpv0AEP7JT6eYAkNvo14wXDAO\nBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMIe+XuuZcnDX1c3TmUPlu3kNv/wMAoGCCqG\nSM49BAMCA0cAMEQCIGGlqKpgv+KW+Z1ZkjfMHjSGeUZKBLwfMtErVyc9aTdIAiAy\nvsZyZP6Or9o40x3l3pw/BT7wvy93Jm0T4vtVQH6Zuw==\n-----END CERTIFICATE----- + ``` + + + ```properties + scalar.db.cluster.node.licensing.license_key= + scalar.db.cluster.node.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICKzCCAdKgAwIBAgIIBXxj3s8NU+owCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMSMwIQYDVQQDExplbnRlcnByaXNlLnNjYWxhci1sYWJzLmNv\nbTAeFw0yMzExMTYwNzExNTdaFw0yNDAyMTUxMzE2NTdaMGwxCzAJBgNVBAYTAkpQ\nMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2hpbmp1a3UxFTATBgNVBAoTDFNj\nYWxhciwgSW5jLjEjMCEGA1UEAxMaZW50ZXJwcmlzZS5zY2FsYXItbGFicy5jb20w\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATJx5gvAr+GZAHcBpUvDFDsUlFo4GNw\npRfsntzwStIP8ac3dew7HT4KbGBWei0BvIthleaqpv0AEP7JT6eYAkNvo14wXDAO\nBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMIe+XuuZcnDX1c3TmUPlu3kNv/wMAoGCCqG\nSM49BAMCA0cAMEQCIGGlqKpgv+KW+Z1ZkjfMHjSGeUZKBLwfMtErVyc9aTdIAiAy\nvsZyZP6Or9o40x3l3pw/BT7wvy93Jm0T4vtVQH6Zuw==\n-----END CERTIFICATE----- + ``` + + + ```properties + scalar.db.cluster.node.licensing.license_key= + scalar.db.cluster.node.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICIzCCAcigAwIBAgIIKT9LIGX1TJQwCgYIKoZIzj0EAwIwZzELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMR4wHAYDVQQDExV0cmlhbC5zY2FsYXItbGFicy5jb20wHhcN\nMjMxMTE2MDcxMDM5WhcNMjQwMjE1MTMxNTM5WjBnMQswCQYDVQQGEwJKUDEOMAwG\nA1UECBMFVG9reW8xETAPBgNVBAcTCFNoaW5qdWt1MRUwEwYDVQQKEwxTY2FsYXIs\nIEluYy4xHjAcBgNVBAMTFXRyaWFsLnNjYWxhci1sYWJzLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBSkIYAk7r5FRDf5qRQ7dbD3ib5g3fb643h4hqCtK+lC\nwM4AUr+PPRoquAy+Ey2sWEvYrWtl2ZjiYyyiZw8slGCjXjBcMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQUbFyOWFrsjkkOvjw6vK3gGUADGOcwCgYIKoZIzj0EAwIDSQAw\nRgIhAKwigOb74z9BdX1+dUpeVG8WrzLTIqdIU0w+9jhAueXoAiEA6cniJ3qsP4j7\nsck62kHnFpH1fCUOc/b/B8ZtfeXI2Iw=\n-----END CERTIFICATE----- + ``` + + + +### ScalarDB Analytics with Spark + + + + ```apacheconf + spark.sql.catalog.scalardb_catalog.license.key + spark.sql.catalog.scalardb_catalog.license.cert_pem -----BEGIN CERTIFICATE-----\nMIICKzCCAdKgAwIBAgIIBXxj3s8NU+owCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMSMwIQYDVQQDExplbnRlcnByaXNlLnNjYWxhci1sYWJzLmNv\nbTAeFw0yMzExMTYwNzExNTdaFw0yNDAyMTUxMzE2NTdaMGwxCzAJBgNVBAYTAkpQ\nMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2hpbmp1a3UxFTATBgNVBAoTDFNj\nYWxhciwgSW5jLjEjMCEGA1UEAxMaZW50ZXJwcmlzZS5zY2FsYXItbGFicy5jb20w\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATJx5gvAr+GZAHcBpUvDFDsUlFo4GNw\npRfsntzwStIP8ac3dew7HT4KbGBWei0BvIthleaqpv0AEP7JT6eYAkNvo14wXDAO\nBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMIe+XuuZcnDX1c3TmUPlu3kNv/wMAoGCCqG\nSM49BAMCA0cAMEQCIGGlqKpgv+KW+Z1ZkjfMHjSGeUZKBLwfMtErVyc9aTdIAiAy\nvsZyZP6Or9o40x3l3pw/BT7wvy93Jm0T4vtVQH6Zuw==\n-----END CERTIFICATE----- + ``` + + + ```apacheconf + spark.sql.catalog.scalardb_catalog.license.key + spark.sql.catalog.scalardb_catalog.license.cert_pem -----BEGIN CERTIFICATE-----\nMIICIzCCAcigAwIBAgIIKT9LIGX1TJQwCgYIKoZIzj0EAwIwZzELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMR4wHAYDVQQDExV0cmlhbC5zY2FsYXItbGFicy5jb20wHhcN\nMjMxMTE2MDcxMDM5WhcNMjQwMjE1MTMxNTM5WjBnMQswCQYDVQQGEwJKUDEOMAwG\nA1UECBMFVG9reW8xETAPBgNVBAcTCFNoaW5qdWt1MRUwEwYDVQQKEwxTY2FsYXIs\nIEluYy4xHjAcBgNVBAMTFXRyaWFsLnNjYWxhci1sYWJzLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBSkIYAk7r5FRDf5qRQ7dbD3ib5g3fb643h4hqCtK+lC\nwM4AUr+PPRoquAy+Ey2sWEvYrWtl2ZjiYyyiZw8slGCjXjBcMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQUbFyOWFrsjkkOvjw6vK3gGUADGOcwCgYIKoZIzj0EAwIDSQAw\nRgIhAKwigOb74z9BdX1+dUpeVG8WrzLTIqdIU0w+9jhAueXoAiEA6cniJ3qsP4j7\nsck62kHnFpH1fCUOc/b/B8ZtfeXI2Iw=\n-----END CERTIFICATE----- + ``` + + + +## ScalarDL + +使用している製品を選択して、製品のライセンスキーと証明書の構成を確認します。 + +### ScalarDL Ledger + + + + ```properties + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICKzCCAdKgAwIBAgIIBXxj3s8NU+owCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMSMwIQYDVQQDExplbnRlcnByaXNlLnNjYWxhci1sYWJzLmNv\nbTAeFw0yMzExMTYwNzExNTdaFw0yNDAyMTUxMzE2NTdaMGwxCzAJBgNVBAYTAkpQ\nMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2hpbmp1a3UxFTATBgNVBAoTDFNj\nYWxhciwgSW5jLjEjMCEGA1UEAxMaZW50ZXJwcmlzZS5zY2FsYXItbGFicy5jb20w\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATJx5gvAr+GZAHcBpUvDFDsUlFo4GNw\npRfsntzwStIP8ac3dew7HT4KbGBWei0BvIthleaqpv0AEP7JT6eYAkNvo14wXDAO\nBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMIe+XuuZcnDX1c3TmUPlu3kNv/wMAoGCCqG\nSM49BAMCA0cAMEQCIGGlqKpgv+KW+Z1ZkjfMHjSGeUZKBLwfMtErVyc9aTdIAiAy\nvsZyZP6Or9o40x3l3pw/BT7wvy93Jm0T4vtVQH6Zuw==\n-----END CERTIFICATE----- + ``` + + + ```properties + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICIzCCAcigAwIBAgIIKT9LIGX1TJQwCgYIKoZIzj0EAwIwZzELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMR4wHAYDVQQDExV0cmlhbC5zY2FsYXItbGFicy5jb20wHhcN\nMjMxMTE2MDcxMDM5WhcNMjQwMjE1MTMxNTM5WjBnMQswCQYDVQQGEwJKUDEOMAwG\nA1UECBMFVG9reW8xETAPBgNVBAcTCFNoaW5qdWt1MRUwEwYDVQQKEwxTY2FsYXIs\nIEluYy4xHjAcBgNVBAMTFXRyaWFsLnNjYWxhci1sYWJzLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBSkIYAk7r5FRDf5qRQ7dbD3ib5g3fb643h4hqCtK+lC\nwM4AUr+PPRoquAy+Ey2sWEvYrWtl2ZjiYyyiZw8slGCjXjBcMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQUbFyOWFrsjkkOvjw6vK3gGUADGOcwCgYIKoZIzj0EAwIDSQAw\nRgIhAKwigOb74z9BdX1+dUpeVG8WrzLTIqdIU0w+9jhAueXoAiEA6cniJ3qsP4j7\nsck62kHnFpH1fCUOc/b/B8ZtfeXI2Iw=\n-----END CERTIFICATE----- + ``` + + + +### ScalarDL Auditor + + + + ```properties + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICKzCCAdKgAwIBAgIIBXxj3s8NU+owCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMSMwIQYDVQQDExplbnRlcnByaXNlLnNjYWxhci1sYWJzLmNv\nbTAeFw0yMzExMTYwNzExNTdaFw0yNDAyMTUxMzE2NTdaMGwxCzAJBgNVBAYTAkpQ\nMQ4wDAYDVQQIEwVUb2t5bzERMA8GA1UEBxMIU2hpbmp1a3UxFTATBgNVBAoTDFNj\nYWxhciwgSW5jLjEjMCEGA1UEAxMaZW50ZXJwcmlzZS5zY2FsYXItbGFicy5jb20w\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATJx5gvAr+GZAHcBpUvDFDsUlFo4GNw\npRfsntzwStIP8ac3dew7HT4KbGBWei0BvIthleaqpv0AEP7JT6eYAkNvo14wXDAO\nBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMIe+XuuZcnDX1c3TmUPlu3kNv/wMAoGCCqG\nSM49BAMCA0cAMEQCIGGlqKpgv+KW+Z1ZkjfMHjSGeUZKBLwfMtErVyc9aTdIAiAy\nvsZyZP6Or9o40x3l3pw/BT7wvy93Jm0T4vtVQH6Zuw==\n-----END CERTIFICATE----- + ``` + + + ```properties + scalar.dl.licensing.license_key= + scalar.dl.licensing.license_check_cert_pem=-----BEGIN CERTIFICATE-----\nMIICIzCCAcigAwIBAgIIKT9LIGX1TJQwCgYIKoZIzj0EAwIwZzELMAkGA1UEBhMC\nSlAxDjAMBgNVBAgTBVRva3lvMREwDwYDVQQHEwhTaGluanVrdTEVMBMGA1UEChMM\nU2NhbGFyLCBJbmMuMR4wHAYDVQQDExV0cmlhbC5zY2FsYXItbGFicy5jb20wHhcN\nMjMxMTE2MDcxMDM5WhcNMjQwMjE1MTMxNTM5WjBnMQswCQYDVQQGEwJKUDEOMAwG\nA1UECBMFVG9reW8xETAPBgNVBAcTCFNoaW5qdWt1MRUwEwYDVQQKEwxTY2FsYXIs\nIEluYy4xHjAcBgNVBAMTFXRyaWFsLnNjYWxhci1sYWJzLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBSkIYAk7r5FRDf5qRQ7dbD3ib5g3fb643h4hqCtK+lC\nwM4AUr+PPRoquAy+Ey2sWEvYrWtl2ZjiYyyiZw8slGCjXjBcMA4GA1UdDwEB/wQE\nAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQUbFyOWFrsjkkOvjw6vK3gGUADGOcwCgYIKoZIzj0EAwIDSQAw\nRgIhAKwigOb74z9BdX1+dUpeVG8WrzLTIqdIU0w+9jhAueXoAiEA6cniJ3qsP4j7\nsck62kHnFpH1fCUOc/b/B8ZtfeXI2Iw=\n-----END CERTIFICATE----- + ``` + + diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/backup-and-restore-check-pauses.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/backup-and-restore-check-pauses.png new file mode 100644 index 00000000..8cd0b4f3 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/backup-and-restore-check-pauses.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/backup-and-restore-create-pauses.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/backup-and-restore-create-pauses.png new file mode 100644 index 00000000..aedb6754 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/backup-and-restore-create-pauses.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/dashboard-cluster.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/dashboard-cluster.png new file mode 100644 index 00000000..60cb5d68 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/dashboard-cluster.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/dashboard-pod-list.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/dashboard-pod-list.png new file mode 100644 index 00000000..ed247f0c Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/dashboard-pod-list.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/logs.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/logs.png new file mode 100644 index 00000000..1127bd71 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/logs.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/metrics.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/metrics.png new file mode 100644 index 00000000..e4f4d116 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/images/metrics.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/overview.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/overview.mdx new file mode 100644 index 00000000..a9813779 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalar-manager/overview.mdx @@ -0,0 +1,48 @@ +--- +tags: + - Enterprise Option +displayed_sidebar: docsJapanese +--- + +# Scalar Manager 概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Scalar Manager は、Kubernetes クラスタ環境内で ScalarDB および ScalarDL の集中管理および監視ソリューションです。 +これらの製品に関連する運用タスクを、グラフィカルユーザーインターフェイスに主要な機能を集約することで簡素化します。 + +## なぜ Scalar Manager なのか? + +Scalar Manager がリリースされる前は、ユーザーは ScalarDB および ScalarDL のデプロイメントを管理および監視するために、さまざまなコマンドラインツールやサードパーティソリューションを個別に使用する必要がありました。 +例えば、ユーザーはデプロイメントのステータスを確認するために kubectl を使用し、メトリクスの監視には Prometheus スタック、ログ分析には Loki スタックを使用し、複数のデータベース間でトランザクションの一貫性を確保するために Scalar の独自の CLI ツールを使用して Scalar 製品を一時停止していました。 +これらのツールの組み合わせは、習得の難易度が高く、統一されたインターフェースが欠けていたため、日常の管理タスクやトラブルシューティングの際に効率的なワークフローを提供できませんでした。 + +Scalar Manager は、これらの問題点を解消し、主要な機能を単一のユーザーフレンドリーな GUI に集約することで、管理および監視に必要な時間と労力を削減します。 +これにより、ユーザーはビジネスの開発や運用に集中できるようになります。 + +## 主な機能 + +Scalar Manager は、以下の機能をユーザーに提供します。 + +### 集中化されたクラスターの可視化 + +ユーザーは、クラスターの健康状態、pod ログ、ハードウェアの使用状況、リクエスト毎秒などのパフォーマンスメトリクス、および統合された Grafana ダッシュボードを介して時系列データの詳細な可視化について、リアルタイムのメトリクスを迅速に取得できます。 + +![dashboard-cluster](images/dashboard-cluster.png) +![dashboard-pod-list](images/dashboard-pod-list.png) + +Pod ログとメトリクスは、リアルタイムまたは時系列で表示することができます。 + +![logs](images/logs.png) +![metrics](images/metrics.png) + +### 簡素化されたジョブの一時停止管理 + +ユーザーは、トランザクションの一貫性を確保するために、一時停止ジョブを実行またはスケジュールし、スケジュールされたジョブを確認および管理し、直感的な GUI 内で一時停止状態を監視することができます。 + +![create-pauses](images/backup-and-restore-create-pauses.png) +![check-pauses](images/backup-and-restore-check-pauses.png) + +さまざまなツールやソリューションを使用して ScalarDB および ScalarDL を管理および監視し続けることはできますが、Scalar Manager は運用効率とユーザーエクスペリエンスを向上させるよりシンプルなアプローチを提供します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/getting-started.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/getting-started.mdx new file mode 100644 index 00000000..f7de02b0 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/getting-started.mdx @@ -0,0 +1,102 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics with PostgreSQL をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、ScalarDB Analytics with PostgreSQL の使用を開始する方法について説明します。ScalarDB Analytics with PostgreSQL がすでにインストールされており、必要なサービスがすべて実行されていることを前提としています。そのような環境がない場合は、[Docker を使用してローカル環境に ScalarDB Analytics with PostgreSQL をインストールする方法](./installation.mdx)の手順に従ってください。ScalarDB Analytics with PostgreSQL は PostgreSQL 経由でクエリを実行するため、PostgreSQL にクエリを送信するための `psql` クライアントまたは別の PostgreSQL クライアントがすでにあることも前提としています。 + +## ScalarDB Analytics with PostgreSQL とは + +ユニバーサルトランザクションマネージャーである ScalarDB は、主にトランザクションワークロードを対象としているため、リレーショナルクエリの限られたサブセットをサポートしています。 + +ScalarDB Analytics with PostgreSQL は、PostgreSQL とその外部データラッパー (FDW) 拡張機能を使用して、ScalarDB の機能を拡張し、ScalarDB が管理するデータに対する分析クエリを処理します。 + +ScalarDB Analytics with PostgreSQL は、主に PostgreSQL と Schema Importer の2つのコンポーネントで構成されています。 + +PostgreSQL はサービスとして実行され、ユーザーからのクエリを受け入れて処理します。FDW 拡張機能は、ScalarDB が管理するバックエンドストレージからデータを読み取るために使用されます。Schema Importer は、ScalarDB データベースのスキーマを PostgreSQL にインポートするツールです。これにより、ユーザーは PostgreSQL 側のテーブル (ScalarDB 側のテーブルと同一) を表示できます。 + +## ScalarDB データベースをセットアップする + +まず、ScalarDB Analytics with PostgreSQL で分析クエリを実行するには、1つ以上の ScalarDB データベースが必要です。独自の ScalarDB データベースがある場合は、このセクションをスキップして、代わりにそのデータベースを使用できます。[scalardb-samples/scalardb-analytics-postgresql-sample](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-analytics-postgresql-sample) プロジェクトを使用する場合は、プロジェクトディレクトリで次のコマンドを実行してサンプルデータベースを設定できます。 + +```console +docker compose run --rm schema-loader \ + -c /etc/scalardb.properties \ + --schema-file /etc/schema.json \ + --coordinator \ + --no-backup \ + --no-scaling +``` + +このコマンドは、DynamoDB、PostgreSQL、Cassandra で設定される [複数のストレージインスタンス](../multi-storage-transactions.mdx)を設定します。次に、これらのストレージにマップされる `dynamons`、`postgresns`、`cassandrans` の名前空間を作成し、[ScalarDB Schema Loader](https://scalardb.scalar-labs.com/docs/latest/schema-loader/)を使用して `dynamons.customer`、`postgresns.orders`、`cassandrans.lineitem` のテーブルを作成します。 + +![マルチストレージの概要](./images/multi-storage-overview.png) + +次のコマンドを実行すると、作成されたテーブルにサンプルデータをロードできます。 + +```console +docker compose run --rm sample-data-loader +``` + +## PostgreSQL に ScalarDB 管理下のデータベースのスキーマをインポートする + +次に、分析クエリを処理する PostgreSQL に ScalarDB 管理下のデータベースのスキーマをインポートします。ScalarDB Analytics with PostgreSQL には、この目的のためのツールである Schema Importer が用意されています。このツールを使用すると、分析クエリを実行するために必要なすべての準備が整います。 + +```console +docker compose run --rm schema-importer \ + import \ + --config /etc/scalardb.properties \ + --host analytics \ + --port 5432 \ + --database test \ + --user postgres \ + --password postgres \ + --namespace cassandrans \ + --namespace postgresns \ + --namespace dynamons \ + --config-on-postgres-host /etc/scalardb.properties +``` + +独自の ScalarDB データベースを使用する場合は、`--config` および `--config-on-postgres-host` オプションを ScalarDB 設定ファイルに置き換え、`--namespace` オプションをインポートする ScalarDB 名前空間に置き換える必要があります。 + +これにより、ScalarDB データベース内のテーブルと同じ名前のテーブル (正確にはビュー) が作成されます。この例では、`dynamons.customer`、`postgresns.orders`、および `cassandrans.lineitem` のテーブルが作成されます。列定義も ScalarDB データベースと同一です。これらのテーブルは、FDW を使用して ScalarDB データベースの基盤となるストレージに接続された [外部テーブル](https://www.postgresql.org/docs/current/sql-createforeigntable.html)です。したがって、PostgreSQL 内のこれらのテーブルを ScalarDB データベース内のテーブルと同等と見なすことができます。 + +![インポートされたスキーマ](./images/imported-schema.png) + +## 分析クエリを実行する + +これで、ScalarDB データベース内の同じデータを読み取るすべてのテーブルが揃い、PostgreSQL でサポートされている任意の分析クエリを実行できるようになりました。クエリを実行するには、`psql` またはその他のクライアントを使用して PostgreSQL に接続してください。 + +```console +psql -U postgres -h localhost test +Password for user postgres: + +> select c_mktsegment, count(*) from dynamons.customer group by c_mktsegment; + c_mktsegment | count +--------------+------- + AUTOMOBILE | 4 + BUILDING | 2 + FURNITURE | 1 + HOUSEHOLD | 2 + MACHINERY | 1 +(5 rows) +``` + +サンプルデータと追加の実作業の詳細については、サンプルアプリケーションページを参照してください。 + +## 注意事項 + +### 分離レベル + +ScalarDB Analytics with PostgreSQL は、**Read Committed** 分離レベルを設定してデータを読み取ります。この分離レベルにより、読み取るデータが過去にコミットされていることが保証されますが、特定の時点で一貫性のあるデータを読み取ることができることは保証されません。 + +### 書き込み操作はサポートされていません + +ScalarDB Analytics with PostgreSQL は、読み取り専用クエリのみをサポートします。`INSERT`、`UPDATE`、およびその他の書き込み操作はサポートされていません。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/images/imported-schema.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/images/imported-schema.png new file mode 100644 index 00000000..1cf8fea3 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/images/imported-schema.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/images/multi-storage-overview.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/images/multi-storage-overview.png new file mode 100644 index 00000000..fc8df1cb Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/images/multi-storage-overview.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/installation.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/installation.mdx new file mode 100644 index 00000000..f2014fce --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/installation.mdx @@ -0,0 +1,65 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# Docker を使用してローカル環境に ScalarDB Analytics with PostgreSQL をインストールする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、[Docker Compose](https://docs.docker.com/compose/) を使用して、Cassandra、PostgreSQL、および DynamoDB ローカルサーバーのマルチストレージバックエンドを使用して、ScalarDB Analytics with PostgreSQL を実行するローカル環境を設定する方法について説明します。 + +## 前提条件 + +- [Docker Engine](https://docs.docker.com/engine/) および [Docker Compose](https://docs.docker.com/compose/)。 + +プラットフォームに応じて、Docker ウェブサイトの手順に従ってください。 + +## ステップ 1. `scalardb-samples` リポジトリを複製します + +[scalardb-samples/scalardb-analytics-postgresql-sample](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-analytics-postgresql-sample) リポジトリは、ScalarDB Analytics with PostgreSQL を設定するためのサンプル設定を含むプロジェクトです。 + +scalardb-analytics-postgresql-sample アプリを実行するローカルマシン上の場所を決定します。次に、ターミナルを開き、`cd` コマンドを使用してその場所に移動し、次のコマンドを実行します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples.git +cd scalardb-samples/scalardb-analytics-postgresql-sample +``` + +## ステップ 2. ScalarDB Analytics with PostgreSQL サービスを起動する + +次のコマンドは、ScalarDB Analytics with PostgreSQL を提供する PostgreSQL インスタンスと、Docker コンテナ内の Cassandra、PostgreSQL、および DynamoDB ローカルのバックエンドサーバーを起動します。このコマンドを初めて実行すると、必要な Docker イメージが GitHub Container Registry からダウンロードされます。 + +```console +docker-compose up +``` + +コンテナをバックグラウンドで実行する場合は、`-d` (--detach) オプションを追加します。 + +```console +docker-compose up -d +``` + +すでに独自の ScalarDB データベースがあり、それをバックエンドサービスとして使用したい場合は、コンテナー内で追加のバックエンドサーバーを起動せずに、PostgreSQL インスタンスのみを起動できます。 + +```console +docker-compose up analytics +``` + +## ステップ 3. 分析クエリを実行する + +これで、必要なサービスがすべて実行されているはずです。分析クエリを実行するには、[ScalarDB Analytics with PostgreSQL をはじめよう](./getting-started.mdx)を参照してください。 + +## ステップ 4. ScalarDB Analytics with PostgreSQL サービスをシャットダウンする + +コンテナをシャットダウンするには、方法に応じて、ターミナルで次のいずれかを実行します。 + +- フォアグラウンドでコンテナを起動した場合は、`docker-compose` が実行されている場所で Ctrl+C を押します。 +- バックグラウンドでコンテナを起動した場合は、次のコマンドを実行します。 + +```console +docker-compose down +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/scalardb-fdw.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/scalardb-fdw.mdx new file mode 100644 index 00000000..d58baf21 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/scalardb-fdw.mdx @@ -0,0 +1,184 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# ScalarDB FDW + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB FDW は、[ScalarDB](https://www.scalar-labs.com/scalardb/) の外部データラッパー (FDW) を実装する PostgreSQL 拡張機能です。 + +ScalarDB FDW は、Java Native Interface を使用して、FDW 内のライブラリとして ScalarDB を直接利用し、ScalarDB のスキャン操作を介して外部データベースからデータを読み取ります。 + +## 前提条件 + +環境に次の前提条件が設定されている必要があります。 + +### JDK + +ScalarDB と互換性のあるバージョンの Java Development Kit (JDK) をインストールする必要があります。さらに、JDK インストールディレクトリを指す `JAVA_HOME` 環境変数を設定する必要があります。 + +これらの拡張機能は内部で Java Native Interface (JNI) を使用するため、ライブラリ検索パスに `libjvm.so` などの Java 仮想マシン (JVM) の動的ライブラリを含める必要があることに注意してください。 + +### PostgreSQL + +この拡張機能は PostgreSQL 13以降をサポートしています。PostgreSQL のインストール方法の詳細については、[サーバー管理](https://www.postgresql.org/docs/current/admin.html)の公式ドキュメントを参照してください。 + +## ビルドとインストール + +以下のコマンドを実行すると、この拡張機能をビルドしてインストールできます。 + +```console +make install +``` + +### 一般的なビルドエラー + +このセクションでは、発生する可能性のある一般的なビルドエラーについて説明します。 + +#### ld: -ljvm のライブラリが見つかりません + +通常、ビルドスクリプトは `libjvm.so` のパスを見つけ、それをライブラリ検索パスとして適切に設定しています。ただし、`ld: library not found for -ljvm` というエラーが発生した場合は、`libjvm.so` ファイルをデフォルトのライブラリ検索パスにコピーしてください。例: + +```console +ln -s //libjvm.so /usr/lib64/libjvm.so +``` + +## 使用方法 + +このセクションでは、ScalarDB の FDW の使用例と利用可能なオプションについて説明します。 + +### 例 + +次の例では、必要なコンポーネントをインストールして作成し、FDW 拡張機能を使用してクエリを実行する方法を示します。 + +#### 1. 拡張機能をインストールする + +拡張機能のインストール方法の詳細については、[ビルドとインストール](#ビルドとインストール)セクションを参照してください。 + +#### 2. 拡張機能を作成する + +拡張機能を作成するには、次のコマンドを実行します。 + +```sql +CREATE EXTENSION scalardb_fdw; +``` + +#### 3. 外部サーバーを作成する + +外部サーバーを作成するには、次のコマンドを実行します。 + +```sql +CREATE SERVER scalardb FOREIGN DATA WRAPPER scalardb_fdw OPTIONS ( + config_file_path '/path/to/scalardb.properties' +); +``` + +#### 4. ユーザーマッピングを作成する + +ユーザーマッピングを作成するには、次のコマンドを実行します。 + +```sql +CREATE USER MAPPING FOR PUBLIC SERVER scalardb; +``` + +#### 5. 外部テーブルを作成する + +外部テーブルを作成するには、次のコマンドを実行します。 + +```sql +CREATE FOREIGN TABLE sample_table ( + pk int, + ck1 int, + ck2 int, + boolean_col boolean, + bigint_col bigint, + float_col double precision, + double_col double precision, + text_col text, + blob_col bytea +) SERVER scalardb OPTIONS ( + namespace 'ns', + table_name 'sample_table' +); +``` + +#### 6. クエリを実行する + +クエリを実行するには、次のコマンドを実行します。 + +```sql +select * from sample_table; +``` + +### 使用可能なオプション + +ScalarDB FDW オブジェクトには次のオプションを設定できます。 + +#### `CREATE SERVER` + +ScalarDB 外部サーバーオブジェクトには次のオプションを設定できます。 + +| 名前 | 必須 | タイプ | 説明 | +| ------------------ | ------- | -------- | ------------------------------------------- | +| `config_file_path` | **はい** | `string` | ScalarDB 設定ファイルへのパス。 | +| `max_heap_size` | いいえ | `string` | JVM の最大ヒープサイズ。形式は `-Xmx` と同じです。 | + +#### `CREATE USER MAPPING` + +現在、`CREATE USER MAPPING` のオプションはありません。 + +#### `CREATE FOREIGN SERVER` + +ScalarDB 外部テーブルオブジェクトには次のオプションを設定できます。 + +| 名前 | 必須 | タイプ | 説明 | +| ------------ | ------- | -------- | -------------------------------------------- | +| `namespace` | **はい** | `string` | ScalarDB インスタンス内のテーブルの名前空間の名前。 | +| `table_name` | **はい** | `string` | ScalarDB インスタンス内のテーブルの名前。 | + +### データ型のマッピング + +| ScalarDB | PostgreSQL | +| -------- | ---------------- | +| BOOLEAN | boolean | +| INT | int | +| BIGINT | bigint | +| FLOAT | float | +| DOUBLE | double precision | +| TEXT | text | +| BLOB | bytea | + +## テスト + +このセクションでは、ScalarDB の FDW をテストする方法について説明します。 + +### テスト用の ScalarDB インスタンスの設定 + +ScalarDB の FDW をテストする前に、テストデータを含む実行中の ScalarDB インスタンスが必要です。次のコマンドを実行して、インスタンスを設定し、テストデータをロードできます。 + +```console +./test/setup.sh +``` + +インスタンスをリセットする場合は、次のコマンドを実行してから、上記のセットアップコマンドを再度実行します。 + +```console +./test/cleanup.sh +``` + +### 回帰テストを実行する + +FDW 拡張機能をインストールした後、次のコマンドを実行すると、回帰テストを実行できます。 + +```console +make installcheck +``` + +## 制限事項 + +- この拡張機能は、ScalarDB 管理データベースでの分析クエリ処理を可能にすることを目的としています。したがって、この拡張機能は ScalarDB からのデータの読み取りのみをサポートします。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/schema-importer.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/schema-importer.mdx new file mode 100644 index 00000000..76ff17e0 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-postgresql/schema-importer.mdx @@ -0,0 +1,69 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# Schema Importer + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Schema Importer は、PostgreSQL を自動的に設定するための CLI ツールです。このツールを使用すると、PostgreSQL データベースに、ScalarDB インスタンスと同じデータベースオブジェクト (名前空間やテーブルなど) を持たせることができます。 + +Schema Importer は、ScalarDB 設定ファイルを読み取り、ScalarDB で定義されているテーブルのスキーマを取得し、対応する外部データラッパーの外部テーブルとビューをこの順序で作成します。詳細については、[ScalarDB Analytics with PostgreSQL をはじめよう](getting-started.mdx)を参照してください。 + +## Schema Importer のビルド + +[Gradle](https://gradle.org/) を使用して Schema Importer をビルドできます。Schema Importer をビルドするには、次のコマンドを実行します。 + +```console +./gradlew build +``` + +`java -jar` を使用して Schema Importer を起動できるように、Fat JAR ファイルを作成する必要があります。Fat JAR を作成するには、次のコマンドを実行します。 + + ```console + ./gradlew shadowJar + ``` + +fat JAR をビルドすると、`app/build/libs/` ディレクトリに fat JAR ファイルが作成されます。 + +## Schema Importer を実行する + +fat JAR ファイルを使用して Schema Importer を実行するには、次のコマンドを実行します。 + +```console +java -jar +``` +利用可能なオプションは次のとおりです。 + +| 名前 | 必須 | 説明 | デフォルト | +| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------- | ------------------------------- | +| `--config` | **はい** | ScalarDB 設定ファイルへのパス | | +| `--config-on-postgres-host` | No | PostgreSQL を実行しているホスト上の ScalarDB 設定ファイルへのパス | `--config` と同じ値が使用されます。 | +| `--namespace`, `-n` | **はい** | 分析インスタンスにインポートする名前空間。2つ以上の名前空間がある場合は、`--namespace` オプションを複数回指定できます。 | | +| `--host` | いいえ | PostgreSQL ホスト | localhost | +| `--port` | いいえ | PostgreSQL ポート | 5432 | +| `--database` | いいえ | PostgreSQL ポート | postgres | +| `--user` | いいえ | PostgreSQL ユーザー | postgres | +| `--password` | いいえ | PostgreSQL パスワード | | +| `--debug` | いいえ | デバッグモードを有効にする | | + + +## Schema Importer のテスト + +Schema Importer をテストするには、次のコマンドを実行します。 + +```console +./gradlew test +``` + +## Schema Importer の Docker イメージをビルドする + +Schema Importer の Docker イメージをビルドするには、次のコマンドを実行します。`` は、使用する Schema Importer のタグバージョンに置き換えます。 + +```console +docker build -t ghcr.io/scalar-labs/scalardb-analytics-postgresql-schema-importer: -f ./app/Dockerfile . +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-spark/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-spark/README.mdx new file mode 100644 index 00000000..0d8029d7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-spark/README.mdx @@ -0,0 +1,24 @@ +--- +tags: + - Enterprise Option + - Public Preview +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics with Spark + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +**ScalarDB Analytics** は、ScalarDB の分析コンポーネントです。ScalarDB と同様に、PostgreSQL や MySQL などの RDBMS から Cassandra や DynamoDB などの NoSQL データベースに至るまで、さまざまなデータソースを 1 つの論理データベースに統合します。ScalarDB は複数のデータベース間でトランザクションの一貫性が強い運用ワークロードに重点を置いているのに対し、ScalarDB Analytics は分析ワークロード向けに最適化されています。複雑な結合、集計、ウィンドウ関数など、幅広いクエリをサポートしています。ScalarDB Analytics は、ScalarDB 管理のデータソースと非 ScalarDB 管理のデータソースの両方でシームレスに動作し、さまざまなデータセットにわたる高度な分析クエリを可能にします。 + +現在のバージョンの ScalarDB Analytics は、**Apache Spark** を実行エンジンとして活用しています。Spark カスタムカタログを使用することで、ScalarDB 管理下のデータソースと ScalarDB 管理外のデータソースの統合ビューを提供します。ScalarDB Analytics を使用すると、これらのデータソースのテーブルをネイティブの Spark テーブルとして扱うことができ、Spark SQL クエリをシームレスに実行できます。たとえば、Cassandra に保存されているテーブルを PostgreSQL のテーブルと結合して、複数のデータソースにまたがる分析を簡単に実行できます。 + + + +## 参考資料 + +* サンプルデータセットとアプリケーションを使用して ScalarDB Analytics を使用する方法に関するチュートリアルについては、[ScalarDB Analytics をはじめよう](../scalardb-samples/scalardb-analytics-spark-sample/README.mdx)を参照してください。 +* サポートされている Spark および Scala のバージョンについては、[ScalarDB Analytics with Spark のバージョン互換性](version-compatibility.mdx)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-spark/version-compatibility.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-spark/version-compatibility.mdx new file mode 100644 index 00000000..dd210fbb --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-analytics-spark/version-compatibility.mdx @@ -0,0 +1,23 @@ +--- +tags: + - Enterprise Option + - Public Preview +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics with Spark のバージョン互換性 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +Spark と Scala はマイナーバージョン間で互換性がない場合があるため、ScalarDB Analytics with Spark では、さまざまな Spark および Scala バージョンに対して、`scalardb-analytics-spark-_` という形式で名前が付けられたさまざまなアーティファクトを提供しています。使用している Spark および Scala のバージョンに一致するアーティファクトを選択してください。たとえば、Scala 2.13で Spark 3.5を使用している場合は、`scalardb-analytics-spark-3.5_2.13` を指定する必要があります。 + +Java バージョンに関しては、ScalarDB Analytics with Spark は Java 8以降をサポートしています。 + +以下は、ScalarDB Analytics with Spark の各バージョンでサポートされている Spark および Scalar バージョンのリストです。 + +| ScalarDB Analytics with Spark バージョン | ScalarDB バージョン | サポートされている Spark バージョン | サポートされている Scala バージョン | 最小 Java バージョン | +|:---------------------------------------|:------------------|:-------------------------------|:-------------------------------|:-------------------| +| 3.14 | 3.14 | 3.5, 3.4 | 2.13, 2.12 | 8 | +| 3.12 | 3.12 | 3.5, 3.4 | 2.13, 2.12 | 8 | diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-benchmarks/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-benchmarks/README.mdx new file mode 100644 index 00000000..4b105e40 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-benchmarks/README.mdx @@ -0,0 +1,239 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB ベンチマークツール + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、ScalarDB のベンチマークツールを実行する方法について説明します。データベースベンチマークは、一連の標準データセットワークロードに対するデータベースのパフォーマンスを評価するのに役立ちます。 + +## ベンチマークのワークロード + +- TPC-C +- YCSB (ワークロード A、C、および F) +- マルチストレージ YCSB (ワークロード C および F) + - この YCSB バリアントは、ScalarDB を使用するマルチストレージ環境用です。 + - マルチストレージ YCSB のワーカーは、2つの名前空間 (`ycsb_primary` と `ycsb_secondary`) で同じ数の読み取り操作と書き込み操作を実行します。 + +## 前提条件 + +- 次の Java Development Kit (JDK) のいずれか: + - [Oracle JDK](https://www.oracle.com/java/technologies/downloads/) LTS バージョン 8 + - [OpenJDK](https://openjdk.org/install/) LTS バージョン 8 +- Gradle +- [Kelpie](https://github.com/scalar-labs/kelpie) + - Kelpie は、システムのベンチマークや検証などのエンドツーエンドのテストを実行するためのフレームワークです。 [Kelpie Releases](https://github.com/scalar-labs/kelpie) から最新バージョンを入手し、アーカイブファイルを解凍します。 +- ベンチマークツールを実行するクライアント +- ターゲットデータベース + - ScalarDB がサポートするデータベースの一覧については、[Databases](../requirements.mdx#データベース) を参照してください。 + +:::note + +現在、ベンチマークツールを実行するときに使用できるのは JDK 8のみです。 + +::: + +## ベンチマークツールをセットアップする + +次のセクションでは、ベンチマークツールのセットアップ方法について説明します。 + +### ScalarDB ベンチマークリポジトリをクローンする + +**ターミナル**を開き、次のコマンドを実行して ScalarDB ベンチマークリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-benchmarks +``` + +次に、下記のコマンドを実行して、ベンチマークファイルが含まれるディレクトリに移動します。 + +```console +cd scalardb-benchmarks +``` + +### ツールをビルドする + +ベンチマークツールをビルドするには、次のコマンドを実行します。 + +```console +./gradlew shadowJar +``` + +### スキーマをロードする + +初期データをロードする前に、[ScalarDB Schema Loader](../schema-loader.mdx) を使用してテーブルを定義する必要があります。ScalarDB Schema Loader は、[ScalarDB Releases](https://github.com/scalar-labs/scalardb/releases) ページからダウンロードできます。ScalarDB へのアクセス方法に基づいて Schema Loader を選択してください。 +- **ScalarDB コアライブラリ (コミュニティエディション) を使用する場合:** 使用している ScalarDB のバージョンに応じて `scalardb-schema-loader-.jar` を選択します。次に、`.jar` ファイルを `scalardb-benchmarks` ルートディレクトリに保存します。 +- **ScalarDB Cluster (エンタープライズエディション) を使用する場合:** 使用している ScalarDB Cluster のバージョンに応じて `scalardb-cluster-schema-loader--all.jar` を選択します。次に、`.jar` ファイルを `scalardb-benchmarks` ルート ディレクトリに保存します。 + +さらに、Java CRUD インターフェースを介して ScalarDB にアクセスするためのプロパティファイルも必要です。ScalarDB プロパティファイルの設定の詳細については、[ScalarDB 設定](../configurations.mdx)または [ScalarDB Cluster クライアント構成](../scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx#クライアント構成)を参照してください。 + +スキーマを適用してプロパティファイルを設定したら、ベンチマークを選択し、指示に従ってテーブルを作成します。 + + + + TPC-C ベンチマーク用のテーブル ([`tpcc-schema.json`](https://github.com/scalar-labs/scalardb-benchmarks/blob/master/tpcc-schema.json)) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。 + + ```console + java -jar scalardb-schema-loader-.jar --config -f tpcc-schema.json --coordinator + ``` + + ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。 + + ```console + java -jar scalardb-cluster-schema-loader--all.jar --config -f tpcc-schema.json --coordinator + ``` + + + YCSB ベンチマーク用のテーブル ([`ycsb-schema.json`](https://github.com/scalar-labs/scalardb-benchmarks/blob/master/ycsb-schema.json)) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。 + + ```console + java -jar scalardb-schema-loader-.jar --config -f ycsb-schema.json --coordinator + ``` + + ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。 + + ```console + java -jar scalardb-cluster-schema-loader--all.jar --config -f ycsb-schema.json --coordinator + ``` + + + マルチストレージ YCSB ベンチマーク用のテーブル ([`ycsb-multi-storage-schema.json`](https://github.com/scalar-labs/scalardb-benchmarks/blob/master/ycsb-multi-storage-schema.json)) を作成するには、山括弧内の内容を説明に従って置き換えて、次のコマンドを実行します。 + + ```console + java -jar scalardb-schema-loader-.jar --config -f ycsb-multi-storage-schema.json --coordinator + ``` + + ScalarDB Cluster を使用している場合は、代わりに次のコマンドを実行します。 + + ```console + java -jar scalardb-cluster-schema-loader--all.jar --config -f ycsb-multi-storage-schema.json --coordinator + ``` + + + +### ベンチマーク設定ファイルを準備する + +ベンチマークを実行するには、まずベンチマーク設定ファイルを準備する必要があります。設定ファイルには、少なくとも実行するワークロードモジュールの場所とデータベース設定が必要です。 + +以下は、TPC-C ベンチマークを実行するための設定例です。`config_file` に指定する ScalarDB プロパティファイルは、[スキーマをロードする](#スキーマをロードする)の手順の1つとして設定したプロパティファイルである必要があります。 + +:::note + +または、ScalarDB プロパティファイルを使用する代わりに、`.toml` ファイルで各データベース設定項目を指定することもできます。`config_file` が指定されている場合、`[database_config]` の下の他のすべての設定は、コメントが解除されていても無視されます。 + +::: + +```toml +[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 = "" +#contact_points = "localhost" +#contact_port = 9042 +#username = "cassandra" +#password = "cassandra" +#storage = "cassandra" +``` + +モジュールに渡すパラメータは設定ファイルで定義できます。詳細については、以下のサンプル設定ファイルと [共通パラメータ](#共通パラメータ)で使用可能なパラメータを参照してください。 + +- **TPC-C:** [`tpcc-benchmark-config.toml`](https://github.com/scalar-labs/scalardb-benchmarks/blob/master/tpcc-benchmark-config.toml) +- **YCSB:** [`ycsb-benchmark-config.toml`](https://github.com/scalar-labs/scalardb-benchmarks/blob/master/ycsb-benchmark-config.toml) +- **マルチストレージ YCSB:** [`ycsb-multi-storage-benchmark-config.toml`](https://github.com/scalar-labs/scalardb-benchmarks/blob/master/ycsb-multi-storage-benchmark-config.toml) + +## ベンチマークを実行する + +ベンチマークを選択し、指示に従ってベンチマークを実行します。 + + + + TPC-C ベンチマークを実行するには、`` を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。 + + ```console + //bin/kelpie --config tpcc-benchmark-config.toml + ``` + + + YCSB ベンチマークを実行するには、`` を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。 + + ```console + //bin/kelpie --config ycsb-benchmark-config.toml + ``` + + + マルチストレージ YCSB ベンチマークを実行するには、`` を Kelpie ディレクトリへのパスに置き換えて、次のコマンドを実行します。 + + ```console + //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` | + +## ワークロード固有のパラメータ + +ワークロードを選択すると、使用可能なパラメータが表示されます。 + + + + | 名前 | 説明 | デフォルト | + |:-----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------| + | `num_warehouses` | ベンチマーク用のウェアハウスの数 (スケール係数)。 | `1` | + | `load_concurrency` | ロード用のスレッド数。 | `1` | + | `load_start_warehouse` | ロード中のウェアハウスの開始 ID。このオプションは、複数のクライアントで大規模なデータをロードする場合や、ウェアハウスを追加する場合に、`--skip-item-load` と一緒に使用すると便利です。 | `1` | + | `load_end_warehouse` | ロード中のウェアハウスの終了 ID。ロード中のウェアハウスの数を指定するには、`--num-warehouses` または `--end-warehouse` のいずれかを使用できます。 | `1` | + | `skip_item_load` | アイテムテーブルのロードをスキップするかどうか。 | `false` | + | `use_table_index` | ScalarDB のセカンダリインデックスの代わりに、汎用テーブルベースのセカンダリインデックスを使用するかどうか。 | `false` | + | `np_only` | 新規注文と支払いトランザクションのみ (それぞれ 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` | + + + | 名前 | 説明 | デフォルト | + |:------------------------|:----------------------------------------------------------------------------------|:----------------------------------------------| + | `load_concurrency` | ロード用のスレッド数。 | `1` | + | `load_batch_size` | 1回のロードトランザクションで入力されるレコード数。 | `1` | + | `load_overwrite` | レコードをロードするときに上書きするかどうか。 | `false` | + | `ops_per_tx` | 1回のトランザクションでの操作数。 | `2` (ワークロード A および C)
    `1` (ワークロード F) | + | `record_count` | ターゲットテーブル内のレコード数。 | `1000` | + | `use_read_modify_write` | ワークロード A でブラインド書き込みではなく読み取り、変更、書き込みを使用するかどうか。 | `false`[^rmw] | + + [^rmw]: ワークロード A はトランザクションが最初に元のレコードを読み取ることを想定していないため、`use_read_modify_write` のデフォルト値は `false` です。ただし、トランザクションマネージャーとして Consensus Commit を使用している場合は、`use_read_modify_write` を `true` に設定する必要があります。これは、ScalarDB が既存のレコードに対するブラインド書き込みを許可しないためです。 +
    +
    diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/common-reference.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/common-reference.mdx new file mode 100644 index 00000000..1282e19b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/common-reference.mdx @@ -0,0 +1,167 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK リファレンス + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このリファレンスでは、ScalarDB Cluster .NET Client SDK の動作について詳しく説明します。 + +## クライアント設定 + +クライアントは、次のものを使用して設定できます。 + +- 設定ファイル (`appsettings.json` など) またはカスタム JSON ファイル +- 環境変数 +- `ScalarDbOptions` オブジェクト + +ASP.NET Core で SDK を使用する場合は、アプリをさまざまな方法で設定できます。詳細については、[ASP.NET Core の構成](https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/configuration/?view=aspnetcore-8.0)を参照してください。 + +設定できるオプションの一覧については、[使用可能なオプション](#使用可能なオプション)を参照してください。 + +### 設定ファイルの使用 + +SDK は、標準の `appsettings.json` とカスタム JSON 設定ファイルの両方をサポートしています。 JSON ファイルでクライアントを設定するには、`ScalarDbOptions` セクションを追加し、必要なオプションを設定します。例: + +```json +{ + "ScalarDbOptions": { + "Address": "http://localhost:60053", + "HopLimit": 10 + } +} +``` + +次に、次のように設定された `TransactionFactory` オブジェクトを作成します。 + +```c# +// If appsettings.json is used, call the Create() method without parameters. +var factory = TransactionFactory.Create(); + +// Or, if a custom file is used, call the Create() method that is passed in the path to the custom file as a parameter. +factory = TransactionFactory.Create("scalardb-options.json"); +``` + +ASP.NET Core で SDK を使用する場合、登録されたトランザクションマネージャーや `ScalarDbContext` が作成されると、`appsettings.json` の設定が自動的に適用されます。カスタム JSON ファイルを使用する場合は、次のように設定フレームワークに追加します。 + +```c# +var builder = WebApplication.CreateBuilder(args); + +// ... + +builder.Configuration.AddJsonFile("scalardb-options.json"); +``` + +:::warning + +カスタム JSON ファイルはすべての標準設定プロバイダーの後に適用されるため、カスタムファイルの値が他のソースの値を上書きします。 + +::: + +### 環境変数の使用 + +クライアントが環境変数を使用するように設定するには、プレフィックス `ScalarDbOptions__` を使用します。例: + +```console +export ScalarDbOptions__Address="http://localhost:60053" +export ScalarDbOptions__HopLimit=10 +``` + +:::warning + +環境変数の値は設定ファイルの値を上書きします。 + +::: + +### `ScalarDbOptions` オブジェクトの使用 + +次のように `ScalarDbOptions` オブジェクトを使用して、実行時にクライアントを設定できます。 + +```c# +var options = new ScalarDbOptions() +{ + Address = "http://localhost:60053", + HopLimit = 10 +}; + +var factory = TransactionFactory.Create(options); +``` + +また、次のように、JSON ファイルや環境変数の値を使用して `ScalarDbOptions` オブジェクトを初期化し、残りの値を実行時に設定することもできます。 + +```c# +// If appsettings.json is used, call the Load() method without parameters. +var options = ScalarDbOptions.Load(); + +// Or, if a custom file is used, call the Load() method that is passed in the path to the custom file as a parameter. +options = ScalarDbOptions.Load("scalardb-options.json"); + +options.HopLimit = 10; + +var factory = TransactionFactory.Create(options); +``` + +ASP.NET Core で SDK を使用する場合は、次のように `AddScalarDb` および `AddScalarDbContext` のラムダ式を使用できます。 + +```c# +var builder = WebApplication.CreateBuilder(args); + +//... + +builder.Services.AddScalarDb(options => +{ + options.Address = "http://localhost:60053"; + options.HopLimit = 10; +}); + +builder.Services.AddScalarDbContext(options => +{ + options.Address = "http://localhost:60053"; + options.HopLimit = 10; +}); +``` + +この構成を使用すると、ラムダ式に渡される `ScalarDbOptions` オブジェクト (上記の例では `options` という名前) が、JSON ファイル、環境変数、およびその他のソースからの値で初期化されます。 + +### 使用可能なオプション + +利用可能なオプションは次のとおりです。 + +| 名前 | 説明 | デフォルト | +|-----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------| +| `Address` | **必須:** クラスターのアドレス。形式は `://:` です。``: ワイヤ暗号化 (TLS) が有効な場合は `https`、それ以外の場合は `http` です。``: クラスターの FQDN または IP アドレスです。``: クラスターのポート番号 (デフォルトでは `60053`)。 | - | +| `HopLimit` | クラスターへのリクエストのホップ数。`HopLimit` の目的は、クラスター内での無限ループを防ぐことです。リクエストが別のクラスターノードに転送されるたびに、`HopLimit` は1ずつ減少します。`HopLimit` が0に達すると、リクエストは拒否されます。 | `3` | +| `RetryCount` | クラスターが利用できない場合にクライアントがクラスターへの接続を試行できる回数。 | `10` | +| `AuthEnabled` | 認証と認可が有効かどうか。 | `false` | +| `Username` | 認証/認可のためのユーザー名。 | | +| `Password` | 認証用のパスワード。設定されていない場合は、パスワードなしで認証が行われます。 | | +| `AuthTokenExpirationTime` | 認証トークンを更新するまでの時間。`AuthTokenExpirationTime` に設定された時間がクラスターの有効期限よりも長い場合、認証エラーを受信すると認証トークンが更新されます。認証トークンが正常に更新されると、認証エラーはクライアントコードに伝播されません。代わりに、認証エラーで失敗した操作が自動的に再試行されます。複数の操作が並行して実行されている場合、認証トークンが更新される前に、これらすべての操作が認証エラーで一度失敗します。 | `00:00:00` (クラスターから受信した認証トークンの有効期限が使用されます。) | +| `TlsRootCertPem` | TLS 通信用のカスタム CA ルート証明書 (PEM データ)。 | | +| `TlsRootCertPath` | TLS 通信用のカスタム CA ルート証明書へのファイルパス。 | | +| `TlsOverrideAuthority` | TLS 通信のカスタム認証局。これは、実際に接続しているホストを変更するものではありません。これは主にテストを目的としています。たとえば、クラスターの証明書 (クラスターの `scalar.db.cluster.node.tls.cert_chain_path` パラメータ) に記載されているホスト名を指定できます。クラスターの証明書に複数のホスト名がある場合は、最初のホスト名のみがチェックされます。 | | +| `LogSensitiveData` | `true` に設定すると、gRPC リクエストとレスポンスをログに記録するときに、ユーザー名、パスワード、認証トークンなどの情報がマスクされずにそのままログに記録されます。 | `false` | +| `GrpcRequestTimeout` | gRPC リクエストのタイムアウト。内部的には、タイムアウトの値はクラスターへの各 gRPC リクエストのデッドラインを計算して設定するために使用されます。設定されたデッドラインを超えると、リクエストはキャンセルされ、`DeadlineExceededException` がスローされます。タイムアウトが `0` に設定されている場合、デッドラインは設定されません。 | `00:01:00` | +| `GrpcMaxReceiveMessageSize` | クライアントが受信できる最大メッセージサイズ (バイト単位)。`0` に設定すると、メッセージサイズは無制限になります。 | `4 MB` | +| `GrpcMaxSendMessageSize` | クライアントから送信できる最大メッセージサイズ (バイト単位)。`0` に設定すると、メッセージサイズは無制限になります。 | `0` (無制限) | + +## ScalarDB 列型と .NET 型間の変換方法 + +[LINQ](getting-started-with-linq.mdx#クラスを設定する) または [Transactional API](getting-started-with-scalardb-tables-as-csharp-classes.mdx#すべての-scalardb-テーブルのクラスを作成する)、[SQL API](getting-started-with-distributed-sql-transactions.mdx#sql-クエリを実行する)、または [Administrative API](getting-started-with-scalardb-tables-as-csharp-classes.mdx#administrative-api-を使用する) の拡張メソッドを使用すると、クラスターから受信した列の値は、対応する .NET 型に自動的に変換されます。同様に、オブジェクトがクラスターに保存されるときに、.NET プロパティの値は対応するクラスターの型に自動的に変換されます。 + +次の表に、型がどのように変換されるかを示します。 + +| ScalarDB 型 | .NET 型 | C# エイリアス | +|------------|----------------------------|-------------| +| TEXT | System.String | string | +| INT | System.Int32 | int | +| BIGINT | System.Int64 | long | +| FLOAT | System.Single | float | +| DOUBLE | System.Double | double | +| BOOLEAN | System.Boolean | bool | +| BLOB | Google.Protobuf.ByteString | | diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/exception-handling.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/exception-handling.mdx new file mode 100644 index 00000000..009ab8b9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/exception-handling.mdx @@ -0,0 +1,177 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK での例外処理 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +トランザクションを実行するときは、例外も適切に処理する必要があります。 + +:::warning + +例外を適切に処理しないと、異常やデータの不整合が発生する可能性があります。 + +::: + +:::note + +この例では Transactional API が使用されていますが、SQL API または `ScalarDbContext` を使用する場合も例外は同じ方法で処理できます。 + +::: + +次のサンプルコードは、例外を処理する方法を示しています。 + +```c# +using System.ComponentModel.DataAnnotations.Schema; +using ScalarDB.Client; +using ScalarDB.Client.DataAnnotations; +using ScalarDB.Client.Exceptions; +using ScalarDB.Client.Extensions; + +var options = new ScalarDbOptions { Address = "http://:"}; + +var factory = TransactionFactory.Create(options); +using var manager = factory.GetTransactionManager(); + +var retryCount = 0; +TransactionException? lastException = null; + +while (true) +{ + if (retryCount++ > 0) + { + // Retry the transaction three times maximum in this sample code + if (retryCount > 3) + // Throw the last exception if the number of retries exceeds the maximum + throw lastException!; + + // Sleep 100 milliseconds before retrying the transaction in this sample code + await Task.Delay(100); + } + + // Begin a transaction + var tran = await manager.BeginAsync(); + try + { + // Execute CRUD operations in the transaction + var getKeys = new Dictionary { { nameof(Item.Id), 1 } }; + var result = await tran.GetAsync(getKeys); + + var scanKeys = new Dictionary { { nameof(Item.Id), 1 } }; + await foreach (var item in tran.ScanAsync(scanKeys, null)) + Console.WriteLine($"{item.Id}, {item.Name}, {item.Price}"); + + await tran.InsertAsync(new Item { Id = 1, Name = "Watermelon", Price = 4500 }); + await tran.DeleteAsync(new Item { Id = 1 }); + + // Commit the transaction + await tran.CommitAsync(); + + return; + } + catch (UnsatisfiedConditionException) + { + // You need to handle `UnsatisfiedConditionException` only if a mutation operation specifies + // a condition. This exception indicates the condition for the mutation operation is not met. + // InsertAsync/UpdateAsync implicitlly sets IfNotExists/IfExists condition + + try + { + await tran.RollbackAsync(); + } + catch (TransactionException ex) + { + // Rolling back the transaction failed. As the transaction should eventually recover, you + // don't need to do anything further. You can simply log the occurrence here + Console.WriteLine($"Rollback error: {ex}"); + } + + // You can handle the exception here, according to your application requirements + + return; + } + catch (UnknownTransactionStatusException) + { + // If you catch `UnknownTransactionStatusException` when committing the transaction, it + // indicates that the status of the transaction, whether it has succeeded or not, is + // unknown. In such a case, you need to check if the transaction is committed successfully + // or not and retry it if it failed. How to identify a transaction status is delegated to users + return; + } + catch (TransactionException ex) + { + // For other exceptions, you can try retrying the transaction. + + // For `TransactionConflictException` and `TransactionNotFoundException`, + // you can basically retry the transaction. However, for the other exceptions, + // the transaction may still fail if the cause of the exception is nontransient. + // In such a case, you will exhaust the number of retries and throw the last exception + + try + { + await tran.RollbackAsync(); + } + catch (TransactionException e) + { + // Rolling back the transaction failed. As the transaction should eventually recover, + // you don't need to do anything further. You can simply log the occurrence here + Console.WriteLine($"Rollback error: {e}"); + } + + lastException = ex; + } +} + +[Table("order_service.items")] +public class Item +{ + [PartitionKey] + [Column("item_id", Order = 0)] + public int Id { get; set; } + + [Column("name", Order = 1)] + public string Name { get; set; } = String.Empty; + + [Column("price", Order = 2)] + public int Price { get; set; } +} + +``` + +:::note + +サンプルコードでは、トランザクションは最大3回再試行され、再試行される前に100ミリ秒間スリープします。アプリケーションの要件に応じて、指数バックオフなどの再試行ポリシーを選択できます。 + +::: + +### 例外の詳細 + +以下の表は、クラスターとの通信時に発生する可能性のあるトランザクション例外を示しています。 + +| 例外 | 操作 | 説明 | +|-----------------------------------|--------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| AuthorizationErrorException | Put, Insert, Update, Delete, Mutate, Execute, Administrative | 権限が不足しているため、認証に失敗しました。 | +| IllegalArgumentException | 全て | 要求メッセージ内の引数が無効です。 | +| IllegalStateException | 全て | RPC が無効な状態で呼び出されました。 | +| InternalErrorException | 全て | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合は、トランザクションが失敗する可能性があります。 | +| TransactionConflictException | Begin、Join、Rollback を除くすべて | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| TransactionNotFoundException | Begin、Join を除くすべて | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合、トランザクションを最初から再試行してください。 | +| UnavailableException | 全て | ScalarDB Cluster は、複数回接続を試みても利用できません。 | +| UnknownTransactionStatusException | Commit | トランザクションのステータスは不明です (トランザクションが正常にコミットされたかどうかは不明です)。この状況では、トランザクションが正常にコミットされたかどうかを確認し、そうでない場合は再試行する必要があります。トランザクションステータスの判断はユーザーの責任です。トランザクションステータステーブルを作成し、他のアプリケーションデータと連動して更新すると、役立つ場合があります。そうすることで、テーブル自体からトランザクションのステータスを判断できるようになります。 | +| UnsatisfiedConditionException | Put, Insert, Update, Delete, Mutate | 突然変異条件が満たされていません。 | + +例外が発生した場合は、`Begin` の場合を除き、トランザクションをロールバックする必要があります。トランザクションをロールバックした後、再試行によって解決できる例外については、トランザクションを最初から再試行できます。 + +上記の例外の他に、gRPC ライブラリによってスローされる例外が発生する場合があります。このような場合は、`RpcException` プロパティで詳細を確認できます。 + +また、`ScalarDbContext` は、次の場合に `TransactionException` タイプの例外をスローします。 + +- すでにアクティブなトランザクションがあるときに `BeginTransaction` または `JoinTransaction` が呼び出された場合 +- アクティブなトランザクションがない状態で `CommitTransaction` または `RollbackTransaction` が呼び出された場合 +- アクティブな2フェーズコミットトランザクションがない状態で `PrepareTransaction` または `ValidateTransaction` が呼び出された場合 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-admin-api.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-admin-api.mdx new file mode 100644 index 00000000..1c2b0c7e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-admin-api.mdx @@ -0,0 +1,132 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK の Administrative API をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、ScalarDB Cluster の Administrative API をサポートしています。この API を使用すると、.NET アプリケーションから ScalarDB Cluster を管理できます。 + +:::note + +次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期メソッドを使用することもできます。 + +::: + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を、使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## 設定ファイルを作成する + +`scalardb-options.json` ファイルを作成し、次の内容を追加します。`` を FQDN または IP アドレスに、`` をクラスターのポート番号 (デフォルトでは `60053`) に置き換えます。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10 + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## トランザクションマネージャーを取得する + +Administrative API とやり取りするためのオブジェクトを取得する必要があります。オブジェクトを取得するには、次のように `TransactionFactory` を使用します。 + +```c# +// Pass the path to the settings file created in the previous step. +var factory = TransactionFactory.Create("scalardb-options.json"); + +using var admin = factory.GetTransactionAdmin(); +``` + +## ScalarDB Cluster の管理 + +ScalarDB Cluster .NET Client SDK を使用して、次の操作を実行できます。 + +### 新しい名前空間を作成する + +```c# +await admin.CreateNamespaceAsync("ns", ifNotExists: true); +``` + +### 名前空間を削除する + +```c# +await admin.DropNamespaceAsync("ns", ifExists: true); +``` + +### 名前空間が存在するかどうかを確認する + +```c# +var namespaceExists = await admin.IsNamespacePresentAsync("ns"); +``` + +### 新しいテーブルを作成する + +```c# +// ... +using ScalarDB.Client.Builders.Admin; +using ScalarDB.Client.Core; + +// ... + +var tableMetadata = + new TableMetadataBuilder() + .AddPartitionKey("pk", DataType.Int) + .AddClusteringKey("ck", DataType.Double) + .AddSecondaryIndex("index", DataType.Float) + .AddColumn("ordinary", DataType.Text) + .Build(); + +await admin.CreateTableAsync("ns", "table_name", tableMetadata, ifNotExists: true); +``` + +### テーブルを削除する + +```c# +await admin.DropTableAsync("ns", "table_name", ifExists: true); +``` + +### テーブルが存在するかどうかを確認する + +```c# +var tableExists = await admin.IsTablePresentAsync("ns", "table_name"); +``` + +### 既存のテーブルの名前を取得する + +```c# +var tablesList = await admin.GetTableNamesAsync("ns"); +``` + +### Coordinator テーブルを作成する + +```c# +await admin.CreateCoordinatorTablesAsync(); +``` + +### Coordinator テーブルを削除する + +```c# +await admin.DropCoordinatorTablesAsync(); +``` + +### Coordinator テーブルが存在するかどうかを確認します + +```c# +var exists = await admin.AreCoordinatorTablesPresentAsync(); +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-aspnet-and-di.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-aspnet-and-di.mdx new file mode 100644 index 00000000..52eb53b5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-aspnet-and-di.mdx @@ -0,0 +1,82 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK での ASP.NET Core と依存性注入をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、ASP.NET Core などのフレームワークでの依存性注入をサポートしています。 + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## クライアント設定の追加 + +ASP.NET Core アプリの `appsettings.json` ファイルに `ScalarDbOptions` セクションを追加し、`` を FQDN または IP アドレスに、`` をクラスターのポート番号 (デフォルトでは `60053`) に置き換えます。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10 + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## トランザクションマネージャーをセットアップする + +次のように、ScalarDB トランザクションマネージャーを `IServiceCollection` のサービスとして登録できます。 + +```c# +using ScalarDB.Client.Extensions; + +//... + +var builder = WebApplication.CreateBuilder(args); + +//... + +builder.Services.AddScalarDb(); +``` + +トランザクションマネージャーを登録したら、次のようにコントローラーのコンストラクターに挿入できます。 + +```c# +[ApiController] +public class OrderController: ControllerBase +{ + private readonly IDistributedTransactionManager _manager; + private readonly ISqlTransactionManager _sqlManager; + private readonly ITwoPhaseCommitTransactionManager _twoPhaseManager; + private readonly ISqlTwoPhaseCommitTransactionManager _sqlTwoPhaseManager; + private readonly IDistributedTransactionAdmin _admin; + + public OrderController(IDistributedTransactionManager manager, + ISqlTransactionManager sqlManager, + ITwoPhaseCommitTransactionManager twoPhaseManager, + ISqlTwoPhaseCommitTransactionManager sqlTwoPhaseManager, + IDistributedTransactionAdmin admin) + { + _manager = manager; + _sqlManager = sqlManager; + _twoPhaseManager = twoPhaseManager; + _sqlTwoPhaseManager = sqlTwoPhaseManager; + _admin = admin; + } +} +``` + +これらの例は WebApi プロジェクト用ですが、GrpcService プロジェクトでも同様に動作します。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-auth.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-auth.mdx new file mode 100644 index 00000000..458d29f6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-auth.mdx @@ -0,0 +1,71 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK を使用した認証と認可をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は [認証と認可](../scalardb-cluster/scalardb-auth-with-sql.mdx)をサポートしており、これにより ScalarDB Cluster へのリクエストを認証および認可できます。 + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## 設定ファイルで資格情報を設定する + +設定ファイルの資格情報を次のように設定し、山括弧内の内容を置き換えてください。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10, + "AuthEnabled": true, + "Username": "", + "Password": "" + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## トランザクションマネージャーを取得する + +次のように `TransactionFactory` を使用して、トランザクションマネージャーまたはトランザクション管理オブジェクトを取得する必要があります。`` を `GetTransactionManager()`、`GetTwoPhaseCommitTransactionManager()`、`GetSqlTransactionManager()`、または `GetSqlTwoPhaseCommitTransactionManager()` に置き換えてください。 + +```c# +// Pass the path to the settings file. +var factory = TransactionFactory.Create("scalardb-options.json"); + +// To get a transaction manager +using var manager = factory.(); + +// To get a transaction admin +using var admin = factory.GetTransactionAdmin(); +``` + +提供された資格情報を使用して `TransactionFactory` から作成されたトランザクションマネージャーまたはトランザクション管理オブジェクトは、ScalarDB Cluster に自動的にログインし、通信できます。 + +## ワイヤ暗号化 + +[ワイヤ暗号化](../scalardb-cluster/scalardb-auth-with-sql.mdx#ワイヤ暗号化) もサポートされています。次のように `Address` を `https` で始まる URL に設定することで有効にできます。 + +```json +{ + "ScalarDbOptions": { + "Address": "https://:" + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-sql-transactions.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-sql-transactions.mdx new file mode 100644 index 00000000..7b80e872 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-sql-transactions.mdx @@ -0,0 +1,196 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK での分散 SQL トランザクションをはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、ScalarDB Cluster の分散 SQL トランザクション機能をサポートします。SDK には、クラスター内での通信を容易にするためのトランザクションとマネージャーの抽象化が含まれています。 + +:::note + +次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期メソッドを使用することもできます。 + +::: + +分散非 SQL トランザクションの詳細については、[ScalarDB Cluster .NET Client SDK での分散トランザクションをはじめよう](getting-started-with-distributed-transactions.mdx)を参照してください。 + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を、使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## 設定ファイルを作成する + +`scalardb-options.json` ファイルを作成し、次の内容を追加します。`` を FQDN または IP アドレスに、`` をクラスターのポート番号 (デフォルトでは `60053`) に置き換えます。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10 + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## トランザクションマネージャーを取得する + +分散 SQL トランザクション用のトランザクションマネージャーオブジェクトを取得する必要があります。トランザクションマネージャーオブジェクトを取得するには、次のように `TransactionFactory` を使用します。 + +```c# +// Pass the path to the settings file created in the previous step. +var factory = TransactionFactory.Create("scalardb-options.json"); + +using var manager = factory.GetSqlTransactionManager(); +``` + +## SQL クエリを実行する + +SQL ステートメントを実行するには、次のようにビルダーを使用して作成できる `ISqlStatement` オブジェクトが必要です。 + +```c# +using ScalarDB.Client.Builders.Sql; + +// ... + +var sqlStatement = + new SqlStatementBuilder() + .SetSql("SELECT * FROM order_service.statements WHERE item_id = :item_id") + .AddParam("item_id", 2) + .Build(); +``` + +次のようにトランザクションマネージャーを使用して、単一の SQL ステートメントを直接実行できます。 + +```c# +var resultSet = await manager.ExecuteAsync(sqlStatement); +``` + +`ExecuteAsync` メソッドの結果には、クラスターから受信したレコードが含まれます。特定の列の値は、次の方法で取得できます。 + +```c# +foreach (var record in resultSet.Records) +{ + // Getting an integer value from the "item_id" column. + // If it fails, an exception will be thrown. + var itemId = record.GetValue("item_id"); + + // Trying to get a string value from the "order_id" column. + // If it fails, no exception will be thrown. + if (record.TryGetValue("order_id", out var orderId)) + Console.WriteLine($"order_id: {orderId}"); + + // Checking if the "count" column is null. + if (record.IsNull("count")) + Console.WriteLine("'count' is null"); +} +``` + +`GetValue` および `TryGetValue` で使用する型の詳細については、[ScalarDB 列型を .NET 型に変換する方法](common-reference.mdx#scalardb-列型と-net-型間の変換方法) を参照してください。 + +## トランザクションで SQL クエリを実行する + +1つのトランザクションの一部として複数の SQL ステートメントを実行するには、トランザクションオブジェクトが必要です。 + +次のようにトランザクションマネージャーを使用してトランザクションオブジェクトを作成できます。 + +```c# +var transaction = await manager.BeginAsync(); +``` + +次のようにして、すでに開始されているトランザクションを再開することもできます。 + +```c# +var transaction = manager.Resume(transactionIdString); +``` + +:::note + +`Resume` メソッドはトランザクションオブジェクトを作成するだけなので、非同期バージョンはありません。このため、間違った ID を使用してトランザクションを再開する可能性があります。 + +::: + +トランザクションには、トランザクションマネージャーと同じ `ExecuteAsync` メソッドがあります。このメソッドを使用して、SQL ステートメントを実行できます。 + +トランザクションをコミットする準備ができたら、次のようにトランザクションの `CommitAsync` メソッドを呼び出すことができます。 + +```c# +await transaction.CommitAsync(); +``` + +トランザクションをロールバックするには、`RollbackAsync` メソッドを使用できます。 + +```c# +await transaction.RollbackAsync(); +``` + +## メタデータを取得する + +次のように、Metadata プロパティを使用して ScalarDB のメタデータを取得できます。 + +```c# +// namespaces, tables metadata +var namespaceNames = new List(); + +await foreach (var ns in manager.Metadata.GetNamespacesAsync()) +{ + namespaceNames.Add(ns.Name); + Console.WriteLine($"Namespace: {ns.Name}"); + + await foreach (var tbl in ns.GetTablesAsync()) + { + Console.WriteLine($" Table: {tbl.Name}"); + + Console.WriteLine($" Columns:"); + foreach (var col in tbl.Columns) + Console.WriteLine($" {col.Name} [{col.DataType}]"); + + Console.WriteLine($" PartitionKey:"); + foreach (var col in tbl.PartitionKey) + Console.WriteLine($" {col.Name}"); + + Console.WriteLine($" ClusteringKey:"); + foreach (var col in tbl.ClusteringKey) + Console.WriteLine($" {col.Name} [{col.ClusteringOrder}]"); + + Console.WriteLine($" Indexes:"); + foreach (var index in tbl.Indexes) + Console.WriteLine($" {index.ColumnName}"); + + Console.WriteLine(); + } +} + +// users metadata +await foreach (var user in manager.Metadata.GetUsersAsync()) +{ + Console.WriteLine($"User: {user.Name} [IsSuperuser: {user.IsSuperuser}]"); + + foreach (var nsName in namespaceNames) + { + Console.WriteLine($" Namespace: {nsName}"); + + Console.WriteLine($" Privileges:"); + foreach (var privilege in await user.GetPrivilegesAsync(nsName)) + Console.WriteLine($" {privilege}"); + } + + Console.WriteLine(); +} +``` + +:::note + +`IAsyncEnumerable` で LINQ メソッドを使用するには、[System.Linq.Async](https://www.nuget.org/packages/System.Linq.Async/) パッケージをインストールします。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-transactions.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-transactions.mdx new file mode 100644 index 00000000..8341c8de --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-transactions.mdx @@ -0,0 +1,330 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK での分散トランザクションをはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、ScalarDB Cluster の分散トランザクション機能をサポートします。SDK には、クラスター内での通信を容易にするためのトランザクションとマネージャーの抽象化が含まれています。 + +:::note + +次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期バージョンを使用することもできます。 + +::: + +分散 SQL トランザクションの詳細については、[ScalarDB Cluster .NET Client SDK での分散 SQL トランザクションをはじめよう](getting-started-with-distributed-sql-transactions.mdx)を参照してください。 + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用して、`.` を使用しているバージョンに置き換えることでこれを行うことができます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## 設定ファイルを作成する + +`scalardb-options.json` ファイルを作成し、次の内容を追加します。`` を FQDN または IP アドレスに、`` をクラスターのポート番号 (デフォルトでは `60053`) に置き換えます。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10 + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## トランザクションマネージャーを取得する + +分散トランザクションにはトランザクションマネージャーを取得する必要があります。トランザクションマネージャーを取得するには、次のように `TransactionFactory` を使用します。 + +```c# +// Pass the path to the settings file created in the previous step. +var factory = TransactionFactory.Create("scalardb-options.json"); + +using var manager = factory.GetTransactionManager(); +``` + +## トランザクションを管理する + +複数の CRUD 操作を単一のトランザクションの一部として実行するには、まずトランザクションを開始する必要があります。次のようにトランザクションマネージャーを使用してトランザクションを開始できます。 + +```c# +var transaction = await manager.BeginAsync(); +``` + +次のようにして、すでに実行中のトランザクションを再開することもできます。 + +```c# +var transaction = manager.Resume(transactionIdString); +``` + +:::note + +`Resume` メソッドはトランザクションオブジェクトを作成するだけなので、非同期バージョンはありません。このため、間違った ID を使用してトランザクションを再開する可能性があります。 + +::: + +トランザクションをコミットする準備ができたら、次のようにトランザクションの `CommitAsync` メソッドを呼び出すことができます。 + +```c# +await transaction.CommitAsync(); +``` + +トランザクションをロールバックするには、`RollbackAsync` メソッドを使用できます。 + +```c# +await transaction.RollbackAsync(); +``` + +## CRUD 操作を実行する + +トランザクションには、クラスターに対して CRUD 操作を実行するための `GetAsync`、`ScanAsync`、`InsertAsync`、`UpsertAsync`、`UpdateAsync`、`DeleteAsync`、および `MutateAsync` メソッドがあります。パラメーターとして、これらのメソッドには操作オブジェクトがあります。操作オブジェクトは、このセクションにリストされているビルダーを使用して作成できます。 + +:::note + +CRUD 操作は、トランザクションを明示的に作成する必要なく、ワンショットトランザクション方式で実行できます。そのために、マネージャーオブジェクトには、トランザクションオブジェクトと同じ CRUD メソッドがあります。 + +::: + +ビルダーを使用するには、`using` セクションに次の名前空間を追加します。 + +```c# +using ScalarDB.Client.Builders; +``` + +:::note + +クラスターは1つのトランザクション内でのコマンドの並列実行をサポートしていないため、非同期メソッドには必ず `await` を使用してください。 + +::: + +### `GetAsync` メソッドの例 + +単一のレコードを取得するには、次のように `GetAsync` メソッドを使用します。 + +```c# +var get = + new GetBuilder() + .SetNamespaceName("ns") + .SetTableName("statements") + .AddPartitionKey("order_id", "1") + .AddClusteringKey("item_id", 2) + .SetProjections("item_id", "count") + .Build(); + +var getResult = await transaction.GetAsync(get); +``` + +パーティションキーの代わりにインデックスを使用してレコードを取得することも可能です。そのためには、次のように操作の種類を `GetWithIndex` に設定する必要があります。 + +```c# +// ... +using ScalarDB.Client.Core; + +// ... + +var get = + new GetBuilder() + // ... + .SetGetType(GetOperationType.GetWithIndex) + .AddPartitionKey("index_column", "1") + .Build(); +``` + +取得されたレコードが満たす必要のある任意の条件を指定することもできます。満たさない場合はレコードは返されません。条件は、次のように条件の結合として設定できます。 + +```c# +var get = + new GetBuilder() + // ... + .AddConjunction(c => c.AddCondition("cost", 1000, Operator.LessThan)) + .AddConjunction(c => + { + c.AddCondition("cost", 10000, Operator.LessThan); + c.AddCondition("in_stock", true, Operator.Equal); + }) + .Build(); +``` + +上記の例では、`cost` が `1000` 未満の場合、または `cost` が `10000` 未満で `in_stock` が true の場合にのみ、レコードが返されます。 + +#### `IResult` オブジェクトの処理 + +`GetAsync` メソッドと `ScanAsync` メソッドは `IResult` オブジェクトを返します。`IResult` オブジェクトには、取得されたレコードの列が含まれます。特定の列の値は、次の方法で取得できます。 + +```c# +// Getting an integer value from the "item_id" column. +// If it fails, an exception will be thrown. +var itemId = result.GetValue("item_id"); + +// Trying to get a string value from the "order_id" column. +// If it fails, no exception will be thrown. +if (result.TryGetValue("order_id", out var orderId)) + Console.WriteLine($"order_id: {orderId}"); + +// Checking if the "count" column is null. +if (result.IsNull("count")) + Console.WriteLine("'count' is null"); +``` + +`GetValue` および `TryGetValue` で使用する型の詳細については、[ScalarDB 列型と .NET 型間の変換方法](common-reference.mdx#scalardb-列型を-net-型間の変換方法) を参照してください。 + +### `ScanAsync` メソッドの例 + +レコードの範囲を取得するには、次のように `ScanAsync` メソッドを使用できます。 + +```c# +var scan = + new ScanBuilder() + .SetNamespaceName("ns") + .SetTableName("statements") + .AddPartitionKey("order_id", "1") + .AddStartClusteringKey("item_id", 2) + .SetStartInclusive(true) + .AddEndClusteringKey("item_id", 8) + .SetEndInclusive(true) + .SetProjections("item_id", "count") + .Build(); + +var scanResult = await transaction.ScanAsync(scan); +``` + +パーティションキーの代わりにインデックスを使用してレコードを取得することも可能です。そのためには、次のように操作の種類を `ScanWithIndex` に設定する必要があります。 + +```c# +// ... +using ScalarDB.Client.Core; + +// ... +var scan = + new ScanBuilder() + // ... + .SetScanType(ScanOperationType.ScanWithIndex) + .AddPartitionKey("index_column", "1") + .Build(); +``` + +取得されたレコードが満たす必要のある任意の条件は、[get 操作](getting-started-with-distributed-transactions.mdx#getasync-メソッドの例)の場合と同様に、スキャン操作に対しても設定できます。 + +### `InsertAsync` メソッドの例 + +新しいレコードを挿入するには、次のように `InsertAsync` メソッドを使用します。 + +```c# +var insert = + new InsertBuilder() + .SetNamespaceName("ns") + .SetTableName("statements") + .AddPartitionKey("order_id", "1") + .AddClusteringKey("item_id", 2) + .AddColumn("count", 11) + .Build(); + +await transaction.InsertAsync(insert); +``` + +### `UpsertAsync` メソッドの例 + +レコードをUPSERTする (既存のレコードを更新するか、新しいレコードを挿入する) には、次のように `UpsertAsync` メソッドを使用できます。 + +```c# +var upsert = + new UpsertBuilder() + .SetNamespaceName("ns") + .SetTableName("statements") + .AddPartitionKey("order_id", "1") + .AddClusteringKey("item_id", 2) + .AddColumn("count", 11) + .Build(); + +await transaction.UpsertAsync(upsert); +``` + +### `UpdateAsync` メソッドの例 + +既存のレコードを更新するには、次のように `UpdateAsync` メソッドを使用します。 + +```c# +// ... +using ScalarDB.Client.Core; + +// ... + +var update = + new UpdateBuilder() + .SetNamespaceName("ns") + .SetTableName("statements") + .AddPartitionKey("order_id", "1") + .AddClusteringKey("item_id", 2) + .AddColumn("count", 11) + .AddCondition("processed", false, Operator.Equal) + .Build(); + +await transaction.UpdateAsync(update); +``` + +### `DeleteAsync` メソッドの例 + +レコードを削除するには、次のように `DeleteAsync` メソッドを使用します。 + +```c# +// ... +using ScalarDB.Client.Core; + +// ... +var delete = + new DeleteBuilder() + .SetNamespaceName("ns") + .SetTableName("statements") + .AddPartitionKey("order_id", "1") + .AddClusteringKey("item_id", 2) + .AddCondition("processed", false, Operator.Equal) + .Build(); + +await transaction.DeleteAsync(delete); +``` + +### `MutateAsync` メソッドの例 + +`MutateAsync` メソッドを使用すると、クラスターへの1回の呼び出しで複数のミューテーション操作を実行できます。これは次の方法で実行できます。 + +```c# +// ... +using ScalarDB.Client.Core; + +// ... +var mutations = new IMutation[] + { + new InsertBuilder() + // ... + .Build(), + new UpsertBuilder() + // ... + .Build(), + new UpdateBuilder() + // ... + .Build(), + new DeleteBuilder() + // ... + .Build() + }; + +await transaction.MutateAsync(mutations); +``` + +:::note + +`InsertAsync`、`UpsertAsync`、`UpdateAsync`、`DeleteAsync`、または `MutateAsync` メソッドを使用してデータを変更するには、まず `GetAsync` または `ScanAsync` メソッドを使用してデータを取得する必要があります。 + +::: diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-linq.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-linq.mdx new file mode 100644 index 00000000..228c7422 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-linq.mdx @@ -0,0 +1,367 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK での LINQ をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、LINQ と Entity Framework のような機能を使用してクラスターをクエリすることをサポートしています。 + +:::note + +この SDK は [Entity Framework](https://learn.microsoft.com/ja-jp/ef/) をサポートしていません。代わりに、この SDK は Entity Framework に似た機能を実装します。 + +::: + +:::note + +LINQ を使用するには、クラスターで SQL サポートを有効にする必要があります。 + +::: + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を、使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## クライアント設定の追加 + +ASP.NET Core アプリの `appsettings.json` ファイルに `ScalarDbOptions` セクションを追加し、`` を FQDN または IP アドレスに、`` をクラスターのポート番号 (デフォルトでは `60053`) に置き換えます。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10 + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## クラスを設定する + +SQL サポートが有効になっていることを確認したら、使用する ScalarDB テーブルごとに C# クラスを作成します。例: + +```c# +using System.ComponentModel.DataAnnotations.Schema; +using ScalarDB.Client.DataAnnotations; + +// ... + +[Table("ns.statements")] +public class Statement +{ + [PartitionKey] + [Column("statement_id", Order = 0)] + public int Id { get; set; } + + [SecondaryIndex] + [Column("order_id", Order = 1)] + public string OrderId { get; set; } = String.Empty; + + [SecondaryIndex] + [Column("item_id", Order = 2)] + public int ItemId { get; set; } + + [Column("count", Order = 3)] + public int Count { get; set; } +} + +[Table("order_service.items")] +public class Item +{ + [PartitionKey] + [Column("item_id", Order = 0)] + public int Id { get; set; } + + [Column("name", Order = 1)] + public string Name { get; set; } = String.Empty; + + [Column("price", Order = 2)] + public int Price { get; set; } +} +``` + +パーティションキー、クラスタリングキー、またはセカンダリインデックスが複数の列で設定されている場合、`ColumnAttribute` の `Order` プロパティによってキーまたはインデックス内の順序が決まります。 + +プロパティに使用する型の詳細については、[ScalarDB 列型と .NET 型間の変換方法](common-reference.mdx#scalardb-列型と-net-型間の変換方法) を参照してください。 + +使用するすべてのテーブルのプロパティを持つコンテキストクラスを作成します。例: + +```c# + public class MyDbContext: ScalarDbContext + { + public ScalarDbSet Statements { get; set; } + public ScalarDbSet Items { get; set; } + } +``` + +すべてのクラスが作成されたら、作成されたコンテキストを依存性注入に追加する必要があります。例: + +```c# +using ScalarDB.Client.Extensions; + +//... + +var builder = WebApplication.CreateBuilder(args); + +//... + +builder.Services.AddScalarDbContext(); +``` + +コンテキストは、次のようにコントローラーのコンストラクターに挿入できます。 + +```c# +[ApiController] +public class OrderController: ControllerBase +{ + private readonly MyDbContext _myDbContext; + + public OrderController(MyDbContext myDbContext) + { + _myDbContext = myDbContext; + } +} +``` + +## LINQ を使用してプロパティをクエリする + +コントローラーで `MyDbContext` を受け取ったら、LINQ を使用してそのプロパティをクエリできます。例: + +### クエリ構文を使用する + +```c# +from stat in _myDbContext.Statements +join item in _myDbContext.Items on stat.ItemId equals item.Id +where stat.Count > 2 && item.Name.Contains("apple") +orderby stat.Count descending, stat.ItemId +select new { item.Name, stat.Count }; +``` + +### メソッド構文を使用する + +```c# +_myDbContext.Statements + .Where(stat => stat.OrderId == "1") + .Skip(1) + .Take(2); +``` + +### `First` メソッドを使用して、パーティションキーで1つの `Statement` を取得します。 + +```c# +_myDbContext.Statements.First(stat => stat.OrderId == "1"); +``` + +### `DefaultIfEmpty` メソッドを使用して左外部結合を実行します + +```c# +from stat in _myDbContext.Statements +join item in _myDbContext.Items on stat.ItemId equals item.Id into items +from i in items.DefaultIfEmpty() +select new { ItemName = i != null ? i.Name : "" } +``` + +以下のメソッドがサポートされています: + +- `Select` +- `Where` +- `Join` +- `GroupJoin` +- `First`/`FirstOrDefault` +- `Skip` +- `Take` +- `OrderBy`/`OrderByDescending` +- `ThenBy`/`ThenByDescending` + +次の `String` メソッドは、`Where` メソッドと `First`/`FirstOrDefault` メソッドの述語内でサポートされています。 + +- `Contains` +- `StartsWith` +- `EndsWith` + +サポートされていない LINQ メソッドは、サポートされているメソッドの後に使用できます。例: + +```c# +_myDbContext.Statements + .Where(stat => stat.OrderId == "1") // Will be executed remotely on the cluster. + .Distinct() // Will be executed locally in the app. + .Where(stat => stat.ItemId < 5); // Will be executed locally. +``` + +:::note + +`Take` または `First`/`FirstOrDefault` の前に `Skip` が指定されている場合、`Skip` に渡される数値が SQL クエリの `LIMIT` 数値に追加されます。`Skip` 自体では、結果の SQL クエリは変更されません。 + +::: + +## `ScalarDbSet{T}` オブジェクトに対して LINQ を使用する場合の制限 + +- すべてのメソッド呼び出しは `Select` 内でサポートされます。例: + +```c# +.Select(stat => convertToSomething(stat.ItemId)) +//... +.Select(stat => stat.ItemId * getSomeNumber()) +``` + +- クエリオブジェクトに対する呼び出しを除くメソッド呼び出しは、`Where` および `First`/`FirstOrDefault` 内でもサポートされます。例: + +```c# +.Where(stat => stat.ItemId == getItemId()) // is OK +//... +.Where(stat => stat.ItemId.ToString() == "1") // is not supported +``` + +- すべてのメソッド呼び出しは、`Join` および `GroupJoin` の結果選択ラムダ内でサポートされます。例: + +```c# +.Join(_myDbContext.Items, + stat => stat.ItemId, + item => item.Id, + (stat, item) => new { ItemName = convertToSomething(item.Name), + ItemCount = stat.Count.ToString() }) +``` + +- `Join` および `GroupJoin` のキー選択ラムダ内では、メソッド呼び出しはサポートされていません。 +- カスタム等価比較子はサポートされていません。`Join` および `GroupJoin` メソッドの `comparer` 引数は、引数が渡された場合は無視されます。 +- `DefaultIfEmpty` メソッドを使用して左外部結合を実行する場合を除き、1つのクエリ内で複数の `from` を直接使用することはサポートされていません。後続の各 `from` は、個別のクエリと見なされます。 + +```c# +var firstQuery = from stat in _myDbContext.Statements + where stat.Count > 2 + select new { stat.Count }; + +var secondQuery = from item in _myDbContext.Items + where item.Price > 6 + select new { item.Name }; + +var finalQuery = from first in firstQuery + from second in secondQuery + select new { first.Count, second.Name }; + +// 1. firstQuery will be executed against the cluster. +// 2. secondQuery will be executed against the cluster for each object (row) from 1. +// 3. finalQuery will be executed locally with the results from 1 and 2. +var result = finalQuery.ToArray(); +``` + +- メソッド呼び出しは、`OrderBy`/`OrderByDescending` または `ThenBy`/`ThenByDescending` 内ではサポートされていません。 +- `Where` および `First`/`FirstOrDefault` 内では、単一の文字列引数を持つ `Contains`、`StartsWith`、および `EndsWith` メソッドのオーバーロードのみがサポートされています。 + +## `ScalarDbContext` を使用してクラスター内のデータを変更する + +`ScalarDbContext` から継承されたクラスのプロパティを使用して、データを変更できます。 + +### `AddAsync` メソッドを使用して新しいオブジェクトを追加します + +```c# +var statement = new Statement + { + OrderId = "2", + ItemId = 4, + Count = 8 + }; +await _myDbContext.Statements.AddAsync(statement); +``` + +### `UpdateAsync` メソッドを使用してオブジェクトを更新する + +```c# +var statement = _myDbContext.Statements.First(stat => stat.Id == 1); + +// ... + +statement.Count = 10; +await _myDbContext.Statements.UpdateAsync(statement); +``` + +### `RemoveAsync` メソッドを使用してオブジェクトを削除する + +```c# +var statement = _myDbContext.Statements.First(stat => stat.Id == 1); + +// ... + +await _myDbContext.Statements.RemoveAsync(statement); +``` + +## トランザクションの管理 + +LINQ クエリと `AddAsync`、`UpdateAsync`、および `RemoveAsync` メソッドは、明示的に開始されたトランザクションなしで実行できます。ただし、1つのトランザクションの一部として複数のクエリとメソッドを実行するには、トランザクションを明示的に開始してコミットする必要があります。`ScalarDbContext` は、通常のトランザクションと、ScalarDB の2フェーズコミットインターフェイスを使用したトランザクションの両方をサポートします。 + +### 新しいトランザクションを開始する + +```c# +await _myDbContext.BeginTransactionAsync(); +``` + +### 2フェーズコミットインターフェースで新しいトランザクションを開始する + +```c# +await _myDbContext.BeginTwoPhaseCommitTransactionAsync(); +``` + +### 現在アクティブなトランザクションのIDを取得する + +```c# +var transactionId = _myDbContext.CurrentTransactionId; +``` + +### 2フェーズコミットインターフェースを使用して既存のトランザクションに参加する + +```c# +await _myDbContext.JoinTwoPhaseCommitTransactionAsync(transactionId); +``` + +### 既存のトランザクションを再開する + +```c# +await _myDbContext.ResumeTransaction(transactionId); +``` + +### 2フェーズコミットインターフェースを使用して既存のトランザクションを再開する + +```c# +await _myDbContext.ResumeTwoPhaseCommitTransaction(transactionId); +``` + +:::note + +`ResumeTransaction`/`ResumeTwoPhaseCommitTransaction` メソッドには非同期バージョンがありません。これは、クラスターを照会せずに `ScalarDbContext` 継承オブジェクト内のトランザクションデータを初期化するだけだからです。このため、間違った ID を使用してトランザクションを再開する可能性があります。 + +::: + +### トランザクションをコミットする(通常または2フェーズコミット) + +```c# +await _myDbContext.CommitTransactionAsync(); +``` + +### トランザクションをロールバックする(通常または2フェーズコミット) + +```c# +await _myDbContext.RollbackTransactionAsync(); +``` + +### コミット用の2フェーズコミットインターフェースを使用してトランザクションを準備する + +```c# +await _myDbContext.PrepareTransactionAsync(); +``` + +### コミット前に2フェーズコミットインターフェースでトランザクションを検証する + +```c# +await _myDbContext.ValidateTransactionAsync(); +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-scalardb-tables-as-csharp-classes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-scalardb-tables-as-csharp-classes.mdx new file mode 100644 index 00000000..30a247bc --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-scalardb-tables-as-csharp-classes.mdx @@ -0,0 +1,208 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK で C# クラスとしてテーブルをはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、ScalarDB テーブルを C# オブジェクトとして抽象化することで、クラスターにアクセスするコードの作成に役立ちます。クラスター内のテーブルを表すクラスを定義すると、クラスターをクエリするときに列名やその型が混同されないようにすることができます。さらに、テーブルの構造が変更された場合は、IDE のリファクタリング機能を使用してコードに変更を適用できます。 + +:::note + +次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期メソッドを使用することもできます。 + +::: + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を、使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## すべての ScalarDB テーブルのクラスを作成する + +ScalarDB テーブルを C# オブジェクトとして操作するには、使用するテーブルごとにクラスを作成する必要があります。例: + +```c# +using System.ComponentModel.DataAnnotations.Schema; +using ScalarDB.Client.DataAnnotations; + +// ... + +[Table("ns.statements")] +public class Statement +{ + [PartitionKey] + [Column("order_id", Order = 0)] + public string OrderId { get; set; } = String.Empty; + + [ClusteringKey] + [Column("item_id", Order = 1)] + public int ItemId { get; set; } + + [Column("count", Order = 2)] + public int Count { get; set; } +} +``` + +プロパティに使用する型の詳細については、[ScalarDB 列型と .NET 型間の変換方法](common-reference.mdx#scalardb-列型と-net-型間の変換方法)を参照してください。 + +## CRUD 操作を実行する + +各テーブルのクラスを作成した後、`ITransactionCrudOperable` の汎用 `GetAsync`、`ScanAsync`、`InsertAsync`、`UpdateAsync`、`DeleteAsync`、`UpsertAsync`、または `MutateAsync` メソッドを使用して、クラスをオブジェクトとして使用できます。 + +これらの汎用メソッドを使用するには、`using` セクションに次の名前空間を追加します。 + +```c# +using ScalarDB.Client.Extensions; +``` + +### `GetAsync` メソッドを使用して1つのオブジェクトを取得します + +```c# +var keys = new Dictionary + { + { nameof(Statement.OrderId), "1" } + }; +var statement = await transaction.GetAsync(keys); + +Console.WriteLine($"ItemId: {statement.ItemId}, Count: {statement.Count}"); +``` + +### `ScanAsync` メソッドを使用して複数のオブジェクトを取得する + +```c# +var startKeys = new Dictionary + { + { nameof(Statement.OrderId), "1" }, + { nameof(Statement.ItemId), 3 } + }; +var endKeys = new Dictionary + { + { nameof(Statement.ItemId), 6} + }; + +await foreach (var s in transaction.ScanAsync(startKeys, endKeys)) + Console.WriteLine($"ItemId: {s.ItemId}, Count: {s.Count}"); +``` + +:::note + +`IAsyncEnumerable` で LINQ メソッドを使用するには、[System.Linq.Async](https://www.nuget.org/packages/System.Linq.Async/) パッケージをインストールします。 + +::: + +### `InsertAsync` メソッドを使用して新しいオブジェクトを挿入します + +```c# +var statement = new Statement + { + OrderId = "2", + ItemId = 4, + Count = 8 + }; +await transaction.InsertAsync(statement); +``` + +### `UpdateAsync` メソッドを使用してオブジェクトを更新する + +```c# +// ... +statement.ItemId = 4; +statement.Count = 8; + +await transaction.UpdateAsync(statement); +``` + +### `DeleteAsync` メソッドを使用してオブジェクトを削除する + +```c# +// ... +await transaction.DeleteAsync(statement); +``` + +### `UpsertAsync` メソッドを使用してオブジェクトをUPSERTする + +```c# +var statement = new Statement + { + OrderId = "2", + ItemId = 4, + Count = 8 + }; +await transaction.UpsertAsync(statement); +``` + +### `MutateAsync` メソッドを使用して複数のオブジェクトを一度にUPSERTおよび削除する + +```c# +var statement = new Statement + { + OrderId = "2", + ItemId = 4, + Count = 16 + }; + +// ... + +await transaction.MutateAsync(objectsToUpsert: new[] { statement }, + objectsToDelete: new[] { statement2 }); +``` + +:::note + +`UpdateAsync`、`DeleteAsync`、`UpsertAsync`、または `MutateAsync` メソッドを使用してオブジェクトを変更するには、まず `GetAsync` または `ScanAsync` メソッドを使用してオブジェクトを取得する必要があります。 + +::: + +## Administrative API を使用する + +C# オブジェクトも Administrative API で使用できます。汎用 Administrative API メソッドを使用するには、次の名前空間を `using` セクションに追加します。 + +```c# +using ScalarDB.Client.Extensions; +``` + +### 新しい名前空間を作成する + +```c# +await admin.CreateNamespaceAsync(); +``` + +### 既存の名前空間を削除する + +```c# +await admin.DropNamespaceAsync(); +``` + +### 名前空間が存在するかどうかを確認する + +```c# +var namespaceExists = await admin.IsNamespacePresentAsync(); +``` + +### 新しいテーブルを作成する + +```c# +await admin.CreateTableAsync(); +``` + +### 既存のテーブルを削除する + +```c# +await admin.DropTableAsync(); +``` + +### テーブルが存在するかどうかを確認する + +```c# +var tableExists = await admin.IsTablePresentAsync(); +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-two-phase-commit-transactions.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-two-phase-commit-transactions.mdx new file mode 100644 index 00000000..96742f58 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/getting-started-with-two-phase-commit-transactions.mdx @@ -0,0 +1,146 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK の2フェーズコミットインターフェイスを使用した分散トランザクションをはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK は、ScalarDB の2フェーズコミットインターフェイスを使用したトランザクションをサポートします。SDK には、クラスター内の通信を強化するためのトランザクションとマネージャーの抽象化が含まれています。 + +:::note + +次の例のように非同期メソッドを使用することをお勧めしますが、代わりに同期メソッドを使用することもできます。 + +::: + +## 2フェーズコミットインターフェースを使用したトランザクションについて + +SDK を使用すると、複数のアプリケーションにまたがる2フェーズコミットインターフェースを使用したトランザクションを実行できます。たとえば、複数のマイクロサービスがある場合、それぞれのマイクロサービスにトランザクションマネージャーを作成し、それらのマイクロサービスにまたがるトランザクションを実行できます。 + +2フェーズコミットインターフェースを使用したトランザクションには、コーディネーターと参加者の2つのロールがあり、これらが協力して1つのトランザクションを実行します。 + +コーディネータープロセスは最初にトランザクションを開始し、トランザクションの ID をすべての参加者に送信し、参加者プロセスがトランザクションに参加します。 CRUD または SQL 操作を実行した後、コーディネータープロセスと参加者プロセスは2フェーズインターフェースを使用してトランザクションをコミットします。 + +## SDK をインストールする + +ScalarDB Cluster と同じメジャーバージョンとマイナーバージョンの [SDK](https://www.nuget.org/packages/ScalarDB.Client) を .NET プロジェクトにインストールします。組み込みの NuGet パッケージマネージャーを使用してこれを行うことができます。`.` を、使用しているバージョンに置き換えます。 + +```console +dotnet add package ScalarDB.Client --version '..*' +``` + +## 設定ファイルを作成する + +`scalardb-options.json` ファイルを作成し、次の内容を追加します。`` を FQDN または IP アドレスに、`` をクラスターのポート番号 (デフォルトでは `60053`) に置き換えます。 + +```json +{ + "ScalarDbOptions": { + "Address": "http://:", + "HopLimit": 10 + } +} +``` + +設定ファイルやクライアントを設定するその他の方法の詳細については、[クライアント設定](common-reference.mdx#クライアント設定)を参照してください。 + +## トランザクションマネージャーを取得します (コーディネータと参加者用) + +2フェーズコミットインターフェイスを使用した分散トランザクションには、トランザクションマネージャーを取得する必要があります。トランザクションマネージャーを取得するには、次のように `TransactionFactory` を使用します。 + +```c# +// Pass the path to the settings file created in the previous step. +var factory = TransactionFactory.Create("scalardb-options.json"); + +using var manager = factory.GetTwoPhaseCommitTransactionManager(); +``` + +あるいは、次のトランザクションマネージャーを指定して、2フェーズコミットインターフェイスを使用したトランザクションに CRUD 操作の代わりに SQL を使用することもできます。 + +```c# +using var manager = factory.GetSqlTwoPhaseCommitTransactionManager(); +``` + +## トランザクションを開始する (コーディネータ用) + +次のように、コーディネータの2フェーズコミットインターフェイスを使用してトランザクションを開始できます。 + +```c# +var transaction = await manager.BeginAsync(); +``` + +開始されたトランザクションの ID は、次のコードで取得できます。 + +```c# +var transactionId = transaction.Id; +``` + +## トランザクションに参加する (参加者向け) + +参加者の2フェーズコミットインターフェイスを使用して、次のようにトランザクションに参加できます。 + +```c# +var transaction = await manager.JoinAsync(transactionId); +``` + +## トランザクションを再開する (コーディネータと参加者用) + +通常、2フェーズコミットインターフェイスを使用したトランザクションには、複数の要求と応答の交換が含まれます。以前の要求で開始または参加したトランザクションを操作する必要がある場合は、次のようにしてそのトランザクションを再開できます。 + +```c# +var transaction = manager.Resume(transactionId); +``` + +:::note + +`Resume` メソッドはトランザクションオブジェクトを作成するだけなので、非同期バージョンはありません。このため、間違った ID を使用してトランザクションを再開する可能性があります。 + +::: + +## トランザクションをロールバックする + +トランザクションがコミットに失敗した場合は、次のようにトランザクションをロールバックできます。 + +```c# +await transaction.RollbackAsync(); +``` + +## トランザクションをコミットする (コーディネータと参加者用) + +CRUD または SQL 操作を完了したら、トランザクションをコミットする必要があります。ただし、2フェーズコミットインターフェイスを使用したトランザクションの場合は、まずコーディネータとすべての参加者でトランザクションを準備する必要があります。 + +```c# +await transaction.PrepareAsync(); +``` + +次に、同時実行制御プロトコルに応じて、次のようにコーディネーターとすべての参加者でトランザクションを検証する必要がある場合があります。 + +```c# +await transaction.ValidateAsync(); +``` + +最後に、次のようにしてコーディネーターとすべての参加者にトランザクションをコミットできます。 + +```c# +await transaction.CommitAsync(); +``` + +コーディネータまたは参加者のいずれかがトランザクションの準備または検証に失敗した場合は、コーディネータとすべての参加者で `RollbackAsync` を呼び出す必要があります。 + +また、コーディネータとすべての参加者がトランザクションのコミットに失敗した場合は、コーディネータとすべての参加者で `RollbackAsync` を呼び出す必要があります。 + +ただし、コーディネータまたは一部の参加者のみがトランザクションのコミットに失敗した場合は、コーディネータまたはいずれかの参加者がトランザクションのコミットに成功している限り、トランザクションはコミットされたとみなされます。 + +## CRUD 操作を実行する + +トランザクションの2フェーズコミットインターフェイスには、通常のトランザクションと同じ CRUD 操作メソッドがあります。詳細については、[CRUD 操作を実行する](getting-started-with-distributed-transactions.mdx#crud-操作を実行する) を参照してください。 + +## SQL ステートメントを実行する + +SQL トランザクションの2フェーズコミットインターフェイスには、通常の SQL トランザクションと同じ SQL クエリを実行するメソッドがあります。詳細については、[SQL クエリを実行する](getting-started-with-distributed-sql-transactions.mdx#sql-クエリを実行する)を参照してください. diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/index.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/index.mdx new file mode 100644 index 00000000..fa80ad09 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster-dotnet-client-sdk/index.mdx @@ -0,0 +1,26 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster .NET Client SDK の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster .NET Client SDK を使用すると、アプリケーションは gRPC を使用して ScalarDB Cluster に接続できるようになります。 + +ScalarDB Cluster .NET Client SDK を使用するには、次の入門ガイドを参照してください。 + +* [分散トランザクションをはじめよう](getting-started-with-distributed-transactions.mdx) +* [分散 SQL トランザクションをはじめよう](getting-started-with-distributed-sql-transactions.mdx) +* [Administrative API をはじめよう](getting-started-with-admin-api.mdx) +* [C# クラスとしての ScalarDB テーブルをはじめよう](getting-started-with-scalardb-tables-as-csharp-classes.mdx) +* [ASP.NET Core と依存性注入をはじめよう](getting-started-with-aspnet-and-di.mdx) +* [LINQ をはじめよう](getting-started-with-linq.mdx) +* [2フェーズコミットインターフェイスを使用した分散トランザクションをはじめよう](getting-started-with-two-phase-commit-transactions.mdx) +* [認証と認可をはじめよう](getting-started-with-auth.mdx) +* [例外処理](exception-handling.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/compatibility.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/compatibility.mdx new file mode 100644 index 00000000..589d2714 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/compatibility.mdx @@ -0,0 +1,52 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster 互換性マトリックス + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このドキュメントでは、クライアント SDK バージョン間の ScalarDB Cluster バージョンの互換性を示します。 + +## ScalarDB Cluster とクライアント SDK の互換性 + +| ScalarDB Cluster バージョン | ScalarDB Cluster Java Client SDK バージョン | ScalarDB Cluster .NET Client SDK バージョン | +|:--------------------------|:------------------------------------------|:------------------------------------------| +| 3.15 | 3.9 - 3.15 | 3.12* - 3.15 | +| 3.14 | 3.9 - 3.14 | 3.12* - 3.14 | +| 3.13 | 3.9 - 3.13 | 3.12* - 3.13 | +| 3.12 | 3.9 - 3.12 | 3.12* | +| 3.11 | 3.9 - 3.11 | サポート対象外 | +| 3.10 | 3.9 - 3.10 | サポート対象外 | +| 3.9 | 3.9 | サポート対象外 | + +\* このバージョンはプライベートプレビュー段階であるため、将来のバージョンでは下位互換性のない更新が行われる可能性があります。 + +:::note + +- クライアントツール (例えば、[ScalarDB Cluster SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) や [ScalarDB Cluster Schema Loader](developer-guide-for-scalardb-cluster-with-java-api.mdx#クラスター用-schema-loader)) は、ScalarDB Cluster Java Client SDK と同じものと見なすことができます。つまり、ScalarDB Cluster Java Client SDK と同じ互換性ルールをクライアントツールに適用できます。 +- ScalarDB Data Loader を使用してバックエンドデータベースにアクセスする場合は、使用している ScalarDB Cluster のバージョンと互換性のあるバージョンの ScalarDB Data Loader を使用する必要があります。この場合、サポートされている ScalarDB Data Loader のバージョンは、上記の表に示されている ScalarDB Cluster Java Client SDK のバージョンと同じです。ScalarDB Data Loader は ScalarDB Cluster に直接アクセスしないことに注意してください。 +- ScalarDB Cluster が新しいマイナーバージョンで提供する新機能を使用する場合は、同じバージョンまたはそれ以降のバージョンのクライアントツールの利用、もしくは既存のスキーマの再作成 (または更新) が必要となる場合があります。詳細については、各機能の関連ドキュメントを参照してください。 + +::: + +## バージョンスキューポリシー + +:::note + +バージョンは `x.y.z` として表されます。`x` はメジャーバージョン、`y` はマイナーバージョン、`z` はパッチバージョンを表します。この形式は [セマンティックバージョニング](https://semver.org/) に従います。 + +::: + +- ScalarDB Cluster とクライアント SDK の **メジャー** バージョンが異なる場合、それらは **互換性がない** ため、**サポートされていません**。 +- ScalarDB Cluster とクライアント SDK の **メジャー** バージョンが同じで、**マイナー** バージョンが異なる場合、ScalarDB Cluster のバージョンはクライアント SDK バージョン以上である必要があります。例: + - **サポート対象:** ScalarDB Cluster 3.13とクライアント SDK 3.11の組み合わせ + - **サポート対象外:** ScalarDB Cluster 3.11とクライアント SDK 3.13の組み合わせ +- **メジャー** バージョンと **マイナー** バージョンが同じ場合、ScalarDB Cluster とクライアント SDK 間で異なる **パッチ** バージョンを使用できます。例: + - **サポート対象:** ScalarDB Cluster 3.13.2とクライアント SDK 3.13.0の組み合わせ + - **サポート対象:** ScalarDB Cluster 3.13.0とクライアント SDK 3.13.2の組み合わせ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/deployment-patterns-for-microservices.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/deployment-patterns-for-microservices.mdx new file mode 100644 index 00000000..98ca1ec8 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/deployment-patterns-for-microservices.mdx @@ -0,0 +1,76 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# マイクロサービスにおける ScalarDB Cluster のデプロイパターン + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster を使用するマイクロサービスアプリケーションを構築する場合、ScalarDB Cluster のデプロイ方法として、共有クラスターパターンと分離クラスターパターンの2つのパターンを選択できます。 +このドキュメントでは、まずこれらのパターンについて説明し、それらの違いと、どの場合にどちらを選択するかの基本的なガイドラインを示します。 + +また、このドキュメントでは、マイクロサービスアプリケーションが database-per-service パターンに基づいて作成されているものと想定しています。このパターンでは、各マイクロサービスがデータベースを管理し、マイクロサービスはマイクロサービス間の API を介して別のマイクロサービスのデータベースにアクセスする必要があります。 + +## ScalarDB Cluster のデプロイパターン + +共有クラスターパターンでは、マイクロサービスはシステム内で1つの ScalarDB Cluster インスタンス (ScalarDB Cluster ノードのクラスタ) を共有するため、同じ ScalarDB Cluster インスタンスにアクセスしてデータベースとやり取りします。一方、分離クラスターパターンでは、マイクロサービスは複数の ScalarDB Cluster インスタンスを使用します。通常、1つのマイクロサービスが1つの ScalarDB Cluster インスタンスにアクセスして、データベースとやり取りします。 + +次の図は2つのパターンを示しています。(MS はマイクロサービスの略です。) + +![マイクロサービスにおける ScalarDB Cluster のデプロイパターン。](images/scalardb-deployment-patterns.png) + +:::note + +どちらのパターンでも、マイクロサービスに必要なデータベースに加えて、Coordinator テーブルも管理する必要があります。 + +::: + +## 長所と短所 + +明らかな違いの1つは、ScalarDB Cluster インスタンスのリソースの量です。分離クラスターパターンでは、アプリケーションを管理するためのリソースが増えます。これにより、メンテナンスの負担とコストも増加します。 + +さらに、使用する ScalarDB Cluster API も異なります。具体的には、共有クラスターパターンの場合、[1フェーズコミットインターフェース](../api-guide.mdx#transactional-api)を使用する必要があります。このインターフェースでは、マイクロサービスがレコードを読み書きした後、1つのマイクロサービスのみが `commit` を呼び出してトランザクションをコミットします。分離クラスターパターンの場合、[2フェーズコミットインターフェース](../two-phase-commit-transactions.mdx)を使用する必要があります。このインターフェースでは、すべてのマイクロサービスが最初に `prepare` を呼び出し、すべての`prepare` 呼び出しが成功した場合に `commit` を呼び出します。したがって、分離クラスターパターンのマイクロサービスは、トランザクションとそのエラーをよりきめ細かい方法で処理する必要があるため、共有クラスターパターンのマイクロサービスよりも複雑になる可能性があります。 + +さらに、リソースの分離レベルも異なります。マイクロサービスは、保守性と開発効率を高めるために十分に分離されている必要がありますが、共有クラスターパターンではリソースの分離が弱くなります。リソースの分離が弱いと、セキュリティも弱くなる可能性があります。ただし、認証や承認などの ScalarDB Cluster のセキュリティ機能を使用することで、セキュリティリスクを軽減できます。 + +同様に、システムの管理方法にも違いがあります。具体的には、共有クラスターパターンでは、他のチームに代わって ScalarDB Cluster インスタンスを管理するタスクをチームに割り当てる必要があります。通常は中央データチームが管理しますが、そのようなチームが存在しない場合は問題が発生する可能性があります。分離クラスターパターンでは、管理のバランスがより取れていますが、Coordinator テーブルに関して同様の問題が発生します。この問題は、調整用のマイクロサービスを用意し、1つのチームにそのマイクロサービスを管理させることで対処できます。 + +次に、パターンの長所と短所をまとめます。 + +### 共有クラスターパターン + +- **長所:** + - 1フェーズコミットインターフェースのため、トランザクションとエラーの処理が簡単です。(データベースのバックアップ操作も簡単です。) + - 1つの ScalarDB Cluster インスタンスを使用するため、リソース使用量が少なくなります。 +- **短所:** + - マイクロサービス間のリソース分離が弱い。 + - 管理のバランスが取れていない。(1つのチームが他のチームに代わって ScalarDB Cluster インスタンスを管理する必要があります。) + +### 分離クラスターパターン + +- **利点:** + - リソースの分離が向上します。 + - 管理のバランスがより取れます。(1つのチームが1つのマイクロサービスと1つの ScalarDB Cluster インスタンスを管理します。また、1つのチームに Coordinator ターテーブルの管理を任せる必要があります。) +- **欠点:** + - 2フェーズコミットインターフェースによるトランザクションとエラー処理が複雑です。(データベースのバックアップ操作も複雑になることがあります。) + - 複数の ScalarDB Cluster インスタンスがあるため、リソース使用量が増加します。 + + +## どのパターンを選択するか + +可能な限り、共有クラスターパターンを使用することをお勧めします。共有クラスターパターンには前述のようにいくつかの欠点がありますが、そのシンプルさと管理のしやすさはそれらの欠点を上回ります。さらに、ScalarDB Cluster はすべての重要な状態を基盤となるデータベースに保存し、メモリには重要な状態を保持しないため、データベースへの単なるパスとして見ることができます。したがって、共有クラスターパターンのシステムは依然としてサービスごとのデータベースパターンに準拠しており、マイクロサービスの理念にあまり違反していないと考えています。 + +共有クラスターパターンの欠点が受け入れられない場合は、分離クラスターパターンを使用できます。ただし、2フェーズコミットインターフェースのメカニズムと使用方法を適切に理解している場合にのみ、このパターンを使用してください。そうでない場合、データベースの異常などの問題が発生する可能性があります。 + +## 制限事項 + +ScalarDB は、CRUD、SQL、Spring Data JDBC などのいくつかの API を提供します。 CRUD および SQL インターフェースは共有クラスターパターンと分離クラスターパターンの両方をサポートしていますが、Spring Data JDBC インターフェースは共有クラスターパターンをサポートしていません。これは、Spring Data JDBC の1フェーズコミットインターフェースが現在、アプリケーションがモノリシックであり、相互にやり取りするマイクロサービスに分割されていないことを前提としているためです。Spring Data JDBC インターフェースは、他の API と同様に、2フェーズコミットインターフェースと分離クラスターパターンをサポートしています。 + +## 参照 + +- [2フェーズコミットインターフェースを使用したトランザクション](../two-phase-commit-transactions.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx new file mode 100644 index 00000000..6e38df1f --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/developer-guide-for-scalardb-cluster-with-java-api.mdx @@ -0,0 +1,303 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Java API を使用した ScalarDB Cluster の開発者ガイド + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster は、アプリケーションを開発するための Java API を提供します。このドキュメントでは、Java API の使用方法を説明します。 + +## ビルドに ScalarDB Cluster Java Client SDK を追加する + +ScalarDB Cluster Java Client SDK は、[Maven Central Repository](https://mvnrepository.com/artifact/com.scalar-labs/scalardb-cluster-java-client-sdk) で入手できます。 + +Gradle を使用して ScalarDB Cluster Java Client SDK への依存関係を追加するには、以下を使用します。 + +```gradle +dependencies { + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' +} +``` + +Maven を使用して依存関係を追加するには、以下を使用します。 + +```xml + + com.scalar-labs + scalardb-cluster-java-client-sdk + 3.14.1 + +``` + +## クライアントモード + +ScalarDB Cluster Java Client SDK は、`indirect` と `direct-kubernetes` の2つのクライアントモードをサポートしています。以下では、クライアントモードについて説明します。 + +### `indirect` クライアントモード + +このモードでは、単にリクエストを任意のクラスターノードに送信します (通常は Envoy などのロードバランサー経由)。リクエストを受信したクラスターノードは、トランザクション状態を持つ適切なクラスターノードにリクエストをルーティングします。 + +![ScalarDB Cluster アーキテクチャ](images/indirect-client-mode.png) + +このモードの利点は、クライアントを軽量に保てることです。 +欠点は、正しいクラスターノードに到達するために追加のホップが必要になり、パフォーマンスに影響する可能性があることです。 + +アプリケーションが別の Kubernetes クラスターで実行されていて、アプリケーションが Kubernetes API と各クラスターノードにアクセスできない場合でも、この接続モードを使用できます。 +アプリケーションが ScalarDB Cluster ノードと同じ Kubernetes クラスターで実行されている場合は、`direct-kubernetes` クライアントモードを使用できます。 + +### `direct-kubernetes` クライアントモード + +このモードでは、クライアントはメンバーシップロジック (Kubernetes API を使用) と分散ロジック (コンシステントハッシュアルゴリズム) を使用して、トランザクション状態を持つ適切なクラスターノードを見つけます。次に、クライアントはクラスターノードに直接リクエストを送信します。 + +![ScalarDB Cluster アーキテクチャ](images/direct-kubernetes-client-mode.png) + +このモードの利点は、適切なクラスターノードに到達するためのホップ数を減らすことができるため、パフォーマンスが向上することです。このモードの欠点は、クライアントにメンバーシップロジックとリクエストルーティングロジックが必要なため、クライアントをファットにする必要があることです。 + +この接続モードは Kubernetes API と各クラスターノードにアクセスする必要があるため、アプリケーションが ScalarDB Cluster ノードと同じ Kubernetes クラスターで実行されている場合にのみ、この接続モードを使用できます。アプリケーションが別の Kubernetes クラスターで実行されている場合は、`indirect` クライアントモードを使用します。 + +`direct-kubernetes` クライアントモードで Kubernetes にアプリケーションをデプロイする方法の詳細については、[`direct-kubernetes` モードを使用してクライアントアプリケーションを Kubernetes にデプロイする](../helm-charts/how-to-deploy-scalardb-cluster.mdx#direct-kubernetes-モードを使用してクライアント-アプリケーションを-kubernetes-にデプロイします) を参照してください。 + +## ScalarDB Cluster Java API + +ScalarDB Cluster Java Client SDK は、アプリケーションが ScalarDB Cluster にアクセスするための Java API を提供します。次の図は、ScalarDB Cluster Java API のアーキテクチャを示しています。 + +``` + +-----------------------+ + | ユーザー/アプリケーション | + +-----------------------+ + ↓ Java API + +--------------+ + | ScalarDB API | + +--------------+ + ↓ gRPC + +------------------+ + | ScalarDB Cluster | + +------------------+ + ↓ DB ベンダー固有のプロトコル + +----+ + | DB | + +----+ +``` + +ScalarDB Cluster Java API の使用は、クライアント構成と Schema Loader が異なることを除いて、ScalarDB Java API の使用とほぼ同じです。詳細については、[ScalarDB Java API ガイド](../api-guide.mdx) を参照してください。 + +次のセクションでは、ScalarDB Cluster Java API とクラスター用 Schema Loader のクライアント構成について説明します。 + +### クライアント構成 + +次の表は、ScalarDB Cluster Java API のクライアント構成を示しています。 + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------| +| `scalar.db.transaction_manager` | `cluster` を指定する必要があります。 | - | +| `scalar.db.contact_points` | クラスターの連絡先。`indirect` クライアントモードを使用する場合は、`indirect:` の形式を使用して、クラスターノードの前にあるロードバランサーの IP アドレスを指定します。`direct-kubernetes` クライアントモードを使用する場合は、`direct-kubernetes:/` または単に `direct-kubernetes:` の形式を使用して、名前空間名 (オプション) と [エンドポイントリソース](https://kubernetes.io/docs/concepts/services-networking/service/#endpoints) の名前を指定して、メンバーシップ情報を取得します。名前空間名を指定しない場合、クライアントは `default` 名前空間を使用します。 | | +| `scalar.db.contact_port` | 連絡先のポート番号。 | `60053` | +| `scalar.db.cluster.grpc.deadline_duration_millis` | gRPC の期限期間(ミリ秒単位)。 | `60000` (60秒) | +| `scalar.db.cluster.grpc.max_inbound_message_size` | 単一の gRPC フレームに許可される最大メッセージサイズ。 | gRPCのデフォルト値 | +| `scalar.db.cluster.grpc.max_inbound_metadata_size` | 受信できるメタデータの最大サイズ。 | gRPCのデフォルト値 | + +たとえば、`indirect` クライアントモードを使用し、ロードバランサーの IP アドレスが `192.168.10.1` の場合、クライアントを次のように構成できます。 + +```properties +scalar.db.transaction_manager=cluster +scalar.db.contact_points=indirect:192.168.10.1 +``` + +または、エンドポイントの名前空間を `ns`、エンドポイント名を `scalardb-cluster` として `direct-kubernetes` クライアントモードを使用する場合は、次のようにクライアントを構成できます。 + +```properties +scalar.db.transaction_manager=cluster +scalar.db.contact_points=direct-kubernetes:ns/scalardb-cluster +``` + +### クラスター用 Schema Loader + +ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (クラスター用 Schema Loader) を使用する必要があります。クラスター用Schema Loader の使用方法は、JAR ファイルの名前が異なることを除いて、[ScalarDB Schema Loader](../schema-loader.mdx) の使用方法と基本的に同じです。クラスター用 Schema Loader は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドでクラスター用 Schema Loader を実行できます。 + +```console +java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config -f --coordinator +``` + +## ScalarDB Cluster SQL + +ScalarDB Cluster SQL には、次のように Java の ScalarDB 用 JDBC および Spring Data JDBC を介してアクセスできます。 + +``` + +----------------------------------------------+ + | ユーザー/アプリケーション | + +----------------------------------------------+ + ↓ ↓ Java API +Java API ↓ +-------------------------------+ + (JDBC) ↓ | Spring Data JDBC for ScalarDB | + ↓ +-------------------------------+ ++----------------------------------------------+ +| ScalarDB JDBC (ScalarDB SQL) | ++----------------------------------------------+ + ↓ gRPC + +----------------------+ + | ScalarDB Cluster SQL | + +----------------------+ + ↓ DB ベンダー固有のプロトコル + +----+ + | DB | + +----+ +``` + +このセクションでは、JDBC 経由で ScalarDB Cluster SQL を使用する方法と、Spring Data JDBC for ScalarDB を使用する方法について説明します。 + +### JDBC 経由の ScalarDB Cluster SQL + +JDBC 経由での ScalarDB Cluster SQL の使用は、プロジェクトに JDBC ドライバーを追加する方法を除いて、[ScalarDB JDBC](../scalardb-sql/jdbc-guide.mdx) を使用する場合とほぼ同じです。 + +[ビルドに ScalarDB Cluster Java Client SDK を追加する](#add-scalardb-cluster-java-client-sdk-to-your-build) で説明されているように ScalarDB Cluster Java Client SDK を追加することに加えて、プロジェクトに次の依存関係を追加する必要があります。 + +Gradle を使用して ScalarDB Cluster JDBC ドライバーへの依存関係を追加するには、以下を使用します。 + +```gradle +dependencies { + implementation 'com.scalar-labs:scalardb-sql-jdbc:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' +} +``` + +Maven を使用して依存関係を追加するには、以下を使用します。 + +```xml + + + com.scalar-labs + scalardb-sql-jdbc + 3.14.1 + + + com.scalar-labs + scalardb-cluster-java-client-sdk + 3.14.1 + + +``` + +それ以外は、JDBC 経由で ScalarDB Cluster SQL を使用することは、ScalarDB JDBC を使用することと同じです。ScalarDB JDBC の詳細については、[ScalarDB JDBC ガイド](../scalardb-sql/jdbc-guide.mdx) を参照してください。 + +### Spring Data JDBC for ScalarDB 経由の ScalarDB Cluster SQL + +JDBC 経由の ScalarDB Cluster SQL と同様に、Spring Data JDBC for ScalarDB 経由の ScalarDB Cluster SQL を使用することは、プロジェクトへの追加方法を除いて、[Spring Data JDBC for ScalarDB](../scalardb-sql/spring-data-guide.mdx) を使用することとほぼ同じです。 + +[ScalarDB Cluster Java Client SDK をビルドに追加する](#add-scalardb-cluster-java-client-sdk-to-your-build) で説明されているように ScalarDB Cluster Java Client SDK を追加することに加えて、プロジェクトに次の依存関係を追加する必要があります: + +Gradle を使用して依存関係を追加するには、以下を使用します: + +```gradle +dependencies { + implementation 'com.scalar-labs:scalardb-sql-spring-data:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' +} +``` + +Maven を使用して依存関係を追加するには、以下を使用します。 + +```xml + + + com.scalar-labs + scalardb-sql-spring-data + 3.14.1 + + + com.scalar-labs + scalardb-cluster-java-client-sdk + 3.14.1 + + +``` + +それ以外では、Spring Data JDBC for ScalarDB 経由で ScalarDB Cluster SQL を使用することは、Spring Data JDBC for ScalarDB を使用することと同じです。Spring Data JDBC for ScalarDB の詳細については、[Spring Data JDBC for ScalarDB ガイド](../scalardb-sql/spring-data-guide.mdx) を参照してください。 + +### ScalarDB Cluster SQL クライアント設定 + +次の表は、ScalarDB Cluster SQL の設定を示しています。 + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------| +| `scalar.db.sql.connection_mode` | `cluster` を指定する必要があります。 | - | +| `scalar.db.sql.cluster_mode.contact_points` | クラスターの連絡先。`indirect` クライアントモードを使用する場合は、`indirect:` の形式を使用して、クラスターノードの前にあるロードバランサーの IP アドレスを指定します。`direct-kubernetes` クライアントモードを使用する場合は、`direct-kubernetes:/` または単に `direct-kubernetes:` の形式を使用して、名前空間名 (オプション) と [エンドポイントリソース](https://kubernetes.io/docs/concepts/services-networking/service/#endpoints) の名前を指定して、メンバーシップ情報を取得します。名前空間名を指定しない場合、クライアントは `default` 名前空間を使用します。 | | +| `scalar.db.sql.cluster_mode.contact_port` | 連絡先のポート番号。 | `60053` | +| `scalar.db.sql.default_transaction_mode` | デフォルトのトランザクションモード。`TRANSACTION` または `TWO_PHASE_COMMIT_TRANSACTION` を設定できます。 | `TRANSACTION` | +| `scalar.db.sql.default_namespace_name` | デフォルトの名前空間名。SQL ステートメントで名前空間名を指定しない場合は、この値が使用されます。 | | +| `scalar.db.cluster.grpc.deadline_duration_millis` | gRPC の期限期間(ミリ秒単位)。 | `60000` (60秒) | +| `scalar.db.cluster.grpc.max_inbound_message_size` | 単一の gRPC フレームに許可される最大メッセージサイズ。 | gRPCのデフォルト値 | +| `scalar.db.cluster.grpc.max_inbound_metadata_size` | 受信できるメタデータの最大サイズ。 | gRPCのデフォルト値 | + +たとえば、`indirect` クライアントモードを使用し、ロードバランサーの IP アドレスが `192.168.10.1` の場合、クライアントを次のように構成できます。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=indirect:192.168.10.1 +``` + +または、エンドポイントの名前空間を `ns`、エンドポイント名を `scalardb-cluster` として `direct-kubernetes` クライアントモードを使用する場合は、次のようにクライアントを構成できます。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=direct-kubernetes:ns/scalardb-cluster +``` + +ScalarDB JDBC の構成方法の詳細については、[JDBC 接続 URL](../scalardb-sql/jdbc-guide.mdx#jdbc-接続-url) を参照してください。 + +Spring Data JDBC for ScalarDB の構成方法の詳細については、[構成](../scalardb-sql/spring-data-guide.mdx#構成) を参照してください。 + +### SQL CLI + +他の SQL データベースと同様に、ScalarDB SQL にも、コマンドラインシェルで対話的に SQL ステートメントを発行できる CLI ツールが用意されています。 + +Cluster 用の SQL CLI は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで SQL CLI を実行できます。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config +``` + +#### 使用方法 + +CLI の使用方法は、次のように `-h` オプションを使用して確認できます。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar -h +Usage: scalardb-sql-cli [-hs] -c=PROPERTIES_FILE [-e=COMMAND] [-f=FILE] + [-l=LOG_FILE] [-o=] [-p=PASSWORD] + [-u=USERNAME] +Starts ScalarDB SQL CLI. + -c, --config=PROPERTIES_FILE + A configuration file in properties format. + -e, --execute=COMMAND A command to execute. + -f, --file=FILE A script file to execute. + -h, --help Display this help message. + -l, --log=LOG_FILE A file to write output. + -o, --output-format= + Format mode for result display. You can specify + table/vertical/csv/tsv/xmlattrs/xmlelements/json/a + nsiconsole. + -p, --password=PASSWORD A password to connect. + -s, --silent Reduce the amount of informational messages + displayed. + -u, --username=USERNAME A username to connect. +``` + +## 参考資料 + +Java 以外のプログラミング言語で ScalarDB Cluster を使用する場合は、ScalarDB Cluster gRPC API を使用できます。 +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +* [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +* [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) + +Javadocs も利用可能です: + +* [ScalarDB Cluster Java Client SDK](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-java-client-sdk/3.14.1/index.html) +* [ScalarDB Cluster Common](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-common/3.14.1/index.html) +* [ScalarDB Cluster RPC](https://javadoc.io/doc/com.scalar-labs/scalardb-cluster-rpc/3.14.1/index.html) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/encrypt-data-at-rest.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/encrypt-data-at-rest.mdx new file mode 100644 index 00000000..153af57e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/encrypt-data-at-rest.mdx @@ -0,0 +1,317 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 保存データの暗号化 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +このドキュメントでは、ScalarDB に保存されているデータを暗号化する方法について説明します。 + +## 概要 + +ScalarDB は、それを介して保存されたデータを暗号化できます。暗号化機能は、主要なデータベースシステムの透過的データ暗号化 (TDE) に似ているため、アプリケーションに対して透過的です。ScalarDB は、バックエンドデータベースに書き込む前にデータを暗号化し、そこから読み取るときに復号します。 + +現在、ScalarDB は列レベルの暗号化をサポートしており、テーブル内の特定の列を暗号化できます。 + +## 設定 + +暗号化機能を有効にするには、ScalarDB Cluster ノード設定ファイルで `scalar.db.cluster.encryption.enabled` を `true` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|----------------------------------------|-----------------------------------------|---------| +| `scalar.db.cluster.encryption.enabled` | ScalarDB が保存データを暗号化するかどうか。 | `false` | + +:::note + +暗号化はクライアントに対して透過的であるため、クライアントの設定を変更する必要はありません。 + +::: + +:::note + +暗号化機能を有効にする場合は、内部的にパーティション間スキャンを実行するため、システム名前空間 (デフォルトでは `scalardb`) の `scalar.db.cross_partition_scan.enabled` を `true` に設定する必要もあります。 + +::: + +その他の設定は、選択した暗号化実装によって異なります。現在、ScalarDB は次の暗号化実装をサポートしています。 + +- HashiCorp Vault 暗号化 +- 自己暗号化 + +次のセクションでは、各暗号化実装の設定方法について説明します。 + +### HashiCorp Vault 暗号化 + +HashiCorp Vault 暗号化では、ScalarDB は HashiCorp Vault の [encryption as a service](https://developer.hashicorp.com/vault/tutorials/encryption-as-a-service/eaas-transit) を使用してデータを暗号化および復号します。この実装では、ScalarDB は暗号化キーの管理とデータの暗号化および復号を HashiCorp Vault に委任します。 + +HashiCorp Vault 暗号化を使用するには、ScalarDB Cluster ノード設定ファイルでプロパティ `scalar.db.cluster.encryption.type` を `vault` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|-------------------------------------|-------------------------------------------------------------|---------| +| `scalar.db.cluster.encryption.type` | HashiCorp Vault 暗号化を使用するには、`vault` に設定する必要があります。 | | + +次のプロパティも設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------| +| `scalar.db.cluster.encryption.vault.key_type` | キーの種類。現在、`aes128-gcm96`、`aes256-gcm96`、`chacha20-poly1305` がサポートされています。キーの種類の詳細については、[Key types](https://developer.hashicorp.com/vault/docs/secrets/transit#key-types) を参照してください。 | `aes128-gcm96` | +| `scalar.db.cluster.encryption.vault.associated_data_required` | AEAD 暗号化に関連データが必要かどうか。 | `false` | +| `scalar.db.cluster.encryption.vault.address` | HashiCorp Vault サーバーのアドレス。 | | +| `scalar.db.cluster.encryption.vault.token` | HashiCorp Vault で認証するためのトークン。 | | +| `scalar.db.cluster.encryption.vault.namespace` | HashiCorp Vault の名前空間。この設定はオプションです。 | | +| `scalar.db.cluster.encryption.vault.transit_secrets_engine_path` | トランジットシークレットエンジンのパス。 | `transit` | +| `scalar.db.cluster.encryption.vault.column_batch_size` | HashiCorp Vault サーバーへの単一のリクエストに含まれる列の数。 | `64` | + +### 自己暗号化 + +自己暗号化では、ScalarDB がデータ暗号化キー (DEK) を管理し、暗号化と復号を実行します。ScalarDB はテーブルの作成時にテーブルごとに DEK を生成し、Kubernetes Secrets に保存します。 + +自己暗号化を使用するには、ScalarDB Cluster ノード設定ファイルでプロパティ `scalar.db.cluster.encryption.type` を `self` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|-------------------------------------|-------------------------------------------------|---------| +| `scalar.db.cluster.encryption.type` | 自己暗号化を使用するには `self` に設定する必要があります。 | | + +次のプロパティも設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|-------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------| +| `scalar.db.cluster.encryption.self.key_type` | キーの種類。現在、`AES128_GCM`、`AES256_GCM`、`AES128_EAX`、`AES256_EAX`、`AES128_CTR_HMAC_SHA256`、`AES256_CTR_HMAC_SHA256`、`CHACHA20_POLY1305`、および `XCHACHA20_POLY1305` がサポートされています。キーの種類の詳細については、[キータイプの選択](https://developers.google.com/tink/aead?hl=ja#choose_a_key_type)を参照してください。 | `AES128_GCM` | +| `scalar.db.cluster.encryption.self.associated_data_required` | AEAD 暗号化に関連データが必要かどうか。 | `false` | +| `scalar.db.cluster.encryption.self.kubernetes.secret.namespace_name` | Kubernetes Secrets の名前空間名。 | `default` | +| `scalar.db.cluster.encryption.self.data_encryption_key_cache_expiration_time` | DEK キャッシュの有効期限(ミリ秒単位)。 | `60000` (60秒) | + +### テーブルを削除するときに DEK を削除する + +デフォルトでは、ScalarDB はテーブルを削除しても、テーブルに関連付けられたデータ暗号化キー (DEK) を削除しません。ただし、テーブルを削除するときに DEK を削除するように ScalarDB を設定できます。これを有効にするには、ScalarDB Cluster ノード設定ファイルでプロパティ `scalar.db.cluster.encryption.delete_data_encryption_key_on_drop_table.enabled` を `true` に設定します。 + +| 名前 | 説明 | デフォルト | +|---------------------------------------------------------------------------------|-------------------------------------------|----------| +| `scalar.db.cluster.encryption.delete_data_encryption_key_on_drop_table.enabled` | テーブルを削除するときに DEK を削除するかどうか。 | `false` | + +## 制限事項 + +暗号化機能にはいくつかの制限事項があります: + +- 主キー列 (パーティションキー列とクラスタリングキー列) は暗号化できません。 +- セカンダリインデックス列は暗号化できません。 +- 暗号化された列は WHERE 句または ORDER BY 句で指定できません。 +- 暗号化された列は、基になるデータベースに BLOB 型として保存されるため、BLOB 型の最大サイズより大きい暗号化された列は保存できません。BLOB 型の最大サイズについては、[ScalarDB と他のデータベース間のデータ型マッピング](../schema-loader.mdx#scalardb-と他のデータベース間のデータ型マッピング)を参照してください。 + +## ワイヤ暗号化 + +暗号化機能を有効にする場合は、データを保護するために本番環境でワイヤ暗号化を有効にすることを強くお勧めします。ワイヤ暗号化の詳細については、[ScalarDB Cluster ワイヤ暗号化](encrypt-wire-communications.mdx)を参照してください。 + +## チュートリアル - HashiCorp Vault 暗号化を設定してデータを暗号化する + +このチュートリアルでは、HashiCorp Vault 暗号化を使用して ScalarDB で保存されたデータを暗号化する方法について説明します。 + + + +### ステップ 1. HashiCorp Vault をインストールします + +HashiCorp の公式ドキュメント [Install Vault](https://developer.hashicorp.com/vault/tutorials/getting-started/getting-started-install) を参照して、HashiCorp Vault をインストールします。 + +### ステップ 2. ScalarDB Cluster 設定ファイルを作成します + +次の設定ファイルを `scalardb-cluster-node.properties` として作成し、`` と `` を ScalarDB ライセンスキーとライセンスチェック証明書の値に置き換えます。ライセンスキーと証明書の詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + +```properties +scalar.db.storage=jdbc +scalar.db.contact_points=jdbc:postgresql://postgresql:5432/postgres +scalar.db.username=postgres +scalar.db.password=postgres +scalar.db.cluster.node.standalone_mode.enabled=true +scalar.db.cross_partition_scan.enabled=true +scalar.db.sql.enabled=true + +# Encryption configurations +scalar.db.cluster.encryption.enabled=true +scalar.db.cluster.encryption.type=vault +scalar.db.cluster.encryption.vault.address=http://vault:8200 +scalar.db.cluster.encryption.vault.token=root + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +### ステップ 3. Docker Compose 設定ファイルを作成する + +次の設定ファイルを `docker-compose.yaml` として作成します。 + +```yaml +services: + vault: + container_name: "vault" + image: "hashicorp/vault:1.17.3" + ports: + - 8200:8200 + environment: + - VAULT_DEV_ROOT_TOKEN_ID=root + - VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200 + cap_add: + - IPC_LOCK + + postgresql: + container_name: "postgresql" + image: "postgres:15" + ports: + - 5432:5432 + environment: + - POSTGRES_PASSWORD=postgres + healthcheck: + test: ["CMD-SHELL", "pg_isready || exit 1"] + interval: 1s + timeout: 10s + retries: 60 + start_period: 30s + + scalardb-cluster-standalone: + container_name: "scalardb-cluser-node" + image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.14.1" + ports: + - 60053:60053 + - 9080:9080 + volumes: + - ./scalardb-cluster-node.properties:/scalardb-cluster/node/scalardb-cluster-node.properties + depends_on: + postgresql: + condition: service_healthy +``` + +### ステップ 4. HashiCorp Vault サーバーを起動します + +次のコマンドを実行して、HashiCorp Vault サーバーを開発モードで起動します。 + +```console +docker compose up vault -d +``` + +HashiCorp Vault サーバーが実行したら、次のコマンドを実行して環境変数を設定します。 + +```console +export VAULT_ADDR="http://127.0.0.1:8200" +export VAULT_TOKEN=root +``` + +### ステップ 5. HashiCorp Vault サーバーでトランジットシークレットエンジンを有効にする + +次のコマンドを実行して、HashiCorp Vault サーバーでトランジットシークレットエンジンを有効にします。 + +```console +vault secrets enable transit +``` + +### ステップ 6. PostgreSQL と ScalarDB Cluster を起動する + +次のコマンドを実行して、PostgreSQL と ScalarDB Cluster をスタンドアロンモードで起動します。 + +```console +docker compose up postgresql scalardb-cluster-standalone -d +``` + +ScalarDB Cluster が完全に起動するまでに数分かかる場合があります。 + +### ステップ 7. ScalarDB Cluster に接続する + +ScalarDB Cluster に接続するために、このチュートリアルでは、ScalarDB Cluster に接続して SQL クエリを実行するツールである SQL CLI を使用します。SQL CLI は、[ScalarDB Releases ページ](https://github.com/scalar-labs/scalardb/releases)からダウンロードできます。 + +`scalardb-cluster-sql-cli.properties` という名前の設定ファイルを作成します。このファイルは、SQL CLI を使用して ScalarDB Cluster に接続するために使用されます。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=indirect:localhost +``` + +次に、次のコマンドを実行して SQL CLI を起動します。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +``` + +まず、ScalarDB トランザクション実行に必要な Coordinator テーブルを作成します。 + +```sql +CREATE COORDINATOR TABLES IF NOT EXISTS; +``` + +これで、ScalarDB Cluster で暗号化機能を有効にしたデータベースを使用する準備が整いました。 + +### ステップ 8. テーブルを作成する + +テーブルを作成する前に、名前空間を作成する必要があります。 + +```sql +CREATE NAMESPACE ns; +``` + +次に、テーブルを作成します。 + +```sql +CREATE TABLE ns.tbl ( + id INT PRIMARY KEY, + col1 TEXT ENCRYPTED, + col2 INT ENCRYPTED, + col3 INT); +``` + +`ENCRYPTED` キーワードを使用すると、指定された列のデータが暗号化されます。この例では、`col1` と `col2` のデータが暗号化されます。 + +### ステップ 9. テーブルにデータを挿入する + +テーブルにデータを挿入するには、次の SQL クエリを実行します。 + +```sql +INSERT INTO ns.tbl (id, col1, col2, col3) VALUES (1, 'data1', 123, 456); +``` + +挿入されたデータを確認するには、次の SQL クエリを実行します。 + +```sql +SELECT * FROM ns.tbl; +``` + +```console ++----+-------+------+------+ +| id | col1 | col2 | col3 | ++----+-------+------+------+ +| 1 | data1 | 123 | 456 | ++----+-------+------+------+ +``` + +### ステップ 10. データの暗号化を確認する + +データが暗号化されていることを確認するには、PostgreSQL に直接接続してデータをチェックします。 + +:::warning + +ScalarDB では、バックエンドデータベースからのデータの直接読み取りまたは書き込みはサポートされていません。このような場合、ScalarDB はデータの一貫性を保証できません。このガイドでは、テスト目的でバックエンドデータベースに直接アクセスしますが、実稼働環境ではこれを行うことはできません。 + +::: + +PostgreSQL に接続するには、次のコマンドを実行します。 + +```console +docker exec -it postgresql psql -U postgres +``` + +次に、次の SQL クエリを実行してテーブル内のデータを確認します。 + +```sql +SELECT id, col1, col2, col3 FROM ns.tbl; +``` + +以下のような出力が表示され、`col1` と `col2` のデータが暗号化されていることが確認されます。 + +```console + id | col1 | col2 | col3 +----+--------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+------ + 1 | \x7661756c743a76313a6b6f76455062316a676e6a4a596b643743765539315a49714d625564545a61697152666c7967367837336e66 | \x7661756c743a76313a4b6244543162764678676d44424b526d7037794f5176423569616e615635304c473079664354514b3866513d | 456 +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/encrypt-wire-communications.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/encrypt-wire-communications.mdx new file mode 100644 index 00000000..6e178d16 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/encrypt-wire-communications.mdx @@ -0,0 +1,68 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ワイヤ通信の暗号化 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster は、トランスポート層セキュリティ (TLS) を使用したワイヤ暗号化をサポートしています。このドキュメントでは、ScalarDB Cluster でのワイヤ暗号化の設定について説明します。 + +ワイヤ暗号化機能では、次のものが暗号化されます: + +* ScalarDB Cluster ノードとクライアント間の通信。 +* すべての ScalarDB Cluster ノード間の通信 (クラスターの内部通信)。 + +この機能では、gRPC の TLS サポートが使用されます。詳細については、公式の gRPC [Security Policy](https://github.com/grpc/grpc-java/blob/master/SECURITY.md) を参照してください。 + +:::note + +実稼働環境では、ScalarDB Cluster ノードと基盤となるデータベース間のワイヤ暗号化を有効にすることを強くお勧めします。ScalarDB Cluster ノードと基盤となるデータベース間のワイヤ暗号化を有効にする方法については、基盤となるデータベースの製品ドキュメントを参照してください。 + +::: + +## 設定 + +このセクションでは、ワイヤ暗号化に使用できる設定について説明します。 + +### ScalarDB Cluster ノードの設定 + +ワイヤ暗号化を有効にするには、`scalar.db.cluster.tls.enabled` を `true` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|---------------------------------|--------------------------------|-----------| +| `scalar.db.cluster.tls.enabled` | ワイヤ暗号化 (TLS) が有効かどうか。 | `false` | + +次の設定も設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------| +| `scalar.db.cluster.tls.ca_root_cert_pem` | TLS 通信用のカスタム CA ルート証明書 (PEM データ)。 | | +| `scalar.db.cluster.tls.ca_root_cert_path` | TLS 通信用のカスタム CA ルート証明書 (ファイルパス)。 | | +| `scalar.db.cluster.tls.override_authority` | TLS 通信のカスタム権限。これは、実際に接続しているホストを変更するものではありません。これはテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`scalar.db.cluster.node.tls.cert_chain_path` に設定した証明書チェーンファイルで提示されるホスト名を指定できます。 | | +| `scalar.db.cluster.node.tls.cert_chain_path` | TLS 通信に使用される証明書チェーンファイル。 | | +| `scalar.db.cluster.node.tls.private_key_path` | TLS 通信に使用される秘密鍵ファイル。 | | + +証明機関 (CA) ルート証明書を指定するには、`scalar.db.cluster.tls.ca_root_cert_pem` または `scalar.db.cluster.tls.ca_root_cert_path` のいずれかを設定する必要があります。両方を設定すると、`scalar.db.cluster.tls.ca_root_cert_pem` が使用されます。 + +### ScalarDB Cluster Java Client SDK 設定 + +クライアント側でワイヤ暗号化を有効にするには、`scalar.db.cluster.tls.enabled` を `true` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|---------------------------------|--------------------------------|-----------| +| `scalar.db.cluster.tls.enabled` | ワイヤ暗号化 (TLS) が有効かどうか。 | `false` | + +次の設定も設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------| +| `scalar.db.cluster.tls.ca_root_cert_pem` | TLS 通信用のカスタム CA ルート証明書 (PEM データ)。 | | +| `scalar.db.cluster.tls.ca_root_cert_path` | TLS 通信用のカスタム CA ルート証明書 (ファイルパス)。 | | +| `scalar.db.cluster.tls.override_authority` | TLS 通信のカスタム権限。これは、実際に接続しているホストを変更するものではありません。これはテスト用ですが、DNS オーバーライドの代替としてテスト以外でも安全に使用できます。たとえば、`scalar.db.cluster.node.tls.cert_chain_path` に設定した証明書チェーンファイルで提示されるホスト名を指定できます。 | | + +CA ルート証明書を指定するには、`scalar.db.cluster.tls.ca_root_cert_pem` または `scalar.db.cluster.tls.ca_root_cert_path` のいずれかを設定する必要があります。両方を設定すると、`scalar.db.cluster.tls.ca_root_cert_pem` が使用されます。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx new file mode 100644 index 00000000..e0571aa5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-graphql.mdx @@ -0,0 +1,325 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster GraphQL をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +## 前提条件 + +- 以下のいずれかの Java Development Kit (JDK): + - [Oracle JDK](https://www.oracle.com/java/technologies/downloads/) LTS バージョン (8、11、17、または 21) + - [OpenJDK](https://openjdk.org/install/) LTS バージョン (8、11、17、または 21) +- Kubernetes クラスターで実行されている ScalarDB Cluster + - [ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx) の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。 + +## サンプルアプリケーション + +このチュートリアルでは、口座間で資金を移動できる電子マネーアプリケーションを作成するプロセスについて説明します。 + +次の図は、サンプルアプリケーションのシステムアーキテクチャを示しています。 + +``` + +-----------------------------------------------------------------------------------------------------------------------------------------+ + | [Kubernetes クラスター] | + | | + | [ポッド] [ポッド] [ポッド] | + | | + | +-------+ | + | +---> | Envoy | ---+ | + | | +-------+ | | + | | | | + +------------------------+ | +---------+ | +-------+ | +--------------------+ | + | Schema Loader | --+-> | サービス | ---+---> | Envoy | ---+---------> | サービス | ---+ | + | (間接クライアントモード) | | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | | + +------------------------+ | +---------+ | | +--------------------+ | +------------------------+ | + | | +-------+ | | +---> | ScalarDB Cluster ノード | ---+ | + | +---> | Envoy | ---+ | | +------------------------+ | | + | +-------+ | | | | + | | | +------------------------+ | +------------+ | + | +---+---> | ScalarDB Cluster ノード | ---+---> | PostgreSQL | | + | | | +------------------------+ | +------------+ | + | | | | | + | | | +------------------------+ | | + | | +---> | ScalarDB Cluster ノード | ---+ | + | | +------------------------+ | + +------------+ | +----------------------------+ | | + | ブラウザ | ------+---------------------------------------> | サービス | ---+ | + | (GraphiQL) | | | (ScalarDB Cluster GraphQL) | | + +------------+ | +----------------------------+ | + | | + +-----------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. `schema.json` を作成する + +以下は簡単なサンプルスキーマです。 + +`schema.json` を作成し、ファイルに次の内容を追加します。 + +```json +{ + "emoney.account": { + "transaction": true, + "partition-key": [ + "id" + ], + "clustering-key": [], + "columns": { + "id": "TEXT", + "balance": "INT" + } + } +} +``` + +## ステップ 2. `database.properties` を作成する + +ScalarDB Cluster の Schema Loader 用に `database.properties` を作成する必要があります。 + +ただし、まず Envoy (`scalardb-cluster-envoy`) のサービスリソースの `EXTERNAL-IP` アドレスを取得する必要があります。 + +`EXTERNAL-IP` アドレスを確認するには、次のコマンドを実行します。 + +```console +kubectl get svc scalardb-cluster-envoy +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost` です。 + +次に、`database.properties` を作成し、ファイルに次の内容を追加します。 + +```properties +scalar.db.transaction_manager=cluster +scalar.db.contact_points=indirect:localhost +``` + +ScalarDB Cluster に接続するには、`scalar.db.transaction_manager` プロパティに `cluster` を指定する必要があります。 + +また、このチュートリアルでは `indirect` クライアントモードを使用して Envoy のサービスリソースに接続します。 + +クライアントモードの詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) を参照してください。 + +## ステップ 3. スキーマをロードする + +ScalarDB Cluster 経由でスキーマをロードするには、ScalarDB Cluster 専用の Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Cluster 用の Schema Loader は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Cluster 用の Schema Loader を実行できます。 + +```console +java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +``` + +## ステップ 4. GraphiQL から操作を実行する + +ScalarDB Cluster では、`scalar.db.graphql.graphiql` プロパティが `true` に設定されている場合 (`true` がデフォルト値)、GraphiQL IDE が使用可能になります。 + +ScalarDB Cluster GraphQL (`scalardb-cluster-graphql`) のサービスリソースの `EXTERNAL-IP` アドレスを取得するには、次のコマンドを実行します。 + +```console +kubectl get svc scalardb-cluster-graphql +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-graphql LoadBalancer 10.105.74.214 localhost 8080:30514/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost`、GraphiQL IDE のエンドポイント URL は `http://localhost:8080/graphql` です。 +Web ブラウザでその URL を開くと、GraphiQL 画面が表示されます。 + +最初のレコードを挿入してみましょう。左ペインに次のミューテーションを貼り付け、ウィンドウ上部の三角形の `Execute Query` ボタンを押します。 + +```graphql +mutation PutUser1 { + account_put(put: {key: {id: "user1"}, values: {balance: 1000}}) +} +``` + +ScalarDB GraphQL は常にトランザクションを使用してクエリを実行します。上記のクエリは新しいトランザクションを開始し、ScalarDB Put コマンドを実行し、実行の最後にトランザクションをコミットします。 + +GraphQL サーバーからの次の応答が右側のペインに表示されます。 + +```json +{ + "data": { + "account_put": true + } +} +``` + +`"data"` フィールドには実行結果が含まれます。この応答は、ミューテーションの `account_put` フィールドが成功したことを示しています。ミューテーションの結果タイプは `Boolean!` で、操作が成功したかどうかを示します。 + +次に、挿入したレコードを取得しましょう。左ペインの前のミューテーションの横に次のクエリを貼り付けて、`Execute Query` ボタンをクリックします。上記の `mutation PutUser1` を削除していないため、ボタンの下にプルダウンメニューが表示され、実行する操作を選択できます。 以下に示すように、`GetUser1` を選択します。 + +```graphql +query GetUser1 { + account_get(get: {key: {id: "user1"}}) { + account { + id + balance + } + } +} +``` + +右側のペインに次の結果が表示されます。 + +```json +{ + "data": { + "account_get": { + "account": { + "id": "user1", + "balance": 1000 + } + } + } +} +``` + +### GraphQL API と ScalarDB Java API 間のマッピング + +自動的に生成された GraphQL スキーマは、クエリ、ミューテーション、および入出力のオブジェクトタイプを定義し、ターゲット名前空間内のすべてのテーブルに対して CRUD 操作を実行できるようにします。 + +これらの操作は、[`DistributedTransaction`](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/com/scalar/db/api/DistributedTransaction.html) インターフェースで定義されている ScalarDB API と一致するように設計されています。 + +名前空間に `account` テーブルがあると仮定すると、次のクエリとミューテーションが生成されます。 + +| ScalarDB API | GraphQL ルートタイプ | GraphQL フィールド | +|--------------------------------------------------------|-------------------|------------------------------------------------------------------------------------| +| `get(Get get)` | `Query` | `account_get(get: account_GetInput!): account_GetPayload` | +| `scan(Scan scan)` | `Query` | `account_scan(scan: account_ScanInput!): account_ScanPayload` | +| `put(Put put)` | `Mutation` | `account_put(put: account_PutInput!): Boolean!` | +| `put(java.util.List puts)` | `Mutation` | `account_bulkPut(put: [account_PutInput!]!): Boolean!` | +| `delete(Delete delete)` | `Mutation` | `account_delete(delete: account_DeleteInput!): Boolean!` | +| `delete(java.util.List deletes)` | `Mutation` | `account_bulkDelete(delete: [account_DeleteInput!]!): Boolean!` | +| `mutate(java.util.List mutations)` | `Mutation` | `account_mutate(put: [account_PutInput!]delete: [account_DeleteInput!]): Boolean!` | + +クラスタリングキーのないテーブルでは、`scan` フィールドは生成されないことに注意してください。これが、この電子マネーサンプルアプリケーションで `account_scan` フィールドが使用できない理由です。 + +生成されたすべての GraphQL タイプは、GraphiQL のドキュメントエクスプローラー (左上隅の `< Docs` リンク) で確認できます。 + +## ステップ 5. GraphiQL からの複数のリクエストにまたがるトランザクションを実行する + +複数の GraphQL リクエストにまたがるトランザクションを実行してみましょう。 + +生成されたスキーマには、トランザクションを識別できる `@transaction` ディレクティブが用意されています。このディレクティブは、クエリとミューテーションの両方で使用できます。 + +トランザクションを開始する前に、次のミューテーションを使用して必要なレコードを挿入する必要があります。 + +```graphql +mutation PutUser2 { + account_put(put: {key: {id: "user2"}, values: {balance: 1000}}) +} +``` + +### 操作を実行する前にトランザクションを開始する + +以下を実行して、クエリまたはミューテーションに引数のない `@transaction` ディレクティブを追加すると、実行時に新しいトランザクションが開始されます。 + +```graphql +query GetAccounts @transaction { + user1: account_get(get: {key: {id: "user1"}}) { + account { balance } + } + user2: account_get(get: {key: {id: "user2"}}) { + account { balance } + } +} +``` + +上記のコマンドを実行すると、`extensions` フィールドにトランザクション ID が入った結果が返されます。extensions の `id` 値は、リクエスト内の操作が実行されたトランザクション ID です。この場合、リクエストによって開始されたトランザクションの新しい ID は次のとおりです。 + +```json +{ + "data": { + "user1": { + "account": { + "balance": 1000 + } + }, + "user2": { + "account": { + "balance": 1000 + } + } + }, + "extensions": { + "transaction": { + "id": "c88da8a6-a13f-4857-82fe-45f1ab4150f9" + } + } +} +``` + +### 継続トランザクションで操作を実行する + +開始したトランザクションで次のクエリまたはミューテーションを実行するには、トランザクション ID を `@transaction` の `id` 引数として指定します。次の例では、同じトランザクションで user1 のアカウントから user2 のアカウントに残高を転送することにより、前の例で取得した2つのアカウントを更新します。 + +```graphql +mutation Transfer @transaction(id: "c88da8a6-a13f-4857-82fe-45f1ab4150f9") { + user1: account_put(put: {key: {id: "user1"}, values: {balance: 750}}) + user2: account_put(put: {key: {id: "user2"}, values: {balance: 1250}}) +} +``` + +GraphQL で開始されたトランザクションには1分のタイムアウト (デフォルト) があり、タイムアウトを超えると自動的にアボートされることに注意してください。 + +### トランザクションをコミットする + +継続中のトランザクションをコミットするには、`@transaction` ディレクティブの引数として `id` と `commit: true` フラグの両方を指定します。 + +```graphql +query GetAndCommit @transaction(id: "c88da8a6-a13f-4857-82fe-45f1ab4150f9", commit: true) { + user1: account_get(get: {key: {id: "user1"}}) { + account { balance } + } + user2: account_get(get: {key: {id: "user2"}}) { + account { balance } + } +} +``` + +**注:** `@transaction(commit: true)` のように `id` 引数なしで `commit: true` フラグを指定すると、新しいトランザクションが開始され、1つの操作に対してのみコミットされます。この動作は、GraphiQL を使用した上記の例で見られるように、`@transaction` ディレクティブを指定しない場合とまったく同じです。つまり、`@transaction(commit: true)` が指定されている場合は、ディレクティブ自体を省略できます。 + +### トランザクションをアボートまたはロールバックする + +トランザクションを明示的にアボートまたはロールバックする必要がある場合は、`abort` または `rollback` ミューテーションフィールドを互換的に使用できます (どちらも効果と使用方法は同じです)。これらのフィールドを他の操作と混在させることはできないため、次のように `abort` または `rollback` ミューテーションフィールドのみを指定する必要があります。 + +```graphql +mutation AbortTx @transaction(id: "c88da8a6-a13f-4857-82fe-45f1ab4150f9") { + abort +} +``` + +または: + +```graphql +mutation RollbackTx @transaction(id: "c88da8a6-a13f-4857-82fe-45f1ab4150f9") { + rollback +} +``` + +## 参照 + +その他の ScalarDB Cluster チュートリアルについては、以下を参照してください。 + +- [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +- [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +- [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) +- [ScalarDB Cluster での Go をはじめよう](getting-started-with-using-go-for-scalardb-cluster.mdx) +- [ScalarDB Cluster での Python をはじめよう](getting-started-with-using-python-for-scalardb-cluster.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +- [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +- [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx new file mode 100644 index 00000000..07d9517b --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-sql-jdbc.mdx @@ -0,0 +1,231 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# JDBC 経由の ScalarDB Cluster SQL をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、JDBC 経由で ScalarDB Cluster SQL を使用してサンプルアプリケーションを作成する方法について説明します。 + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- Kubernetes クラスターで実行されている ScalarDB Cluster + - [ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx) の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。 + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../requirements.mdx)を参照してください。 + +::: + +## サンプルアプリケーション + +このチュートリアルでは、ScalarDB JDBC を使用して、クレジットラインでアイテムを注文し、支払いを行うことができるサンプル電子商取引アプリケーションを作成するプロセスについて説明します。 + +次の図は、サンプルアプリケーションのシステムアーキテクチャを示しています。 + +``` + +------------------------------------------------------------------------------------------------------------------------------+ + | [Kubernetes クラスター] | + | | + | [ポッド] [ポッド] [ポッド] | + +------------------------+ | | + | SQL CLI | | +-------+ +-----------------------+ | + | (間接クライアントモード) | --+ | +---> | Envoy | ---+ +---> | ScalarDB Cluster ノード | ---+ | + +------------------------+ | | | +-------+ | | +-----------------------+ | | + | | | | | | | + | | +---------+ | +-------+ | +--------------------+ | +-----------------------+ | +------------+ | + +--+-> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDB Cluster ノード | ---+---> | PostgreSQL | | + | | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | +-----------------------+ | +------------+ | + +-------------------------+ | | +---------+ | | +--------------------+ | | | + | ScalarDB JDBC の | | | | +-------+ | | +-----------------------+ | | + | サンプルアプリケーション | --+ | +---> | Envoy | ---+ +---> | ScalarDB Cluster ノード | ---+ | + | (間接クライアントモード) | | +-------+ +-----------------------+ | + +-------------------------+ | | + +------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. ScalarDB サンプルリポジトリをクローンする + +```console +git clone https://github.com/scalar-labs/scalardb-samples.git +cd scalardb-samples/scalardb-sql-jdbc-sample +``` + +## ステップ 2. `scalardb-sql.properties` を変更する + +ScalarDB Cluster に接続するには、`scalardb-sql.properties` も変更する必要があります。ただし、その前に、次のように Envoy (`scalardb-cluster-envoy`) のサービスリソースの `EXTERNAL-IP` アドレスを取得する必要があります。 + +```console +kubectl get svc scalardb-cluster-envoy +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost` です。 + +次に、`scalardb-sql.properties` を開きます。 + +```console +vim scalardb-sql.properties +``` + +次に、`scalardb-sql.properties` を次のように変更します。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=indirect:localhost +``` + +ScalarDB Cluster に接続するには、`scalar.db.sql.connection_mode` プロパティに `cluster` を指定する必要があります。また、このチュートリアルでは `indirect` クライアントモードを使用して Envoy のサービスリソースに接続します。クライアントモードの詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) を参照してください。 + +## ステップ 3. スキーマをロードする + +スキーマをロードするには、[SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) を使用する必要があります。SQL CLI は [ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1) からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-sql.properties --file schema.sql +``` + +## ステップ 4. 初期データをロードする + +サンプルアプリケーションを実行する前に、次のコマンドを実行して初期データをロードする必要があります。 + +```console +./gradlew run --args="LoadInitialData" +``` + +初期データがロードされた後、次のレコードがテーブルに保存されます: + +- `sample.customers` テーブルの場合: + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +- `sample.items` テーブルの場合: + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## ステップ 5. サンプルアプリケーションを実行する + +まず、ID が `1` である顧客に関する情報を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 0} +... +``` + +次に、顧客 ID `1` を使用して、リンゴ3個とオレンジ2個を注文します。注文形式は `:,:,...` であることに注意してください。 + +```console +./gradlew run --args="PlaceOrder 1 1:3,2:2" +... +{"order_id": "454f9c97-f456-44fd-96da-f527187fe39b"} +... +``` + +このコマンドを実行すると、注文 ID が表示されます。 + +注文 ID を使用して注文の詳細を確認してみましょう。 + +```console +./gradlew run --args="GetOrder 454f9c97-f456-44fd-96da-f527187fe39b" +... +{"order": {"order_id": "454f9c97-f456-44fd-96da-f527187fe39b","timestamp": 1685602722821,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1, "name": "Apple", "price": 1000, "count": 3},{"item_id": 2, "name": "Orange", "price": 2000, "count": 2}],"total": 7000}} +... +``` + +次に、別の注文を出して、顧客 ID `1` の注文履歴を取得しましょう。 + +```console +./gradlew run --args="PlaceOrder 1 5:1" +... +{"order_id": "3f40c718-59ec-48aa-a6fe-2fdaf12ad094"} +... +./gradlew run --args="GetOrders 1" +... +{"order": [{"order_id": "454f9c97-f456-44fd-96da-f527187fe39b","timestamp": 1685602722821,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1, "name": "Apple", "price": 1000, "count": 3},{"item_id": 2, "name": "Orange", "price": 2000, "count": 2}],"total": 7000},{"order_id": "3f40c718-59ec-48aa-a6fe-2fdaf12ad094","timestamp": 1685602811718,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 5, "name": "Melon", "price": 3000, "count": 1}],"total": 3000}]} +... +``` + +この注文履歴は、タイムスタンプの降順で表示されます。 + +顧客の現在の `credit_total` は `10000` です。顧客は、情報を取得したときに表示された `credit_limit` に達したため、これ以上注文することはできません。 + +```console +./gradlew run --args="GetCustomerInfo 1" +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 10000} +... +./gradlew run --args="PlaceOrder 1 3:1,4:1" +... +java.lang.RuntimeException: Credit limit exceeded + at sample.Sample.placeOrder(Sample.java:184) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:32) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:8) + at picocli.CommandLine.executeUserObject(CommandLine.java:2041) + at picocli.CommandLine.access$1500(CommandLine.java:148) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) + at picocli.CommandLine.execute(CommandLine.java:2170) + at sample.command.SampleCommand.main(SampleCommand.java:35) +... +``` + +支払いが完了すると、顧客は再度注文できるようになります。 + +```console +./gradlew run --args="Repayment 1 8000" +... +./gradlew run --args="GetCustomerInfo 1" +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 2000} +... +./gradlew run --args="PlaceOrder 1 3:1,4:1" +... +{"order_id": "fb71279d-88ea-4974-a102-0ec4e7d65e25"} +... +``` + +## サンプルアプリケーションのソースコード + +ScalarDB Cluster SQL JDBC の詳細については、[サンプルアプリケーションのソースコード](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-sql-jdbc-sample/src/main/java/sample) を参照してください。 + +## 参照 + +その他の ScalarDB Cluster チュートリアルについては、以下を参照してください。 + +- [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +- [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +- [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) +- [ScalarDB Cluster での Go をはじめよう](getting-started-with-using-go-for-scalardb-cluster.mdx) +- [ScalarDB Cluster での Python をはじめよう](getting-started-with-using-python-for-scalardb-cluster.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +- [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +- [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx new file mode 100644 index 00000000..9f230719 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx @@ -0,0 +1,272 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、Spring Data JDBC for ScalarDB を介して ScalarDB Cluster SQL を使用してサンプルアプリケーションを作成する方法について説明します。 + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- Kubernetes クラスターで実行されている ScalarDB Cluster + - [ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx) の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。 + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../requirements.mdx)を参照してください。 + +::: + +## サンプルアプリケーション + +このチュートリアルでは、Spring Data JDBC for ScalarDB を使用して、クレジットラインでアイテムを注文して支払うことができるサンプル電子商取引アプリケーションを作成するプロセスについて説明します。 + +次の図は、サンプルアプリケーションのシステムアーキテクチャを示しています。 + +``` + +------------------------------------------------------------------------------------------------------------------------------+ + | [Kubernetes クラスター] | + | | + | [ポッド] [ポッド] [ポッド] | + +------------------------+ | | + | SQL CLI | | +-------+ +------------------------+ | + | (間接クライアントモード) | --+ | +---> | Envoy | ---+ +---> | ScalarDB Cluster ノード | ---+ | + +------------------------+ | | | +-------+ | | +------------------------+ | | + | | | | | | | + | | +---------+ | +-------+ | +--------------------+ | +-----------------------+ | +------------+ | + +--+-> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | ScalarDB Cluster ノード | ---+---> | PostgreSQL | | + +------------------------+ | | | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | +-----------------------+ | +------------+ | + | Spring Data JDBC for | | | +---------+ | | +--------------------+ | | | + | ScalarDB の | | | | +-------+ | | +------------------------+ | | + | サンプルアプリケーション | --+ | +---> | Envoy | ---+ +---> | ScalarDB Cluster ノード | ---+ | + | (間接クライアントモード) | | +-------+ +-----------------------+ | + +------------------------+ | | + +------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. ScalarDB サンプルリポジトリをクローンする + +```console +git clone https://github.com/scalar-labs/scalardb-samples.git +cd scalardb-samples/spring-data-sample +``` + +## ステップ 2. `scalardb-sql.properties` を変更する + +ScalarDB Cluster に接続するには、`scalardb-sql.properties` も変更する必要があります。ただし、その前に、次のように Envoy (`scalardb-cluster-envoy`) のサービスリソースの `EXTERNAL-IP` アドレスを取得する必要があります。 + +```console +kubectl get svc scalardb-cluster-envoy +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost` です。 + +次に、`scalardb-sql.properties` を開きます。 + +```console +vim scalardb-sql.properties +``` + +次に、`scalardb-sql.properties` を次のように変更します。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=indirect:localhost +``` + +ScalarDB Cluster に接続するには、`scalar.db.sql.connection_mode` プロパティに `cluster` を指定する必要があります。 + +また、このチュートリアルでは `indirect` クライアントモードを使用して Envoy のサービスリソースに接続します。 + +クライアントモードの詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx)を参照してください。 + +## ステップ 3. スキーマをロードする + +スキーマをロードするには、[SQL CLI](developer-guide-for-scalardb-cluster-with-java-api.mdx#sql-cli) を使用する必要があります。SQL CLI は [ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-sql.properties --file schema.sql +``` + +## ステップ 4.`application.properties`を変更する + +次に、ScalarDB Cluster に接続するために `application.properties` も変更する必要があります。 + +```console +vim src/main/resources/application.properties +``` + +`scalardb-sql.properties` と同様に、`scalar.db.sql.connection_mode` プロパティに `cluster` を指定し、`indirect` クライアントモードを使用する必要があります。そのためには、`application.properties` を次のように変更します。 + +```properties +spring.datasource.driver-class-name=com.scalar.db.sql.jdbc.SqlJdbcDriver +spring.datasource.url=jdbc:scalardb:\ +?scalar.db.sql.connection_mode=cluster\ +&scalar.db.sql.cluster_mode.contact_points=indirect:localhost\ +&scalar.db.consensus_commit.isolation_level=SERIALIZABLE\ +&scalar.db.sql.default_namespace_name=sample +``` + +## ステップ 5. 初期データをロードする + +サンプルアプリケーションを実行する前に、次のコマンドを実行して初期データをロードする必要があります。 + +```console +./gradlew run --args="LoadInitialData" +``` + +初期データがロードされた後、次のレコードがテーブルに保存される必要があります。 + +- `sample.customers` テーブルの場合: + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +- `sample.items` テーブルの場合: + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## ステップ 6. サンプルアプリケーションを実行する + +まず、ID が `1` である顧客に関する情報を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +... +{"customer_id":1,"name":"Yamada Taro","credit_limit":10000,"credit_total":0} +... +``` + +次に、顧客 ID `1` を使用して、リンゴ3個とオレンジ2個を注文します。注文形式は `:,:,...` であることに注意してください。 + +```console +./gradlew run --args="PlaceOrder 1 1:3,2:2" +... +{"order_id":"2358ab35-5819-4f8f-acb1-12e73d97d34e","customer_id":1,"timestamp":1677478005400} +... +``` + +このコマンドを実行すると、注文 ID が表示されます。 + +注文 ID を使用して注文の詳細を確認してみましょう。 + +```console +./gradlew run --args="GetOrder 2358ab35-5819-4f8f-acb1-12e73d97d34e" +... +{"order_id":"2358ab35-5819-4f8f-acb1-12e73d97d34e","timestamp":1677478005400,"customer_id":1,"customer_name":"Yamada Taro","statements":[{"item_id":1,"item_name":"Apple","price":1000,"count":3,"total":3000},{"item_id":2,"item_name":"Orange","price":2000,"count":2,"total":4000}],"total":7000} +... +``` + +次に、別の注文を出して、顧客 ID `1` の注文履歴を取得しましょう。 + +```console +./gradlew run --args="PlaceOrder 1 5:1" +... +{"order_id":"46062b16-b71b-46f9-a9ff-dc6b0991259b","customer_id":1,"timestamp":1677478201428} +... +./gradlew run --args="GetOrders 1" +... +[{"order_id":"46062b16-b71b-46f9-a9ff-dc6b0991259b","timestamp":1677478201428,"customer_id":1,"customer_name":"Yamada Taro","statements":[{"item_id":5,"item_name":"Melon","price":3000,"count":1,"total":3000}],"total":3000},{"order_id":"2358ab35-5819-4f8f-acb1-12e73d97d34e","timestamp":1677478005400,"customer_id":1,"customer_name":"Yamada Taro","statements":[{"item_id":1,"item_name":"Apple","price":1000,"count":3,"total":3000},{"item_id":2,"item_name":"Orange","price":2000,"count":2,"total":4000}],"total":7000}] +... +``` + +この注文履歴は、タイムスタンプの降順で表示されます。 + +顧客の現在の `credit_total` は `10000` です。顧客は、情報を取得したときに表示された `credit_limit` に達したため、これ以上注文することはできません。 + +```console +./gradlew run --args="GetCustomerInfo 1" +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 10000} +... +./gradlew run --args="PlaceOrder 1 3:1,4:1" +... +java.lang.RuntimeException: Credit limit exceeded. limit:10000, total:17500 + at sample.SampleService.placeOrder(SampleService.java:102) + at sample.SampleService$$FastClassBySpringCGLIB$$1123c447.invoke() + at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) + at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) + at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) + at sample.SampleService$$EnhancerBySpringCGLIB$$a94e1d9.placeOrder() + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:37) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:13) + at picocli.CommandLine.executeUserObject(CommandLine.java:2041) + at picocli.CommandLine.access$1500(CommandLine.java:148) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) + at picocli.CommandLine.execute(CommandLine.java:2170) + at sample.SampleApp.run(SampleApp.java:26) + at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) + at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) + at sample.SampleApp.main(SampleApp.java:35) +... +``` + +支払いが完了すると、顧客は再度注文できるようになります。 + +```console +./gradlew run --args="Repayment 1 8000" +... +./gradlew run --args="GetCustomerInfo 1" +... +{"customer_id":1,"name":"Yamada Taro","credit_limit":10000,"credit_total":2000} +... +./gradlew run --args="PlaceOrder 1 3:1,4:1" +... +{"order_id":"0350947a-9003-46f2-870e-6aa4b2df0f1f","customer_id":1,"timestamp":1677478728134} +... +``` + +## サンプルアプリケーションのソースコード + +Spring Data JDBC for ScalarDB の詳細については、[サンプルアプリケーションのソースコード](https://github.com/scalar-labs/scalardb-samples/tree/main/spring-data-sample/src/main)を確認してください。 + +## 参照 + +その他の ScalarDB Cluster チュートリアルについては、以下を参照してください。 + +- [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +- [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +- [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +- [ScalarDB Cluster での Go をはじめよう](getting-started-with-using-go-for-scalardb-cluster.mdx) +- [ScalarDB Cluster での Python をはじめよう](getting-started-with-using-python-for-scalardb-cluster.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +- [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +- [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster.mdx new file mode 100644 index 00000000..4f7d0631 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-scalardb-cluster.mdx @@ -0,0 +1,409 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、Java API を通じて [ScalarDB Cluster](index.mdx) を使用するサンプルアプリケーションを作成する方法について説明します。 + +## 概要 + +このチュートリアルでは、ScalarDB を使用して商品を注文し、信用枠で支払いを行うことができるサンプルの電子商取引アプリケーションを作成するプロセスについて説明します。 + +:::note + +サンプルアプリケーションの焦点は ScalarDB の使用方法を示すことにあるため、アプリケーション固有のエラー処理、認証処理、および同様の機能はサンプルアプリケーションには含まれていません。ScalarDB での例外処理の詳細については、[例外の処理](../api-guide.mdx#例外の処理)を参照してください。 + +::: + +次の図は、サンプルアプリケーションのシステムアーキテクチャを示しています。 + +```mermaid +stateDiagram-v2 + state "Schema Loader
    (間接クライアントモード)" as SL + state "Java API を使用したサンプルアプリケーション
    (間接クライアントモード)" as SA + state "Kubernetes クラスタ" as KC + state "サービス (Envoy)" as SE + state "ポッド" as P1 + state "ポッド" as P2 + state "ポッド" as P3 + state "Envoy" as E1 + state "Envoy" as E2 + state "Envoy" as E3 + state "サービス (ScalarDB Cluster)" as SSC + state "ScalarDB Cluster" as SC1 + state "ScalarDB Cluster" as SC2 + state "ScalarDB Cluster" as SC3 + state "PostgreSQL" as PSQL + SL --> SE + SA --> SE + state KC { + SE --> E1 + SE --> E2 + SE --> E3 + state P1 { + E1 --> SSC + E2 --> SSC + E3 --> SSC + } + SSC --> SC1 + SSC --> SC2 + SSC --> SC3 + state P2 { + SC1 --> PSQL + SC1 --> SC2 + SC1 --> SC3 + SC2 --> PSQL + SC2 --> SC1 + SC2 --> SC3 + SC3 --> PSQL + SC3 --> SC1 + SC3 --> SC2 + } + state P3 { + PSQL + } + } +``` + +### このサンプルアプリケーションで実行できること + +サンプルアプリケーションは、次の種類のトランザクションをサポートしています: + +- 顧客情報を取得します。 +- 信用枠を使用して注文を行います。 + - 注文のコストが顧客の信用限度額を下回っているかどうかを確認します。 + - チェックが成功した場合は、注文履歴を記録し、顧客が支払った金額を更新します。 +- 注文 ID で注文情報を取得します。 +- 顧客 ID で注文情報を取得します。 +- 支払いを行います。 + - 顧客が支払った金額を減らします。 + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- Kubernetes クラスターで実行されている ScalarDB Cluster + - [ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx) の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。 + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../requirements.mdx)を参照してください。 + +::: + +## ScalarDB Cluster のセットアップ + +次のセクションでは、サンプルの電子商取引アプリケーションをセットアップする方法について説明します。 + +### ScalarDB サンプルリポジトリのクローンを作成する + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-sample +``` + +### `build.gradle` を変更する + +ScalarDB Cluster を使用するには、任意のテキストエディターで `build.gradle` を開きます。次に、`dependencies` セクションから `com.scalar-labs:scalardb` の既存の依存関係を削除し、`dependencies` セクションに次の依存関係を追加します。 + +```gradle +dependencies { + ... + + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' +} +``` + +### `database.properties` を変更する + +ScalarDB Cluster に接続するには、`database.properties` も変更する必要があります。ただし、その前に、Envoy サービスリソース (`scalardb-cluster-envoy`) の `EXTERNAL-IP` アドレスを取得する必要があります。サービスリソースを取得するには、次のコマンドを実行します。 + +```console +kubectl get svc scalardb-cluster-envoy +``` + +`CLUSTER-IP`、`PORT(S)`、`AGE` の値がそれぞれ異なる、以下のような出力が表示されます。 + +```console +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost` です。 + +`database.properties` では、`scalar.db.transaction_manager` プロパティに `cluster` を指定し、`scalar.db.contact_points` が Envoy サービスリソースに接続するためのクライアントモードとして `indirect` を使用する必要があります。 + +次のコマンドを実行して `database.properties` を開きます。 + +```console +vim database.properties +``` + +次に、`database.properties` を次のように変更します。 + +```properties +scalar.db.transaction_manager=cluster +scalar.db.contact_points=indirect:localhost +``` + +:::note + +クライアントモードの詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx). + +::: + +### スキーマをロードする + +サンプルアプリケーションのデータベーススキーマ (データを整理する方法) は、[`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-sample/schema.json) ですでに定義されています。 + +スキーマを適用するには、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)に移動し、ScalarDB Cluster Schema Loader を `scalardb-samples/scalardb-sample` フォルダーにダウンロードします。 + +次に、次のコマンドを実行します。 + +```console +java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +``` + +#### スキーマの詳細 + +サンプルアプリケーションの [`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-sample/schema.json) に示されているように、すべてのテーブルは `sample` 名前空間に作成されます。 + +- `sample.customers`: 顧客情報を管理するテーブル + - `credit_limit`: 貸し手が顧客に信用枠から支出を許可する最大金額 + - `credit_total`: 顧客が信用枠から支出した金額 +- `sample.orders`: 注文情報を管理するテーブル +- `sample.statements`: 注文明細情報を管理するテーブル +- `sample.items`: 注文するアイテムの情報を管理するテーブル + +スキーマのエンティティ関係図は次のとおりです。 + +![ERD](images/getting-started-ERD.png) + +### 初期データをロードする + +サンプルアプリケーションを実行する前に、次のコマンドを実行して初期データをロードする必要があります。 + +```console +./gradlew run --args="LoadInitialData" +``` + +初期データがロードされたら、次のレコードがテーブルに保存されます。 + +**`sample.customers` テーブル** + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +**`sample.items` テーブル** + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## サンプルアプリケーションでトランザクションを実行し、データを取得する + +次のセクションでは、サンプル電子商取引アプリケーションでトランザクションを実行し、データを取得する方法について説明します。 + +### 顧客情報を取得する + +次のコマンドを実行して、ID が `1` である顧客に関する情報を取得することから始めます。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 0} +... +``` + +### 注文する + +次に、次のコマンドを実行して、顧客 ID `1` にリンゴ3個とオレンジ2個を注文してもらいます。 + +:::note + +このコマンドの注文形式は `./gradlew run --args="PlaceOrder :,:,..."` です。 + +::: + +```console +./gradlew run --args="PlaceOrder 1 1:3,2:2" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す類似の出力が表示されます。 + +```console +... +{"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e"} +... +``` + +### 注文の詳細を確認する + +次のコマンドを実行して注文の詳細を確認します。`` は、前のコマンドを実行した後に表示される `order_id` の UUID に置き換えます。 + +```console +./gradlew run --args="GetOrder " +``` + +`order_id` と `timestamp` の UUID が異なる、以下のような出力が表示されます。 + +```console +... +{"order": {"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e","timestamp": 1650948340914,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}} +... +``` + +### 別の注文をする + +次のコマンドを実行して、顧客 ID `1` の `credit_total` の残額を使用してメロン1個を注文します。 + +```console +./gradlew run --args="PlaceOrder 1 5:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す類似の出力が表示されます。 + +```console +... +{"order_id": "bcc34150-91fa-4bea-83db-d2dbe6f0f30d"} +... +``` + +### 注文履歴を確認する + +次のコマンドを実行して、顧客 ID `1` のすべての注文履歴を取得します。 + +```console +./gradlew run --args="GetOrders 1" +``` + +`order_id` と `timestamp` の UUID が異なる以下のような出力が表示されます。これは、顧客 ID `1` のすべての注文履歴をタイムスタンプの降順で表示します。 + +```console +... +{"order": [{"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e","timestamp": 1650948340914,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000},{"order_id": "bcc34150-91fa-4bea-83db-d2dbe6f0f30d","timestamp": 1650948412766,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 5,"item_name": "Melon","price": 3000,"count": 1,"total": 3000}],"total": 3000}]} +... +``` + +### クレジット合計の確認 + +次のコマンドを実行して、顧客 ID `1` のクレジット合計を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` が `credit_total` の `credit_limit` に達しており、これ以上注文できないことを示しています。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 10000} +... +``` + +次のコマンドを実行して、ブドウ1個とマンゴー1個を注文してみます。 + +```console +./gradlew run --args="PlaceOrder 1 3:1,4:1" +``` + +次の出力が表示されます。これは、`credit_total` 金額が `credit_limit` 金額を超えたために注文が失敗したことを示しています。 + +```console +... +java.lang.RuntimeException: Credit limit exceeded + at sample.Sample.placeOrder(Sample.java:205) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:33) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:8) + at picocli.CommandLine.executeUserObject(CommandLine.java:1783) + at picocli.CommandLine.access$900(CommandLine.java:145) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2141) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2108) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:1975) + at picocli.CommandLine.execute(CommandLine.java:1904) + at sample.command.SampleCommand.main(SampleCommand.java:35) +... +``` + +### 支払いを行う + +注文を続行するには、顧客 ID `1` が支払いを行って `credit_total` の金額を減らす必要があります。 + +次のコマンドを実行して支払いを行います。 + +```console +./gradlew run --args="Repayment 1 8000" +``` + +次に、次のコマンドを実行して、顧客 ID `1` の `credit_total` 金額を確認します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` に支払いが適用され、`credit_total` の金額が減ったことを示しています。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 2000} +... +``` + +顧客 ID `1` が支払いを済ませたので、次のコマンドを実行してブドウ1個とメロン1個を注文します。 + +```console +./gradlew run --args="PlaceOrder 1 3:1,4:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す類似の出力が表示されます。 + +```console +... +{"order_id": "8911cab3-1c2b-4322-9386-adb1c024e078"} +... +``` + +## 参照 + +その他の ScalarDB Cluster チュートリアルについては、以下を参照してください。 + +- [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +- [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +- [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) +- [ScalarDB Cluster での Go をはじめよう](getting-started-with-using-go-for-scalardb-cluster.mdx) +- [ScalarDB Cluster での Python をはじめよう](getting-started-with-using-python-for-scalardb-cluster.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +- [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +- [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx new file mode 100644 index 00000000..e72fe1e1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-using-go-for-scalardb-cluster.mdx @@ -0,0 +1,444 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster での Go をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +このドキュメントでは、Go を使用して ScalarDB Cluster の gRPC クライアントコードを記述する方法について説明します。 + +## 前提条件 + +- [Go](https://go.dev/dl/) (最新の3つのメジャーリリースのいずれか) +- Kubernetes クラスターで実行されている ScalarDB Cluster + - [ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx)の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。 + + + +## サンプルアプリケーション + +このチュートリアルでは、口座間で送金できる電子マネーアプリケーションを作成するプロセスについて説明します。 + +## ステップ 1. `schema.json` を作成する + +以下は簡単なサンプルスキーマです。 + +`schema.json` を作成し、ファイルに次の内容を追加します。 + +```json +{ + "emoney.account": { + "transaction": true, + "partition-key": [ + "id" + ], + "clustering-key": [], + "columns": { + "id": "TEXT", + "balance": "INT" + } + } +} +``` + +## ステップ 2. `database.properties` を作成する + +ScalarDB Cluster の Schema Loader 用に `database.properties` を作成する必要があります。ただし、まず `LoadBalancer` サービス (`scalardb-cluster-envoy`) のサービスリソースの `EXTERNAL-IP` アドレスを取得する必要があります。 + +`EXTERNAL-IP` アドレスを確認するには、次のコマンドを実行します。 + +```console +kubectl get svc scalardb-cluster-envoy +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost` です。 + +次に、`database.properties` を作成し、ファイルに次の内容を追加します。 + +```properties +scalar.db.transaction_manager=cluster +scalar.db.contact_points=indirect:localhost +``` + +ScalarDB Cluster に接続するには、`scalar.db.transaction_manager` プロパティに `cluster` を指定する必要があります。また、このチュートリアルでは `indirect` クライアントモードを使用して Envoy のサービスリソースに接続します。クライアントモードの詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx)を参照してください。 + +## ステップ 3. スキーマをロードする + +ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Schema Loader for Cluster は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Schema Loader for Cluster を実行できます。 + +```console +java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +``` + +## ステップ 4. Go 環境をセットアップする + +gRPC クイックスタートドキュメントの [Prerequisites](https://grpc.io/docs/languages/go/quickstart/#prerequisites) セクションに従って、次のコンポーネントをインストールします。 + +- Go +- プロトコルバッファコンパイラ、`protoc`、バージョン3.15以降 +- プロトコルコンパイラ用の Go プラグイン + +## ステップ 5. ScalarDB Cluster gRPC のスタブコードを生成する + +ScalarDB Cluster の gRPC サーバーと通信するには、proto ファイルからスタブコードを生成する必要があります。 + +まず、新しい作業ディレクトリに、次のコマンドを実行して、gRPC コードの生成に使用する `scalardb-cluster` という名前のディレクトリを作成します。 + +```console +mkdir scalardb-cluster +``` + +次に、`scalardb-cluster.proto` ファイルをダウンロードし、作成したディレクトリに保存します。商用ライセンスをお持ちの ScalarDB Cluster ユーザーで、`scalardb-cluster.proto` ファイルが必要な場合は、[お問い合わせ](https://www.scalar-labs.com/support)ください。 + +次のコマンドを実行して gRPC コードを生成します。 + +```console +protoc --go_out=. --go_opt=paths=source_relative \ + --go_opt=Mscalardb-cluster/scalardb-cluster.proto=example.com/scalardb-cluster \ + --go-grpc_out=. --go-grpc_opt=paths=source_relative \ + --go-grpc_opt=Mscalardb-cluster/scalardb-cluster.proto=example.com/scalardb-cluster \ + scalardb-cluster/scalardb-cluster.proto +``` + +コマンドを実行すると、`scalardb-cluster` サブディレクトリに `scalardb-cluster.pb.go` と `scalardb-cluster_grpc.pb.go` という2つのファイルが表示されます。 + +## ステップ 6. サンプルアプリケーションの作成 + +以下は、gRPC コードを使用するプログラムです。これを作業ディレクトリに `main.go` として保存します。このプログラムは、[ScalarDB をはじめよう](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb/)の `ElectronicMoney.java` プログラムと同じことを行います。環境内の ScalarDB Cluster `LoadBalancer` サービスの `EXTERNAL-IP` 値に基づいて `SERVER_ADDRESS` の値を更新する必要があることに注意してください。 + +```go +package main + +import ( + "context" + "errors" + "flag" + "fmt" + "log" + "os" + "time" + + pb "emoney/scalardb-cluster" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +const ( + SERVER_ADDRESS = "localhost:60053" + NAMESPACE = "emoney" + TABLENAME = "account" + ID = "id" + BALANCE = "balance" +) + +var requestHeader = pb.RequestHeader{HopLimit: 10} + +type TxFn func(ctx context.Context, client pb.DistributedTransactionClient, transactionId string) error + +func withTransaction(fn TxFn) error { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + // Set up a connection to the server. + conn, err := grpc.Dial(SERVER_ADDRESS, grpc.WithTransportCredentials(insecure.NewCredentials())) + if err != nil { + return err + } + defer conn.Close() + + client := pb.NewDistributedTransactionClient(conn) + + // Begin a transaction + beginResponse, err := client.Begin(ctx, &pb.BeginRequest{RequestHeader: &requestHeader}) + if err != nil { + return err + } + transactionId := beginResponse.TransactionId + + // Execute the function + err = fn(ctx, client, transactionId) + if err != nil { + // Rollback the transaction if there is an error + client.Rollback(ctx, &pb.RollbackRequest{TransactionId: transactionId}) + return err + } + + // Commit the transaction + _, err = client.Commit(ctx, &pb.CommitRequest{RequestHeader: &requestHeader, TransactionId: transactionId}) + return err +} + +func charge(ctx context.Context, client pb.DistributedTransactionClient, transactionId string, id string, amount int) error { + partitionKey := pb.Key{Columns: []*pb.Column{{Name: ID, Value: &pb.Column_TextValue_{TextValue: &pb.Column_TextValue{Value: &id}}}}} + + // Retrieve the current balance for id + get := pb.Get{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &partitionKey, ClusteringKey: nil, + GetType: pb.Get_GET_TYPE_GET, + } + getResponse, err := client.Get(ctx, &pb.GetRequest{RequestHeader: &requestHeader, TransactionId: transactionId, Get: &get}) + if err != nil { + return err + } + + // Calculate the balance + balance := int32(amount) + if result := getResponse.GetResult(); result != nil { + for _, column := range result.GetColumns() { + if column.Name == BALANCE { + balance += column.GetIntValue().GetValue() + break + } + } + } + + // Update the balance + put := pb.Put{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &partitionKey, ClusteringKey: nil, + Columns: []*pb.Column{ + {Name: BALANCE, Value: &pb.Column_IntValue_{IntValue: &pb.Column_IntValue{Value: &balance}}}, + }, + } + _, err = client.Put(ctx, &pb.PutRequest{RequestHeader: &requestHeader, TransactionId: transactionId, Puts: []*pb.Put{&put}}) + return err +} + +func pay(ctx context.Context, client pb.DistributedTransactionClient, transactionId string, fromId string, toId string, amount int) error { + fromPartitionKey := pb.Key{Columns: []*pb.Column{{Name: ID, Value: &pb.Column_TextValue_{TextValue: &pb.Column_TextValue{Value: &fromId}}}}} + toPartitionKey := pb.Key{Columns: []*pb.Column{{Name: ID, Value: &pb.Column_TextValue_{TextValue: &pb.Column_TextValue{Value: &toId}}}}} + + // Retrieve the current balances for ids + fromGet := pb.Get{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &fromPartitionKey, ClusteringKey: nil, + GetType: pb.Get_GET_TYPE_GET, + } + fromGetResponse, err := client.Get(ctx, &pb.GetRequest{RequestHeader: &requestHeader, TransactionId: transactionId, Get: &fromGet}) + if err != nil { + return err + } + toGet := pb.Get{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &toPartitionKey, ClusteringKey: nil, + GetType: pb.Get_GET_TYPE_GET, + } + toGetResponse, err := client.Get(ctx, &pb.GetRequest{RequestHeader: &requestHeader, TransactionId: transactionId, Get: &toGet}) + if err != nil { + return err + } + + // Calculate the balances (it assumes that both accounts exist) + var ( + fromBalance int32 + toBalance int32 + ) + for _, column := range fromGetResponse.GetResult().GetColumns() { + if column.Name == BALANCE { + fromBalance = column.GetIntValue().GetValue() + break + } + } + for _, column := range toGetResponse.GetResult().GetColumns() { + if column.Name == BALANCE { + toBalance = column.GetIntValue().GetValue() + break + } + } + newFromBalance := fromBalance - int32(amount) + newToBalance := toBalance + int32(amount) + + if newFromBalance < 0 { + return errors.New(fromId + " doesn't have enough balance.") + } + + // Update the balances + fromPut := pb.Put{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &fromPartitionKey, ClusteringKey: nil, + Columns: []*pb.Column{ + {Name: BALANCE, Value: &pb.Column_IntValue_{IntValue: &pb.Column_IntValue{Value: &newFromBalance}}}, + }, + } + toPut := pb.Put{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &toPartitionKey, ClusteringKey: nil, + Columns: []*pb.Column{ + {Name: BALANCE, Value: &pb.Column_IntValue_{IntValue: &pb.Column_IntValue{Value: &newToBalance}}}, + }, + } + _, err = client.Put(ctx, &pb.PutRequest{RequestHeader: &requestHeader, TransactionId: transactionId, Puts: []*pb.Put{&fromPut, &toPut}}) + return err +} + +func getBalance(ctx context.Context, client pb.DistributedTransactionClient, transactionId string, id string) (int, error) { + // Retrieve the current balance for id + get := pb.Get{ + NamespaceName: NAMESPACE, TableName: TABLENAME, + PartitionKey: &pb.Key{Columns: []*pb.Column{{Name: ID, Value: &pb.Column_TextValue_{TextValue: &pb.Column_TextValue{Value: &id}}}}}, + ClusteringKey: nil, + GetType: pb.Get_GET_TYPE_GET, + } + getResponse, err := client.Get(ctx, &pb.GetRequest{RequestHeader: &requestHeader, TransactionId: transactionId, Get: &get}) + if err != nil { + return 0, err + } + if getResponse.GetResult() == nil || len(getResponse.GetResult().GetColumns()) == 0 { + return 0, errors.New("Account " + id + " doesn't exist.") + } + + var balance int + for _, column := range getResponse.GetResult().GetColumns() { + if column.Name == BALANCE { + balance = int(column.GetIntValue().GetValue()) + break + } + } + return balance, nil +} + +func main() { + var ( + action = flag.String("action", "", "Action to perform: charge / pay / getBalance") + fromId = flag.String("from", "", "From account (needed for pay)") + toId = flag.String("to", "", "To account (needed for charge and pay)") + id = flag.String("id", "", "Account id (needed for getBalance)") + ) + var amount int + flag.IntVar(&amount, "amount", 0, "Amount to transfer (needed for charge and pay)") + flag.Parse() + + if *action == "charge" { + if *toId == "" || amount < 0 { + printUsageAndExit() + } + err := withTransaction(func(ctx context.Context, client pb.DistributedTransactionClient, txId string) error { + return charge(ctx, client, txId, *toId, amount) + }) + if err != nil { + log.Fatalf("error: %v", err) + } + } else if *action == "pay" { + if *toId == "" || *fromId == "" || amount < 0 { + printUsageAndExit() + } + err := withTransaction(func(ctx context.Context, client pb.DistributedTransactionClient, txId string) error { + return pay(ctx, client, txId, *fromId, *toId, amount) + }) + if err != nil { + log.Fatalf("error: %v", err) + } + } else if *action == "getBalance" { + if *id == "" { + printUsageAndExit() + } + var balance int + err := withTransaction(func(ctx context.Context, client pb.DistributedTransactionClient, txId string) error { + var err error + balance, err = getBalance(ctx, client, txId, *id) + return err + }) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Println(balance) + } else { + fmt.Fprintln(os.Stderr, "Unknown action "+*action) + printUsageAndExit() + } +} + +func printUsageAndExit() { + flag.Usage() + os.Exit(1) +} +``` + +`main.go` ファイルを作成した後、次のコマンドを実行して `go.mod` ファイルを作成する必要があります。 + +```console +go mod init emoney +go mod tidy +``` + +これで、ディレクトリ構造は次のようになります。 + +```text +. +├── go.mod +├── go.sum +├── main.go +└── scalardb-cluster + ├── scalardb-cluster.pb.go + ├── scalardb-cluster.proto + └── scalardb-cluster_grpc.pb.go +``` + +その後、次のようにプログラムを実行できます: + +- `user1` に `1000` を請求します: + + ```console + go run main.go -action charge -amount 1000 -to user1 + ``` + +- `merchant1` に `0` を請求します (`merchant1` のアカウントを作成するだけです): + + ```console + go run main.go -action charge -amount 0 -to merchant1 + ``` + +- `user1` から `merchant1` に `100` を支払います: + + ```console + go run main.go -action pay -amount 100 -from user1 -to merchant1 + ``` + +- `user1` の残高を取得します。 + + ```console + go run main.go -action getBalance -id user1 + ``` + +- `merchant1` の残高を取得します。 + + ```console + go run main.go -action getBalance -id merchant1 + ``` + +`go build` を使用してバイナリを取得してから実行することもできます。 + +```console +go build +./emoney -action getBalance -id user1 +``` + +## 参照 + +その他の ScalarDB Cluster チュートリアルについては、以下を参照してください。 + +- [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +- [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +- [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +- [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) +- [ScalarDB Cluster での Python をはじめよう](getting-started-with-using-python-for-scalardb-cluster.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +- [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +- [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx new file mode 100644 index 00000000..969f703e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/getting-started-with-using-python-for-scalardb-cluster.mdx @@ -0,0 +1,487 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster での Python をはじめよう + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +このドキュメントでは、Python を使用して ScalarDB Cluster の gRPC クライアントコードを記述する方法について説明します。 + +## 前提条件 + +- [Python](https://www.python.org/downloads) 3.7以降 +- Kubernetes クラスターで実行されている ScalarDB Cluster + - [ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx)の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。 + + + +## サンプルアプリケーション + +このチュートリアルでは、口座間で送金できる電子マネーアプリケーションを作成するプロセスについて説明します。 + +## ステップ 1. `schema.json` を作成する + +以下は簡単なサンプルスキーマです。 + +`schema.json` を作成し、ファイルに次の内容を追加します。 + +```json +{ + "emoney.account": { + "transaction": true, + "partition-key": [ + "id" + ], + "clustering-key": [], + "columns": { + "id": "TEXT", + "balance": "INT" + } + } +} +``` + +## ステップ 2. `database.properties` を作成する + +ScalarDB Cluster の Schema Loader 用に `database.properties` を作成する必要があります。ただし、まず `LoadBalancer` サービス (`scalardb-cluster-envoy`) のサービスリソースの `EXTERNAL-IP` アドレスを取得する必要があります。 + +`EXTERNAL-IP` アドレスを確認するには、次のコマンドを実行します。 + +```console +kubectl get svc scalardb-cluster-envoy +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 16h +``` + +この場合、`EXTERNAL-IP` アドレスは `localhost` です。 + +次に、`database.properties` を作成し、ファイルに次の内容を追加します。 + +```properties +scalar.db.transaction_manager=cluster +scalar.db.contact_points=indirect:localhost +``` + +ScalarDB Cluster に接続するには、`scalar.db.transaction_manager` プロパティに `cluster` を指定する必要があります。また、このチュートリアルでは `indirect` クライアントモードを使用して Envoy のサービスリソースに接続します。クライアントモードの詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx)を参照してください。 + +## ステップ 3. スキーマをロードする + +ScalarDB Cluster 経由でスキーマをロードするには、専用の ScalarDB Cluster 用 Schema Loader (Schema Loader for Cluster) を使用する必要があります。Schema Loader for Cluster の使用方法は、JAR ファイルの名前が異なることを除いて、[Schema Loader for ScalarDB](../schema-loader.mdx) の使用方法と基本的に同じです。Schema Loader for Cluster は、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases/tag/v3.14.1)からダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドで Schema Loader for Cluster を実行できます。 + +```console +java -jar scalardb-cluster-schema-loader-3.14.1-all.jar --config database.properties -f schema.json --coordinator +``` + +## ステップ 4. Python 環境をセットアップする + +Python 環境の管理方法は自由に選択できます。このガイドでは、Python アプリケーションが `venv` を使用して環境で実行されていることを前提としています。 + +任意の場所に作業ディレクトリを作成し、そこに移動します。次に、次のコマンドを実行して `venv` をアクティブ化します。 + +```console +python3 -m venv venv +source venv/bin/activate +``` + +`pip` コマンドを使用して gRPC パッケージをインストールしましょう。 + +```console +pip install grpcio grpcio-tools +``` + +## ステップ 5. ScalarDB Cluster gRPC のスタブコードを生成する + +ScalarDB Cluster の gRPC サーバーと通信するには、proto ファイルからスタブコードを生成する必要があります。 + +まず、`scalardb-cluster.proto` ファイルをダウンロードし、作業ディレクトリに保存します。商用ライセンスをお持ちの ScalarDB Cluster ユーザーで、`scalardb-cluster.proto` ファイルが必要な場合は、[お問い合わせ](https://www.scalar-labs.com/support)ください。 + +次のコマンドを実行すると、スタブコードを生成できます。 + +```console +python -m grpc_tools.protoc -I . --python_out=. --pyi_out=. --grpc_python_out=. scalardb-cluster.proto +``` + +次のファイルが生成されます: + +- `scalardb_cluster_pb2.py` +- `scalardb_cluster_pb2.pyi` +- `scalardb_cluster_pb2_grpc.py` + +## ステップ 6. サンプルアプリケーションの作成 + +以下は、スタブコードを使用するサンプル Python アプリケーション (`electronic_money.py`) です。このプログラムは、[ScalarDB をはじめよう](https://scalardb.scalar-labs.com/docs/latest/getting-started-with-scalardb/) の `ElectronicMoney.java` プログラムと同じことを行います。環境内の ScalarDB Cluster `LoadBalancer` サービスの `EXTERNAL-IP` 値に基づいて `SERVER_ADDRESS` の値を更新する必要があることに注意してください。 + +```python +import argparse +from typing import Optional + +import grpc + +import scalardb_cluster_pb2_grpc +from scalardb_cluster_pb2 import ( + BeginRequest, + BeginResponse, + Column, + CommitRequest, + Get, + GetRequest, + GetResponse, + Key, + Put, + PutRequest, + RequestHeader, + RollbackRequest, +) + +SERVER_ADDRESS = "localhost:60053" +NAMESPACE = "emoney" +TABLENAME = "account" +ID = "id" +BALANCE = "balance" + +request_header = RequestHeader(hop_limit=10) + + +def charge(id: str, amount: int) -> None: + with grpc.insecure_channel(SERVER_ADDRESS) as channel: + stub = scalardb_cluster_pb2_grpc.DistributedTransactionStub(channel) + + begin_response: BeginResponse = stub.Begin( + BeginRequest(request_header=request_header) + ) + + transaction_id = begin_response.transaction_id + + try: + pkey = Key( + columns=[ + Column( + name=ID, + text_value=Column.TextValue(value=id), + ) + ] + ) + + # Retrieve the current balance for id + get = Get( + namespace_name=NAMESPACE, + table_name=TABLENAME, + get_type=Get.GetType.GET_TYPE_GET, + partition_key=pkey, + ) + get_response: GetResponse = stub.Get( + GetRequest( + request_header=request_header, + transaction_id=transaction_id, + get=get, + ) + ) + + # Calculate the balance + balance = amount + if get_response.result.columns: + balance_column = next( + c for c in get_response.result.columns if c.name == BALANCE + ) + current = balance_column.int_value.value + balance += current + + # Update the balance + put = Put( + namespace_name=NAMESPACE, + table_name=TABLENAME, + partition_key=pkey, + columns=[ + Column(name=BALANCE, int_value=Column.IntValue(value=balance)) + ], + ) + stub.Put( + PutRequest( + request_header=request_header, + transaction_id=transaction_id, + puts=[put], + ) + ) + + # Commit the transaction + stub.Commit( + CommitRequest( + request_header=request_header, + transaction_id=transaction_id, + ) + ) + except Exception as e: + # Rollback the transaction + stub.Rollback( + RollbackRequest( + request_header=request_header, + transaction_id=transaction_id, + ) + ) + raise e + + +def pay(from_id: str, to_id: str, amount: int) -> None: + with grpc.insecure_channel(SERVER_ADDRESS) as channel: + stub = scalardb_cluster_pb2_grpc.DistributedTransactionStub(channel) + + begin_response: BeginResponse = stub.Begin( + BeginRequest(request_header=request_header) + ) + + transaction_id = begin_response.transaction_id + + try: + from_pkey = Key( + columns=[ + Column( + name=ID, + text_value=Column.TextValue(value=from_id), + ) + ] + ) + to_pkey = Key( + columns=[ + Column( + name=ID, + text_value=Column.TextValue(value=to_id), + ) + ] + ) + + # Retrieve the current balances for ids + from_get = Get( + namespace_name=NAMESPACE, + table_name=TABLENAME, + get_type=Get.GetType.GET_TYPE_GET, + partition_key=from_pkey, + ) + from_get_response: GetResponse = stub.Get( + GetRequest( + request_header=request_header, + transaction_id=transaction_id, + get=from_get, + ) + ) + to_get = Get( + namespace_name=NAMESPACE, + table_name=TABLENAME, + get_type=Get.GetType.GET_TYPE_GET, + partition_key=to_pkey, + ) + to_get_response: GetResponse = stub.Get( + GetRequest( + request_header=request_header, + transaction_id=transaction_id, + get=to_get, + ) + ) + + # Calculate the balances (it assumes that both accounts exist) + new_from_balance = ( + next( + c for c in from_get_response.result.columns if c.name == BALANCE + ).int_value.value + - amount + ) + new_to_balance = ( + next( + c for c in to_get_response.result.columns if c.name == BALANCE + ).int_value.value + + amount + ) + + if new_from_balance < 0: + raise RuntimeError(from_id + " doesn't have enough balance.") + + # Update the balances + from_put = Put( + namespace_name=NAMESPACE, + table_name=TABLENAME, + partition_key=from_pkey, + columns=[ + Column( + name=BALANCE, int_value=Column.IntValue(value=new_from_balance) + ) + ], + ) + to_put = Put( + namespace_name=NAMESPACE, + table_name=TABLENAME, + partition_key=to_pkey, + columns=[ + Column( + name=BALANCE, int_value=Column.IntValue(value=new_to_balance) + ) + ], + ) + stub.Put( + PutRequest( + request_header=request_header, + transaction_id=transaction_id, + puts=[from_put, to_put], + ) + ) + + # Commit the transaction (records are automatically recovered in case of failure) + stub.Commit( + CommitRequest( + request_header=request_header, + transaction_id=transaction_id, + ) + ) + except Exception as e: + # Rollback the transaction + stub.Rollback( + RollbackRequest( + request_header=request_header, + transaction_id=transaction_id, + ) + ) + raise e + + +def get_balance(id: str) -> Optional[int]: + with grpc.insecure_channel(SERVER_ADDRESS) as channel: + stub = scalardb_cluster_pb2_grpc.DistributedTransactionStub(channel) + + begin_response: BeginResponse = stub.Begin( + BeginRequest(request_header=request_header) + ) + + transaction_id = begin_response.transaction_id + + try: + # Retrieve the current balance for id + get = Get( + namespace_name=NAMESPACE, + table_name=TABLENAME, + get_type=Get.GetType.GET_TYPE_GET, + partition_key=Key( + columns=[ + Column( + name=ID, + text_value=Column.TextValue(value=id), + ) + ] + ), + ) + get_response: GetResponse = stub.Get( + GetRequest( + request_header=request_header, + transaction_id=transaction_id, + get=get, + ) + ) + + balance = None + if get_response.result.columns: + balance_column = next( + c for c in get_response.result.columns if c.name == BALANCE + ) + balance = balance_column.int_value.value + + # Commit the transaction + stub.Commit( + CommitRequest( + request_header=request_header, + transaction_id=transaction_id, + ) + ) + + return balance + + except Exception as e: + # Rollback the transaction + stub.Rollback( + RollbackRequest( + request_header=request_header, + transaction_id=transaction_id, + ) + ) + raise e + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(required=True) + + parser_charge = subparsers.add_parser("charge") + parser_charge.add_argument("-amount", type=int, required=True) + parser_charge.add_argument("-to", type=str, required=True, dest="to_id") + parser_charge.set_defaults(func=lambda args: charge(args.to_id, args.amount)) + + parser_pay = subparsers.add_parser("pay") + parser_pay.add_argument("-amount", type=int, required=True) + parser_pay.add_argument("-from", type=str, required=True, dest="from_id") + parser_pay.add_argument("-to", type=str, required=True, dest="to_id") + parser_pay.set_defaults( + func=lambda args: pay(args.from_id, args.to_id, args.amount) + ) + + parser_get_balance = subparsers.add_parser("get-balance") + parser_get_balance.add_argument("-id", type=str, required=True) + parser_get_balance.set_defaults(func=lambda args: print(get_balance(args.id))) + + args = parser.parse_args() + args.func(args) + +``` + +その後、次のようにプログラムを実行できます: + +- `user1` に `1000` を請求します: + + ```console + python electronic_money.py charge -amount 1000 -to user1 + ``` + +- `merchant1` に `0` を請求します (`merchant1` のアカウントを作成するだけです): + + ```console + python electronic_money.py charge -amount 0 -to merchant1 + ``` + +- `user1` から `merchant1` に `100` を支払います: + + ```console + python electronic_money.py pay -amount 100 -from user1 -to merchant1 + ``` + +- `user1` の残高を取得します。 + + ```console + python electronic_money.py get-balance -id user1 + ``` + +- `merchant1` の残高を取得します。 + + ```console + python electronic_money.py get-balance -id merchant1 + ``` + +## 参照 + +その他の ScalarDB Cluster チュートリアルについては、以下を参照してください。 + +- [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +- [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +- [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +- [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) +- [ScalarDB Cluster での Go をはじめよう](getting-started-with-using-go-for-scalardb-cluster.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +- [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +- [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/direct-kubernetes-client-mode.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/direct-kubernetes-client-mode.png new file mode 100644 index 00000000..13df52e6 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/direct-kubernetes-client-mode.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/getting-started-ERD.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/getting-started-ERD.png new file mode 100644 index 00000000..1a6d13c5 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/getting-started-ERD.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/indirect-client-mode.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/indirect-client-mode.png new file mode 100644 index 00000000..4e96108f Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/indirect-client-mode.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/scalardb-cluster-architecture.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/scalardb-cluster-architecture.png new file mode 100644 index 00000000..24a0a50d Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/scalardb-cluster-architecture.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/scalardb-deployment-patterns.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/scalardb-deployment-patterns.png new file mode 100644 index 00000000..6098c910 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/images/scalardb-deployment-patterns.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/index.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/index.mdx new file mode 100644 index 00000000..ef39b407 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/index.mdx @@ -0,0 +1,72 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB Cluster は、[ScalarDB](../overview.mdx) のクラスタリングソリューションであり、一連のクラスターノードで構成され、各ノードは ScalarDB 機能を提供します。各クラスターノードには、トランザクション要求をクラスター内の適切なクラスターノードに転送するルーティングメカニズムがあります。 + +## ScalarDB Cluster を使用する理由 + +マイクロサービストランザクションなど、複数のクライアント要求にまたがるトランザクションを実行する場合、トランザクション処理のステートフルな性質のため、トランザクションのすべての要求は同じサーバーで処理する必要があります。ただし、分散環境では、スケーラビリティと可用性のためにサービスは通常複数のサーバー (またはホスト) で実行されるため、同じサーバーに要求をルーティングするのは簡単ではありません。このシナリオでは、トランザクション内のすべての要求を同じサーバーにルーティングする必要があり、負荷分散を確実にするために異なるトランザクションを分散する必要があります。 + +この課題に対処するには、セッションアフィニティ (スティッキーセッションとも呼ばれます) などのルーティングメカニズムを構成する必要があります。この戦略により、トランザクション内のリクエストが一貫して同じサーバーにルーティングされるようになります。または、gRPC を使用して双方向ストリーミング RPC を活用することもできます。ただし、これらの構成を実装するには通常、かなりの時間と労力が必要であることに注意してください。さらに、使用しているロードバランサー製品によっては、特定の構成調整が必要になる場合があります。 + +このトピックの詳細については、[2フェーズコミットインターフェイスを使用したトランザクションでのリクエストルーティング](../two-phase-commit-transactions.mdx#2フェーズコミットインターフェイスを使用したトランザクションでのリクエストルーティング) を参照してください。 + +ScalarDB Cluster は、リクエストをクラスター内の適切なクラスターノードに転送できるルーティングメカニズムを提供することで、この問題に対処します。したがって、クラスターノードがリクエストを受信すると、ノードはそのリクエストをクラスター内の正しいクラスターノードにルーティングできます。 + +## アーキテクチャ + +ScalarDB Cluster は、それぞれ ScalarDB 機能を備えた一連のクラスターノードで構成されています。このソリューションを使用することで、各クラスターノードは独立してトランザクションを実行できます。 + +ScalarDB Cluster の注目すべき機能は、ルーティングメカニズムを使用してトランザクション要求を分散することです。クラスターノードが要求を受信すると、ノードは要求を処理するのに適切なクラスターノードであるかどうかを判断します。適切なノードでない場合、ノードは要求をクラスター内の適切なクラスターノードにルーティングします。適切なクラスターノードを判断するために、ScalarDB Cluster はコンシステントハッシュアルゴリズムを使用します。 + +メンバーシップ管理は、ScalarDB Cluster で重要な役割を果たします。クラスターノードがクラスターに参加または離脱すると、クラスターの構成が自動的に調整され、この変更が反映されます。ScalarDB Cluster は現在、Kubernetes API を使用してメンバーシップ情報を取得します。 + +:::note + +現在、ScalarDB Cluster は Kubernetes 上での実行のみをサポートしています。 + +::: + +![ScalarDB Cluster アーキテクチャ](images/scalardb-cluster-architecture.png) + +## はじめに + +チュートリアルを開始する前に、ScalarDB Cluster をセットアップする必要があります。ScalarDB Cluster をセットアップするには、[ScalarDB Cluster をローカルにデプロイする方法](setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx) を参照してください。 + +ScalarDB Cluster の使用開始に関するチュートリアルについては、以下を参照してください。 + +* [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +* [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +* [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +* [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) + +## 参考資料 + +ScalarDB Cluster Helm Chart の詳細については、以下を参照してください。 + +* [ScalarDB Cluster Helm Chart](https://github.com/scalar-labs/helm-charts/tree/main/charts/scalardb-cluster) +* [Scalar Helm Chart を使用して Scalar 製品をデプロイする](../helm-charts/how-to-deploy-scalar-products.mdx) +* [ScalarDB Cluster のデプロイする方法](../helm-charts/how-to-deploy-scalardb-cluster.mdx) + +For details about the configurations for ScalarDB Cluster, refer to the following: + +* [ScalarDB Cluster の構成](scalardb-cluster-configurations.mdx) + +Java API で ScalarDB Cluster を使用するアプリケーションの開発の詳細については、以下を参照してください。 + +* [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + +ScalarDB Cluster gRPC API の詳細については、以下を参照してください。 + +* [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +* [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx new file mode 100644 index 00000000..60e0d7a7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-non-transactional-storage-operations-through-scalardb-cluster.mdx @@ -0,0 +1,314 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster を通じて非トランザクションストレージ操作を実行する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + +このガイドでは、ScalarDB Cluster を介して非トランザクションストレージ操作を実行する方法について説明します。 + +:::warning + +ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。 + +::: + +## 準備 + +このガイドでは、ScalarDB サンプルリポジトリのサンプルを使用して、データベースと ScalarDB Cluster をスタンドアロンモードでセットアップします。 + +:::note + +スタンドアロンモードの ScalarDB Cluster は、主に開発とテストを目的としています。 + +::: + +### ScalarDB サンプルリポジトリのクローンを作成する + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-cluster-standalone-mode +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB Cluster 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](../requirements.mdx#データベース)を参照してください。 + + + +

    MySQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の MySQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://mysql-1:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgres-1:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//oracle-1:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の SQL Server のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://sqlserver-1:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB Local を実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://dynamodb-1:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントがない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を構成する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル** を **強力** に設定します。 + +

    ScalarDB Cluster を構成する

    + + 次の手順では、ローカル環境に JDK が適切にインストールおよび構成されており、Azure で Cosmos DB for NoSQL アカウントが適切に構成されていることを前提としています。 + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。説明に従って、`scalar.db.contact_points` と `scalar.db.password` の値を必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Cassandra のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=cassandra-1 + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +ScalarDB の設定の包括的なリストについては、[ScalarDB の設定](../configurations.mdx)を参照してください。 + +## スタンドアロンモードで ScalarDB Cluster を設定する + +スタンドアロンモードで ScalarDB Cluster を設定するには、非トランザクションストレージ操作を実行するように ScalarDB Cluster を構成し、ライセンスキーを設定してから、ScalarDB Cluster を起動する必要があります。 + +### 非トランザクションストレージ操作を実行するように ScalarDB Cluster を構成する + +非トランザクションストレージ操作を実行するには、構成ファイル `scalardb-cluster-node.properties` で `scalar.db.transaction_manager` プロパティを `single-crud-operation` に設定する必要があります。 + +```properties +scalar.db.transaction_manager=single-crud-operation +``` + +### ライセンスキーの設定 + +プロパティファイルで ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + +### スタンドアロンモードで ScalarDB Cluster を起動 + +スタンドアロンモードで ScalarDB Cluster を起動するには、次のコマンドを実行します。 + +:::note + +ScalarDB Cluster のその他の設定を変更する場合は、以下のコマンドを実行する前に `scalardb-cluster-node.properties` ファイルを更新してください。 + +::: + +```console +docker compose up -d scalardb-cluster-node +``` + +## スキーマを作成またはインポートする + +ScalarDB には、実装固有のデータモデルとスキーマにマップされる独自のデータモデルとスキーマがあります。 + +- **データベーススキーマを作成する必要がありますか?** [クラスター用 Schema Loader](developer-guide-for-scalardb-cluster-with-java-api.mdx#クラスター用-schema-loader) を参照してください。 +- **既存のデータベースをインポートする必要がありますか?** [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](../schema-loader-import.mdx)を参照してください。 + +## Java アプリケーションを作成する + +このセクションでは、ScalarDB Cluster Java Client SDK をプロジェクトに追加する方法と、Java を使用して非トランザクションストレージ操作を実行するようにプロジェクトを構成する方法について説明します。 + +### ScalarDB Cluster Java Client SDK をビルドに追加する + +ScalarDB Cluster Java Client SDK は、[Maven Central Repository](https://mvnrepository.com/artifact/com.scalar-labs/scalardb-cluster-java-client-sdk) で入手できます。Gradle または Maven を使用して、SDK をビルド依存関係としてアプリケーションに追加できます。 + +ビルドツールを選択し、手順に従って ScalarDB Cluster Java Client SDK のビルド依存関係をアプリケーションに追加します。 + + + + Gradle を使用して ScalarDB Cluster Java Client SDK のビルド依存関係を追加するには、アプリケーションの `build.gradle` に以下を追加します。 + + ```gradle + dependencies { + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + } + ``` + + + Maven を使用して ScalarDB Cluster Java Client SDK のビルド依存関係を追加するには、アプリケーションの `pom.xml` に以下を追加します。 + + ```xml + + com.scalar-labs + scalardb-cluster-java-client-sdk + 3.14.1 + + ``` + + + +### ScalarDB Cluster Java SDK を構成する + +ScalarDB Cluster Java SDK の構成の詳細については、[クライアント構成](developer-guide-for-scalardb-cluster-with-java-api.mdx#クライアント構成)を参照してください。 + +### Java API を使用する + +Java API の詳細については、[ScalarDB Java API ガイド](../api-guide.mdx)を参照してください。 + +:::note + +非トランザクションストレージ操作には、次の制限が適用されます: + +- トランザクションの開始はサポートされていません。詳細については、[トランザクションを開始または開始せずにトランザクションを実行する](../api-guide.mdx#トランザクションを開始または開始せずにトランザクションを実行する)を参照してください。 +- 1つのトランザクションで複数のミューテーションを実行することはサポートされていません。 + +::: + +### 詳細 + +- [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb/3.14.1/index.html) +- [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx new file mode 100644 index 00000000..2dd39694 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-non-transactional-storage-operations-through-sql-interface.mdx @@ -0,0 +1,395 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# SQL インターフェースを介して非トランザクションストレージ操作を実行する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + +このガイドでは、ScalarDB Cluster の SQL インターフェースを通じて非トランザクションストレージ操作を実行する方法について説明します。 + +:::warning + +ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。 + +::: + +## 準備 + +このガイドでは、ScalarDB サンプルリポジトリのサンプルを使用して、データベースと ScalarDB Cluster をスタンドアロンモードでセットアップします。 + +:::note + +スタンドアロンモードの ScalarDB Cluster は、主に開発とテストを目的としています。 + +::: + +### ScalarDB サンプルリポジトリのクローンを作成する + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-cluster-standalone-mode +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB Cluster 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](../requirements.mdx#データベース)を参照してください。 + + + +

    MySQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の MySQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://mysql-1:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgres-1:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//oracle-1:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の SQL Server のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://sqlserver-1:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB Local を実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://dynamodb-1:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントがない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を構成する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル** を **強力** に設定します。 + +

    ScalarDB Cluster を構成する

    + + 次の手順では、ローカル環境に JDK が適切にインストールおよび構成されており、Azure で Cosmos DB for NoSQL アカウントが適切に構成されていることを前提としています。 + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。説明に従って、`scalar.db.contact_points` と `scalar.db.password` の値を必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Cassandra のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=cassandra-1 + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +ScalarDB の設定の包括的なリストについては、[ScalarDB の設定](../configurations.mdx)を参照してください。 + +## スタンドアロンモードで ScalarDB Cluster を設定する + +スタンドアロンモードで ScalarDB Cluster を設定するには、非トランザクションストレージ操作を実行するように ScalarDB Cluster を構成し、ライセンスキーを設定してから、ScalarDB Cluster を起動する必要があります。 + +### 非トランザクションストレージ操作を実行するように ScalarDB Cluster を構成する + +非トランザクションストレージ操作を実行するには、構成ファイル `scalardb-cluster-node.properties` で `scalar.db.transaction_manager` プロパティを `single-crud-operation` に設定する必要があります。 + +```properties +scalar.db.transaction_manager=single-crud-operation +``` + +### ライセンスキーの設定 + +プロパティファイルで ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + +### スタンドアロンモードで ScalarDB Cluster を起動 + +スタンドアロンモードで ScalarDB Cluster を起動するには、次のコマンドを実行します。 + +:::note + +ScalarDB Cluster のその他の設定を変更する場合は、以下のコマンドを実行する前に `scalardb-cluster-node.properties` ファイルを更新してください。 + +::: + +```console +docker compose up -d scalardb-cluster-node +``` + +## スキーマを作成またはインポートする + +ScalarDB には、実装固有のデータモデルとスキーマにマップされる独自のデータモデルとスキーマがあります。 + +- **データベーススキーマを作成する必要がありますか?** [クラスター用 Schema Loader](developer-guide-for-scalardb-cluster-with-java-api.mdx#クラスター用-schema-loader) を参照してください。 +- **既存のデータベースをインポートする必要がありますか?** [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](../schema-loader-import.mdx)を参照してください。 + +また、サポートされている DDL のリストについては、[ScalarDB SQL 文法](../scalardb-sql/grammar.mdx)を参照してください。 + +## アプリケーションを作成する + + + +

    JDBC アプリケーションを構成する

    + + このセクションでは、ScalarDB JDBC ドライバーをプロジェクトに追加する方法と、Java を使用して非トランザクションストレージ操作を実行するように構成する方法について説明します。 + +

    ScalarDB JDBC ドライバーをプロジェクトに追加する

    + + Gradle または Maven を使用して、ScalarDB JDBC ドライバーをビルド依存関係としてアプリケーションに追加できます。 + + ビルドツールを選択し、手順に従って ScalarDB JDBC ドライバーのビルド依存関係をアプリケーションに追加します。 + + + + Gradle を使用して ScalarDB JDBC ドライバーのビルド依存関係を追加するには、アプリケーションの `build.gradle` に以下を追加します。 + + ```gradle + dependencies { + implementation 'com.scalar-labs:scalardb-sql-jdbc:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + } + ``` + + + Maven を使用して ScalarDB SQL API のビルド依存関係を追加するには、アプリケーションの `pom.xml` に以下を追加します。 + + ```xml + + + com.scalar-labs + scalardb-sql-jdbc + 3.14.1 + + + com.scalar-labs + scalardb-cluster-java-client-sdk + 3.14.1 + + + ``` + + + +

    SQL インターフェース用に ScalarDB Cluster Java SDK を構成する

    + + SQL インターフェース用に ScalarDB Cluster Java SDK を構成する方法の詳細については、[ScalarDB Cluster SQL クライアント構成](developer-guide-for-scalardb-cluster-with-java-api.mdx#scalardb-cluster-sql-クライアント構成)を参照してください。 + +

    JDBC API を使用する

    + + JDBC API の詳細については、[ScalarDB JDBC ガイド](../scalardb-sql/jdbc-guide.mdx)を参照してください。 + +:::note + +非トランザクションストレージ操作には、次の制限が適用されます: + +- トランザクションの開始はサポートされていません。 +- 単一の SQL ステートメントで複数のミューテーションを実行することはサポートされていません。 +- 分離レベルは常に `READ_COMMITTED` です。 + +::: + +

    詳細

    + + - [Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) + - [Java JDBC API](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) +
    + +

    Java アプリケーションを構成する

    + + このセクションでは、ScalarDB SQL API をプロジェクトに追加する方法と、Java を使用して非トランザクションストレージ操作を実行するように構成する方法について説明します。 + +

    ScalarDB SQL API をプロジェクトに追加する

    + + Gradle または Maven を使用して、ScalarDB SQL API をビルド依存関係としてアプリケーションに追加できます。 + + ビルドツールを選択し、手順に従って ScalarDB SQL API のビルド依存関係をアプリケーションに追加します。 + + + + Gradle を使用して ScalarDB SQL API のビルド依存関係を追加するには、アプリケーションの `build.gradle` に以下を追加します。 + + ```gradle + dependencies { + implementation 'com.scalar-labs:scalardb-sql:3.14.1' + implementation 'com.scalar-labs:scalardb-cluster-java-client-sdk:3.14.1' + } + ``` + + + Maven を使用して ScalarDB SQL API のビルド依存関係を追加するには、アプリケーションの `pom.xml` に以下を追加します。 + + ```xml + + + com.scalar-labs + scalardb-sql + 3.14.1 + + + com.scalar-labs + scalardb-cluster-java-client-sdk + 3.14.1 + + + ``` + + + +

    SQL インターフェース用に ScalarDB Cluster Java SDK を構成する

    + + SQL インターフェース用に ScalarDB Cluster Java SDK を構成する方法の詳細については、[ScalarDB Cluster SQL クライアント構成](developer-guide-for-scalardb-cluster-with-java-api.mdx#scalardb-cluster-sql-クライアント構成)を参照してください。 + +

    Java API を使用する

    + + SQL API の詳細については、[ScalarDB SQL API ガイド](../scalardb-sql/sql-api-guide.mdx)を参照してください。 + +:::note + +非トランザクションストレージ操作には、次の制限が適用されます: + +- トランザクションの開始はサポートされていません。 +- 単一の SQL ステートメントで複数のミューテーションを実行することはサポートされていません。 +- 分離レベルは常に `READ_COMMITTED` です。 + +::: + +

    詳細

    + + - [Javadoc](https://javadoc.io/doc/com.scalar-labs/scalardb-sql/3.14.1/index.html) + +
    +
    diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-transactions-through-scalardb-cluster-sql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-transactions-through-scalardb-cluster-sql.mdx new file mode 100644 index 00000000..e3771e03 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-transactions-through-scalardb-cluster-sql.mdx @@ -0,0 +1,301 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster SQL を介してトランザクションを実行する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + +このガイドでは、ScalarDB プロパティファイルを構成する方法と、ScalarDB Cluster SQL を使用して1フェーズまたは2フェーズのコミットインターフェイスを介してトランザクションを実行するためのスキーマを作成する方法について説明します。 + +:::warning + +ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。 + +::: + +## 準備 + +このガイドでは、ScalarDB サンプルリポジトリのサンプルを使用して、データベースと ScalarDB Cluster をスタンドアロンモードでセットアップします。 + +:::note + +スタンドアロンモードの ScalarDB Cluster は、主に開発とテストを目的としています。 + +::: + +### ScalarDB サンプルリポジトリのクローンを作成する + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-cluster-standalone-mode +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB Cluster 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](../requirements.mdx#データベース)を参照してください。 + + + +

    MySQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の MySQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://mysql-1:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgres-1:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//oracle-1:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の SQL Server のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://sqlserver-1:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB Local を実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://dynamodb-1:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントがない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を構成する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル** を **強力** に設定します。 + +

    ScalarDB Cluster を構成する

    + + 次の手順では、ローカル環境に JDK が適切にインストールおよび構成されており、Azure で Cosmos DB for NoSQL アカウントが適切に構成されていることを前提としています。 + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。説明に従って、`scalar.db.contact_points` と `scalar.db.password` の値を必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Cassandra のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=cassandra-1 + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +ScalarDB Cluster SQL の構成の包括的なリストについては、[ScalarDB Cluster SQL クライアント構成](developer-guide-for-scalardb-cluster-with-java-api.mdx#scalardb-cluster-sql-クライアント構成)を参照してください。 + +## スタンドアロンモードで ScalarDB Cluster を設定する + +スタンドアロンモードで ScalarDB Cluster を設定するには、ライセンスキーを設定してから ScalarDB Cluster を起動する必要があります。 + +### ライセンスキーの設定 + +プロパティファイルで ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + +### スタンドアロンモードで ScalarDB Cluster を起動 + +スタンドアロンモードで ScalarDB Cluster を起動するには、次のコマンドを実行します。 + +:::note + +ScalarDB Cluster のその他の設定を変更する場合は、以下のコマンドを実行する前に `scalardb-cluster-node.properties` ファイルを更新してください。 + +::: + +```console +docker compose up -d scalardb-cluster-node +``` + +## スキーマを作成またはインポートする + +ScalarDB には、実装固有のデータモデルとスキーマにマップされる独自のデータモデルとスキーマがあります。 + +- **データベーススキーマを作成する必要がありますか?** [クラスター用 Schema Loader](developer-guide-for-scalardb-cluster-with-java-api.mdx#クラスター用-schema-loader) を参照してください。 +- **既存のデータベースをインポートする必要がありますか?** [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](../schema-loader-import.mdx)を参照してください。 + +## トランザクションを実行する + +1フェーズまたは2フェーズのコミットインターフェースを使用してトランザクションを実行できます。トランザクションを実行する方法を選択します。 + + + +

    1フェーズコミットインターフェース

    + + 1フェーズコミットインターフェースを使用してトランザクションを実行する方法の詳細については、[ScalarDB SQL JDBC ガイド](../scalardb-sql/jdbc-guide.mdx)を参照してください。 + +:::note + +2フェーズコミットインターフェースでトランザクションを実行する方法に関するドキュメントは近日公開予定です。 + +::: +
    + +

    1フェーズコミットインターフェース

    + + 1フェーズコミットインターフェースを使用してトランザクションを実行する方法の詳細については、[ScalarDB SQL API ガイド](../scalardb-sql/sql-api-guide.mdx)を参照してください。 + +:::note + +2フェーズコミットインターフェースでトランザクションを実行する方法に関するドキュメントは近日公開予定です。 + +::: + +

    詳細

    + + ScalarDB Cluster SQL を使用してトランザクションを実行する方法の詳細については、以下を参照してください。 + + - [ScalarDB Cluster SQL gRPC API ガイド](scalardb-cluster-sql-grpc-api-guide.mdx) +
    + +

    1フェーズまたは2フェーズコミットインターフェイス

    + + 1フェーズまたは2フェーズコミットインターフェイスを使用してトランザクションを実行する方法の詳細については、[ScalarDB Cluster .NET Client SDK での LINQ をはじめよう](../scalardb-cluster-dotnet-client-sdk/getting-started-with-linq.mdx#トランザクションの管理)を参照してください。 +
    + +

    1フェーズコミットインターフェース

    + + 1フェーズコミットインターフェイスを使用してトランザクションを実行する方法の詳細については、[ScalarDB Cluster .NET Client SDK での分散 SQL トランザクションをはじめよう](../scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-sql-transactions.mdx)を参照してください。 + +:::note + +2フェーズコミットインターフェースでトランザクションを実行する方法に関するドキュメントは近日公開予定です。今のところは、[ScalarDB Cluster .NET Client SDK の2フェーズコミットインターフェイスを使用した分散トランザクションをはじめよう](../scalardb-cluster-dotnet-client-sdk/getting-started-with-two-phase-commit-transactions.mdx) を参照してください。 + +::: +
    +
    diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-transactions-through-scalardb-cluster.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-transactions-through-scalardb-cluster.mdx new file mode 100644 index 00000000..14b0bed1 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/run-transactions-through-scalardb-cluster.mdx @@ -0,0 +1,307 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster を介してトランザクションを実行する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + +このガイドでは、ScalarDB プロパティファイルを構成し、ScalarDB Cluster を使用して1フェーズまたは2フェーズのコミットインターフェイスを介してトランザクションを実行するためのスキーマを作成する方法について説明します。 + +:::warning + +ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。 + +::: + +## 準備 + +このガイドでは、ScalarDB サンプルリポジトリのサンプルを使用して、データベースと ScalarDB Cluster をスタンドアロンモードでセットアップします。 + +:::note + +スタンドアロンモードの ScalarDB Cluster は、主に開発とテストを目的としています。 + +::: + +### ScalarDB サンプルリポジトリのクローンを作成する + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-cluster-standalone-mode +``` + +## データベースをセットアップする + +データベースを選択し、指示に従って ScalarDB Cluster 用に設定します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](../requirements.mdx#データベース)を参照してください。 + + + +

    MySQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の MySQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://mysql-1:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgres-1:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//oracle-1:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の SQL Server のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://sqlserver-1:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB Local を実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://dynamodb-1:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントがない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を構成する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル** を **強力** に設定します。 + +

    ScalarDB Cluster を構成する

    + + 次の手順では、ローカル環境に JDK が適切にインストールおよび構成されており、Azure で Cosmos DB for NoSQL アカウントが適切に構成されていることを前提としています。 + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。説明に従って、`scalar.db.contact_points` と `scalar.db.password` の値を必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Cassandra のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=cassandra-1 + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +ScalarDB Cluster の構成の包括的なリストについては、[ScalarDB Cluster の構成](developer-guide-for-scalardb-cluster-with-java-api.mdx#scalardb-cluster-sql-クライアント構成) を参照してください。 + +## スタンドアロンモードで ScalarDB Cluster を設定する + +スタンドアロンモードで ScalarDB Cluster を設定するには、ライセンスキーを設定してから ScalarDB Cluster を起動する必要があります。 + +### ライセンスキーの設定 + +プロパティファイルで ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + +### スタンドアロンモードで ScalarDB Cluster を起動 + +スタンドアロンモードで ScalarDB Cluster を起動するには、次のコマンドを実行します。 + +:::note + +ScalarDB Cluster のその他の設定を変更する場合は、以下のコマンドを実行する前に `scalardb-cluster-node.properties` ファイルを更新してください。 + +::: + +```console +docker compose up -d scalardb-cluster-node +``` + +## スキーマを作成またはインポートする + +ScalarDB には、実装固有のデータモデルとスキーマにマップされる独自のデータモデルとスキーマがあります。 + +- **データベーススキーマを作成する必要がありますか?** [ScalarDB Schema Loader](../schema-loader.mdx) を参照してください。 +- **既存のデータベースをインポートする必要がありますか?** [ScalarDB Schema Loader を使用して既存のテーブルを ScalarDB にインポートする](../schema-loader-import.mdx)を参照してください。 + +## トランザクションを実行する + +1フェーズまたは2フェーズのコミットインターフェースを使用してトランザクションを実行できます。トランザクションを実行する方法を選択してください。 + + +:::note + +モノリシックなアプリケーションを構築する場合は、1フェーズコミットインターフェースを使用してください。一方、マイクロサービスアプリケーションを構築する場合は、[マイクロサービスにおける ScalarDB Cluster のデプロイパターン](./deployment-patterns-for-microservices.mdx)を読んで、どちらを使用するかを決定してください。 + +::: + + + +

    1フェーズコミットインターフェース

    + + 1フェーズコミットインターフェイスを使用してトランザクションを実行する方法の詳細については、[ScalarDB Java API ガイド](../api-guide.mdx#transactional-api)を参照してください。 + +:::note + +1フェーズコミットインターフェースを使用してトランザクションを実行するには、次のサンプルチュートリアルを参照してください。 + +- [マルチストレージトランザクションをサポートするサンプルアプリケーションを作成する](../scalardb-samples/multi-storage-transaction-sample/README.mdx) +- [マルチストレージトランザクションを備えた Spring Data JDBC for ScalarDB のサンプルアプリケーション](../scalardb-samples/spring-data-multi-storage-transaction-sample/README.mdx) + +::: + +

    2フェーズコミットインターフェース

    + + 2フェーズコミットインターフェイスを使用してトランザクションを実行する方法の詳細については、[2フェーズコミットインターフェイスを使用したトランザクション](../two-phase-commit-transactions.mdx)を参照してください。 + +:::note + +2フェーズコミットインターフェースを使用してトランザクションを実行するには、次のサンプルチュートリアルを参照してください。 + +- [マイクロサービストランザクションをサポートするサンプルアプリケーションを作成する](../scalardb-samples/microservice-transaction-sample/README.mdx) +- [マイクロサービストランザクションを使用した Spring Data JDBC for ScalarDB のサンプルアプリケーション](../scalardb-samples/spring-data-microservice-transaction-sample/README.mdx) + +::: + +

    詳細

    + + ScalarDB Cluster を使用してトランザクションを実行する方法の詳細については、以下を参照してください。 + + - [ScalarDB Cluster gRPC API ガイド](scalardb-cluster-grpc-api-guide.mdx) +
    + +

    1フェーズコミットインターフェース

    + + 1フェーズコミットインターフェイスを使用してトランザクションを実行する方法の詳細については、[ScalarDB Cluster .NET Client SDK での分散トランザクションをはじめよう](../scalardb-cluster-dotnet-client-sdk/getting-started-with-distributed-transactions.mdx)を参照してください。 + +

    2フェーズコミットインターフェース

    + + 2フェーズコミットインターフェイスを使用してトランザクションを実行する方法の詳細については、[ScalarDB Cluster .NET Client SDK の2フェーズコミットインターフェイスを使用した分散トランザクションをはじめよう](../scalardb-cluster-dotnet-client-sdk/getting-started-with-two-phase-commit-transactions.mdx)を参照してください。 +
    +
    diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-auth-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-auth-status-codes.mdx new file mode 100644 index 00000000..f6eb062e --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-auth-status-codes.mdx @@ -0,0 +1,305 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 認証および認可エラーコード + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、認証および認可に関連するエラーコードの一覧を示します。 + +## エラーコードのクラスと説明 + +| クラス | 説明 | +|:-------------|:--------------------------| +| `AUTH-1xxxx` | ユーザーエラーカテゴリのエラー | +| `AUTH-3xxxx` | 内部エラーカテゴリのエラー | + +## `AUTH-1xxxx` ステータスコード + +### `AUTH-10000` + +**メッセージ** + +```markdown +The user already exists. Username: %s +``` + +### `AUTH-10001` + +**メッセージ** + +```markdown +The user does not exist. Username: %s +``` + +### `AUTH-10003` + +**メッセージ** + +```markdown +The namespace does not exist. Namespace: %s +``` + +### `AUTH-10004` + +**メッセージ** + +```markdown +The table does not exist. Table: %s +``` + +### `AUTH-10005` + +**メッセージ** + +```markdown +Invalid username or password +``` + +### `AUTH-10006` + +**メッセージ** + +```markdown +Access denied: Invalid auth token +``` + +### `AUTH-10007` + +**メッセージ** + +```markdown +Access denied: You need the %s privilege on the namespace %s to execute this operation +``` + +### `AUTH-10008` + +**メッセージ** + +```markdown +Access denied: You need the %s privilege on the table %s to execute this operation +``` + +### `AUTH-10009` + +**メッセージ** + +```markdown +Access denied: You can't grant the %s privilege because you don't have the same privilege on the table %s +``` + +### `AUTH-10010` + +**メッセージ** + +```markdown +Access denied: You can't access information about the user %s +``` + +### `AUTH-10011` + +**メッセージ** + +```markdown +Access denied: You can't alter the user %s +``` + +### `AUTH-10012` + +**メッセージ** + +```markdown +Access denied: You must be a superuser to change the SUPERUSER attribute +``` + +### `AUTH-10013` + +**メッセージ** + +```markdown +You can't change the SUPERUSER attribute for the current user %s +``` + +### `AUTH-10014` + +**メッセージ** + +```markdown +You can't drop the current user %s +``` + +### `AUTH-10015` + +**メッセージ** + +```markdown +Access denied: You can't grant the %s privilege because you don't have the same privilege for the table %s +``` + +### `AUTH-10016` + +**メッセージ** + +```markdown +Access denied: You can't grant the %s privilege because you don't have the same privilege on the namespace %s +``` + +### `AUTH-10017` + +**メッセージ** + +```markdown +Access denied: You can't revoke the %s privilege because you don't have the same privilege on the table %s +``` + +### `AUTH-10018` + +**メッセージ** + +```markdown +Access denied: You can't revoke the %s privilege because you don't have the same privilege on the namespace %s +``` + +### `AUTH-10019` + +**メッセージ** + +```markdown +The operation does not have the target namespace or table name. Operation: %s +``` + +## `AUTH-3xxxx` ステータスコード + +### `AUTH-30000` + +**メッセージ** + +```markdown +Getting auth token information failed +``` + +### `AUTH-30001` + +**メッセージ** + +```markdown +Getting the user failed. Username: %s +``` + +### `AUTH-30002` + +**メッセージ** + +```markdown +Creating a user failed. Username: %s +``` + +### `AUTH-30003` + +**メッセージ** + +```markdown +Altering the user failed. Username: %s +``` + +### `AUTH-30004` + +**メッセージ** + +```markdown +Dropping the user failed. Username: %s +``` + +### `AUTH-30005` + +**メッセージ** + +```markdown +Granting privileges failed. Username: %s; Namespace: %s; Privileges: %s +``` + +### `AUTH-30006` + +**メッセージ** + +```markdown +Granting privileges failed. Username: %s; Table: %s; Privileges: %s +``` + +### `AUTH-30007` + +**メッセージ** + +```markdown +Revoking privileges failed. Username: %s; Namespace: %s; Privileges: %s +``` + +### `AUTH-30008` + +**メッセージ** + +```markdown +Revoking privileges failed. Username: %s; Table: %s; Privileges: %s +``` + +### `AUTH-30009` + +**メッセージ** + +```markdown +Getting users failed +``` + +### `AUTH-30010` + +**メッセージ** + +```markdown +Getting privileges failed. Username: %s; Namespace: %s +``` + +### `AUTH-30011` + +**メッセージ** + +```markdown +Getting privileges failed. Username: %s; Table: %s +``` + +### `AUTH-30012` + +**メッセージ** + +```markdown +Deleting privileges failed. Namespace: %s +``` + +### `AUTH-30013` + +**メッセージ** + +```markdown +Deleting privileges failed. Table: %s +``` + +### `AUTH-30014` + +**メッセージ** + +```markdown +Logging in failed. Username: %s +``` + +### `AUTH-30015` + +**メッセージ** + +```markdown +Logging out failed +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-auth-with-sql.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-auth-with-sql.mdx new file mode 100644 index 00000000..933439b0 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-auth-with-sql.mdx @@ -0,0 +1,362 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ユーザーの認証と認可 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/en-us/_warning-license-key-contact.mdx'; + + + +ScalarDB Cluster には、ユーザーを認証および認可するメカニズムがあります。 + +このガイドでは、ScalarDB Cluster で認証と認可を使用する方法について説明します。 + +## 概要 + +認証と認可を使用することで、ユーザーを作成し、その権限を付与または取り消すことができます。`CREATE USER` コマンドを使用してユーザーを作成し、`GRANT` コマンドまたは `REVOKE` コマンドを使用して、それぞれテーブルまたは名前空間に対する権限を付与または取り消すことができます。このようなデータ制御言語 (DCL) コマンドの詳細については、[DCL](../scalardb-sql/grammar.mdx#dcl) を参照してください。 + +ユーザーは、必要な権限を持っている場合、ユーザー名とパスワードを使用して ScalarDB Cluster にログインし、SQL ステートメントを実行できます。 + +認証と認可では、次の2種類のユーザーがサポートされます。 + +- **スーパーユーザー:** このタイプのユーザーにはすべての権限があります。スーパーユーザーのみが他のユーザーや名前空間を作成または削除できます。 +- **通常のユーザー:** このタイプのユーザーには最初は権限がないため、スーパーユーザーまたは `GRANT` 権限を持つ別のユーザーによって権限を付与する必要があります。 + +認証と認可を使用する場合、次の権限が利用できます。 + +- `SELECT` +- `INSERT` +- `UPDATE` +- `DELETE` +- `CREATE` +- `DROP` +- `TRUNCATE` +- `ALTER` +- `GRANT` + +権限の詳細については、[各タイプの操作に必要な権限](#各タイプの操作に必要な権限)を参照してください。 + +## 構成 + +このセクションでは、認証と認可に使用できる構成について説明します。 + +### ScalarDB Cluster ノードの構成 + +認証と認可を有効にするには、`scalar.db.cluster.auth.enabled` を `true` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|----------------------------------|-----------------------------|-----------| +| `scalar.db.cluster.auth.enabled` | 認証と認可が有効かどうか。 | `false` | + +次の構成を設定することもできます。 + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------------------|---------------------------------------------------------------------------------------------------|-----------------| +| `scalar.db.cluster.auth.cache_expiration_time_millis` | 認証および認可情報のキャッシュ有効期限(ミリ秒単位)。 | `60000` (1分) | +| `scalar.db.cluster.auth.auth_token_expiration_time_minutes` | 認証および認可トークンの有効期限(分単位)。 | `1440` (1日) | +| `scalar.db.cluster.auth.auth_token_gc_thread_interval_minutes` | 認証および認可トークンのガベージコレクション (GC) スレッド間隔 (分単位)。 | 360(6時間) | +| `scalar.db.cluster.auth.pepper` | ハッシュ化の前にパスワードに追加されるシークレットの値。指定しない場合、パスワードはペッパーなしでハッシュ化されます。 | | + +:::note + +認証と認可を有効にする場合は、認証と認可によって内部的にパーティション間スキャンが実行されるため、システム名前空間 (デフォルトでは `scalardb`) の `scalar.db.cross_partition_scan.enabled` を `true` に設定する必要もあります。 + +::: + +### ScalarDB Cluster Java Client SDK 構成 + +クライアント側で認証と認可を有効にするには、`scalar.db.cluster.auth.enabled` を `true` に設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|----------------------------------|------------------------|----------| +| `scalar.db.cluster.auth.enabled` | 認証と認可が有効かどうか。 | `false` | + +[ScalarDB Cluster SQL クライアント構成](developer-guide-for-scalardb-cluster-with-java-api.mdx#scalardb-cluster-sql-クライアント構成) セクションの構成に加えて、クライアントのユーザー名とパスワードを指定するために `scalar.db.sql.cluster_mode.username` と `scalar.db.sql.cluster_mode.password` も設定する必要があります。 + +| 名前 | 説明 | デフォルト | +|---------------------------------------|-----------------------------|---------| +| `scalar.db.sql.cluster_mode.username` | クライアントのユーザー名。 | | +| `scalar.db.sql.cluster_mode.password` | クライアントのパスワード。 | | + +## 初期ユーザー + +認証と認可を有効にすると、初期ユーザー `admin` が作成され、そのユーザーの初期パスワードは `admin` になります。このユーザーはスーパーユーザーであり、すべての権限を持ちます。このユーザーでログインし、必要に応じて他のユーザーを作成できます。 + +:::warning + +セキュリティ上の理由から、特に実稼働環境にデプロイする前に、初期ユーザーのパスワードを必ず変更してください。 + +::: + +## 各タイプの操作に必要な権限 + +次の表は、各タイプの操作に必要な権限を示しています。 + +### DDL + +| コマンド | スーパーユーザーが必要です | 必要な権限 | +|-------------------------------|-----------------------|---------------------| +| `CREATE NAMESPACE` | `true` | | +| `DROP NAMESPACE` | `true` | | +| `CREATE TABLE` | | `CREATE` | +| `DROP TABLE` | | `DROP` | +| `CREATE INDEX` | | `CREATE` | +| `DROP INDEX` | | `DROP` | +| `TRUNCATE TABLE` | | `TRUNCATE` | +| `ALTER TABLE` | | `ALTER` | +| `CREATE COORDINATOR TABLES` | `true` | | +| `DROP COORDINATOR TABLES` | `true` | | +| `TRUNCATE COORDINATOR TABLES` | `true` | | + +### DML + +| コマンド | スーパーユーザーが必要です | 必要な権限 | +|----------|------------------------|----------------------| +| `SELECT` | | `SELECT` | +| `INSERT` | | `INSERT` | +| `UPSERT` | | `INSERT` | +| `UPDATE` | | `SELECT` と `UPDATE` | +| `DELETE` | | `SELECT` と `DELETE` | + +### DCL + +| コマンド | スーパーユーザーが必要です | 必要な権限 | +|---------------|---------------------------------------------|-------------------------------------------------------------| +| `CREATE USER` | `true` | | +| `ALTER USER` | `true` (ユーザーは自分のパスワードを変更できます。) | | +| `DROP USER` | `true` | | +| `GRANT` | | `GRANT` (ユーザーは自分が持っている権限のみを付与できます。) | +| `REVOKE` | | `GRANT` (ユーザーは自分が持っている権限のみを取り消すことができます。) | + +## 制限事項 + +認証と認可で付与または取り消される権限には、いくつかの制限があります: + +- `INSERT` 権限と `UPDATE` 権限は、一緒に付与または取り消す必要があります。 +- ユーザーに `UPDATE` 権限または `DELETE` 権限を付与するには、対象ユーザーに `SELECT` 権限が必要です。 +- 対象ユーザーに `INSERT` 権限または `UPDATE` 権限がある場合、そのユーザーから `SELECT` 権限を取り消すことはできません。 + +## ワイヤ暗号化 + +認証と認可を有効にする場合は、ユーザー資格情報を保護するために、本番環境でワイヤ暗号化を有効にすることを強くお勧めします。ワイヤ暗号化の詳細については、[ScalarDB Cluster ワイヤ暗号化](encrypt-wire-communications.mdx)を参照してください。 + +## チュートリアル - ユーザーの認証と認可 + +このチュートリアルでは、認証と認可の使用方法を説明します。 + + + +### 1. ScalarDB Cluster 設定ファイルを作成する + +次の設定ファイルを `scalardb-cluster-node.properties` として作成し、`` と `` を ScalarDB ライセンスキーとライセンスチェック証明書の値に置き換えます。ライセンスキーと証明書の詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + +```properties +scalar.db.storage=jdbc +scalar.db.contact_points=jdbc:postgresql://postgresql:5432/postgres +scalar.db.username=postgres +scalar.db.password=postgres +scalar.db.cluster.node.standalone_mode.enabled=true +scalar.db.cross_partition_scan.enabled=true +scalar.db.sql.enabled=true + +# Enable authentication and authorization +scalar.db.cluster.auth.enabled=true + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +### 2. Docker Compose ファイルを作成する + +次の設定ファイルを `docker-compose.yaml` として作成します。 + +```yaml +services: + postgresql: + container_name: "postgresql" + image: "postgres:15" + ports: + - 5432:5432 + environment: + - POSTGRES_PASSWORD=postgres + healthcheck: + test: ["CMD-SHELL", "pg_isready || exit 1"] + interval: 1s + timeout: 10s + retries: 60 + start_period: 30s + + scalardb-cluster-standalone: + container_name: "scalardb-cluser-node" + image: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium:3.14.1" + ports: + - 60053:60053 + - 9080:9080 + volumes: + - ./scalardb-cluster-node.properties:/scalardb-cluster/node/scalardb-cluster-node.properties + depends_on: + postgresql: + condition: service_healthy +``` + +### 3. PostgreSQL と ScalarDB Cluster を起動します + +次のコマンドを実行して、PostgreSQL と ScalarDB Cluster をスタンドアロンモードで起動します。 + +```console +docker compose up -d +``` + +### 4. ScalarDB Cluster に接続する + +ScalarDB Cluster に接続するために、このチュートリアルでは、ScalarDB Cluster に接続して SQL クエリを実行するツールである SQL CLI を使用します。SQL CLI は、[ScalarDB Releases ページ](https://github.com/scalar-labs/scalardb/releases)からダウンロードできます。 + +`scalardb-cluster-sql-cli.properties` という名前の設定ファイルを作成します。このファイルは、SQL CLI を使用して ScalarDB Cluster に接続するために使用されます。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=indirect:localhost + +# Enable authentication and authorization +scalar.db.cluster.auth.enabled=true +``` + +次に、次のコマンドを実行して SQL CLI を起動します。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +``` + +ユーザー名とパスワードをそれぞれ `admin` と `admin` と入力します。 + +これで、ScalarDB Cluster で認証と認可を有効にしてデータベースを使用する準備が整いました。 + +### 5. 名前空間とテーブルを作成する + +名前空間を作成します。 + +```sql +CREATE NAMESPACE ns1; + +CREATE NAMESPACE ns2; +``` + +次に、`ns1` 名前空間にテーブルを作成します。 + +```sql +CREATE TABLE ns1.tbl ( + id INT PRIMARY KEY, + col1 TEXT, + col2 INT); +``` + +### 6. ユーザーを作成する + +`user1` という名前のユーザーを作成します。 + +```sql +CREATE USER user1 WITH PASSWORD 'user1'; +``` + +ユーザーを確認するには、次のコマンドを実行します。 + +```sql +SHOW USERS; +``` + +```console ++----------+-------------+ +| username | isSuperuser | ++----------+-------------+ +| user1 | false | +| admin | true | ++----------+-------------+ +``` + +`user1` ユーザーが作成されたことがわかります。 + +### 7. 権限の付与 + +`ns1.tbl` テーブルで `user1` に `SELECT`、`INSERT`、および `UPDATE` 権限を付与します。 + +```sql +GRANT SELECT, INSERT, UPDATE ON ns1.tbl TO user1; +``` + +次に、`ns2` 名前空間の `user1` に `SELECT` 権限を付与します。 + +```sql +GRANT SELECT ON NAMESPACE ns2 TO user1; +``` + +権限を確認するには、次のコマンドを実行します。 + +```sql +SHOW GRANTS FOR user1; +``` + +```console ++---------+-----------+-----------+ +| name | type | privilege | ++---------+-----------+-----------+ +| ns2 | NAMESPACE | SELECT | +| ns1.tbl | TABLE | SELECT | +| ns1.tbl | TABLE | INSERT | +| ns1.tbl | TABLE | UPDATE | ++---------+-----------+-----------+ +``` + +`user1` に `ns.tbl` テーブルに対する `SELECT`、`INSERT`、`UPDATE` 権限と、`ns2` 名前空間に対する `SELECT` 権限が付与されていることがわかります。 + +### 8. `user1` としてログインする + +`user1` としてログインし、SQL ステートメントを実行します。 + +```console +java -jar scalardb-cluster-sql-cli-3.14.1-all.jar --config scalardb-cluster-sql-cli.properties +``` + +ユーザー名とパスワードをそれぞれ `user1` と `user1` として入力します。 + +これで、`user1` として SQL ステートメントを実行できます。 + +### 9. DML ステートメントを実行する + +`user1` として次の `INSERT` ステートメントを実行します。 + +```sql +INSERT INTO ns1.tbl VALUES (1, 'a', 1); +``` + +次に、`user1` として次の `SELECT` ステートメントを実行します。 + +```sql +SELECT * FROM ns1.tbl; +``` + +```console ++----+------+------+ +| id | col1 | col2 | ++----+------+------+ +| 1 | a | 1 | ++----+------+------+ +``` + +`user1` が `INSERT` および `SELECT` ステートメントを実行できることがわかります。 + +次に、`user1` として次の `DELETE` ステートメントを実行してみてください。 + +```sql +DELETE FROM ns1.tbl WHERE id = 1; +``` + +```console +Error: Authorization error (PERMISSION_DENIED: SQL-10021: Access denied: You need the DELETE privilege on the table ns1.tbl to execute this operation) (state=SDB11,code=9911) +``` + +`user1` には `ns1.tbl` テーブルに対する `DELETE` 権限がないため、上記のエラーメッセージが表示されます。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-configurations.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-configurations.mdx new file mode 100644 index 00000000..94473d25 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-configurations.mdx @@ -0,0 +1,243 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster の構成 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + +このドキュメントでは、ScalarDB Cluster の構成について説明します。ScalarDB Cluster は複数のクラスターノードで構成されており、各クラスターノードを構成する必要があります。 + +## 基本構成 + +クラスターノードの基本構成は次のとおりです。 + +| 名前 | 説明 | デフォルト | +|-------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|----------------| +| `scalar.db.cluster.membership.type` | メンバーシップの種類。現在、`KUBERNETES` のみ指定できます。 | `KUBERNETES` | +| `scalar.db.cluster.membership.kubernetes.endpoint.namespace_name` | この構成は、`KUBERNETES` メンバーシップタイプ用です。[endpoint resource](https://kubernetes.io/docs/concepts/services-networking/service/#endpoints) の名前空間名。 | `default` | +| `scalar.db.cluster.membership.kubernetes.endpoint.name` | この構成は、`KUBERNETES` メンバーシップタイプ用です。メンバーシップ情報を取得するための [endpoint resource](https://kubernetes.io/docs/concepts/services-networking/service/#endpoints) の名前。 | | +| `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` | +| `scalar.db.metadata.cache_expiration_time_secs` | ScalarDB には、データベースへのリクエスト数を減らすためのメタデータキャッシュがあります。この設定では、キャッシュの有効期限を秒単位で指定します。`-1`を指定した場合は、キャッシュは期限切れになりません。 | `60` | +| `scalar.db.active_transaction_management.expiration_time_millis` | ScalarDB Cluster ノードは進行中のトランザクションを維持し、トランザクション ID を使用して再開できます。この構成では、このトランザクション管理機能の有効期限をミリ秒単位で指定します。 | `60000` (60秒) | +| `scalar.db.system_namespace_name` | 指定された名前空間名は ScalarDB によって内部的に使用されます。 | `scalardb` | + +## トランザクションマネージャーの構成 + +このセクションでは、トランザクションマネージャーの構成について説明します。ScalarDB は、コンセンサスコミットを使用してトランザクションを実行する方法と、非トランザクションストレージ操作を実行する方法を提供します。 + +### コンセンサスコミットを使用してトランザクションを実行する + +ScalarDB は、コンセンサスコミットと呼ばれる独自のトランザクションプロトコルを提供します。これは、ScalarDB のデフォルトのトランザクションマネージャータイプです。コンセンサスコミットトランザクションマネージャーを使用するには、ScalarDB プロパティファイルに次の内容を追加します。 + +```properties +scalar.db.transaction_manager=consensus-commit +``` + +:::note + +`scalar.db.transaction_manager` プロパティを指定しない場合は、`consensus-commit` がデフォルト値になります。 + +::: + +#### 基本設定 + +コンセンサスコミットトランザクションマネージャーでは、次の基本設定が利用可能です。 + +| 名前 | 説明 | デフォルト | +|-------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------| +| `scalar.db.transaction_manager` | `consensus-commit` を指定する必要があります。 | - | +| `scalar.db.consensus_commit.isolation_level` | コンセンサスコミットに使用される分離レベル。`SNAPSHOT` または `SERIALIZABLE` のいずれかを指定できます。 | `SNAPSHOT` | +| `scalar.db.consensus_commit.serializable_strategy` | コンセンサスコミットに使用されるシリアル化可能な戦略。`EXTRA_READ` または `EXTRA_WRITE` のいずれかを指定できます。`scalar.db.consensus_commit.isolation_level` プロパティで `SNAPSHOT` が指定されている場合、この構成は無視されます。 | `EXTRA_READ` | +| `scalar.db.consensus_commit.coordinator.namespace` | Coordinator テーブルの名前空間名。 | `coordinator` | +| `scalar.db.consensus_commit.include_metadata.enabled` | `true` に設定すると、`Get` および `Scan` 操作の結果にトランザクションメタデータが含まれます。特定のテーブルのトランザクションメタデータ列の詳細を表示するには、`DistributedTransactionAdmin.getTableMetadata()` メソッドを使用します。このメソッドは、トランザクションメタデータ列が追加されたテーブルメタデータを返します。この構成を使用すると、トランザクション関連の問題を調査するのに役立ちます。 | `false` | + +#### パフォーマンス関連の構成 + +コンセンサスコミットトランザクションマネージャーでは、次のパフォーマンス関連の構成が利用できます。 + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------| +| `scalar.db.consensus_commit.parallel_executor_count` | 並列実行のためのエグゼキュータ(スレッド)の数。 | `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` | + +#### 基盤となるストレージまたはデータベースの構成 + +Consensus Commit にはストレージ抽象化レイヤーがあり、複数の基盤となるストレージをサポートしています。`scalar.db.storage` プロパティを使用してストレージ実装を指定できます。 + +データベースを選択して、各ストレージで使用可能な構成を確認します。 + + + + 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` | 接続プールで同時にアクティブにできるアイドル接続と借用接続の最大合計数。制限がない場合は負の値を使用します。 | `100` | + | `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` | + +:::note + +SQLite3 を JDBC データベースとして使用している場合は、`scalar.db.contact_points` を次のように設定する必要があります。 + +```properties +scalar.db.contact_points=jdbc:sqlite:?busy_timeout=10000 +``` + +他の JDBC データベースとは異なり、[SQLite3 doesn't fully support concurrent access](https://www.sqlite.org/lang_transaction.html)。[`SQLITE_BUSY`](https://www.sqlite.org/rescode.html#busy) によって内部的に頻繁に発生するエラーを回避するには、[`busy_timeout`](https://www.sqlite.org/c3ref/busy_timeout.html) パラメータを設定することをお勧めします。 + +::: + + +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` を指定すると、複数のストレージを使用できます。 + +複数のストレージの使用の詳細については、[マルチストレージトランザクション](../multi-storage-transactions.mdx)を参照してください。 + +##### パーティション間スキャン構成 + +以下で説明するようにパーティション間スキャンオプションを有効にすると、`Scan` 操作でパーティション全体のすべてのレコードを取得できます。さらに、`cross_partition_scan.filtering` と `cross_partition_scan.ordering` をそれぞれ有効にすることで、パーティション間 `Scan` 操作で任意の条件と順序を指定できます。現在、順序付けオプション付きのパーティション間スキャンは、JDBC データベースでのみ使用できます。フィルタリングと順序付けを有効にするには、`scalar.db.cross_partition_scan.enabled` を `true` に設定する必要があります。 + +パーティション間スキャンの使用方法の詳細については、[スキャン操作](../api-guide.mdx#スキャン操作)を参照してください。 + +:::warning + +非 JDBC データベースの場合、トランザクションはより低い分離レベル (つまり、`SNAPSHOT`) で実行される可能性があるため、`SERIALIAZABLE` 分離レベルでパーティション間スキャンを有効にすることはお勧めしません。非 JDBC データベースを使用する場合は、トランザクションの一貫性が重要でない場合にのみ、自己責任でパーティション間スキャンを使用してください。 + +::: + +| 名前 | 説明 | デフォルト | +|----------------------------------------------------|-----------------------------------------------|---------| +| `scalar.db.cross_partition_scan.enabled` | パーティション間スキャンを有効にします。 | `false` | +| `scalar.db.cross_partition_scan.filtering.enabled` | パーティション間スキャンでフィルタリングを有効にします。 | `false` | +| `scalar.db.cross_partition_scan.ordering.enabled` | パーティション間スキャンで順序付けを有効にします。 | `false` | + +### 非トランザクションストレージ操作を実行する + +非トランザクションストレージ操作を実行するには、`scalar.db.transaction_manager` プロパティを `single-crud-operation` に設定する必要があります。 + +```properties +scalar.db.transaction_manager=single-crud-operation +``` + +また、[基盤となるストレージまたはデータベースの構成](#基盤となるストレージまたはデータベースの構成)の説明に従って、基盤となるストレージまたはデータベースを構成する必要があります。 + +## ScalarDB Cluster GraphQL 構成 + +ScalarDB Cluster GraphQL の構成は次のとおりです。 + +| 名前 | 説明 | デフォルト | +|-----------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------| +| `scalar.db.graphql.enabled` | ScalarDB Cluster GraphQL が有効かどうか。 | `false` | +| `scalar.db.graphql.port` | GraphQL サーバーのポート番号。 | `8080` | +| `scalar.db.graphql.path` | GraphQL エンドポイントの URL のパスコンポーネント。 | `/graphql` | +| `scalar.db.graphql.namespaces` | GraphQL サーバーがスキーマを生成するテーブルの名前空間のコンマ区切りリスト。指定しない場合、GraphQL サーバーは、すべての ScalarDB 管理名前空間内のすべてのテーブルのスキーマを生成します。 | | +| `scalar.db.graphql.graphiql` | GraphQL サーバーが [GraphiQL](https://github.com/graphql/graphiql) IDE を提供するかどうか。 | `true` | +| `scalar.db.graphql.schema_checking_interval_millis` | ScalarDB スキーマに変更が検出された場合に GraphQL サーバーが GraphQL スキーマを再構築する間隔 (ミリ秒単位)。 | `30000` (30秒) | + +### サーバーの実行中に ScalarDB スキーマを作成または変更する + +GraphQL スキーマはサーバーの起動時に静的に構築されるため、ScalarDB スキーマが変更された場合 (たとえば、テーブルが追加、変更、または削除された場合)、対応する GraphQL スキーマは再構築されない限り変更を反映しません。これに対処するために、GraphQL サーバーは、定期的なチェックとオンデマンドチェックの2つのメカニズムを提供します。 + +#### 定期的なチェックを実行する + +サーバーは、ScalarDB スキーマに変更が発生したかどうかを定期的にチェックし、必要に応じて対応する GraphQL スキーマを再構築します。デフォルトでは、チェックは30秒ごとに行われますが、間隔は `scalar.db.graphql.schema_checking_interval_millis` プロパティを使用して構成できます。 + +定期的なチェックを実行する必要がない場合は、プロパティ値を `-1` に設定して無効にすることができます。 + +#### オンデマンドチェックを実行する + +また、HTTP API の `/update-graphql-schema` エンドポイントに POST リクエストを実行して、サーバーに ScalarDB スキーマの変更をチェックし、必要に応じて対応する GraphQL スキーマを再構築するように要求することもできます。 + +たとえば、HTTP API が `localhost:8080` で実行されていて、`scalar.db.graphql.path` プロパティが `/graphql` に設定されている場合、次のコマンドを実行してこのエンドポイントを呼び出すことができます。 + +```console +curl -X POST http://localhost:8080/graphql/update-graphql-schema +``` + +## ScalarDB Cluster SQL 構成 + +ScalarDB Cluster SQL の構成は次のとおりです。 + +| 名前 | 説明 | デフォルト | +|------------------------------------------|----------------------------------------------------------------------------------------------------------|---------------| +| `scalar.db.sql.enabled` | ScalarDB Cluster SQL が有効かどうか。 | `false` | +| `scalar.db.sql.statement_cache.enabled` | ステートメントキャッシュを有効にします。 | `false` | +| `scalar.db.sql.statement_cache.size` | キャッシュされたステートメントの最大数。 | `100` | +| `scalar.db.sql.default_transaction_mode` | デフォルトのトランザクションモード。`TRANSACTION` または `TWO_PHASE_COMMIT_TRANSACTION` を設定できます。 | `TRANSACTION` | +| `scalar.db.sql.default_namespace_name` | デフォルトの名前空間名。SQL ステートメントで名前空間名を指定しない場合は、この値が使用されます。 | | diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-grpc-api-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-grpc-api-guide.mdx new file mode 100644 index 00000000..2c8c1e30 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-grpc-api-guide.mdx @@ -0,0 +1,212 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster gRPC API ガイド + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +このドキュメントでは、ScalarDB Cluster gRPC API について説明します。 + + + +ScalarDB Cluster は、内部で gRPC API を使用する Java API を提供します。 + +Java または JVM 言語を使用する場合は、ScalarDB Cluster gRPC API を直接使用する代わりに、Java API を使用できます。 + +Java API の詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx)を参照してください。 + +ScalarDB Cluster gRPC API のサービスとメッセージの詳細については、`scalardb-cluster.proto` ファイルの定義を参照してください。商用ライセンスを持つ ScalarDB Cluster ユーザーで、`scalardb-cluster.proto` ファイルが必要な場合は、[お問い合わせ](https://www.scalar-labs.com/support)ください。 + +ScalarDB Cluster gRPC API は、次のサービスで構成されています。 + +- `scalardb.cluster.rpc.v1.DistributedTransaction`: ScalarDB Cluster に分散トランザクション機能を提供します。 +- `scalardb.cluster.rpc.v1.TwoPhaseCommitTransaction`: ScalarDB Cluster に2フェーズコミットトランザクション機能を提供します。 +- `scalardb.cluster.rpc.v1.DistributedTransactionAdmin`: 包括的な管理操作を提供します。 + +次のセクションでは、各サービスの使用方法について説明します。 + +## ScalarDB Cluster gRPC API でのエラー処理の概要 + +各サービスの使用方法を説明する前に、このセクションでは ScalarDB Cluster gRPC API でのエラー処理の仕組みについて説明します。 + +ScalarDB Cluster gRPC API は、エラー処理に [Richer error model](https://grpc.io/docs/guides/error/#richer-error-model) を採用しています。このモデルにより、サーバーは1つ以上の protobuf メッセージとして表現される追加のエラー詳細を返すことができ、クライアントはそれを利用できるようになります。ScalarDB Cluster gRPC API は、[standard set of error message types](https://github.com/googleapis/googleapis/blob/master/google/rpc/error_details.proto) の1つである `google.rpc.ErrorInfo` を使用し、追加のエラー詳細を `ErrorInfo` フィールドに格納します。 + +`ErrorInfo` には次のフィールドがあります: + +- `reason`: エラーの簡単な説明を提供する文字列。次のセクションでは、各サービスにおける `reason` の可能な値について説明します。 +- `domain`: エラーの原因を示す文字列。ScalarDB Cluster gRPC API では、この文字列は常に `com.scalar.db.cluster` に設定されます。 +- `metadata`: 特定のエラーのメタデータのマップ。ScalarDB Cluster gRPC API では、エラーがトランザクションに関連している場合、マップに `transactionId` キーを持つトランザクション ID が配置されます。 + +エラーが発生した場合は、gRPC レスポンスの `google.rpc.Status` から `ErrorInfo` を取得できますが、取得方法はプログラミング言語によって異なります。 + +特定のプログラミング言語で `ErrorInfo` を取得する方法については、適切なドキュメントを参照してください。 + +## `DistributedTransaction` サービスの使用方法 + +`DistributedTransaction` サービスは次の RPC を提供します: + +- `Begin`: トランザクションを開始します。 +- `Get`: レコードを取得します。 +- `Scan`: レコードをスキャンします。 +- `Put`: レコードを配置します。 +- `Delete`: レコードを削除します。 +- `Mutate` 複数のレコードを変更 (配置および削除) します。 +- `Commit`: トランザクションをコミットします。 +- `Rollback`: トランザクションをロールバックします。 + +まず、`Begin` を呼び出してトランザクションを開始します。 + +次に、`Get` と `Scan` を呼び出してレコードを読み取り、`Put` と `Mutate` を呼び出してレコードを書き込み、`Delete` と `Mutate` を呼び出してレコードを削除します。 + +トランザクションを終了するには、`Commit` を呼び出します。あるいは、トランザクションがコミットされる前にいつでも `Rollback` を呼び出してキャンセルできます。`Begin` を呼び出すと、応答でトランザクション ID を受け取ります。これを使用して、`Get`、`Scan`、`Put`、`Delete`、`Mutate`、`Commit`、および `Rollback` を呼び出すことができます。 + +`Begin` を呼び出すときに、オプションでトランザクション ID を指定できます。トランザクション ID を指定する場合、ユーザーは ID の一意性を保証する責任があります。トランザクション ID を指定しない場合は、ScalarDB Cluster がトランザクションのトランザクション ID を生成します。 + +RPC リクエストごとに `RequestHeader` を設定する必要があります。`RequestHeader` には、リクエストのホップ数を制限している `hop_limit` フィールドが含まれています。`hop_limit` の目的は、クラスター内での無限ループを防ぐことです。リクエストが別のクラスターノードに転送されるたびに、`hop_limit` は1つ減少します。`hop_limit` が0に達すると、リクエストは拒否されます。 + +### エラー処理 + +以下の表は、`DistributedTransaction` サービスの各 RPC におけるステータスコードと `ErrorInfo` の `reason` の可能な値を示しています。 + +| RPC | ステータスコード | `ErrorInfo` の `reason` | 説明 | +|--------------------------------|---------------------|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Begin | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Begin | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Begin | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Begin | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Get, Scan, Put, Delete, Mutate | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Get, Scan, Put, Delete, Mutate | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Get, Scan, Put, Delete, Mutate | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合は、トランザクションを最初から再試行してください。 | +| Get, Scan, Put, Delete, Mutate | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Get, Scan, Put, Delete, Mutate | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Get, Scan, Put, Delete, Mutate | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Put, Delete, Mutate | FAILED_PRECONDITION | UNSATISFIED_CONDITION | 突然変異条件が満たされていません。 | +| Commit | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Commit | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Commit | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合は、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Commit | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | UNKNOWN_TRANSACTION_STATUS | トランザクションのステータスは不明です (トランザクションが正常にコミットされたかどうかは不明です)。この状況では、トランザクションが正常にコミットされたかどうかを確認し、そうでない場合は再試行する必要があります。トランザクションステータスを判別する責任はユーザーにあります。トランザクションステータステーブルを作成し、他のアプリケーションデータと連動して更新すると、テーブル自体からトランザクションのステータスを判別できるため、便利です。 | +| Commit | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Rollback | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Rollback | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Rollback | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | + +エラーが発生した場合は、`Begin` の場合を除き、トランザクションをロールバックする必要があります。その後、再試行によって解決できるエラーについては、トランザクションを最初から再試行できます。 + +上記のエラーの他に、gRPC ライブラリによって返されるエラーが発生する場合があります。これらの場合、応答には `ErrorInfo` は含まれません。詳細については、[gRPC ドキュメント](https://grpc.io/docs/guides/error/#error-status-codes)を参照してください。 + +gRPC では、RPC ごとに期限を設定できます。期限を超えると、`DEADLINE_EXCEEDED` エラーが表示されます。一般に、RPC が `Begin` または `Commit` でない限り、この状況ではトランザクションをロールバックする必要があります。`Commit` の場合は `UNKNOWN_TRANSACTION_STATUS` (トランザクションが正常にコミットされたかどうか不明) と同等の状況となり、同様にエラーを処理する必要があります。 + +## `TwoPhaseCommitTransaction` サービスの使用方法 + +`TwoPhaseCommitTransaction` サービスは次の RPC を提供します: + +- `Begin`: トランザクションを開始します。 +- `Join`: トランザクションに参加します。 +- `Get`: レコードを取得します。 +- `Scan`: レコードをスキャンします。 +- `Put`: レコードを配置します。 +- `Delete`: レコードを削除します。 +- `Mutate`: 複数のレコードを変更 (配置および削除) します。 +- `Prepare`: トランザクションを準備します。 +- `Validate`: トランザクションを検証します。 +- `Commit`: トランザクションをコミットします。 +- `Rollback`: トランザクションをロールバックします。 + +まず、コーディネータープロセスの場合は、`Begin` を呼び出してトランザクションを開始します。あるいは、参加プロセスの場合は、`Join` を呼び出して、コーディネーターがすでに開始しているトランザクションに参加できます。次に、`Get` と `Scan` を呼び出してレコードを読み取り、`Put` と `Mutate` を呼び出してレコードを書き込み、`Delete` と `Mutate` を呼び出してレコードを削除できます。トランザクションを確定するには、`Prepare`、`Validate`、`Commit` の順に呼び出します。または、トランザクションがコミットされる前であればいつでも `Rollback` を呼び出してトランザクションをキャンセルできます。`Begin` または `Join` を呼び出すと、応答でトランザクション ID が返されます。これを使用して、`Get`、`Scan`、`Put`、`Delete`、`Mutate`、`Prepare`、`Validate`、`Commit`、`Rollback` を呼び出すことができます。 + +`Begin` を呼び出すときに、オプションでトランザクション ID を指定できます。トランザクション ID を指定する場合、ID の一意性を保証するのはユーザーの責任です。トランザクション ID を指定しない場合、ScalarDB Cluster はトランザクションのトランザクション ID を生成します。 + +RPC リクエストごとに `RequestHeader` を設定する必要があります。`RequestHeader` には、リクエストのホップ数を制限している `hop_limit` フィールドが含まれています。`hop_limit` の目的は、クラスター内での無限ループを防ぐことです。リクエストが別のクラスターノードに転送されるたびに、`hop_limit` は1つ減ります。`hop_limit` が0に達すると、リクエストは拒否されます。 + +### エラー処理 + +次の表は、`TwoPhaseCommitTransaction` サービスの各 RPC のステータスコードと `ErrorInfo` の `reason` の可能な値を示しています。 + +| RPC | ステータスコード | `ErrorInfo` の `reason` | 説明 | +|--------------------------------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Begin, Join | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Begin, Join | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Begin, Join | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Begin, Join | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Get, Scan, Put, Delete, Mutate | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Get, Scan, Put, Delete, Mutate | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Get, Scan, Put, Delete, Mutate | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。これは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合は、トランザクションを最初から再試行してください。 | +| Get, Scan, Put, Delete, Mutate | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Get, Scan, Put, Delete, Mutate | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Get, Scan, Put, Delete, Mutate | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Put, Delete, Mutate | FAILED_PRECONDITION | UNSATISFIED_CONDITION | 突然変異条件が満たされていません。 | +| Prepare, Validate | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Prepare, Validate | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Prepare, Validate | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合は、トランザクションを最初から再試行してください。 | +| Prepare, Validate | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Prepare, Validate | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Prepare, Validate | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Commit | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Commit | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Commit | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合は、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Commit | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | UNKNOWN_TRANSACTION_STATUS | トランザクションのステータスは不明です (トランザクションが正常にコミットされたかどうかは不明です)。この状況では、トランザクションが正常にコミットされたかどうかを確認し、そうでない場合は再試行する必要があります。トランザクションステータスを判別する責任はユーザーにあります。トランザクションステータステーブルを作成し、他のアプリケーションデータと連動して更新すると、テーブル自体からトランザクションのステータスを判別できるため、便利です。 | +| Commit | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Rollback | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Rollback | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Rollback | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | + +エラーが発生した場合は、`Begin` または `Join` の場合を除き、トランザクションをロールバックする必要があります。その後、再試行によって解決できるエラーについては、トランザクションを最初から再試行できます。 + +上記のエラーの他に、gRPC ライブラリによって返されるエラーが発生する場合があります。これらの場合、応答には `ErrorInfo` は含まれません。詳細については、[gRPC ドキュメント](https://grpc.io/docs/guides/error/#error-status-codes)を参照してください。 + +gRPC では、各 RPC に期限を設定できます。期限を超えると、`DEADLINE_EXCEEDED` エラーが表示されます。一般に、RPC が `Begin`、`Join`、または `Commit` でない限り、この状況ではトランザクションをロールバックする必要があります。`Commit` の場合、状況は `UNKNOWN_TRANSACTION_STATUS` (トランザクションが正常にコミットされたかどうか不明) と同等であり、同じ方法でエラーを処理する必要があります。 + +## `DistributedTransactionAdmin` サービスの使用方法 + +`DistributedTransactionAdmin` サービスは、次の RPC を提供します。 + +- `CreateNamespace`: 名前空間を作成します。 +- `DropNamespace`: 名前空間を削除します。 +- `NamespaceExists`: 指定された名前空間が存在するかどうかを返します。 +- `CreateTable`: テーブルを作成します。 +- `DropTable`: テーブルを削除します。 +- `TruncateTable`: テーブルを切り捨てます。 +- `TableExists`: 指定されたテーブルが存在するかどうかを返します。 +- `CreateIndex`: インデックスを作成します。 +- `DropIndex`: インデックスを削除します。 +- `IndexExists`: 指定されたインデックスが存在するかどうかを返します。 +- `RepairNamespace`: 不明な状態にある可能性がある名前空間を修復します。 +- `RepairTable`: 不明な状態にある可能性がある名前空間を修復します。 +- `AddNewColumnToTable`: テーブルに新しい列を追加します。 +- `CreateCoordinatorTables`: Coordinator テーブルを作成します。 +- `DropCoordinatorTables`: Coordinator テーブルを削除します。 +- `TruncateCoordinatorTables`: Coordinator テーブルを切り捨てます。 +- `CoordinatorTablesExist`: Coordinator テーブルが存在するかどうかを返します。 +- `RepairCoordinatorTables`: Coordinator テーブルを修復します。 +- `GetTableMetadata`: 指定されたテーブルのテーブルメタデータを返します。 +- `GetNamespaceTableNames`: 指定された名前空間内のテーブルを返します。 +- `GetNamespaceNames`: ScalarDB によって作成された既存の名前空間名を返します。 +- `ImportTable`: ScalarDB によって管理されていない既存のテーブルをインポートします。 +- `Upgrade`: ScalarDB 環境をアップグレードして、最新バージョンの ScalarDB API をサポートします。 + +### エラー処理 + +以下の表は、`DistributedTransactionAdmin` サービスのすべての RPC のステータスコードと `ErrorInfo` の `reason` の可能な値を示しています。 + +| ステータスコード | `ErrorInfo` の `reason` | 説明 | +|---------------------|----------------------------|------------------------------| +| INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| FAILED_PRECONDITION | ILLEGAL_STATE | が無効な状態で呼び出されました。 | +| INTERNAL | INTERNAL_ERROR | 操作が失敗しました。 | + +上記のエラー以外にも、gRPC ライブラリによって返されるエラーが発生する場合があります。このような場合、応答には `ErrorInfo` は含まれません。詳細については、[gRPC ドキュメント](https://grpc.io/docs/guides/error/#error-status-codes)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-sql-grpc-api-guide.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-sql-grpc-api-guide.mdx new file mode 100644 index 00000000..33e0e8a6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-sql-grpc-api-guide.mdx @@ -0,0 +1,185 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster SQL gRPC API ガイド + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +このドキュメントでは、ScalarDB Cluster SQL gRPC API について説明します。 + + + +ScalarDB Cluster SQL は、内部で gRPC API を使用する Java API を提供します。Java または JVM 言語を使用する場合は、ScalarDB Cluster SQL gRPC API を直接使用する代わりに、Java API を使用できます。Java API の詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx)を参照してください。 + +ScalarDB Cluster SQL gRPC API のサービスとメッセージの詳細については、`scalardb-cluster-sql.proto` ファイルの定義を参照してください。商用ライセンスを持つ ScalarDB Cluster ユーザーで、`scalardb-cluster-sql.proto` ファイルが必要な場合は、[お問い合わせ](https://www.scalar-labs.com/support)ください。 + +ScalarDB Cluster SQL gRPC API は、次のサービスで構成されています: + +- `scalardb.cluster.rpc.v1.sql.SqlTransaction`: ScalarDB Cluster SQL のトランザクション機能を提供します。 +- `scalardb.cluster.rpc.v1.sql.SqlTwoPhaseCommitTransaction`: ScalarDB Cluster SQL の2フェーズコミットトランザクション機能を提供します。 +- `scalardb.cluster.rpc.v1.sql.Metadata`: ScalarDB Cluster SQL のメタデータビューを提供します。 + +次のセクションでは、各サービスの使用方法について説明します。 + +## ScalarDB Cluster SQL gRPC API でのエラー処理の概要 + +各サービスの使用方法を説明する前に、このセクションでは、ScalarDB Cluster SQL gRPC API でのエラー処理の仕組みについて説明します。 + +ScalarDB Cluster SQL gRPC API は、エラー処理に [Richer error model](https://grpc.io/docs/guides/error/#richer-error-model) を採用しています。 + +このモデルにより、サーバーは1つ以上の protobuf メッセージとして表現される追加のエラー詳細を返すことができ、クライアントはそれを利用できるようになります。 + +ScalarDB Cluster SQL gRPC API は、[standard set of error message types](https://github.com/googleapis/googleapis/blob/master/google/rpc/error_details.proto) の1つである `google.rpc.ErrorInfo` を使用し、追加のエラー詳細を `ErrorInfo` フィールドに格納します。 + +`ErrorInfo` には次のフィールドがあります: + +- `reason`: エラーの簡単な説明を提供する文字列。次のセクションでは、各サービスにおける `reason` の可能な値について説明します。 +- `domain`: エラーの原因を示す文字列。ScalarDB Cluster SQL gRPC API では、この文字列は常に `com.scalar.db.cluster.sql` に設定されます。 +- `metadata`: 特定のエラーのメタデータのマップ。ScalarDB Cluster SQL gRPC API では、エラーがトランザクションに関連している場合、マップに `transactionId` キーを持つトランザクション ID が配置されます。 + +エラーが発生した場合は、gRPC レスポンスの `google.rpc.Status` から `ErrorInfo` を取得できますが、その方法はプログラミング言語によって異なります。 + +特定のプログラミング言語で `ErrorInfo` を取得する方法については、適切なドキュメントを参照してください。 + +## `SqlTransaction` サービスの使用方法 + +`SqlTransaction` サービスは次の RPC を提供します: + +- `Begin`: トランザクションを開始します。 +- `Execute`: SQL ステートメントを実行します。 +- `Commit`: トランザクションをコミットします。 +- `Rollback`: トランザクションをロールバックします。 + +まず、`Begin` を呼び出してトランザクションを開始します。その後、`Execute` を呼び出してレコードの読み取り、書き込み、削除を行うことができます。トランザクションを終了するには、`Commit` を呼び出します。 + +または、トランザクションがコミットされる前であればいつでも `Rollback` を呼び出してキャンセルできます。`Begin` を呼び出すと、レスポンスでトランザクション ID を受け取ります。この ID を使用して、`Execute`、`Commit`、および `Rollback` を呼び出すことができます。 + +また、トランザクション ID なしで `Execute` を呼び出して、ワンショットトランザクションを実行することもできます。この場合、トランザクションは実行後に自動的にコミットされます。このメソッドを使用して、DDL ステートメントを実行することもできます。サポートされている SQL ステートメントの詳細については、[ScalarDB SQL 文法](../scalardb-sql/grammar.mdx)を参照してください。ただし、`Execute` は DML ステートメントと DDL ステートメントのみをサポートすることに注意してください。 + +`Begin` を呼び出すときに、オプションでトランザクション ID を指定できます。トランザクション ID を指定する場合、ユーザーは ID の一意性を保証する責任があります。トランザクション ID を指定しない場合、ScalarDB Cluster はトランザクションのトランザクション ID を生成します。 + +各 RPC リクエストに対して `RequestHeader` を設定する必要があります。`RequestHeader` には、リクエストのホップ数を制限する `hop_limit` フィールドが含まれています。`hop_limit` の目的は、クラスター内での無限ループを防ぐことです。リクエストが別のクラスターノードに転送されるたびに、`hop_limit` は1つ減ります。`hop_limit` が0に達すると、リクエストは拒否されます。 + +### エラー処理 + +以下の表は、`SqlTransaction` サービスの各 RPC におけるステータスコードと `ErrorInfo` の `reason` の可能な値を示しています。 + +| RPC | ステータスコード | `ErrorInfo` の `reason` | 説明 | +|----------|---------------------|----------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Begin | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Begin | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Begin | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Begin | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Execute | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Execute | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Execute | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合、トランザクションを最初から再試行してください。 | +| Execute | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Execute | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Execute | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Commit | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Commit | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Commit | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Commit | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | UNKNOWN_TRANSACTION_STATUS | トランザクションのステータスは不明です (トランザクションが正常にコミットされたかどうかは不明です)。この状況では、トランザクションが正常にコミットされたかどうかを確認し、そうでない場合は再試行する必要があります。トランザクションステータスを判別する責任はユーザーにあります。トランザクションステータステーブルを作成し、他のアプリケーションデータと連動して更新すると、テーブル自体からトランザクションのステータスを判別できるため、便利です。 | +| Commit | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Rollback | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Rollback | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Rollback | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | + +エラーが発生した場合は、`Begin` の場合を除き、トランザクションをロールバックする必要があります。その後、再試行によって解決できるエラーについては、トランザクションを最初から再試行できます。 + +上記のエラーの他に、gRPC ライブラリによって返されるエラーが発生する場合があります。これらの場合、応答には `ErrorInfo` は含まれません。詳細については、[gRPC ドキュメント](https://grpc.io/docs/guides/error/#error-status-codes)を参照してください。 + +gRPC では、RPC ごとに期限を設定できます。期限を超えると、`DEADLINE_EXCEEDED` エラーが表示されます。一般に、RPC が `Begin` または `Commit` でない限り、この状況ではトランザクションをロールバックする必要があります。`Commit` の場合は `UNKNOWN_TRANSACTION_STATUS` (トランザクションが正常にコミットされたかどうか不明) と同等の状況となり、同様にエラーを処理する必要があります。 + +## `SqlTwoPhaseCommitTransaction` サービスの使用方法 + +`SqlTwoPhaseCommitTransaction` サービスは次の RPC を提供します: + +- `Begin`: トランザクションを開始します。 +- `Join`: トランザクションに参加します。 +- `Execute`: SQL ステートメントを実行します。 +- `Prepare`: トランザクションを準備します。 +- `Validate`: トランザクションを検証します。 +- `Commit`: トランザクションをコミットします。 +- `Rollback`: トランザクションをロールバックします。 + +まず、コーディネータープロセスの場合は、`Begin` を呼び出してトランザクションを開始します。または、参加者プロセスの場合は、`Join` を呼び出して、コーディネーターが既に開始しているトランザクションに参加できます。その後、`Execute` を呼び出してレコードの読み取り、書き込み、および削除を行うことができます。 +トランザクションを確定するには、`Prepare`、`Validate`、`Commit` の順に呼び出します。または、トランザクションがコミットされる前であればいつでも `Rollback` を呼び出してキャンセルできます。`Begin` または `Join` を呼び出すと、応答でトランザクション ID が返されます。これを使用して、`Execute`、`Prepare`、`Validate`、`Commit`、および `Rollback` を呼び出すことができます。 + +また、トランザクション ID なしで `Execute` を呼び出して、ワンショットトランザクションを実行することもできます。この場合、トランザクションは実行後に自動的にコミットされます。この方法を使用して、DDL ステートメントを実行することもできます。 サポートされている SQL ステートメントの詳細については、[ScalarDB SQL 文法](../scalardb-sql/grammar.mdx)を参照してください。ただし、`Execute` は DML ステートメントと DDL ステートメントのみをサポートすることに注意してください。 + +`Begin` を呼び出すときに、オプションでトランザクション ID を指定できます。トランザクション ID を指定する場合、ID の一意性を保証するのはユーザーの責任です。トランザクション ID を指定しない場合、ScalarDB Cluster はトランザクションのトランザクション ID を生成します。 + +RPC リクエストごとに `RequestHeader` を設定する必要があります。`RequestHeader` には、リクエストのホップ数を制限している `hop_limit` フィールドが含まれています。`hop_limit` の目的は、クラスター内での無限ループを防ぐことです。リクエストが別のクラスターノードに転送されるたびに、`hop_limit` は1つ減ります。`hop_limit` が0に達すると、リクエストは拒否されます。 + +### エラー処理 + +次の表は、`SqlTwoPhaseCommitTransaction` サービスの各 RPC のステータスコードと `ErrorInfo` の `reason` の可能な値を示しています。 + +| RPC | ステータスコード | `ErrorInfo` の `reason` | 説明 | +|-------------------|---------------------|----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Begin, Join | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Begin, Join | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Begin, Join | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Begin, Join | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Execute | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Execute | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Execute | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合、トランザクションを最初から再試行してください。 | +| Execute | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Execute | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Execute | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Prepare, Validate | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Prepare, Validate | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Prepare, Validate | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合、トランザクションを最初から再試行してください。 | +| Prepare, Validate | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Prepare, Validate | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Prepare, Validate | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Commit | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Commit | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Commit | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。このエラーは、トランザクションの有効期限が切れたか、クラスタートポロジの変更によりルーティング情報が更新されたことを示します。この場合、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。これは、クラスターノード間のルーティング情報が矛盾している場合に発生します。通常、このエラーは短時間で解決されるため、このエラーが発生してからしばらく経ってから、トランザクションを最初から再試行できます。 | +| Commit | FAILED_PRECONDITION | TRANSACTION_CONFLICT | トランザクションの競合が発生しました。このエラーが発生した場合は、トランザクションを最初から再試行してください。 | +| Commit | INTERNAL | UNKNOWN_TRANSACTION_STATUS | トランザクションのステータスは不明です (トランザクションが正常にコミットされたかどうかは不明です)。この状況では、トランザクションが正常にコミットされたかどうかを確認し、そうでない場合は再試行する必要があります。トランザクションステータスを判別する責任はユーザーにあります。トランザクションステータステーブルを作成し、他のアプリケーションデータと連動して更新すると、テーブル自体からトランザクションのステータスを判別できるため、便利です。 | +| Commit | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | +| Rollback | INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です。 | +| Rollback | FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| Rollback | NOT_FOUND | TRANSACTION_NOT_FOUND | 指定されたトランザクション ID に関連付けられたトランザクションが見つかりませんでした。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | HOP_LIMIT_EXCEEDED | ホップ制限を超えました。ロールバックの場合、トランザクションは自動的に期限切れになるため、トランザクションを再試行する必要はありません。 | +| Rollback | INTERNAL | INTERNAL_ERROR | 一時的または非一時的障害のため、操作が失敗しました。トランザクションを最初から再試行することはできますが、原因が非一時的である場合、トランザクションは失敗する可能性があります。 | + +エラーが発生した場合は、`Begin` または `Join` の場合を除き、トランザクションをロールバックする必要があります。その後、再試行によって解決できるエラーについては、トランザクションを最初から再試行できます。 + +上記のエラーの他に、gRPC ライブラリによって返されるエラーが発生する場合があります。これらの場合、応答には `ErrorInfo` は含まれません。詳細については、[gRPC ドキュメント](https://grpc.io/docs/guides/error/#error-status-codes)を参照してください。 + +gRPC では、各 RPC に期限を設定できます。期限を超えると、`DEADLINE_EXCEEDED` エラーが表示されます。一般に、RPC が `Begin`、`Join`、または `Commit` でない限り、この状況ではトランザクションをロールバックする必要があります。`Commit` の場合は `UNKNOWN_TRANSACTION_STATUS` (トランザクションが正常にコミットされたかどうか不明) と同等の状況となり、同様にエラーを処理する必要があります。 + +## `Metadata` サービスの使用方法 + +`Metadata` サービスは次の RPC を提供します: + +- `GetNamespaceMetadata`: 指定された名前空間の名前空間メタデータを取得します。 +- `ListTableMetadataInNamespace`: 指定された名前空間内のテーブルのテーブルメタデータを取得します。 +- `GetTableMetadata`: 指定されたテーブルのテーブルメタデータを取得します。 +- `ListNamespaceMetadata`: 名前空間メタデータのリストを取得します。 + +### エラー処理 + +以下の表は、`Metadata` サービスのすべての RPC のステータスコードと `ErrorInfo` の `reason` の可能な値を示しています: + +| ステータスコード | `ErrorInfo` の `reason` | 説明 | +|---------------------|----------------------------|---------------------------------| +| INVALID_ARGUMENT | ILLEGAL_ARGUMENT | 要求メッセージ内の引数が無効です | +| FAILED_PRECONDITION | ILLEGAL_STATE | RPC が無効な状態で呼び出されました。 | +| INTERNAL | INTERNAL_ERROR | 操作が失敗しました。 | + +上記のエラー以外にも、gRPC ライブラリによって返されるエラーが発生する場合があります。このような場合、応答には `ErrorInfo` は含まれません。詳細については、[gRPC ドキュメント](https://grpc.io/docs/guides/error/#error-status-codes)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-status-codes.mdx new file mode 100644 index 00000000..f30a0ff9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/scalardb-cluster-status-codes.mdx @@ -0,0 +1,404 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster のエラーコード + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDB Cluster のエラーコードの一覧を示します。 + +## エラーコードのクラスと説明 + +| クラス | 説明 | +|:----------------|:--------------------------| +| `CLUSTER-1xxxx` | ユーザーエラーカテゴリのエラー | +| `CLUSTER-2xxxx` | 同時実行エラーカテゴリのエラー | +| `CLUSTER-3xxxx` | 内部エラーカテゴリのエラー | + +## `CLUSTER-1xxxx` ステータスコード + +### `CLUSTER-10000` + +**メッセージ** + +```markdown +The namespace does not exist. Namespace: %s +``` + +### `CLUSTER-10001` + +**メッセージ** + +```markdown +The table does not exist. Table: %s +``` + +### `CLUSTER-10002` + +**メッセージ** + +```markdown +The user does not exist. User: %s +``` + +### `CLUSTER-10003` + +**メッセージ** + +```markdown +ClusterConfig is not specified +``` + +### `CLUSTER-10004` + +**メッセージ** + +```markdown +The get type is unspecified +``` + +### `CLUSTER-10005` + +**メッセージ** + +```markdown +The get type is unrecognized +``` + +### `CLUSTER-10006` + +**メッセージ** + +```markdown +The value of the column is not set. Column: %s +``` + +### `CLUSTER-10007` + +**メッセージ** + +```markdown +The scan type is unspecified +``` + +### `CLUSTER-10008` + +**メッセージ** + +```markdown +The scan type is unrecognized +``` + +### `CLUSTER-10009` + +**メッセージ** + +```markdown +The order is unspecified +``` + +### `CLUSTER-10010` + +**メッセージ** + +```markdown +The order is unrecognized +``` + +### `CLUSTER-10011` + +**メッセージ** + +```markdown +The clustering order is unspecified +``` + +### `CLUSTER-10012` + +**メッセージ** + +```markdown +The clustering order is unrecognized +``` + +### `CLUSTER-10013` + +**メッセージ** + +```markdown +The put condition type is unspecified +``` + +### `CLUSTER-10014` + +**メッセージ** + +```markdown +The put condition type is unrecognized +``` + +### `CLUSTER-10015` + +**メッセージ** + +```markdown +The delete condition type is unspecified +``` + +### `CLUSTER-10016` + +**メッセージ** + +```markdown +The delete condition type is unrecognized +``` + +### `CLUSTER-10017` + +**メッセージ** + +```markdown +The operator is unspecified +``` + +### `CLUSTER-10018` + +**メッセージ** + +```markdown +The operator is unrecognized +``` + +### `CLUSTER-10019` + +**メッセージ** + +```markdown +The mutation is not set +``` + +### `CLUSTER-10020` + +**メッセージ** + +```markdown +The data type is unspecified +``` + +### `CLUSTER-10021` + +**メッセージ** + +```markdown +The data type is unrecognized +``` + +### `CLUSTER-10022` + +**メッセージ** + +```markdown +The user option is unspecified +``` + +### `CLUSTER-10023` + +**メッセージ** + +```markdown +The user option is unrecognized +``` + +### `CLUSTER-10024` + +**メッセージ** + +```markdown +The privilege is unspecified +``` + +### `CLUSTER-10025` + +**メッセージ** + +```markdown +The privilege is unrecognized +``` + +### `CLUSTER-10026` + +**メッセージ** + +```markdown +The username is not set +``` + +### `CLUSTER-10027` + +**メッセージ** + +```markdown +This feature is not supported in ScalarDB Cluster +``` + +### `CLUSTER-10028` + +**メッセージ** + +```markdown +The property 'scalar.db.contact_points' must not be empty +``` + +### `CLUSTER-10029` + +**メッセージ** + +```markdown +The property 'scalar.db.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' +``` + +### `CLUSTER-10030` + +**メッセージ** + +```markdown +The format of the property 'scalar.db.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' +``` + +### `CLUSTER-10031` + +**メッセージ** + +```markdown +The property 'scalar.db.sql.cluster_mode.contact_points' must not be empty +``` + +### `CLUSTER-10032` + +**メッセージ** + +```markdown +The property 'scalar.db.sql.cluster_mode.contact_points' must be prefixed with 'indirect:' or 'direct-kubernetes:' +``` + +### `CLUSTER-10033` + +**メッセージ** + +```markdown +The format of the property 'scalar.db.sql.cluster_mode.contact_points' for direct-kubernetes client mode is 'direct-kubernetes:/' or 'direct-kubernetes:' +``` + +### `CLUSTER-10034` + +**メッセージ** + +```markdown +ClusterNodeManagerFactory is not specified +``` + +### `CLUSTER-10035` + +**メッセージ** + +```markdown +The update condition type is unspecified +``` + +### `CLUSTER-10036` + +**メッセージ** + +```markdown +The update condition type is unrecognized +``` + +### `CLUSTER-10037` + +**メッセージ** + +```markdown +The two-phase commit interface is not supported +``` + +## `CLUSTER-2xxxx` ステータスコード + +### `CLUSTER-20000` + +**メッセージ** + +```markdown +The hop limit is exceeded +``` + +### `CLUSTER-20001` + +**メッセージ** + +```markdown +A transaction associated with the specified transaction ID is not found. The transaction might have expired, or the cluster node that handled the transaction might have been restarted. Transaction ID: %s +``` + +## `CLUSTER-3xxxx` ステータスコード + +### `CLUSTER-30000` + +**メッセージ** + +```markdown +Getting local IP addresses failed +``` + +### `CLUSTER-30001` + +**メッセージ** + +```markdown +Getting a cluster node object from the cache failed. Cluster Node IP Address: %s +``` + +### `CLUSTER-30002` + +**メッセージ** + +```markdown +The ring is empty +``` + +### `CLUSTER-30003` + +**メッセージ** + +```markdown +Getting the Kubernetes API client failed +``` + +### `CLUSTER-30004` + +**メッセージ** + +```markdown +Reading the Kubernetes endpoint failed. Namespace: %s; Name: %s; Code: %d; Response Headers: %s; Response Body: %s +``` + +### `CLUSTER-30005` + +**メッセージ** + +```markdown +Configuring TLS failed +``` + +### `CLUSTER-30006` + +**メッセージ** + +```markdown +No nearest cluster nodes are found +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx new file mode 100644 index 00000000..76d517c7 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/setup-scalardb-cluster-on-kubernetes-by-using-helm-chart.mdx @@ -0,0 +1,258 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster をローカルにデプロイする方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +このガイドでは、テスト環境向けに特別に設計されたローカル Kubernetes クラスターで Helm Chart を使用して ScalarDB Cluster をデプロイする方法について説明します。 + +## 前提条件 + +- [Docker](https://www.docker.com/get-started/) 20.10以降と [Docker Compose](https://docs.docker.com/compose/install/) V2以降 +- Kubernetes クラスター ([minikube](https://minikube.sigs.k8s.io/docs/start/) または [kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) のいずれか) +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) +- [Helm](https://helm.sh/docs/intro/install/) + + + +## 作成するもの + +以下に示すように、ローカル Kubernetes クラスターに次のコンポーネントをデプロイします。 + +``` ++----------------------------------------------------------------------------------------------------------------------------------------+ +| [Kubernetes クラスター] | +| | +| [ポッド] [ポッド] [ポッド] | +| | +| +-------+ | +| +---> | Envoy | ---+ | +| | +-------+ | | +| | | | +| +---------+ | +-------+ | +--------------------+ | +| | サービス | ---+---> | Envoy | ---+---------> | サービス | ---+ | +| | (Envoy) | | +-------+ | | (ScalarDB Cluster) | | | +| +---------+ | | +--------------------+ | +------------------------+ | +| | +-------+ | | +---> | ScalarDB Cluster ノード | ---+ | +| +---> | Envoy | ---+ | | +------------------------+ | | +| +-------+ | | | | +| | | +------------------------+ | +------------+ | +| +---+---> | ScalarDB Cluster ノード | ---+---> | PostgreSQL | | +| | | +------------------------+ | +------------+ | +| | | | | +| | | +------------------------+ | | +| | +---> | ScalarDB Cluster ノード | ---+ | +| | +------------------------+ | +| +-----------------------------+ | | +| | サービス | ---+ | +| | (ScalarDB Cluster GraphQL) | | +| +-----------------------------+ | +| | ++----------------------------------------------------------------------------------------------------------------------------------------+ +``` + +## ステップ 1. PostgreSQL コンテナを起動する + +ScalarDB Cluster は、バックエンドデータベースとして何らかのデータベースシステムを使用する必要があります。このガイドで使用するデータベースは PostgreSQL です。 + +次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。 + +1. 次のコマンドを実行して、Bitnami Helm リポジトリを追加します。 + + ```console + helm repo add bitnami https://charts.bitnami.com/bitnami + ``` + +2. 次のコマンドを実行して PostgreSQL をデプロイします。 + + ```console + helm install postgresql-scalardb-cluster bitnami/postgresql \ + --set auth.postgresPassword=postgres \ + --set primary.persistence.enabled=false + ``` + +3. 次のコマンドを実行して、PostgreSQL コンテナが実行されているかどうかを確認します。 + + ```console + kubectl get pod + ``` + + 次の出力が表示されます。 + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 17s + ``` + +## ステップ 2. Helm Chart を使用して Kubernetes クラスターに ScalarDB Cluster をデプロイする + +1. 次のコマンドを実行して Scalar Helm Charts リポジトリを追加します。 + + ```console + helm repo add scalar-labs https://scalar-labs.github.io/helm-charts + ``` + +2. ライセンスキーと証明書を環境変数として設定します。ライセンスキーがない場合は、[お問い合わせ](https://www.scalar-labs.com/contact)ください。`` の値の詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx)を参照してください。 + + ```console + SCALAR_DB_CLUSTER_LICENSE_KEY='' + SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM='' + ``` + +3. 次のコマンドを実行して、ScalarDB Cluster のカスタム値ファイル (`scalardb-cluster-custom-values.yaml`) を作成します。 + + ```console + cat << 'EOF' > scalardb-cluster-custom-values.yaml + envoy: + enabled: true + service: + type: "LoadBalancer" + + scalardbCluster: + + image: + repository: "ghcr.io/scalar-labs/scalardb-cluster-node-byol-premium" + + scalardbClusterNodeProperties: | + # ScalarDB Cluster configurations + scalar.db.cluster.membership.type=KUBERNETES + scalar.db.cluster.membership.kubernetes.endpoint.namespace_name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAMESPACE_NAME} + scalar.db.cluster.membership.kubernetes.endpoint.name=${env:SCALAR_DB_CLUSTER_MEMBERSHIP_KUBERNETES_ENDPOINT_NAME} + + # Storage configurations + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgresql-scalardb-cluster.default.svc.cluster.local:5432/postgres + scalar.db.username=${env:SCALAR_DB_CLUSTER_POSTGRES_USERNAME} + scalar.db.password=${env:SCALAR_DB_CLUSTER_POSTGRES_PASSWORD} + + # For ScalarDB Cluster GraphQL tutorial. + scalar.db.graphql.enabled=true + + # For ScalarDB Cluster SQL tutorial. + scalar.db.sql.enabled=true + + ### License key configurations + scalar.db.cluster.node.licensing.license_key=${env:SCALAR_DB_CLUSTER_LICENSE_KEY} + scalar.db.cluster.node.licensing.license_check_cert_pem=${env:SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} + graphql: + enabled: true + service: + type: "LoadBalancer" + + secretName: "scalardb-credentials-secret" + EOF + ``` + +:::note + + このガイドでは、ScalarDB Cluster GraphQL および Envoy のサービスタイプは `LoadBalancer` に設定されています。 + +::: + +4. 資格情報とライセンスキーを含む `scalardb-credentials-secret` という名前のシークレットリソースを作成します。 + + ```console + kubectl create secret generic scalardb-credentials-secret \ + --from-literal=SCALAR_DB_CLUSTER_POSTGRES_USERNAME=postgres \ + --from-literal=SCALAR_DB_CLUSTER_POSTGRES_PASSWORD=postgres \ + --from-literal=SCALAR_DB_CLUSTER_LICENSE_KEY="${SCALAR_DB_CLUSTER_LICENSE_KEY}" \ + --from-file=SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM=<(echo ${SCALAR_DB_CLUSTER_LICENSE_CHECK_CERT_PEM} | sed 's/\\n/\ + /g') \ + -n default + ``` + +5. ScalarDB Cluster のチャートバージョンを設定します。 + + ```console + SCALAR_DB_CLUSTER_VERSION=3.14.1 + SCALAR_DB_CLUSTER_CHART_VERSION=$(helm search repo scalar-labs/scalardb-cluster -l | grep -F "${SCALAR_DB_CLUSTER_VERSION}" | awk '{print $2}' | sort --version-sort -r | head -n 1) + ``` + +6. ScalarDB Cluster をデプロイします。 + + ```console + helm install scalardb-cluster scalar-labs/scalardb-cluster -f scalardb-cluster-custom-values.yaml --version ${SCALAR_DB_CLUSTER_CHART_VERSION} -n default + ``` + +7. ScalarDB Cluster ポッドがデプロイされているかどうかを確認します。 + + ```console + kubectl get pod + ``` + + 次の出力が表示されます。 + + ```console + NAME READY STATUS RESTARTS AGE + postgresql-scalardb-cluster-0 1/1 Running 0 84s + scalardb-cluster-envoy-59899dc588-477tg 1/1 Running 0 35s + scalardb-cluster-envoy-59899dc588-dpvhx 1/1 Running 0 35s + scalardb-cluster-envoy-59899dc588-lv9hx 1/1 Running 0 35s + scalardb-cluster-node-866c756c79-5v2tk 1/1 Running 0 35s + scalardb-cluster-node-866c756c79-9zhq5 1/1 Running 0 35s + scalardb-cluster-node-866c756c79-t6v86 1/1 Running 0 35s + ``` + + ScalarDB Cluster Node Pod と Envoy Pod が適切にデプロイされている場合、各 Pod の `STATUS` は `Running` になります。 + +6. 次のコマンドを実行して、ScalarDB Cluster のサービスリソースがデプロイされているかどうかを確認します。 + + ```console + kubectl get svc + ``` + + 次の出力が表示されます。 + + ```console + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + kubernetes ClusterIP 10.96.0.1 443/TCP 260d + postgresql-scalardb-cluster ClusterIP 10.110.97.40 5432/TCP 86s + postgresql-scalardb-cluster-hl ClusterIP None 5432/TCP 86s + scalardb-cluster-envoy LoadBalancer 10.105.121.51 localhost 60053:30641/TCP 49s + scalardb-cluster-envoy-metrics ClusterIP 10.111.131.189 9001/TCP 49s + scalardb-cluster-graphql LoadBalancer 10.105.74.214 localhost 8080:30514/TCP 49s + scalardb-cluster-headless ClusterIP None 60053/TCP 49s + scalardb-cluster-metrics ClusterIP 10.110.132.22 9080/TCP 49s + ``` + + ScalarDB Cluster と Envoy のサービスリソースが適切にデプロイされている場合、`CLUSTER-IP` 列にプライベート IP アドレスが表示されます。 + + :::note + + `scalardb-cluster-headless` には `CLUSTER-IP` アドレスがありません。 + + ::: + + また、`TYPE` が `LoadBalancer` に設定されている ScalarDB Cluster GraphQL (`scalardb-cluster-graphql`) のサービスリソースと Envoy (`scalardb-cluster-envoy`) のサービスリソースに割り当てられた `EXTERNAL-IP` アドレスも確認できます。 + + また、環境から `LoadBalancer` サービスにアクセスする方法は、Kubernetes ディストリビューションごとに異なります。例: + + - minikube を使用している場合は、[`minikube tunnel` コマンド](https://minikube.sigs.k8s.io/docs/commands/tunnel/)を使用できます。 + - kind を使用している場合は、[Cloud Provider KIND](https://kind.sigs.k8s.io/docs/user/loadbalancer/) を使用できます。 + + `LoadBalancer` サービスにアクセスする方法の詳細については、使用している Kubernetes ディストリビューションの公式ドキュメントを参照してください。 + +## すべてのリソースを削除する + +以下のコマンドを実行すると、このガイドで作成したすべてのリソースを削除できます。 + +```console +helm uninstall scalardb-cluster postgresql-scalardb-cluster +``` + +## 詳細 + +ScalarDB Cluster の他のユースケースについて詳しく知るには、次のチュートリアルをお試しください。 + +- [ScalarDB Cluster をはじめよう](getting-started-with-scalardb-cluster.mdx) +- [ScalarDB Cluster GraphQL をはじめよう](getting-started-with-scalardb-cluster-graphql.mdx) +- [JDBC 経由の ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-jdbc.mdx) +- [Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう](getting-started-with-scalardb-cluster-sql-spring-data-jdbc.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode.mdx new file mode 100644 index 00000000..357f4a02 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode.mdx @@ -0,0 +1,239 @@ +--- +tags: + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Cluster スタンドアロンモード + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; + + + +Kubernetes クラスターをセットアップし、Helm Chart を使用してその上に ScalarDB Cluster をデプロイする代わりに、ScalarDB Cluster をスタンドアロンモードで実行できます。これにより、開発プロセスとテストプロセスが簡素化されます。この主な使用例は、ローカルマシン上の Docker を介して ScalarDB Cluster をスタンドアロンモードで起動し、開発とテストに使用する場合です。 + +ScalarDB Cluster をスタンドアロンモードで実行するには、`scalar.db.cluster.node.standalone_mode.enabled` プロパティを `true` に設定する必要があります。 + +```properties +scalar.db.cluster.node.standalone_mode.enabled=true +``` + +## Docker Compose で ScalarDB Cluster をスタンドアロンモードで実行 + +このセクションでは、Docker Compose で ScalarDB Cluster をスタンドアロンモードで起動する方法について説明します。 + + + +### ScalarDB サンプルリポジトリのクローンを作成する + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、必要なファイルが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/scalardb-cluster-standalone-mode/ +``` + +### ScalarDB Cluster 用にデータベースをセットアップする + +データベースを選択し、指示に従って ScalarDB Cluster 用に構成します。 + +ScalarDB がサポートするデータベースの一覧については、[データベース](../requirements.mdx#databases)を参照してください。 + + + +

    MySQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で MySQL を実行できます。 + + MySQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d mysql + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の MySQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For MySQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:mysql://mysql-1:3306/ + scalar.db.username=root + scalar.db.password=mysql + ``` +
    + +

    PostgreSQL をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で PostgreSQL を実行できます。 + + PostgreSQL を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d postgres + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の PostgreSQL のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For PostgreSQL + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:postgresql://postgres-1:5432/ + scalar.db.username=postgres + scalar.db.password=postgres + ``` +
    + +

    Oracle Database をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Oracle Database を実行できます。 + + Oracle Database を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d oracle + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Oracle データベースのプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Oracle + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:oracle:thin:@//oracle-1:1521/FREEPDB1 + scalar.db.username=SYSTEM + scalar.db.password=Oracle + ``` +
    + +

    SQL Server をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で SQL Server を実行できます。 + + SQL Server を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d sqlserver + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の SQL Server のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For SQL Server + scalar.db.storage=jdbc + scalar.db.contact_points=jdbc:sqlserver://sqlserver-1:1433;encrypt=true;trustServerCertificate=true + scalar.db.username=sa + scalar.db.password=SqlServer22 + ``` +
    + +

    Amazon DynamoDB Local を実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Amazon DynamoDB Local を実行できます。 + + Amazon DynamoDB Local を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d dynamodb + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Amazon DynamoDB Local のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For DynamoDB Local + scalar.db.storage=dynamo + scalar.db.contact_points=sample + scalar.db.username=sample + scalar.db.password=sample + scalar.db.dynamo.endpoint_override=http://dynamodb-1:8000 + ``` +
    + + Azure Cosmos DB for NoSQL を使用するには、Azure アカウントが必要です。Azure アカウントがない場合は、[Azure Cosmos DB アカウントを作成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal#create-account)にアクセスしてください。 + +

    Cosmos DB for NoSQL を構成する

    + + [既定の整合性レベルを構成する](https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/how-to-manage-consistency#configure-the-default-consistency-level)の公式ドキュメントに従って、**既定の整合性レベル** を **強力** に設定します。 + +

    ScalarDB Cluster を構成する

    + + 次の手順では、ローカル環境に JDK が適切にインストールおよび構成されており、Azure で Cosmos DB for NoSQL アカウントが適切に構成されていることを前提としています。 + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。説明に従って、`scalar.db.contact_points` と `scalar.db.password` の値を必ず変更してください。 + + ```properties + # For Cosmos DB + scalar.db.storage=cosmos + scalar.db.contact_points= + scalar.db.password= + ``` + +:::note + +Azure Cosmos DB アカウントの主キーまたはセカンダリキーを `scalar.db.password` の値として使用できます。 + +::: +
    + +

    Cassandra をローカルで実行する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの `docker-compose.yaml` ファイルを使用して、Docker Compose で Apache Cassandra を実行できます。 + + Apache Cassandra を起動するには、次のコマンドを実行します。 + + ```console + docker compose up -d cassandra + ``` + +

    ScalarDB Cluster を構成する

    + + `scalardb-samples/scalardb-cluster-standalone-mode` ディレクトリの **scalardb-cluster-node.properties** ファイルには、ScalarDB Cluster のデータベース構成が含まれています。**scalardb-cluster-node.properties** ファイル内の Cassandra のプロパティのコメントを解除して、構成が次のようになるようにしてください。 + + ```properties + # For Cassandra + scalar.db.storage=cassandra + scalar.db.contact_points=cassandra-1 + scalar.db.username=cassandra + scalar.db.password=cassandra + ``` +
    +
    + +### ライセンスキーを設定する + +構成ファイル `scalardb-cluster-node.properties` で、ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../scalar-licensing/README.mdx) を参照してください。 + +### スタンドアロンモードで ScalarDB Cluster を起動する + +スタンドアロンモードで ScalarDB Cluster を起動するには、次のコマンドを実行します。 + +:::note + +ScalarDB Cluster のその他の設定を変更する場合は、以下のコマンドを実行する前に `scalardb-cluster-node.properties` ファイルを更新してください。 + +::: + +```console +docker compose up -d scalardb-cluster-node +``` + +## ScalarDB Cluster Java API のクライアント構成 + +`indirect` クライアントモードを使用して、スタンドアロンモードで ScalarDB Cluster に接続できます。ScalarDB Cluster Java API のクライアント構成の詳細については、[Java API を使用した ScalarDB Cluster の開発者ガイド](developer-guide-for-scalardb-cluster-with-java-api.mdx) を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode/docker-compose.yaml b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode/docker-compose.yaml new file mode 100644 index 00000000..005e1608 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode/docker-compose.yaml @@ -0,0 +1,28 @@ +version: "3.5" +services: + + postgresql: + container_name: "postgresql" + image: "postgres:15" + ports: + - 5432:5432 + environment: + - POSTGRES_PASSWORD=postgres + healthcheck: + test: ["CMD-SHELL", "pg_isready || exit 1"] + interval: 1s + timeout: 10s + retries: 60 + start_period: 30s + + scalardb-cluster-standalone: + container_name: "scalardb-cluser-node" + image: "ghcr.io/scalar-labs/scalardb-cluster-node:4.0.0-SNAPSHOT" + ports: + - 60053:60053 + - 9080:9080 + volumes: + - ./scalardb-cluster-node.properties:/scalardb-cluster/node/scalardb-cluster-node.properties + depends_on: + postgresql: + condition: service_healthy diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode/scalardb-cluster-node.properties b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode/scalardb-cluster-node.properties new file mode 100644 index 00000000..6ec8f9a0 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-cluster/standalone-mode/scalardb-cluster-node.properties @@ -0,0 +1,5 @@ +scalar.db.storage=jdbc +scalar.db.contact_points=jdbc:postgresql://postgresql:5432/postgres +scalar.db.username=postgres +scalar.db.password=postgres +scalar.db.cluster.node.standalone_mode.enabled=true diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-core-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-core-status-codes.mdx new file mode 100644 index 00000000..2bbe86bf --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-core-status-codes.mdx @@ -0,0 +1,1832 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB Core エラーコード + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDB Core のエラーコードの一覧を示します。 + +## エラーコードのクラスと説明 + +| クラス | 説明 | +|:-------------|:----------------------------------------------| +| `CORE-1xxxx` | ユーザーエラーカテゴリのエラー | +| `CORE-2xxxx` | 同時実行エラーカテゴリのエラー | +| `CORE-3xxxx` | 内部エラーカテゴリのエラー | +| `CORE-4xxxx` | 不明なトランザクションステータスエラーカテゴリのエラー | + +## `CORE-1xxxx` ステータスコード + +### `CORE-10000` + +**メッセージ** + +```markdown +Only a single-column index is supported. Operation: %s +``` + +### `CORE-10001` + +**メッセージ** + +```markdown +The column of the specified index key is not indexed. Operation: %s +``` + +### `CORE-10002` + +**メッセージ** + +```markdown +The index key is not properly specified. Operation: %s +``` + +### `CORE-10003` + +**メッセージ** + +```markdown +Clustering keys cannot be specified when using an index. Operation: %s +``` + +### `CORE-10004` + +**メッセージ** + +```markdown +Orderings cannot be specified when using an index. Operation: %s +``` + +### `CORE-10005` + +**メッセージ** + +```markdown +The limit cannot be negative. Operation: %s +``` + +### `CORE-10006` + +**メッセージ** + +```markdown +Cross-partition scan is not enabled. Operation: %s +``` + +### `CORE-10007` + +**メッセージ** + +```markdown +Cross-partition scan ordering is not enabled. Operation: %s +``` + +### `CORE-10008` + +**メッセージ** + +```markdown +Cross-partition scan filtering is not enabled. Operation: %s +``` + +### `CORE-10009` + +**メッセージ** + +```markdown +The specified projection is not found. Projection: %s, Operation: %s +``` + +### `CORE-10010` + +**メッセージ** + +```markdown +The clustering key boundary is not properly specified. Operation: %s +``` + +### `CORE-10011` + +**メッセージ** + +```markdown +The start clustering key is not properly specified. Operation: %s +``` + +### `CORE-10012` + +**メッセージ** + +```markdown +The end clustering key is not properly specified. Operation: %s +``` + +### `CORE-10013` + +**メッセージ** + +```markdown +Orderings are not properly specified. Operation: %s +``` + +### `CORE-10014` + +**メッセージ** + +```markdown +The specified ordering column is not found. Ordering: %s, Operation: %s +``` + +### `CORE-10015` + +**メッセージ** + +```markdown +The condition is not properly specified. Operation: %s +``` + +### `CORE-10016` + +**メッセージ** + +```markdown +The table does not exist. Table: %s +``` + +### `CORE-10017` + +**メッセージ** + +```markdown +The column value is not properly specified. Column: %s, Operation: %s +``` + +### `CORE-10018` + +**メッセージ** + +```markdown +The mutations are empty +``` + +### `CORE-10019` + +**メッセージ** + +```markdown +Mutations that span multiple partitions are not supported. Mutations: %s +``` + +### `CORE-10020` + +**メッセージ** + +```markdown +The partition key is not properly specified. Operation: %s +``` + +### `CORE-10021` + +**メッセージ** + +```markdown +The clustering key is not properly specified. Operation: %s +``` + +### `CORE-10022` + +**メッセージ** + +```markdown +The authentication and authorization feature is not enabled. To use this feature, you must enable it. Note that this feature is supported only in the ScalarDB Enterprise edition +``` + +### `CORE-10023` + +**メッセージ** + +```markdown +This condition is not allowed for the PutIf operation. Condition: %s +``` + +### `CORE-10024` + +**メッセージ** + +```markdown +This condition is not allowed for the DeleteIf operation. Condition: %s +``` + +### `CORE-10025` + +**メッセージ** + +```markdown +Operator must be LIKE or NOT_LIKE. Operator: %s +``` + +### `CORE-10026` + +**メッセージ** + +```markdown +An escape character must be a string of a single character or an empty string +``` + +### `CORE-10027` + +**メッセージ** + +```markdown +The LIKE pattern must not be null +``` + +### `CORE-10028` + +**メッセージ** + +```markdown +The LIKE pattern must not include only an escape character +``` + +### `CORE-10029` + +**メッセージ** + +```markdown +The LIKE pattern must not end with an escape character +``` + +### `CORE-10030` + +**メッセージ** + +```markdown +The column %s does not exist +``` + +### `CORE-10031` + +**メッセージ** + +```markdown +This operation is not supported when getting records of a database without using an index +``` + +### `CORE-10032` + +**メッセージ** + +```markdown +This operation is not supported when getting records of a database by using an index +``` + +### `CORE-10033` + +**メッセージ** + +```markdown +This operation is not supported when scanning all the records of a database or scanning records of a database by using an index +``` + +### `CORE-10034` + +**メッセージ** + +```markdown +This operation is supported only when scanning records of a database by using an index +``` + +### `CORE-10035` + +**メッセージ** + +```markdown +This operation is not supported when scanning records of a database by using an index +``` + +### `CORE-10037` + +**メッセージ** + +```markdown +This operation is supported only when no conditions are specified. If you want to modify a condition, please use clearConditions() to remove all existing conditions first +``` + +### `CORE-10038` + +**メッセージ** + +```markdown +One or more columns must be specified. +``` + +### `CORE-10039` + +**メッセージ** + +```markdown +One or more partition keys must be specified. +``` + +### `CORE-10040` + +**メッセージ** + +```markdown +The column definition must be specified since %s is specified as a partition key +``` + +### `CORE-10041` + +**メッセージ** + +```markdown +The column definition must be specified since %s is specified as a clustering key +``` + +### `CORE-10042` + +**メッセージ** + +```markdown +Invalid ID specified. ID: %d +``` + +### `CORE-10043` + +**メッセージ** + +```markdown +The transaction is not active. Status: %s +``` + +### `CORE-10044` + +**メッセージ** + +```markdown +The transaction has already been committed or rolled back. Status: %s +``` + +### `CORE-10045` + +**メッセージ** + +```markdown +The transaction has not been prepared. Status: %s +``` + +### `CORE-10046` + +**メッセージ** + +```markdown +The transaction has not been prepared or validated. Status: %s +``` + +### `CORE-10047` + +**メッセージ** + +```markdown +The transaction already exists +``` + +### `CORE-10048` + +**メッセージ** + +```markdown +A transaction associated with the specified transaction ID is not found. The transaction might have expired +``` + +### `CORE-10049` + +**メッセージ** + +```markdown +%s is the system namespace name +``` + +### `CORE-10050` + +**メッセージ** + +```markdown +The namespace already exists. Namespace: %s +``` + +### `CORE-10051` + +**メッセージ** + +```markdown +The namespace does not exist. Namespace: %s +``` + +### `CORE-10052` + +**メッセージ** + +```markdown +The table already exists. Table: %s +``` + +### `CORE-10053` + +**メッセージ** + +```markdown +The namespace is not empty. Namespace: %s; Tables in the namespace: %s +``` + +### `CORE-10054` + +**メッセージ** + +```markdown +The column does not exist. Table: %s; Column: %s +``` + +### `CORE-10055` + +**メッセージ** + +```markdown +The index already exists. Table: %s; Column: %s +``` + +### `CORE-10056` + +**メッセージ** + +```markdown +The index does not exist. Table: %s; Column: %s +``` + +### `CORE-10057` + +**メッセージ** + +```markdown +The column already exists. Table: %s; Column: %s +``` + +### `CORE-10058` + +**メッセージ** + +```markdown +The operation does not have the target namespace or table name. Operation: %s +``` + +### `CORE-10059` + +**メッセージ** + +```markdown +The specified value of the property '%s' is not a number. Value: %s +``` + +### `CORE-10060` + +**メッセージ** + +```markdown +The specified value of the property '%s' is not a boolean. Value: %s +``` + +### `CORE-10061` + +**メッセージ** + +```markdown +Reading the file failed. File: %s +``` + +### `CORE-10062` + +**メッセージ** + +```markdown +The property 'scalar.db.cross_partition_scan.enabled' must be set to true to use cross-partition scan with filtering or ordering +``` + +### `CORE-10063` + +**メッセージ** + +```markdown +This column value is out of range for BigInt. Value: %s +``` + +### `CORE-10064` + +**メッセージ** + +```markdown +This type is not supported. Name: %s, Type: %s +``` + +### `CORE-10065` + +**メッセージ** + +```markdown +Storage '%s' is not found +``` + +### `CORE-10066` + +**メッセージ** + +```markdown +Transaction manager '%s' is not found +``` + +### `CORE-10068` + +**メッセージ** + +```markdown +Please use scan() for non-exact match selection. Operation: %s +``` + +### `CORE-10069` + +**メッセージ** + +```markdown +Import-related functionality is not supported in Cassandra +``` + +### `CORE-10070` + +**メッセージ** + +```markdown +The %s network strategy does not exist +``` + +### `CORE-10071` + +**メッセージ** + +```markdown +The property 'scalar.db.contact_port' must be greater than or equal to zero +``` + +### `CORE-10073` + +**メッセージ** + +```markdown +The BLOB type is not supported for clustering keys in Cosmos DB. Column: %s +``` + +### `CORE-10074` + +**メッセージ** + +```markdown +Import-related functionality is not supported in Cosmos DB +``` + +### `CORE-10075` + +**メッセージ** + +```markdown +The property 'scalar.db.contact_points' must not be empty +``` + +### `CORE-10076` + +**メッセージ** + +```markdown +Cosmos DB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BLOB type in conditions. Mutation: %s +``` + +### `CORE-10077` + +**メッセージ** + +```markdown +The specified consistency level is not supported. Consistency level: %s +``` + +### `CORE-10078` + +**メッセージ** + +```markdown +0x00 bytes are not accepted in BLOB values in DESC order +``` + +### `CORE-10079` + +**メッセージ** + +```markdown +Cannot encode a Text value that contains '\u0000' +``` + +### `CORE-10081` + +**メッセージ** + +```markdown +An index column cannot be set to null or an empty value for Text or Blob in DynamoDB. Operation: %s +``` + +### `CORE-10082` + +**メッセージ** + +```markdown +DynamoDB supports only EQ, NE, IS_NULL, and IS_NOT_NULL operations for the BOOLEAN type in conditions. Mutation: %s +``` + +### `CORE-10083` + +**メッセージ** + +```markdown +Nested multi-storage definitions are not supported. Storage: %s +``` + +### `CORE-10084` + +**メッセージ** + +```markdown +Storage not found. Storage: %s +``` + +### `CORE-10085` + +**メッセージ** + +```markdown +The namespace name is not acceptable. Namespace: %s +``` + +### `CORE-10086` + +**メッセージ** + +```markdown +The table name is not acceptable. Table: %s +``` + +### `CORE-10087` + +**メッセージ** + +```markdown +Importing tables is not allowed in the RDB engine. RDB engine: %s +``` + +### `CORE-10088` + +**メッセージ** + +```markdown +The %s table must have a primary key +``` + +### `CORE-10089` + +**メッセージ** + +```markdown +The RDB engine is not supported. JDBC connection URL: %s +``` + +### `CORE-10090` + +**メッセージ** + +```markdown +Data type %s(%d) is not supported: %s +``` + +### `CORE-10091` + +**メッセージ** + +```markdown +Data type %s is not supported: %s +``` + +### `CORE-10092` + +**メッセージ** + +```markdown +Getting a transaction state is not supported in JDBC transactions +``` + +### `CORE-10093` + +**メッセージ** + +```markdown +Rolling back a transaction is not supported in JDBC transactions +``` + +### `CORE-10094` + +**メッセージ** + +```markdown +Coordinator tables already exist +``` + +### `CORE-10095` + +**メッセージ** + +```markdown +Coordinator tables do not exist +``` + +### `CORE-10096` + +**メッセージ** + +```markdown +The namespace %s is reserved. Any operations on this namespace are not allowed +``` + +### `CORE-10097` + +**メッセージ** + +```markdown +Mutating transaction metadata columns is not allowed. Table: %s; Column: %s +``` + +### `CORE-10098` + +**メッセージ** + +```markdown +A %s condition is not allowed on Put operations +``` + +### `CORE-10099` + +**メッセージ** + +```markdown +A %s condition is not allowed on Delete operations +``` + +### `CORE-10100` + +**メッセージ** + +```markdown +The condition is not allowed to target transaction metadata columns. Column: %s +``` + +### `CORE-10101` + +**メッセージ** + +```markdown +The column '%s' is reserved as transaction metadata +``` + +### `CORE-10102` + +**メッセージ** + +```markdown +Non-primary key columns with the 'before_' prefix, '%s', are reserved as transaction metadata +``` + +### `CORE-10103` + +**メッセージ** + +```markdown +Put cannot have a condition when the target record is unread and implicit pre-read is disabled. Please read the target record beforehand or enable implicit pre-read: %s +``` + +### `CORE-10104` + +**メッセージ** + +```markdown +Writing already-deleted data is not allowed +``` + +### `CORE-10105` + +**メッセージ** + +```markdown +Getting data neither in the read set nor the delete set is not allowed +``` + +### `CORE-10106` + +**メッセージ** + +```markdown +Reading already-written data is not allowed +``` + +### `CORE-10107` + +**メッセージ** + +```markdown +The transaction is not validated. When using the EXTRA_READ serializable strategy, you need to call validate() before calling commit() +``` + +### `CORE-10108` + +**メッセージ** + +```markdown +DynamoDB cannot batch more than 100 mutations at once +``` + +### `CORE-10109` + +**メッセージ** + +```markdown +The partition keys of the table %s.%s were modified, but altering partition keys is not supported +``` + +### `CORE-10110` + +**メッセージ** + +```markdown +The clustering keys of the table %s.%s were modified, but altering clustering keys is not supported +``` + +### `CORE-10111` + +**メッセージ** + +```markdown +The clustering ordering of the table %s.%s were modified, but altering clustering ordering is not supported +``` + +### `CORE-10112` + +**メッセージ** + +```markdown +The column %s of the table %s.%s has been deleted. Column deletion is not supported when altering a table +``` + +### `CORE-10113` + +**メッセージ** + +```markdown +The data type of the column %s of the table %s.%s was modified, but altering data types is not supported +``` + +### `CORE-10114` + +**メッセージ** + +```markdown +Specifying the '--schema-file' option is required when using the '--repair-all' option +``` + +### `CORE-10115` + +**メッセージ** + +```markdown +Specifying the '--schema-file' option is required when using the '--alter' option +``` + +### `CORE-10116` + +**メッセージ** + +```markdown +Specifying the '--schema-file' option is required when using the '--import' option +``` + +### `CORE-10117` + +**メッセージ** + +```markdown +Specifying the '--coordinator' option with the '--import' option is not allowed. Create Coordinator tables separately +``` + +### `CORE-10118` + +**メッセージ** + +```markdown +Reading the configuration file failed. File: %s +``` + +### `CORE-10119` + +**メッセージ** + +```markdown +Reading the schema file failed. File: %s +``` + +### `CORE-10120` + +**メッセージ** + +```markdown +Parsing the schema JSON failed. Details: %s +``` + +### `CORE-10121` + +**メッセージ** + +```markdown +The table name must contain the namespace and the table. Table: %s +``` + +### `CORE-10122` + +**メッセージ** + +```markdown +The partition key must be specified. Table: %s +``` + +### `CORE-10123` + +**メッセージ** + +```markdown +Invalid clustering-key format. The clustering key must be in the format of 'column_name' or 'column_name ASC/DESC'. Table: %s; Clustering key: %s +``` + +### `CORE-10124` + +**メッセージ** + +```markdown +Columns must be specified. Table: %s +``` + +### `CORE-10125` + +**メッセージ** + +```markdown +Invalid column type. Table: %s; Column: %s; Type: %s +``` + +### `CORE-10126` + +**メッセージ** + +```markdown +The mutation type is not supported. Only the Put or Delete type is supported. Mutation: %s +``` + +### `CORE-10127` + +**メッセージ** + +```markdown +This condition is not allowed for the UpdateIf operation. Condition: %s +``` + +### `CORE-10128` + +**メッセージ** + +```markdown +Cross-partition scan with ordering is not supported in Cassandra +``` + +### `CORE-10129` + +**メッセージ** + +```markdown +Cross-partition scan with ordering is not supported in Cosmos DB +``` + +### `CORE-10130` + +**メッセージ** + +```markdown +Cross-partition scan with ordering is not supported in DynamoDB +``` + +### `CORE-10131` + +**メッセージ** + +```markdown +The directory '%s' does not have write permissions. Please ensure that the current user has write access to the directory. +``` + +### `CORE-10132` + +**メッセージ** + +```markdown +Failed to create the directory '%s'. Please check if you have sufficient permissions and if there are any file system restrictions. Details: %s +``` + +### `CORE-10133` + +**メッセージ** + +```markdown +Directory path cannot be null or empty. +``` + +### `CORE-10134` + +**メッセージ** + +```markdown +No file extension was found on the provided file name %s. +``` + +### `CORE-10135` + +**メッセージ** + +```markdown +Invalid file extension: %s. Allowed extensions are: %s +``` + +### `CORE-10136` + +**メッセージ** + +```markdown +Getting a transaction state is not supported in single CRUD operation transactions +``` + +### `CORE-10137` + +**メッセージ** + +```markdown +Rolling back a transaction is not supported in single CRUD operation transactions +``` + +### `CORE-10138` + +**メッセージ** + +```markdown +Multiple mutations are not supported in single CRUD operation transactions +``` + +### `CORE-10139` + +**メッセージ** + +```markdown +Beginning a transaction is not allowed in single CRUD operation transactions +``` + +### `CORE-10140` + +**メッセージ** + +```markdown +Resuming a transaction is not allowed in single CRUD operation transactions +``` + +### `CORE-10141` + +**メッセージ** + +```markdown +Using the group commit feature on the Coordinator table with a two-phase commit interface is not allowed +``` + +### `CORE-10142` + +**メッセージ** + +```markdown +This operation is supported only when no conditions are specified. If you want to modify a condition, please use clearConditions() to remove all existing conditions first +``` + +### `CORE-10143` + +**メッセージ** + +```markdown +The encryption feature is not enabled. To encrypt data at rest, you must enable this feature. Note that this feature is supported only in the ScalarDB Enterprise edition +``` + +### `CORE-10144` + +**メッセージ** + +```markdown +The variable key column size must be greater than or equal to 64 +``` + +### `CORE-10145` + +**メッセージ** + +```markdown +The value of the column %s in the primary key contains an illegal character. Primary-key columns must not contain any of the following characters in Cosmos DB: ':', '/', '\', '#', '?'. Value: %s +``` + +### `CORE-10146` + +**メッセージ** + +```markdown +Inserting already-written data is not allowed +``` + +### `CORE-10147` + +**メッセージ** + +```markdown +Deleting already-inserted data is not allowed +``` + +### `CORE-10148` + +**メッセージ** + +```markdown +Invalid key: Column %s does not exist in the table %s in namespace %s. +``` + +### `CORE-10149` + +**メッセージ** + +```markdown +Invalid base64 encoding for blob value for column %s in table %s in namespace %s +``` + +### `CORE-10150` + +**メッセージ** + +```markdown +Invalid number specified for column %s in table %s in namespace %s +``` + +### `CORE-10151` + +**メッセージ** + +```markdown +Method null argument not allowed +``` + +## `CORE-2xxxx` ステータスコード + +### `CORE-20000` + +**メッセージ** + +```markdown +No mutation was applied +``` + +### `CORE-20001` + +**メッセージ** + +```markdown +Logging failed in the batch +``` + +### `CORE-20002` + +**メッセージ** + +```markdown +The operation failed in the batch with type %s +``` + +### `CORE-20003` + +**メッセージ** + +```markdown +An error occurred in the batch. Details: %s +``` + +### `CORE-20004` + +**メッセージ** + +```markdown +A Paxos phase in the CAS operation failed +``` + +### `CORE-20005` + +**メッセージ** + +```markdown +The learn phase in the CAS operation failed +``` + +### `CORE-20006` + +**メッセージ** + +```markdown +A simple write operation failed +``` + +### `CORE-20007` + +**メッセージ** + +```markdown +An error occurred in the mutation. Details: %s +``` + +### `CORE-20008` + +**メッセージ** + +```markdown +A RetryWith error occurred in the mutation. Details: %s +``` + +### `CORE-20009` + +**メッセージ** + +```markdown +A transaction conflict occurred in the mutation. Details: %s +``` + +### `CORE-20010` + +**メッセージ** + +```markdown +A transaction conflict occurred in the mutation. Details: %s +``` + +### `CORE-20011` + +**メッセージ** + +```markdown +A conflict occurred. Please try restarting the transaction. Details: %s +``` + +### `CORE-20012` + +**メッセージ** + +```markdown +The %s condition of the %s operation is not satisfied. Targeting column(s): %s +``` + +### `CORE-20013` + +**メッセージ** + +```markdown +The record being prepared already exists +``` + +### `CORE-20014` + +**メッセージ** + +```markdown +A conflict occurred when preparing records +``` + +### `CORE-20015` + +**メッセージ** + +```markdown +The committing state in the coordinator failed. The transaction has been aborted +``` + +### `CORE-20016` + +**メッセージ** + +```markdown +A conflict occurred during implicit pre-read +``` + +### `CORE-20017` + +**メッセージ** + +```markdown +This record needs to be recovered +``` + +### `CORE-20018` + +**メッセージ** + +```markdown +The record does not exist, so the %s condition is not satisfied +``` + +### `CORE-20019` + +**メッセージ** + +```markdown +The record exists, so the %s condition is not satisfied +``` + +### `CORE-20020` + +**メッセージ** + +```markdown +The condition on the column '%s' is not satisfied +``` + +### `CORE-20021` + +**メッセージ** + +```markdown +Reading empty records might cause a write skew anomaly, so the transaction has been aborted for safety purposes +``` + +### `CORE-20022` + +**メッセージ** + +```markdown +An anti-dependency was found. The transaction has been aborted +``` + +### `CORE-20023` + +**メッセージ** + +```markdown +A transaction conflict occurred in the Insert operation +``` + +### `CORE-20024` + +**メッセージ** + +```markdown +The %s condition of the %s operation is not satisfied. Targeting column(s): %s +``` + +### `CORE-20025` + +**メッセージ** + +```markdown +A transaction conflict occurred in the Insert operation +``` + +## `CORE-3xxxx` ステータスコード + +### `CORE-30000` + +**メッセージ** + +```markdown +Creating the namespace failed. Namespace: %s +``` + +### `CORE-30001` + +**メッセージ** + +```markdown +Dropping the namespace failed. Namespace: %s +``` + +### `CORE-30002` + +**メッセージ** + +```markdown +Creating the table failed. Table: %s +``` + +### `CORE-30003` + +**メッセージ** + +```markdown +Dropping the table failed. Table: %s +``` + +### `CORE-30004` + +**メッセージ** + +```markdown +Truncating the table failed. Table: %s +``` + +### `CORE-30005` + +**メッセージ** + +```markdown +Creating the index failed. Table: %s, Column: %s +``` + +### `CORE-30006` + +**メッセージ** + +```markdown +Dropping the index failed. Table: %s, Column: %s +``` + +### `CORE-30007` + +**メッセージ** + +```markdown +Getting the table metadata failed. Table: %s +``` + +### `CORE-30008` + +**メッセージ** + +```markdown +Getting the table names in the namespace failed. Namespace: %s +``` + +### `CORE-30009` + +**メッセージ** + +```markdown +Checking the namespace existence failed. Namespace: %s +``` + +### `CORE-30010` + +**メッセージ** + +```markdown +Checking the table existence failed. Table: %s +``` + +### `CORE-30011` + +**メッセージ** + +```markdown +Checking the index existence failed. Table: %s; Column: %s +``` + +### `CORE-30012` + +**メッセージ** + +```markdown +Repairing the namespace failed. Namespace: %s +``` + +### `CORE-30013` + +**メッセージ** + +```markdown +Repairing the table failed. Table: %s +``` + +### `CORE-30014` + +**メッセージ** + +```markdown +Adding a new column to the table failed. Table: %s; Column: %s; ColumnType: %s +``` + +### `CORE-30015` + +**メッセージ** + +```markdown +Getting the namespace names failed +``` + +### `CORE-30016` + +**メッセージ** + +```markdown +Getting the table metadata of the table being imported failed. Table: %s +``` + +### `CORE-30017` + +**メッセージ** + +```markdown +Importing the table failed. Table: %s +``` + +### `CORE-30018` + +**メッセージ** + +```markdown +Adding the raw column to the table failed. Table: %s; Column: %s; ColumnType: %s +``` + +### `CORE-30019` + +**メッセージ** + +```markdown +Upgrading the ScalarDB environment failed +``` + +### `CORE-30020` + +**メッセージ** + +```markdown +Something wrong because WriteType is neither CAS nor SIMPLE +``` + +### `CORE-30021` + +**メッセージ** + +```markdown +An error occurred in the selection. Details: %s +``` + +### `CORE-30022` + +**メッセージ** + +```markdown +An error occurred in the mutation. Details: %s +``` + +### `CORE-30023` + +**メッセージ** + +```markdown +An error occurred in the selection. Details: %s +``` + +### `CORE-30024` + +**メッセージ** + +```markdown +An error occurred in the mutation. Details: %s +``` + +### `CORE-30025` + +**メッセージ** + +```markdown +An error occurred in the selection. Details: %s +``` + +### `CORE-30026` + +**メッセージ** + +```markdown +An error occurred in the mutation. Details: %s +``` + +### `CORE-30027` + +**メッセージ** + +```markdown +An error occurred in the selection. Details: %s +``` + +### `CORE-30028` + +**メッセージ** + +```markdown +Fetching the next result failed +``` + +### `CORE-30029` + +**メッセージ** + +```markdown +Rolling back the transaction failed. Details: %s +``` + +### `CORE-30030` + +**メッセージ** + +```markdown +Committing the transaction failed. Details: %s +``` + +### `CORE-30031` + +**メッセージ** + +```markdown +The Get operation failed. Details: %s +``` + +### `CORE-30032` + +**メッセージ** + +```markdown +The Scan operation failed. Details: %s +``` + +### `CORE-30033` + +**メッセージ** + +```markdown +The Put operation failed. Details: %s +``` + +### `CORE-30034` + +**メッセージ** + +```markdown +The Delete operation failed. Details: %s +``` + +### `CORE-30035` + +**メッセージ** + +```markdown +Beginning a transaction failed. Details: %s +``` + +### `CORE-30036` + +**メッセージ** + +```markdown +Preparing records failed +``` + +### `CORE-30037` + +**メッセージ** + +```markdown +Validation failed +``` + +### `CORE-30038` + +**メッセージ** + +```markdown +Executing implicit pre-read failed +``` + +### `CORE-30039` + +**メッセージ** + +```markdown +Reading a record from the underlying storage failed +``` + +### `CORE-30040` + +**メッセージ** + +```markdown +Scanning records from the underlying storage failed +``` + +### `CORE-30041` + +**メッセージ** + +```markdown +Rollback failed because the transaction has already been committed +``` + +### `CORE-30042` + +**メッセージ** + +```markdown +Rollback failed +``` + +### `CORE-30043` + +**メッセージ** + +```markdown +The Insert operation failed. Details: %s +``` + +### `CORE-30044` + +**メッセージ** + +```markdown +The Upsert operation failed. Details: %s +``` + +### `CORE-30045` + +**メッセージ** + +```markdown +The Update operation failed. Details: %s +``` + +## `CORE-4xxxx` ステータスコード + +### `CORE-40000` + +**メッセージ** + +```markdown +Rolling back the transaction failed. Details: %s +``` + +### `CORE-40001` + +**メッセージ** + +```markdown +Committing state failed with NoMutationException, but the coordinator status does not exist +``` + +### `CORE-40002` + +**メッセージ** + +```markdown +The state cannot be retrieved +``` + +### `CORE-40003` + +**メッセージ** + +```markdown +The coordinator status is unknown +``` + +### `CORE-40004` + +**メッセージ** + +```markdown +Aborting state failed with NoMutationException, but the coordinator status does not exist +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-graphql/how-to-run-two-phase-commit-transaction.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-graphql/how-to-run-two-phase-commit-transaction.mdx new file mode 100644 index 00000000..47a1aa5d --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-graphql/how-to-run-two-phase-commit-transaction.mdx @@ -0,0 +1,143 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# 2フェーズコミットトランザクションを実行する方法 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +ScalarDB GraphQL は、[2フェーズコミットトランザクション](../two-phase-commit-transactions.mdx)と呼ばれるトランザクションをサポートしています。 +2フェーズコミットトランザクションを使用すると、複数のプロセス/アプリケーション (マイクロサービスなど) にまたがるトランザクションを実行できます。 +トランザクションを開始するアプリケーションを「コーディネーター」と名付け、トランザクションに参加するアプリケーションを「参加者」と名付けます。 +すべての2フェーズコミット操作では、ミューテーションまたはクエリ操作に `@twoPhaseCommit` ディレクティブをアノテーションする必要があります。以下は、このような操作の説明です。 + +## トランザクションを開始する + +トランザクションを開始するには、パラメータを設定せずに `@twoPhaseCommit` ディレクティブを追加します。 + +```graphql +query some_query @twoPhaseCommit { + # some query +} +``` + +開始されたトランザクションのトランザクション ID は、結果の一部である拡張オブジェクトで返されます。 + +```json +{ + "data": { + ... + }, + "extensions": { + "transaction": { + "id": "the_transaction_id" + } + } +} +``` + +## トランザクションに参加する (参加者用) + +参加者アプリケーションで、コーディネーターアプリケーションによって開始されたトランザクションに参加するには、トランザクション ID を `id` パラメータで設定し、`join` パラメータを true に設定します。 + +```graphql +query some_query_from_participant @twoPhaseCommit(id:"the_transaction_id", join:true) { + # some query +} +``` + +## トランザクションを再開する + +開始または結合されたトランザクションで操作の実行を継続するには、`@twoPhaseCommit` ディレクティブの `id` パラメータにトランザクション ID 値を設定します。 + +```graphql +mutation some_mutation @twoPhaseCommit(id:"the_transaction_id") { + # some mutation +} +``` + +## トランザクションの準備、検証、コミット + +クエリと変更操作が完了したら、トランザクションをコミットする必要があります。 + +よく知られている2フェーズコミットプロトコルと同様に、準備とコミットの2つのフェーズがあります。 + +まず、すべてのコーディネータ/参加者アプリケーションでトランザクションを準備し、次にすべてのコーディネータ/参加者アプリケーションでトランザクションをコミットする必要があります。 + +Consensus Commit トランザクションマネージャーが `SERIALIZABLE` 分離レベルで `EXTRA_READ` シリアル化可能戦略を使用して設定されている場合、準備フェーズとコミットフェーズの間に追加の「検証」フェーズが必要です。 + +準備とコミットと同様に、検証はすべてのコーディネータ/参加者アプリケーションで実行する必要があります。 + +準備、検証、コミットは、すべてのコーディネータ/参加者アプリケーションで並行して実行できます。 + +### トランザクションを準備する + +2フェーズコミットトランザクションを準備するには、2つのオプションがあります。 + +#### ディレクティブパラメータ経由 + +ディレクティブの `prepare` パラメータを使用すると、操作フィールドの実行後に、エラーが発生しない場合にのみトランザクションが準備されます。 + +```graphql +mutation some_mutation_then_prepare_tx @twoPhaseCommit(id:"the_transaction_id", prepare:true) { + mutation1 : ... + mutation2 : ... + # the transaction will be prepared after the execution of the mutation1 and mutation2 fields +} +``` + +#### ミューテーションフィールド経由 + +ミューテーション操作に `prepare` フィールドを追加します。このフィールドはトランザクションの準備を開始します。 + +```graphql +mutation prepare_tx @twoPhaseCommit(id:"the_transaction_id") { + prepare +} +``` + +### トランザクションを検証する + +ミューテーション操作に `validate` フィールドを追加します。このフィールドはトランザクションの検証をトリガーします。 + +```graphql +mutation validate_tx @twoPhaseCommit(id:"the_transaction_id") { + validate +} +``` + +### トランザクションをコミットする + +ミューテーション操作に `commit` フィールドを追加します。このフィールドはトランザクションのコミットをトリガーします。 + +```graphql +mutation commit_tx @twoPhaseCommit(id:"the_transaction_id") { + commit +} +``` + +### トランザクションのアボート/ロールバック + +トランザクションを明示的にアボート/ロールバックする必要がある場合は、`abort` または `rollback` ミューテーションフィールドを互換的に使用できます (どちらも効果と使用法は同じです)。他の操作と混在させることはできないため、単独で指定する必要があります。 + +```graphql +mutation AbortTx @twoPhaseCommit(id: "the_transaction_id") { + abort +} +``` + +または + +```graphql +mutation RollbackTx @twoPhaseCommit(id: "the_transaction_id") { + rollback +} +``` + +## エラー処理 + +`@twoPhaseCommit` 操作によって例外がスローされた場合、ScalarDB GraphQL はトランザクションを回復するロールバックプロシージャをトリガーします。2フェーズコミットトランザクションでの例外処理の詳細については、[ScalarDB 2フェーズコミットトランザクションの例外処理ガイド](../two-phase-commit-transactions.mdx#handle-exceptions)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-graphql/scalardb-graphql-status-codes.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-graphql/scalardb-graphql-status-codes.mdx new file mode 100644 index 00000000..1535c5f4 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-graphql/scalardb-graphql-status-codes.mdx @@ -0,0 +1,245 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB GraphQL エラーコード + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このページでは、ScalarDB GraphQL のエラーコードの一覧を示します。 + +## エラーコードのクラスと説明 + +| クラス | 説明 | +|:----------------|:--------------------------| +| `GRAPHQL-1xxxx` | ユーザーエラーカテゴリのエラー | + +## `GRAPHQL-1xxxx` ステータスコード + +### `GRAPHQL-10000` + +**メッセージ** + +```markdown +A long value was expected +``` + +### `GRAPHQL-10001` + +**メッセージ** + +```markdown +The value is out of range for BigIntValue +``` + +### `GRAPHQL-10002` + +**メッセージ** + +```markdown +A long, integer, or string value was expected +``` + +### `GRAPHQL-10003` + +**メッセージ** + +```markdown +The AST type `IntValue` was expected +``` + +### `GRAPHQL-10004` + +**メッセージ** + +```markdown +A float value was expected +``` + +### `GRAPHQL-10005` + +**メッセージ** + +```markdown +An integer or float value was expected +``` + +### `GRAPHQL-10006` + +**メッセージ** + +```markdown +The AST type `IntValue` or `FloatValue` was expected +``` + +### `GRAPHQL-10007` + +**メッセージ** + +```markdown +The type is not supported. Type: %s +``` + +### `GRAPHQL-10008` + +**メッセージ** + +```markdown +The field `%s` requires a `@transaction` or `@twoPhaseCommit` directive with proper arguments +``` + +### `GRAPHQL-10009` + +**メッセージ** + +```markdown +The field `%s` cannot be used together with other fields +``` + +### `GRAPHQL-10010` + +**メッセージ** + +```markdown +The `@twoPhaseCommit` directive with the `id` argument is required to `%s` the transaction +``` + +### `GRAPHQL-10011` + +**メッセージ** + +```markdown +`%s` and `prepare` cannot be run simultaneously +``` + +### `GRAPHQL-10012` + +**メッセージ** + +```markdown +`%s` and `join` cannot be run simultaneously +``` + +### `GRAPHQL-10013` + +**メッセージ** + +```markdown +The `@transaction` directive with the `id` argument is required to `%s` the transaction +``` + +### `GRAPHQL-10014` + +**メッセージ** + +```markdown +`%s` and `commit` cannot be run simultaneously +``` + +### `GRAPHQL-10015` + +**メッセージ** + +```markdown +An object cannot be annotated with both `@transaction` and `@twoPhaseCommit` directives +``` + +### `GRAPHQL-10016` + +**メッセージ** + +```markdown +The `join` argument of the `@twoPhaseCommit` directive requires a transaction `id` argument +``` + +### `GRAPHQL-10017` + +**メッセージ** + +```markdown +`%s` requires the mutation object to be annotated with a `@twoPhaseCommit` directive +``` + +### `GRAPHQL-10018` + +**メッセージ** + +```markdown +The `%s` clustering key must have only one of the following: %s +``` + +### `GRAPHQL-10019` + +**メッセージ** + +```markdown +A string variable is expected but got %s +``` + +### `GRAPHQL-10020` + +**メッセージ** + +```markdown +Unexpected value of id: %s +``` + +### `GRAPHQL-10021` + +**メッセージ** + +```markdown +A Boolean variable is expected but got %s +``` + +### `GRAPHQL-10022` + +**メッセージ** + +```markdown +Unexpected value of %s: %s +``` + +### `GRAPHQL-10023` + +**メッセージ** + +```markdown +Invalid column. Column: %s; Type: %s +``` + +### `GRAPHQL-10024` + +**メッセージ** + +```markdown +Unexpected value of type: %s +``` + +### `GRAPHQL-10025` + +**メッセージ** + +```markdown +Only one of the following can be specified: %s +``` + +### `GRAPHQL-10026` + +**メッセージ** + +```markdown +Unexpected mutation field: %s +``` + +### `GRAPHQL-10027` + +**メッセージ** + +```markdown +Invalid type: %s +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/README.mdx new file mode 100644 index 00000000..39d11742 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/README.mdx @@ -0,0 +1,23 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# サンプルアプリケーションの実行の概要 + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このサブカテゴリでは、ScalarDB を活用するさまざまなサンプルアプリケーションを実行する方法を学習できます。 + +サンプルアプリケーションをセットアップして実行するには、次のガイドを参照してください。 + +- [マルチストレージトランザクションサンプル](multi-storage-transaction-sample/README.mdx) +- [マイクロサービストランザクションサンプル](microservice-transaction-sample/README.mdx) +- [マルチストレージトランザクションサンプルを使用した Spring Data JDBC for ScalarDB](spring-data-multi-storage-transaction-sample/README.mdx) +- [マイクロサービストランザクションサンプルを使用した Spring Data JDBC for ScalarDB](spring-data-microservice-transaction-sample/README.mdx) +- [ScalarDB Analytics with PostgreSQL を使用した分析クエリ](scalardb-analytics-postgresql-sample/README.mdx) diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/README.mdx new file mode 100644 index 00000000..f5cddf30 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/README.mdx @@ -0,0 +1,538 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# マイクロサービストランザクションをサポートするサンプルアプリケーションを作成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、ScalarDB でマイクロサービストランザクションをサポートするサンプルアプリケーションを作成する方法について説明します。 + +## 概要 + +このチュートリアルでは、ScalarDB の[2フェーズコミットインターフェースを使用したトランザクション](../../two-phase-commit-transactions.mdx)を通じてアイテムを注文し、信用枠で支払いを行うことができるサンプル電子商取引アプリケーションを作成するプロセスを示します。 + +サンプルアプリケーションには、[database-per-service pattern](https://microservices.io/patterns/data/database-per-service.html) に基づく *Customer Service* と *Order Service* という2つのマイクロサービスがあります。 + +- **Customer Service** は、信用枠情報、信用限度額、信用合計などの顧客情報を管理します。 +- **Order Service** は、注文の確定や注文履歴の取得などの注文操作を担当します。 + +各サービスには gRPC エンドポイントがあります。クライアントはエンドポイントを呼び出し、サービスも各エンドポイントを呼び出します。 + +サンプルアプリケーションで使用するデータベースは Cassandra と MySQL です。 Customer Service と Order Service は、それぞれ ScalarDB を介して Cassandra と MySQL を使用します。 + +![概要](images/overview.png) + +図に示されているように、両方のサービスは、Consensus Commit プロトコルに使用される小さな Coordinator データベースにアクセスします。データベースはサービスに依存せず、Consensus Commit のトランザクションメタデータを高可用性の方法で管理するために存在します。 + +サンプルアプリケーションでは、セットアップと説明を簡単にするために、Coordinator データベースを Order Service の同じ Cassandra インスタンスに共存させています。または、Coordinator データベースを別のデータベースとして管理することもできます。 + +:::note + +サンプルアプリケーションは ScalarDB の使用方法を示すことに重点を置いているため、アプリケーション固有のエラー処理、認証処理、および同様の機能はサンプルアプリケーションに含まれていません。ScalarDB での例外処理の詳細については、[例外の処理方法](../../api-guide.mdx#例外の処理方法)を参照してください。 + +さらに、サンプルアプリケーションの目的上、各サービスには1つのコンテナがあるため、サービス間のリクエストルーティングは不要です。ただし、実稼働環境では、スケーラビリティと可用性のために各サービスに複数のサーバーまたはホストがあるため、2フェーズコミットインターフェイスを使用したトランザクションでは、サービス間のリクエストルーティングを検討する必要があります。要求ルーティングの詳細については、[2フェーズコミットインターフェイスを使用したトランザクションでのリクエストルーティング](../../two-phase-commit-transactions.mdx#2フェーズコミットインターフェイスを使用したトランザクションでのリクエストルーティング) を参照してください。 + +::: + +### サービスエンドポイント + +サービスで定義されているエンドポイントは次のとおりです。 + +- Customer Service + - `getCustomerInfo` + - `payment` + - `prepare` + - `validate` + - `commit` + - `rollback` + - `repayment` + +- Order Service + - `placeOrder` + - `getOrder` + - `getOrders` + +### このサンプルアプリケーションで実行できること + +サンプルアプリケーションは、次の種類のトランザクションをサポートしています。 + +- Customer Service の `getCustomerInfo` エンドポイントを介して顧客情報を取得します。 +- Order Service の `placeOrder` エンドポイントと、Customer Service の `payment`、`prepare`、`validate`、`commit`、`rollback` エンドポイントを介して、信用枠を使用して注文を行います。 + - 注文のコストが顧客の信用限度額を下回っているかどうかを確認します。 + - チェックに合格した場合、注文履歴を記録し、顧客が支払った金額を更新します。 +- Order Service の `getOrder` エンドポイントと、Customer Service の `getCustomerInfo`、`prepare`、`validate`、`commit`、`rollback` エンドポイントを介して、注文 ID で注文情報を取得します。 +- Order Service の `getOrders` エンドポイントと、Customer Service の `getCustomerInfo`、`prepare`、`validate`、`commit`、`rollback` エンドポイントを介して、顧客 ID で注文情報を取得します。 +- Customer Service の `repayment` エンドポイントを介して支払いを行います。 + - 顧客が支払った金額を減らします。 + +:::note + +`getCustomerInfo` エンドポイントは、コーディネーターからトランザクション ID を受信するときに、参加者サービスエンドポイントとして機能します。 + +::: + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- [Docker](https://www.docker.com/get-started/) 20.10以降 ([Docker Compose](https://docs.docker.com/compose/install/) V2以降) + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../../requirements.mdx)を参照してください。 + +::: + +## ScalarDB のセットアップ + +次のセクションでは、ScalarDB でマイクロサービストランザクションをサポートするサンプルアプリケーションをセットアップする方法について説明します。 + +### ScalarDB サンプルリポジトリをクローンする + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリをクローンします。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/microservice-transaction-sample +``` + +### CassandraとMySQLを起動する + +Cassandra と MySQL は、それぞれ [`database-cassandra.properties`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/database-cassandra.properties) と [`database-mysql.properties`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/database-mysql.properties) に示されているように、サンプルアプリケーション用にすでに設定されています。ScalarDB でのマルチストレージトランザクション機能の設定の詳細については、[マルチストレージトランザクションをサポートするように ScalarDB を設定する方法](../../multi-storage-transactions.mdx#マルチストレージトランザクションをサポートするように-scalardb-を設定する方法)を参照してください。 + +サンプルアプリケーションの Docker コンテナに含まれている Cassandra と MySQL を起動するには、次のコマンドを実行します。 + +```console +docker-compose up -d mysql cassandra +``` + +:::note + +開発環境によっては、Docker コンテナの起動に1分以上かかる場合があります。 + +::: + +### スキーマをロードします + +サンプルアプリケーションのデータベーススキーマ (データを整理する方法) は、Customer Service の場合は [`customer-service-schema.json`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service-schema.json)、Order Service の場合は [`order-service-schema.json`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service-schema.json) で既に定義されています。 + +スキーマを適用するには、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases)ページに移動し、使用する ScalarDB のバージョンに一致する ScalarDB Schema Loader を `scalardb-samples/microservice-transaction-sample` フォルダーにダウンロードします。 + +#### MySQL + +[`customer-service-schema.json`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service-schema.json) のスキーマを MySQL にロードするには、次のコマンドを実行します。`` は、ダウンロードした ScalarDB Schema Loader のバージョンに置き換えます。 + +```console +java -jar scalardb-schema-loader-.jar --config database-mysql.properties --schema-file customer-service-schema.json +``` + +#### Cassandra + +[`order-service-schema.json`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service-schema.json) のスキーマを Cassandra にロードするには、次のコマンドを実行します。`` は、ダウンロードした ScalarDB Schema Loader のバージョンに置き換えます。 + +```console +java -jar scalardb-schema-loader-.jar --config database-cassandra.properties --schema-file order-service-schema.json --coordinator +``` + +#### Schema details + +[`customer-service-schema.json`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service-schema.json) に示されているように、Customer Service のすべてのテーブルは `customer_service` 名前空間に作成されます。 + +- `customer_service.customers`: 顧客の情報を管理するテーブル + - `credit_limit`: 貸し手が各顧客に信用枠の使用を許可する最大金額 + - `credit_total`: 各顧客が信用枠を使用してすでに使用した金額 + +[`order-service-schema.json`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service-schema.json) に示されているように、Order Service のすべてのテーブルは `order_service` 名前空間に作成されます。 + +- `order_service.orders`: 注文情報を管理するテーブル +- `order_service.statements`: 注文明細情報を管理するテーブル +- `order_service.items`: 注文する商品の情報を管理するテーブル + +スキーマのエンティティリレーションシップダイアグラムは次のとおりです。 + +![ERD](images/ERD.png) + +### マイクロサービスを起動して初期データをロードします + +マイクロサービスを起動する前に、次のコマンドを実行してサンプルアプリケーションの Docker イメージをビルドします。 + +```console +./gradlew docker +``` + +次に、次のコマンドを実行してマイクロサービスを起動します。 + +```console +docker-compose up -d customer-service order-service +``` + +マイクロサービスを起動し、初期データが読み込まれた後、次のレコードが `customer_service.customers` テーブルに保存されるはずです。 + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +そして、次のレコードが `order_service.items` テーブルに保存される必要があります。 + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## サンプルアプリケーションでトランザクションを実行し、データを取得する + +次のセクションでは、サンプル電子商取引アプリケーションでトランザクションを実行し、データを取得する方法について説明します。 + +### 顧客情報を取得する + +次のコマンドを実行して、ID が `1` である顧客に関する情報を取得することから始めます。 + +```console +./gradlew :client:run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。 + +```console +... +{"id": 1,"name": "Yamada Taro","credit_limit": 10000} +... +``` + +この時点では、`credit_total` は表示されません。つまり、`credit_total` の現在の値は `0` です。 + +### 注文する + +次に、次のコマンドを実行して、顧客 ID `1` にリンゴ3個とオレンジ2個を注文してもらいます。 + +:::note + +このコマンドの注文形式は `./gradlew run --args="PlaceOrder :,:,..."` です。 + +::: + +```console +./gradlew :client:run --args="PlaceOrder 1 1:3,2:2" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す出力が表示されます。 + +```console +... +{"order_id": "4ccdb21c-ac03-4b48-bcb7-cad57eac1e79"} +... +``` + +### 注文の詳細を確認する + +次のコマンドを実行して注文の詳細を確認します。`` は、前のコマンドを実行した後に表示される `order_id` の UUID に置き換えます。 + +```console +./gradlew :client:run --args="GetOrder " +``` + +`order_id` と `timestamp` の UUID が異なる、以下のような出力が表示されます。 + +```console +... +{"order": {"order_id": "4ccdb21c-ac03-4b48-bcb7-cad57eac1e79","timestamp": 1631605253126,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}} +... +``` + +### 別の注文をする + +次のコマンドを実行して、顧客 ID `1` の `credit_total` の残額を使用してメロン1個を注文します。 + +```console +./gradlew :client:run --args="PlaceOrder 1 5:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す出力が表示されます。 + +```console +... +{"order_id": "0b10db66-faa6-4323-8a7a-474e8534a7ee"} +... +``` + +### 注文履歴を確認する + +次のコマンドを実行して、顧客 ID `1` のすべての注文履歴を取得します。 + +```console +./gradlew :client:run --args="GetOrders 1" +``` + +`order_id` と `timestamp` の UUID が異なる以下のような出力が表示されます。これは、顧客 ID `1` のすべての注文履歴をタイムスタンプの降順で表示します。 + +```console +... +{"order": [{"order_id": "0b10db66-faa6-4323-8a7a-474e8534a7ee","timestamp": 1631605501485,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 5,"item_name": "Melon","price": 3000,"count": 1,"total": 3000}],"total": 3000},{"order_id": "4ccdb21c-ac03-4b48-bcb7-cad57eac1e79","timestamp": 1631605253126,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}]} +... +``` + +### クレジット合計の確認 + +次のコマンドを実行して、顧客 ID `1` のクレジット合計を取得します。 + +```console +./gradlew :client:run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` が `credit_total` の `credit_limit` に達しており、これ以上注文できないことを示しています。 + +```console +... +{"id": 1,"name": "Yamada Taro","credit_limit": 10000,"credit_total": 10000} +... +``` + +次のコマンドを実行して、ブドウ1個とマンゴー1個を注文してみます。 + +```console +./gradlew :client:run --args="PlaceOrder 1 3:1,4:1" +``` + +次の出力が表示されます。これは、`credit_total` 金額が `credit_limit` 金額を超えたために注文が失敗したことを示しています。 + +```console +... +io.grpc.StatusRuntimeException: FAILED_PRECONDITION: Credit limit exceeded + at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:271) + at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:252) + at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:165) + at sample.rpc.OrderServiceGrpc$OrderServiceBlockingStub.placeOrder(OrderServiceGrpc.java:296) + at sample.client.command.PlaceOrderCommand.call(PlaceOrderCommand.java:38) + at sample.client.command.PlaceOrderCommand.call(PlaceOrderCommand.java:12) + at picocli.CommandLine.executeUserObject(CommandLine.java:2041) + at picocli.CommandLine.access$1500(CommandLine.java:148) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) + at picocli.CommandLine.execute(CommandLine.java:2170) + at sample.client.Client.main(Client.java:39) +... +``` + +### 支払いを行う + +注文を続行するには、顧客 ID `1` が支払いを行って `credit_total` の金額を減らす必要があります。 + +次のコマンドを実行して支払いを行います。 + +```console +./gradlew :client:run --args="Repayment 1 8000" +``` + +次に、次のコマンドを実行して、顧客 ID `1` の `credit_total` 金額を確認します。 + +```console +./gradlew :client:run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` に支払いが適用され、`credit_total` の金額が減ったことを示しています。 + +```console +... +{"id": 1,"name": "Yamada Taro","credit_limit": 10000,"credit_total": 2000} +... +``` + +顧客 ID `1` が支払いを済ませたので、次のコマンドを実行してブドウ1個とメロン1個を注文します。 + +```console +./gradlew :client:run --args="PlaceOrder 1 3:1,4:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す出力が表示されます。 + +```console +... +{"order_id": "dd53dd9d-aaf4-41db-84b2-56951fed6425"} +... +``` + +## サンプルアプリケーションを停止する + +サンプルアプリケーションを停止するには、Cassandra、MySQL、およびマイクロサービスを実行している Docker コンテナを停止する必要があります。Docker コンテナを停止するには、次のコマンドを実行します。 + +```console +docker-compose down +``` + +## リファレンス - マイクロサービストランザクションの実現方法 + +注文、単一注文の取得、注文履歴の取得のトランザクションは、マイクロサービストランザクションを実現します。このセクションでは、注文を例に、Customer Service と Order Service にまたがるトランザクションの実装方法に焦点を当てます。 + +次のシーケンス図は、注文を行うトランザクションを示しています。 + +![マイクロサービストランザクションシーケンス図](images/sequence_diagram.png) + +### 1. 2フェーズコミットインターフェースを使用したトランザクションが開始されます + +クライアントが Order Service に注文リクエストを送信すると、`OrderService.placeOrder()` が呼び出され、マイクロサービストランザクションが開始されます。 + +最初に、Order Service は次のように `start()` を使用して2フェーズコミットインターフェースを使用したトランザクションを開始します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +transaction = twoPhaseCommitTransactionManager.start(); +``` + +### 2. CRUD 操作が実行されます + +2フェーズコミットインターフェースを使用したトランザクションが開始されると、CRUD 操作が実行されます。Order Service は、次のように、注文情報を `order_service.orders` テーブルに、詳細情報を `order_service.statements` テーブルに格納します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +// Put the order info into the `orders` table. +Order.put(transaction, orderId, request.getCustomerId(), System.currentTimeMillis()); + +int amount = 0; +for (ItemOrder itemOrder : request.getItemOrderList()) { + // Put the order statement into the `statements` table. + Statement.put(transaction, orderId, itemOrder.getItemId(), itemOrder.getCount()); + + // Retrieve the item info from the `items` table. + Optional item = Item.get(transaction, itemOrder.getItemId()); + if (!item.isPresent()) { + responseObserver.onError( + Status.NOT_FOUND.withDescription("Item not found").asRuntimeException()); + return; + } + + // Calculate the total amount. + amount += item.get().price * itemOrder.getCount(); +} +``` + +次に、Order Service は、トランザクション ID とともに Customer Service の `payment` gRPC エンドポイントを呼び出します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +customerServiceStub.payment( + PaymentRequest.newBuilder() + .setTransactionId(transactionId) + .setCustomerId(customerId) + .setAmount(amount) + .build()); +``` + +Customer Service の `payment` エンドポイントは、まず次のように `join()` を使用してトランザクションを結合します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +private void execOperationsAsParticipant(String funcName, String transactionId, + TransactionFunction operations, + StreamObserver responseObserver) { + try { + // Join the transaction + TwoPhaseCommitTransaction transaction = twoPhaseCommitTransactionManager.join(transactionId); + + // Execute operations + T response = operations.apply(transaction); +``` + +次に、エンドポイントは顧客情報を取得し、支払い後に顧客のクレジット合計がクレジット限度額を超えているかどうかを確認します。クレジット合計がクレジット限度額を超えていない場合、エンドポイントは顧客のクレジット合計を更新します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +execOperationsAsParticipant("Payment", request.getTransactionId(), + transaction -> { + // Retrieve the customer info for the customer ID + Optional result = Customer.get(transaction, request.getCustomerId()); + if (!result.isPresent()) { + throw Status.NOT_FOUND.withDescription("Customer not found").asRuntimeException(); + } + + int updatedCreditTotal = result.get().creditTotal + request.getAmount(); + + // Check if the credit total exceeds the credit limit after payment + if (updatedCreditTotal > result.get().creditLimit) { + throw Status.FAILED_PRECONDITION + .withDescription("Credit limit exceeded") + .asRuntimeException(); + } + + // Update `credit_total` for the customer + Customer.updateCreditTotal(transaction, request.getCustomerId(), updatedCreditTotal); + + return Empty.getDefaultInstance(); + }, responseObserver +); +``` + +### 3. 2フェーズコミットプロトコルを使用してトランザクションがコミットされます + +Order Service は、支払いが成功したという更新を受信すると、トランザクションをコミットしようとします。 + +トランザクションをコミットするために、Order Service はトランザクションの準備から始めます。Order Service は、トランザクションオブジェクトから `prepare()` を呼び出し、Customer Service の `prepare` gRPC エンドポイントを呼び出します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +transaction.prepare(); +callPrepareEndpoint(transaction.getId()); +``` + +このエンドポイントでは、Customer Service がトランザクションを再開し、トランザクションオブジェクトから `prepare()` も呼び出します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +// Resume the transaction. +transaction = twoPhaseCommitTransactionManager.resume(request.getTransactionId()); + +// Prepare the transaction. +transaction.prepare(); +``` + +同様に、Order Service と Customer Service は、トランザクションオブジェクトから `validate()` を呼び出します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) と [`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。`validate()` の詳細については、[トランザクションの検証](../../two-phase-commit-transactions.mdx#トランザクションの検証)を参照してください。 + +Order Service と Customer Service の両方でトランザクションの準備と検証が成功したら、トランザクションをコミットできます。この場合、Order Service はトランザクションオブジェクトから `commit()` を呼び出し、次に Customer Service の `commit` gRPC エンドポイントを呼び出します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +transaction.commit(); +callCommitEndpoint(transaction.getId()); +``` + +このエンドポイントでは、Customer Service がトランザクションを再開し、トランザクションオブジェクトから `commit()` も呼び出します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +// Resume the transaction. +transaction = twoPhaseCommitTransactionManager.resume(request.getTransactionId()); + +// Commit the transaction. +transaction.commit(); +``` + +### エラー処理 + +トランザクションの実行中にエラーが発生した場合は、トランザクションをロールバックする必要があります。この場合、Order Service はトランザクションオブジェクトから `rollback()` を呼び出し、次に Customer Service の `rollback` gRPC エンドポイントを呼び出します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +transaction.rollback(); +callRollbackEndpoint(transaction.getId()); +``` + +このエンドポイントでは、Customer Service がトランザクションを再開し、トランザクションオブジェクトから `rollback()` も呼び出します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +// Resume the transaction. +TwoPhaseCommitTransaction transaction = + twoPhaseCommitTransactionManager.resume(request.getTransactionId()); + +// Roll back the transaction. +transaction.rollback(); +``` + +ScalarDB で例外を処理する方法の詳細については、[例外の処理方法](../../api-guide.mdx#例外の処理方法)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/ERD.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/ERD.png new file mode 100644 index 00000000..c0468efa Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/ERD.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/overview.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/overview.png new file mode 100644 index 00000000..4340b4f5 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/overview.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/sequence_diagram.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/sequence_diagram.png new file mode 100644 index 00000000..0317b5f3 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/microservice-transaction-sample/images/sequence_diagram.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/README.mdx new file mode 100644 index 00000000..e033cfd6 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/README.mdx @@ -0,0 +1,318 @@ +--- +tags: + - Community + - Enterprise Standard + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# マルチストレージトランザクションをサポートするサンプルアプリケーションを作成する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、ScalarDB のマルチストレージトランザクション機能をサポートするサンプルアプリケーションを作成する方法について説明します。 + +## 概要 + +このチュートリアルでは、ScalarDB の[マルチストレージトランザクション](../../multi-storage-transactions.mdx)機能を使用して、アイテムを注文し、信用枠で支払うことができるサンプル電子商取引アプリケーションを作成するプロセスを示します。 + +このチュートリアルでは、Cassandra と MySQL の両方を使用するアプリケーションを構築します。ScalarDB のマルチストレージトランザクション機能を使用すると、Cassandra と MySQL の両方にまたがるトランザクションを実行できます。 + +![概要](images/overview.png) + +:::note + +サンプルアプリケーションは ScalarDB の使用方法を示すことに重点を置いているため、アプリケーション固有のエラー処理、認証処理、および同様の機能はサンプルアプリケーションに含まれていません。ScalarDB での例外処理の詳細については、[例外の処理方法](../../api-guide.mdx#例外の処理方法)を参照してください。 + +::: + +### このサンプルアプリケーションで実行できること + +サンプルアプリケーションは、次の種類のトランザクションをサポートしています: + +- 顧客情報を取得します。 +- 信用枠を使用して注文を行います。 + - 注文のコストが顧客の信用限度額を下回っているかどうかを確認します。 + - チェックが成功した場合は、注文履歴を記録し、顧客が支払った金額を更新します。 +- 注文 ID で注文情報を取得します。 +- 顧客 ID で注文情報を取得します。 +- 支払いを行います。 + - 顧客が支払った金額を減らします。 + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- [Docker](https://www.docker.com/get-started/) 20.10以降 ([Docker Compose](https://docs.docker.com/compose/install/) V2以降) + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../../requirements.mdx)を参照してください。 + +::: + +## ScalarDB のセットアップ + +次のセクションでは、ScalarDB のマルチストレージトランザクション機能をサポートするサンプルアプリケーションをセットアップする方法について説明します。 + +### ScalarDB サンプルリポジトリをクローンする + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリをクローンします。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。 + +```console +cd scalardb-samples/multi-storage-transaction-sample +``` + +### Cassandra と MySQL を起動します + +[`database.properties`](https://github.com/scalar-labs/scalardb-samples/tree/master/multi-storage-transaction-sample/database.properties) に示されているように、Cassandra と MySQL はサンプルアプリケーション用にすでに設定されています。ScalarDB のマルチストレージトランザクション機能の設定の詳細については、[マルチストレージトランザクションをサポートするように ScalarDB を設定する方法](../../multi-storage-transactions.mdx#マルチストレージトランザクションをサポートするように-scalardb-を設定する方法)を参照してください。 + +サンプルアプリケーションの Docker コンテナに含まれている Cassandra と MySQL を起動するには、Docker が実行されていることを確認してから、次のコマンドを実行します。 + +```console +docker-compose up -d +``` + +:::note + +開発環境によっては、Docker コンテナの起動に1分以上かかる場合があります。 + +::: + +### スキーマをロードする + +サンプルアプリケーションのデータベーススキーマ (データを整理する方法) は、すでに [`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/master/multi-storage-transaction-sample/schema.json) で定義されています。 + +スキーマを適用するには、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases)ページに移動し、使用する ScalarDB のバージョンに一致する ScalarDB Schema Loader を `scalardb-samples/multi-storage-transaction-sample` フォルダーにダウンロードします。 + +次に、次のコマンドを実行します。`` は、ダウンロードした ScalarDB Schema Loader のバージョンに置き換えます。 + +```console +java -jar scalardb-schema-loader-.jar --config database.properties --schema-file schema.json --coordinator +``` + +#### スキーマの詳細 + +サンプルアプリケーションの [`schema.json`](https://github.com/scalar-labs/scalardb-samples/tree/master/multi-storage-transaction-sample/schema.json) に示されているように、すべてのテーブルは `customer` および `order` 名前空間に作成されます。 + +- `customer.customers`: 顧客の情報を管理するテーブル + - `credit_limit`: 貸し手が各顧客に信用枠の使用を許可する最大金額 + - `credit_total`: 各顧客が信用枠を使用してすでに使用した金額 +- `order.orders`: 注文情報を管理するテーブル +- `order.statements`: 注文明細情報を管理するテーブル +- `order.items`: 注文するアイテムの情報を管理するテーブル + +スキーマのエンティティリレーションシップダイアグラムは次のとおりです。 + +![ERD](images/ERD.png) + +### 初期データをロードする + +Docker コンテナが起動したら、次のコマンドを実行して初期データをロードします。 + +```console +./gradlew run --args="LoadInitialData" +``` + +初期データがロードされた後、次のレコードがテーブルに保存される必要があります。 + +**`customer.customers` テーブル** + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +**`order.items` テーブル** + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## サンプルアプリケーションでトランザクションを実行し、データを取得する + +次のセクションでは、サンプル電子商取引アプリケーションでトランザクションを実行し、データを取得する方法について説明します。 + +### 顧客情報を取得する + +次のコマンドを実行して、ID が `1` である顧客に関する情報を取得することから始めます。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 0} +... +``` + +### 注文する + +次に、次のコマンドを実行して、顧客 ID `1` にリンゴ3個とオレンジ2個を注文してもらいます。 + +:::note + +このコマンドの注文形式は `./gradlew run --args="PlaceOrder :,:,..."` です。 + +::: + +```console +./gradlew run --args="PlaceOrder 1 1:3,2:2" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す出力が表示されます。 + +```console +... +{"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e"} +... +``` + +### 注文の詳細を確認する + +次のコマンドを実行して注文の詳細を確認します。`` は、前のコマンドを実行した後に表示される `order_id` の UUID に置き換えます。 + +```console +./gradlew run --args="GetOrder " +``` + +`order_id` と `timestamp` の UUID が異なる、以下のような出力が表示されます。 + +```console +... +{"order": {"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e","timestamp": 1650948340914,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}} +... +``` + +### 別の注文をする + +次のコマンドを実行して、顧客 ID `1` の `credit_total` の残額を使用してメロン1個を注文します。 + +```console +./gradlew run --args="PlaceOrder 1 5:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す出力が表示されます。 + +```console +... +{"order_id": "bcc34150-91fa-4bea-83db-d2dbe6f0f30d"} +... +``` + +### 注文履歴を確認する + +次のコマンドを実行して、顧客 ID `1` のすべての注文履歴を取得します。 + +```console +./gradlew run --args="GetOrders 1" +``` + +`order_id` と `timestamp` の UUID が異なる以下のような出力が表示されます。これは、顧客 ID `1` のすべての注文履歴をタイムスタンプの降順で表示します。 + +```console +... +{"order": [{"order_id": "dea4964a-ff50-4ecf-9201-027981a1566e","timestamp": 1650948340914,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000},{"order_id": "bcc34150-91fa-4bea-83db-d2dbe6f0f30d","timestamp": 1650948412766,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 5,"item_name": "Melon","price": 3000,"count": 1,"total": 3000}],"total": 3000}]} +... +``` + +### クレジット合計の確認 + +次のコマンドを実行して、顧客 ID `1` のクレジット合計を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` が `credit_total` の `credit_limit` に達しており、これ以上注文できないことを示しています。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 10000} +... +``` + +次のコマンドを実行して、ブドウ1個とマンゴー1個を注文してみます。 + +```console +./gradlew run --args="PlaceOrder 1 3:1,4:1" +``` + +次の出力が表示されます。これは、`credit_total` 金額が `credit_limit` 金額を超えたために注文が失敗したことを示しています。 + +```console +... +java.lang.RuntimeException: Credit limit exceeded + at sample.Sample.placeOrder(Sample.java:205) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:33) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:8) + at picocli.CommandLine.executeUserObject(CommandLine.java:1783) + at picocli.CommandLine.access$900(CommandLine.java:145) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2141) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2108) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:1975) + at picocli.CommandLine.execute(CommandLine.java:1904) + at sample.command.SampleCommand.main(SampleCommand.java:35) +... +``` + +### 支払いを行う + +注文を続行するには、顧客 ID `1` が支払いを行って `credit_total` の金額を減らす必要があります。 + +次のコマンドを実行して支払いを行います。 + +```console +./gradlew run --args="Repayment 1 8000" +``` + +次に、次のコマンドを実行して、顧客 ID `1` の `credit_total` 金額を確認します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +``` + +次の出力が表示されます。これは、顧客 ID `1` に支払いが適用され、`credit_total` の金額が減ったことを示しています。 + +```console +... +{"id": 1, "name": "Yamada Taro", "credit_limit": 10000, "credit_total": 2000} +... +``` + +顧客 ID `1` が支払いを済ませたので、次のコマンドを実行してブドウ1個とメロン1個を注文します。 + +```console +./gradlew run --args="PlaceOrder 1 3:1,4:1" +``` + +以下のように、`order_id` の UUID が異なる、注文が成功したことを示す出力が表示されます。 + +```console +... +{"order_id": "8911cab3-1c2b-4322-9386-adb1c024e078"} +... +``` + +## サンプルアプリケーションを停止します + +サンプルアプリケーションを停止するには、次のコマンドを実行して Docker コンテナを停止します。 + +```console +docker-compose down +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/images/ERD.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/images/ERD.png new file mode 100644 index 00000000..02100437 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/images/ERD.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/images/overview.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/images/overview.png new file mode 100644 index 00000000..16749f3b Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/multi-storage-transaction-sample/images/overview.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/scalardb-analytics-postgresql-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/scalardb-analytics-postgresql-sample/README.mdx new file mode 100644 index 00000000..8f0c7c95 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/scalardb-analytics-postgresql-sample/README.mdx @@ -0,0 +1,309 @@ +--- +tags: + - Community +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics with PostgreSQL を使用してサンプルデータに対して分析クエリを実行する + +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、ScalarDB Analytics with PostgreSQL を使用してサンプルデータに対して分析クエリを実行する方法について説明します。 + +## 概要 + +このサンプルチュートリアルでは、単一テーブルクエリと複数テーブルクエリの2種類のクエリを実行する方法を示します。 + +### このサンプルチュートリアルで実行できること + +このサンプルチュートリアルでは、次の種類のクエリを実行する方法を示します。 + +- データを読み取り、要約を計算します。 +- 複数のストレージにまたがるテーブルを結合します。 + +:::note + +このサンプルチュートリアルでインポートされたテーブルに対して、PostgreSQL がサポートする任意のクエリを実行できます。ScalarDB Analytics with PostgreSQL は PostgreSQL がサポートするすべてのクエリをサポートしているため、例に示されている結合、集計、フィルタリング、順序付けだけでなく、ウィンドウ関数、ラテラル結合、さまざまな分析操作も使用できます。 + +PostgreSQL がサポートするクエリの種類を確認するには、[PostgreSQL ドキュメント](https://www.postgresql.org/docs/current/index.html)を参照してください。 + +::: + +## 前提条件 + +- [Docker](https://www.docker.com/get-started/) 20.10以降、および [Docker Compose](https://docs.docker.com/compose/install/) V2以降 +- [psql](https://www.postgresql.org/docs/current/app-psql.html) + +## ScalarDB Analytics with PostgreSQL を設定する + +まず、ScalarDB Analytics with PostgreSQL を使用して分析クエリを実行するためにデータベースを設定する必要があります。まだデータベースを設定していない場合は、[ScalarDB Analytics with PostgreSQL の使用開始](../../scalardb-analytics-postgresql/getting-started.mdx)の手順に従ってください。 + +### ScalarDB のスキーマの詳細 + +このサンプルチュートリアルでは、ScalarDB データベースに次のスキーマを持つテーブルがあります。 + +```mermaid +erDiagram + "dynamons.customer" ||--|{ "postgresns.orders" : "custkey" + "dynamons.customer" { + int c_custkey + text c_name + text c_address + int c_nationkey + text c_phone + double c_acctbal + text c_mktsegment + text c_comment + } + "postgresns.orders" ||--|{ "cassandrans.lineitem" : "orderkey" + "postgresns.orders" { + int o_orderkey + int o_custkey + text o_orderstatus + double o_totalprice + text o_orderdate + text o_orderpriority + text o_clerk + int o_shippriority + text o_comment + } + "cassandrans.lineitem" { + int l_orderkey + int l_partkey + int l_suppkey + int l_linenumber + double l_quantity + double l_extendedprice + double l_discount + double l_tax + text l_returnflag + text l_linestatus + text l_shipdate + text l_commitdate + text l_receiptdate + text l_shipinstruct + text l_shipmode + text l_comment + } +``` + +参考までに、この図には次の内容が示されています。 + +- `dynamons`、`postgresns`、`cassandrans`。それぞれ DynamoDB、PostgreSQL、Cassandra のバックエンドストレージにマップされる名前空間。 +- `dynamons.customer`。顧客に関する情報を表すテーブル。このテーブルには、顧客キー、名前、住所、電話番号、口座残高などの属性が含まれます。 +- `postgresns.orders`。顧客が行った注文に関する情報を含むテーブル。このテーブルには、注文キー、顧客キー、注文ステータス、注文日、注文優先度などの属性が含まれます。 +- `cassandrans.lineitem`。注文に関連付けられた明細項目を表すテーブル。このテーブルには、注文キー、部品キー、サプライヤーキー、数量、価格、出荷日などの属性が含まれます。 + +### PostgreSQL のスキーマの詳細 + +ScalarDB の設定時に Schema Importer を実行すると、ScalarDB データベースのテーブルスキーマを PostgreSQL データベースにインポートできます。より正確には、ScalarDB データベースの各 `namespace_name.table_name` テーブルに対して、PostgreSQL データベースに `namespace_name._table_name` の外部テーブルと `namespace_name.table_name` のビューが作成されます。 + +作成された外部テーブルには、ScalarDB テーブルと同じ列と、ScalarDB が内部で管理するトランザクションメタデータ列が含まれます。作成されたビューは、外部テーブルからトランザクションメタデータ列を除外するように定義されているため、作成されたビューには ScalarDB テーブルと同じ列のみが含まれます。 + +ScalarDB テーブルのスキーマは `schema.json` にあります。たとえば、`dynamons.customer` テーブルは次のように定義されています。 + +```json + "dynamons.customer": { + "transaction": true, + "partition-key": [ + "c_custkey" + ], + "columns": { + "c_custkey": "INT", + "c_name": "TEXT", + "c_address": "TEXT", + "c_nationkey": "INT", + "c_phone": "TEXT", + "c_acctbal": "DOUBLE", + "c_mktsegment": "TEXT", + "c_comment": "TEXT" + } + }, +``` + +PostgreSQL データベース内の `dynamons._customer` の外部テーブルを表示するには、次のコマンドを実行し、プロンプトが表示されたら PostgreSQL ユーザーパスワードを入力します。 + +```console +psql -U postgres -h localhost test -c '\d dynamons._customer'; +``` + +パスワードを入力すると、次の出力が表示されます。これには、`dynamons.customer` テーブルと同じ `c_` 列が表示されます。 + +```console + Foreign table "dynamons._customer" + Column | Type | Collation | Nullable | Default | FDW options +------------------------+------------------+-----------+----------+---------+------------- + c_custkey | integer | | | | + c_name | text | | | | + c_address | text | | | | + c_nationkey | integer | | | | + c_phone | text | | | | + c_acctbal | double precision | | | | + c_mktsegment | text | | | | + c_comment | text | | | | + tx_id | text | | | | + tx_version | integer | | | | + tx_state | integer | | | | + tx_prepared_at | bigint | | | | + tx_committed_at | bigint | | | | + before_tx_id | text | | | | + before_tx_version | integer | | | | + before_tx_state | integer | | | | + before_tx_prepared_at | bigint | | | | + before_tx_committed_at | bigint | | | | + before_c_name | text | | | | + before_c_address | text | | | | + before_c_nationkey | integer | | | | + before_c_phone | text | | | | + before_c_acctbal | double precision | | | | + before_c_mktsegment | text | | | | + before_c_comment | text | | | | +Server: multi_storage_dynamodb +FDW options: (namespace 'dynamons', table_name 'customer') +``` + +外部テーブルを見るとわかるように、テーブルにはトランザクションメタデータ列も含まれています。これらの列は、Read Committed 分離レベルを確保するために必要です。 + +`dynamons.customer` のビューを表示するには、次のコマンドを実行し、プロンプトが表示されたら PostgreSQL ユーザーパスワードを入力します。 + +```console +psql -U postgres -h localhost test -c '\d dynamons.customer'; +``` + +パスワードを入力すると、次の出力が表示されます。 + +```console + View "dynamons.customer" + Column | Type | Collation | Nullable | Default +--------------+------------------+-----------+----------+--------- + c_custkey | integer | | | + c_name | text | | | + c_address | text | | | + c_nationkey | integer | | | + c_phone | text | | | + c_acctbal | double precision | | | + c_mktsegment | text | | | + c_comment | text | | | +``` + +このビューの列定義は、ScalarDB データベースの元のテーブルと同じです。このビューは、トランザクションメタデータ列を解釈して、Read Committed 分離レベルで有効なデータのみを公開するために、上で説明した外部テーブルに基づいて作成されます。 + +:::note + +通常、外部テーブルに直接アクセスする必要はありません。代わりに、ビューを ScalarDB データベース内のテーブルと同等にすることができます。 + +::: + +ScalarDB と PostgreSQL 間の型マッピングの詳細については、[ScalarDB と他のデータベース間のデータ型マッピング](../../schema-loader.mdx#scalardb-と他のデータベース間のデータ型マッピング) を参照してください。 + +## 分析クエリを実行する + +次のセクションでは、データの読み取り、サマリーの計算、複数のストレージにまたがるテーブルの結合方法について説明します。 + +### データの読み取りとサマリーの計算 + +Cassandra バックエンドに保存されている実際のデータを使用して `cassandrans.lineitem` からデータを読み取り、データを集計して順序付けられた明細項目の複数のサマリーを計算するクエリを実行できます。 + +クエリを実行するには、次のコマンドを実行して psql ターミナルにログインします。 + +```console +psql -U postgres -h localhost test +``` + +パスワードを入力した後、psql ターミナルに次のクエリを入力します。 + +```console +SELECT + l_returnflag, + l_linestatus, + sum(l_quantity) AS sum_qty, + sum(l_extendedprice) AS sum_base_price, + sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price, + sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge, + avg(l_quantity) AS avg_qty, + avg(l_extendedprice) AS avg_price, + avg(l_discount) AS avg_disc, + count(*) AS count_order +FROM + cassandrans.lineitem +WHERE + to_date(l_shipdate, 'YYYY-MM-DD') <= date '1998-12-01' - 3 +GROUP BY + l_returnflag, + l_linestatus +ORDER BY + l_returnflag, + l_linestatus; +``` + +次の出力が表示されます。 + +```console + l_returnflag | l_linestatus | sum_qty | sum_base_price | sum_disc_price | sum_charge | avg_qty | avg_price | avg_disc | count_order +--------------+--------------+---------+--------------------+--------------------+--------------------+---------------------+--------------------+---------------------+------------- + A | F | 1519 | 2374824.6560430005 | 1387363.5818635763 | 1962762.9341866106 | 26.6491228070175439 | 41663.590456894744 | 0.4150182982456142 | 57 + N | F | 98 | 146371.22954200002 | 85593.92837883368 | 121041.52567369482 | 32.6666666666666667 | 48790.409847333336 | 0.4098473333333333 | 3 + N | O | 5374 | 8007373.247144971 | 4685645.630765834 | 6624209.157932242 | 24.4272727272727273 | 36397.15112338623 | 0.414759749999999 | 220 + R | F | 1461 | 2190869.967642001 | 1284177.8484816086 | 1814150.7929095028 | 25.1896551724137931 | 37773.62013175864 | 0.41323520689655185 | 58 +(4 rows) +``` + +### 複数のストレージにまたがるテーブルを結合する + +クエリを実行して、3つのバックエンドストレージに接続されているテーブルを結合し、特定の日付に最も高い収益を持つ未出荷の注文を計算することもできます。 + +クエリを実行するには、次のコマンドを実行して psql ターミナルにログインします。 + +```console +psql -U postgres -h localhost test +``` + +パスワードを入力した後、psql ターミナルに次のクエリを入力します。 + +```console +SELECT + l_orderkey, + sum(l_extendedprice * (1 - l_discount)) AS revenue, + o_orderdate, + o_shippriority +FROM + dynamons.customer, + postgresns.orders, + cassandrans.lineitem +WHERE + c_mktsegment = 'AUTOMOBILE' + AND c_custkey = o_custkey + AND l_orderkey = o_orderkey + AND o_orderdate < '1995-03-15' + AND l_shipdate > '1995-03-15' +GROUP BY + l_orderkey, + o_orderdate, + o_shippriority +ORDER BY + revenue DESC, + o_orderdate, + l_orderkey +LIMIT 10; +``` + +次の出力が表示されます。 + +```console + l_orderkey | revenue | o_orderdate | o_shippriority +------------+--------------------+-------------+---------------- + 1071617 | 128186.94002748765 | 1995-03-10 | 0 + 1959075 | 33104.49713665398 | 1994-12-23 | 0 + 430243 | 19476.107574179696 | 1994-12-24 | 0 +(3 rows) +``` + +## ScalarDB Analytics with PostgreSQL とデータベースを停止する + +ScalarDB Analytics with PostgreSQL とデータベースを停止するには、次のコマンドを実行して Docker コンテナを停止します。 + +```console +docker-compose down +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/scalardb-analytics-spark-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/scalardb-analytics-spark-sample/README.mdx new file mode 100644 index 00000000..8605ce3a --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/scalardb-analytics-spark-sample/README.mdx @@ -0,0 +1,458 @@ +--- +tags: + - Enterprise Option + - Public Preview +displayed_sidebar: docsJapanese +--- + +# ScalarDB Analytics をはじめよう + +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、ScalarDB Analytics を使用してサンプルデータに対して分析クエリを実行する方法について説明します。ソースコードは [https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-analytics-spark-sample](https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-analytics-spark-sample) で入手できます。 + +現在のバージョンの ScalarDB Analytics は、実行エンジンとして Apache Spark を活用しています。Spark カスタムカタログを使用して、ScalarDB 管理下データソースと ScalarDB 管理外データソースの統合ビューを提供します。ScalarDB Analytics を使用すると、これらのデータソースのテーブルをネイティブ Spark テーブルとして扱うことができ、任意の Spark SQL クエリをシームレスに実行できます。たとえば、Cassandra に格納されているテーブルを PostgreSQL のテーブルと結合して、複数のデータソースにまたがる分析を簡単に実行できます。 + +## サンプルアプリケーションの概要 + +このサンプルチュートリアルでは、Sparkの設定によってScalarDB Analyticsを有効にし、ScalarDB Analytics から提供されるテーブルに対して `spark-sql` を用いたインタラクティブな分析を実行する方法をしめします。 + +## このサンプルアプリケーションの前提条件 + +- [Docker](https://www.docker.com/get-started/) 20.10以降と [Docker Compose](https://docs.docker.com/compose/install/) V2以降 + + + +## ステップ 1: ScalarDB Analytics をセットアップする + +### ScalarDB サンプルリポジトリをクローンする + +**ターミナル** を開き、次のコマンドを実行して ScalarDB サンプルリポジトリをクローンします: + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行してサンプルアプリケーションを含むディレクトリに移動します: + +```console +cd scalardb-samples/scalardb-analytics-spark-sample +``` + +### ライセンス情報を設定する + +ScalarDB Analytics では、Spark 設定で有効なライセンス情報を指定する必要があります。ライセンスの詳細は、**spark-defaults.conf** ファイルで指定できます。 + +Spark インストールの **conf** ディレクトリにある **spark-defaults.conf** ファイルを開きます。次に、`` をライセンスキーに置き換え、`` をライセンス証明書の PEM エンコードされた内容に置き換えます。 + +```console +spark.sql.catalog.test_catalog.license.key +spark.sql.catalog.test_catalog.license.cert_pem +``` + +ScalarDB Analytics を設定するために **spark-defaults.conf** で必要な項目の詳細については、[ScalarDB Analytics の設定](#scalardb-analytics-の設定)を参照してください。 + +## ステップ 2: サンプルデータベースをセットアップする + +サンプルデータベースをセットアップするには、次のコマンドを実行します: + +```console +docker compose up -d --wait +``` + +このコマンドは、PostgreSQL、Cassandra、MySQL の3つのサービスをローカルで起動します。 + +- **PostgreSQL:** 単独で使用されます (ScalarDB 管理外)。 +- **Cassandra および MySQL:** ScalarDB のバックエンドデータベースとして使用されます (ScalarDB 管理下)。 + +このガイドでは、PostgreSQL は ScalarDB トランザクションによって管理されない **ScalarDB 管理外データベース** と呼ばれ、Cassandra および DynamoDB は ScalarDB トランザクションによって管理される **ScalarDB 管理下データベース** と呼ばれます。 + +ScalarDB 管理外データベースについては、Docker コンテナが初期化されるとサンプルデータが自動的に読み込まれるため、追加の手順は必要ありません。 ScalarDB 管理下データベースについては、コンテナを起動した後、次のコマンドを実行してサンプルデータをロードします: + +```console +docker compose run --rm sample-data-loader +``` + +セットアップが完了すると、次のテーブルが使用可能になります: + +- PostgreSQL: + - `sample_ns.customer` +- ScalarDB (Cassandra): + - `cassandrans.lineitem` +- ScalarDB (MySQL): + - `mysqlns.order` + +ScalarDB 内では、`cassandrans` と `mysqlns` がそれぞれ Cassandra と MySQL にマッピングされます。 + +列定義やデータ型を含むテーブルスキーマの詳細については、[スキーマの詳細](#スキーマの詳細)を参照してください。サンプルデータがこれらのテーブルに正常にロードされていることを確認してください。 + +## ステップ 3: Spark SQL コンソールを起動する + +Spark SQL コンソールを起動するには、次のコマンドを実行します: + +```console +docker compose run --rm spark-sql +``` + +Spark SQL コンソールを起動すると、**spark-defaults.conf** の設定で ScalarDB Analytics カタログが初期化され、`test_catalog` という名前の Spark カタログとして登録されます。 + +### 名前空間マッピング + +データソース内の各テーブルは、以下のようにSpark SQLのテーブルにマッピングされます。 + +- PostgreSQL: + - `test_catalog.postgresql.sample_ns.customer` +- ScalarDB (Cassandra ): + - `test_catalog.scalardb.cassandrans.lineitem` +- ScalarDB (MySQL): + - `test_catalog.scalardb.mysqlns.orders` + +各データソースのテーブル名をSpark SQLのテーブル名にマッピングする規則の詳細は、[名前空間マッピングの詳細](#名前空間マッピングの詳細)を参照してください。 + +さらに、ScalarDB Analytics は ScalarDB テーブルに対して、一般的なユースケースを簡単にするために、WAL 解釈ビューを提供します。このサンプルアプリケーションでは、次の WAL 解釈ビューが利用できます: + +- ScalarDB (Cassandra ): + - `test_catalog.view.scalardb.cassandrans.lineitem` +- ScalarDB (MySQL): + - `test_catalog.view.scalardb.mysqlns.orders` + +ほとんどの場合、WAL 解釈ビューは生のテーブルよりも便利です。このチュートリアルでは、ScalarDB のテーブルについては WAL 解釈ビューを使用します。WAL 解釈ビューの詳細な情報 (使用例や利点など) については、[ScalarDB テーブル用の WAL 解釈ビュー](#scalardb-テーブル用の-wal-解釈ビュー)を参照してください。 + +## ステップ 4: 分析クエリを実行する + +これですべての設定が完了し、Spark SQL コンソールを使用してサンプルデータに対して分析クエリを実行できます。 + +### データの読み取りとサマリーの計算 + +次のクエリを実行して、Cassandra の `test_catalog.scalardb.cassandrans.lineitem` からデータを取得し、返品フラグとラインステータス別にグループ化されたラインアイテムの合計数量、平均価格、合計収益などの集計メトリックを計算できます。 + +```sql +SELECT + l_returnflag, + l_linestatus, + sum(l_quantity) AS sum_qty, + sum(l_extendedprice) AS sum_base_price, + sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price, + sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge, + avg(l_quantity) AS avg_qty, + avg(l_extendedprice) AS avg_price, + avg(l_discount) AS avg_disc, + count(*) AS count_order +FROM + test_catalog.view.scalardb.cassandrans.lineitem +WHERE + to_date(l_shipdate, 'yyyy-MM-dd') <= date '1998-12-01' - 3 +GROUP BY + l_returnflag, + l_linestatus +ORDER BY + l_returnflag, + l_linestatus; +``` + +次の出力が表示されます: + +```console +A F 1519 2374824.6560278563 1387364.2207725341 1962763.4654265852 26.649122807017545 41663.590456629056 0.41501802923479575 57 +N F 98 146371.2295412012 85593.96776336085 121041.55837332775 32.666666666666664 48790.409847067065 0.40984706454007996 3 +N O 5374 8007373.247086477 4685647.785126835 6624210.945739046 24.427272727272726 36397.15112312035 0.4147594809559689 220 +RF 1461 2190869.9676265526 1284178.4378283697 1814151.2807494882 25.189655172413794 37773.62013149229 0.41323493790730753 58 +``` + +### 複数のデータソースにまたがるテーブルを結合 + +次のクエリを実行して、ScalarDB 管理下テーブルと ScalarDB 管理外テーブルの両方を含む複数のデータソースのテーブルを結合することもできます。このクエリは、PostgreSQL、MySQL、Cassandra の顧客、注文、明細データを結合し、特定の日付の収益が最も高い未出荷の注文を特定します。 + +```sql +SELECT + l_orderkey, + sum(l_extendedprice * (1 - l_discount)) AS revenue, + o_orderdate, + o_shippriority +FROM + test_catalog.postgresql.sample_ns.customer, + test_catalog.scalardb.mysqlns.orders, + test_catalog.scalardb.cassandrans.lineitem +WHERE + c_mktsegment = 'AUTOMOBILE' + AND c_custkey = o_custkey + AND l_orderkey = o_orderkey + AND o_orderdate < '1995-03-15' + AND l_shipdate > '1995-03-15' +GROUP BY + l_orderkey, + o_orderdate, + o_shippriority +ORDER BY + revenue DESC, + o_orderdate, + l_orderkey +LIMIT 10; +``` + +次の出力が表示されます: + +```console +1071617 128186.99915996166 1995-03-10 0 +1959075 33104.51278645416 1994-12-23 0 +430243 19476.115819260962 1994-12-24 0 +``` + +:::note + +このサンプルチュートリアルでインポートされたテーブルに対して、Apache Spark および Spark SQL がサポートする任意のクエリを実行することもできます。ScalarDB Analytics は Spark SQL がサポートするすべてのクエリをサポートしているため、例に示されている選択 (フィルタリング)、結合、集計、順序付けだけでなく、ウィンドウ関数、ラテラル結合、その他のさまざまな操作も実行できます。 + +Spark SQL がサポートするクエリの種類を確認するには、[Spark SQL ドキュメント](https://spark.apache.org/docs/latest/sql-ref.html)を参照してください。 + +::: + +## ステップ 5: サンプルアプリケーションを停止する + +サンプルアプリケーションを停止し、関連付けられているすべてのボリュームを削除するには、次のコマンドを実行します。このアクションにより、すべてのサービスがシャットダウンされ、ボリュームに保存されているすべての永続データが削除され、アプリケーションの状態がリセットされます: + +```console +docker compose down -v +``` + +## リファレンス + +このセクションには、設定やスキーマの詳細など、ScalarDB Analytics に関連するその他の詳細が含まれています。 + +### ScalarDB Analytics の設定 + +ScalarDB Analytics の設定は、`spark-defaults.conf` ファイルなどの Spark の設定によって行います。このセクションでは、このサンプルアプリケーションでの ScalarDB Analytics の設定について簡単に説明します。 + +#### 一般的な設定 + +以下は、ScalarDB Analytics の一般的な設定です: + +```console +spark.sql.catalog.test_catalog com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog +spark.sql.extensions com.scalar.db.analytics.spark.extension.ScalarDbAnalyticsExtensions +``` + +最初の行は、Spark カタログプラグインの実装クラスを指定します。Spark SQL で ScalarDB Analytics カタログを有効にするには、常にこれを `com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog` に設定する必要があります。 + +:::note + +カタログ名として任意の文字列を設定できます。この例では `test_catalog` です。設定されたカタログ名は、Spark SQL クエリのテーブル識別子の一部として使用されます。 + +::: + +2 行目は、Spark SQL 拡張実装クラスを指定します。これは、前述の `spark.sql.catalog.test_catalog` 設定とともに、常に `com.scalar.db.analytics.spark.extension.ScalarDbAnalyticsExtensions` に設定する必要があります。 + +#### ライセンス情報 + +以下は、ScalarDB Analytics のライセンス設定です: + +```apacheconf +spark.sql.catalog.test_catalog.license.key +spark.sql.catalog.test_catalog.license.cert_pem +``` + +これらの行は、ScalarDB Analytics のライセンス情報を提供します。上で説明したように、Spark SQL コンソールを起動する前に、プレースホルダーをライセンス情報に置き換える必要があります。 + +#### ScalarDB 管理データベースのデータソース設定 + +以下は、ScalarDB Analytics の ScalarDB 管理データベースのデータソース設定です。 + +```apacheconf +spark.sql.catalog.test_catalog.data_source.scalardb.type scalardb +spark.sql.catalog.test_catalog.data_source.scalardb.config_path /etc/scalardb.properties +``` + +最初の行は、データソースの種類を指定します。ScalarDB 管理下データベースをデータソースとして設定するには、常にこれを `scalardb` に設定する必要があります。2 行目は、ScalarDB データソースの設定ファイルへのパスを指定します。以上が ScalarDB データソースに必要な設定です。 + +:::note + +データソース名として任意の文字列を設定できます。この例では `scalardb` です。設定されたデータソース名は、Spark SQL クエリのテーブル識別子の一部として使用されます。 + +::: + +#### ScalarDB 管理外データベースのデータソース設定 + +ScalarDB Analytics の ScalarDB 管理外データベースのデータソース設定は次のとおりです: + +```apacheconf +spark.sql.catalog.test_catalog.data_source.postgresql.type postgresql +spark.sql.catalog.test_catalog.data_source.postgresql.host postgres +spark.sql.catalog.test_catalog.data_source.postgresql.port 5432 +spark.sql.catalog.test_catalog.data_source.postgresql.username postgres +spark.sql.catalog.test_catalog.data_source.postgresql.password postgres +spark.sql.catalog.test_catalog.data_source.postgresql.database sampledb +``` + +これらの行は、PostgreSQL を ScalarDB 管理外データベースのデータソースとして設定します。最初の行はデータソースの種類を指定し、残りの行はデータソース固有の設定、この例では PostgreSQL データソースの接続情報を指定します。データソース固有の設定は、データソースの種類によって異なります。 + +:::note + +ScalarDB データソースと同様に、データソース名として任意の文字列 (この例では `postgresql`) を設定できます。 + +::: + +### スキーマの詳細 + +次のエンティティ関係図は、PostgreSQL、MySQL、Cassandra のテーブル間の関係を示しており、外部キーによって顧客、注文、明細項目がリンクされています。 + +```mermaid +erDiagram + "postgresql.sample_ns.customer" ||--|{ "scalardb.mysqlns.orders" : "custkey" + "postgresql.sample_ns.customer" { + int c_custkey + text c_name + text c_address + int c_nationkey + text c_phone + double c_acctbal + text c_mktsegment + text c_comment + } + "scalardb.mysqlns.orders" ||--|{ "scalardb.cassandrans.lineitem" : "orderkey" + "scalardb.mysqlns.orders" { + int o_orderkey + int o_custkey + text o_orderstatus + double o_totalprice + text o_orderdate + text o_orderpriority + text o_clerk + int o_shippriority + text o_comment + } + "scalardb.cassandrans.lineitem" { + int l_orderkey + int l_partkey + int l_suppkey + int l_linenumber + double l_quantity + double l_extendedprice + double l_discount + double l_tax + text l_returnflag + text l_linestatus + text l_shipdate + text l_commitdate + text l_receiptdate + text l_shipinstruct + text l_shipmode + text l_comment + } +``` + +- `postgresql.sample_ns.customer` は PostgreSQL のテーブルであり、ScalarDB によって管理されていません。 +- `scalardb.mysqlns.orders` と `scalardb.cassandrans.lineitem` は ScalarDB のテーブルであり、それぞれ MySQL と Cassandra にマッピングされています。 + +テーブルの簡単な説明は次のとおりです: + +- **`postgresql.sample_ns.customer`.** 顧客に関する情報を表すテーブル。このテーブルには、顧客キー、名前、住所、電話番号、口座残高などの属性が含まれます。 +- **`scalardb.mysqlns.orders`.** 顧客が行った注文に関する情報を含むテーブル。このテーブルには、注文キー、顧客キー、注文ステータス、注文日、注文優先度などの属性が含まれます。 +- **`scalardb.cassandrans.lineitem`.** 注文に関連付けられた明細項目を表すテーブル。このテーブルには、注文キー、部品キー、サプライヤーキー、数量、価格、出荷日などの属性が含まれます。 + +### 名前空間マッピングの詳細 + +設定された各データソースのテーブルは、次のフォーマットで Spark SQL 識別子にマッピングされます: + +```console +...`. +``` + +テーブル識別子の各部分について、以下に説明します。 + +- **``.** spark-defaults.conf で設定されたカタログ名。これは、Spark SQL で ScalarDB Analytics カタログを識別します。 +- **``.** spark-defaults.conf で設定されたデータソース名。postgresql や scalardb など、特定の種類のデータソースを表します。 +- **``.** データソース内の名前空間名。例: + - PostgreSQL や MySQL などの RDBMS では、これはスキーマに対応します。 + - Cassandra などの NoSQL データベースでは、これはキースペースを参照する場合があります。 +- **``.** 名前空間内のテーブルの名前。 + +この例では、次のテーブルが利用可能です: + +- PostgreSQL: + - test_catalog.postgresql.sample_ns.customer +- ScalarDB (Cassandra): + - test_catalog.scalardb.cassandrans.lineitem +- ScalarDB (MySQL): + - test_catalog.scalardb.mysqlns.orders + +このマッピングにより、Spark SQL を使用して、さまざまなデータソースのテーブルにシームレスにアクセスしてクエリを実行できます。 + +### ScalarDB テーブル用の WAL 解釈ビュー + +トランザクション処理を有効にした ScalarDB のテーブルには、データベースに格納されている生のテーブルにトランザクションメタデータ列が含まれます。ScalarDB Analytics はデータベース内の生のテーブルを直接 Spark SQL テーブルにマッピングするため、Spark SQL からこれらのテーブルを参照するとトランザクションメタデータ列が含まれます。次のコマンドを実行すると、トランザクションメタデータ列が含まれていることが確認できます: + +```sql +DESCRIBE test_catalog.scalardb.mysqlns.orders; +``` + +次の出力が表示されます: + +```console +o_orderkey int +o_custkey int +o_orderstatus string +o_totalprice double +o_orderdate string +o_orderpriority string +o_clerk string +o_shippriority int +o_comment string +tx_id string +tx_state int +tx_version int +tx_prepared_at bigint +tx_committed_at bigint +before_tx_id string +before_tx_state int +before_tx_version int +before_tx_prepared_at bigint +before_tx_committed_at bigint +before_o_orderstatus string +before_o_clerk string +before_o_orderdate string +before_o_shippriority int +before_o_custkey int +before_o_totalprice double +before_o_comment string +before_o_orderpriority string +``` + +多くの場合、トランザクションメタデータ列は必要ありません。トランザクションメタデータ列を除く処理を簡単にするために、ScalarDB Analytics は WAL 解釈ビューを提供します。WAL 解釈ビューはトランザクションメタデータ列を非表示にし、ユーザー定義の列のみを公開して、クエリを簡素化します。たとえば、読み取り専用分析を実行する場合や、分析にトランザクションメタデータが必要ない場合は、WAL 解釈ビューを使用します。さらに、WAL 解釈ビューは、トランザクションメタデータ列を内部的に解釈することで、読み取りコミット一貫性を保証します。 + +#### Spark SQL での WAL 解釈ビューの命名規則 + +WAL 解釈ビューには、テーブル識別子のデータソース部分の前に `view.` というプレフィックスが付きます。たとえば、ScalarDB テーブルでは次の WAL 解釈ビューが使用できます: + +- ScalarDB (Cassandra): + - test_catalog.view.scalardb.cassandrans.lineitem +- ScalarDB (MySQL): + - test_catalog.view.scalardb.mysqlns.orders + +たとえば、Cassandra でサポートされる ScalarDB テーブルの WAL 解釈ビューを表示するには、次のコマンドを実行します: + +```sql +DESCRIBE test_catalog.view.scalardb.cassandrans.lineitem; +``` + +次の出力が表示されます: + +```console +l_orderkey int +l_linenumber int +l_comment string +l_commitdate string +l_discount double +l_extendedprice double +l_linestatus string +l_partkey int +l_quantity int +l_receiptdate string +l_returnflag string +l_shipdate string +l_shipinstruct string +l_shipmode string +l_suppkey int +l_tax double +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/README.mdx new file mode 100644 index 00000000..61c9a1e9 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/README.mdx @@ -0,0 +1,533 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# マイクロサービストランザクションを使用した Spring Data JDBC for ScalarDB のサンプルアプリケーション + +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、Spring Data JDBC for ScalarDB を使用してマイクロサービストランザクション用のサンプル Spring Boot アプリケーションを作成する方法について説明します。 + +これらの機能の詳細については、[2フェーズコミットトランザクション](../../two-phase-commit-transactions.mdx) および [Spring Data JDBC for ScalarDB ガイド](../../scalardb-sql/spring-data-guide.mdx)を参照してください。 + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- [Docker](https://www.docker.com/get-started/) 20.10以降 ([Docker Compose](https://docs.docker.com/compose/install/) V2以降) + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../../requirements.mdx)を参照してください。 + +::: + + + +## サンプルアプリケーション + +### 概要 + +このチュートリアルでは、ScalarDB の[2フェーズコミットインターフェースを使用したトランザクション](../../two-phase-commit-transactions.mdx)を通じて、アイテムを注文し、信用枠で支払うことができるサンプル電子商取引アプリケーションを作成するプロセスについて説明します。 + +このサンプルアプリケーションには、[*Database-per-service* pattern](https://microservices.io/patterns/data/database-per-service.html) に基づく *Customer Service* と *Order Service* という2つのマイクロサービスがあります。 + +Customer Service は、クレジット限度額やクレジット合計などのクレジットカード情報を含む顧客情報を管理します。Order Service は、注文の確定や注文履歴の取得などの注文操作を担当します。 + +各サービスには gRPC エンドポイントがあります。クライアントはエンドポイントを呼び出し、サービスも互いにエンドポイントを呼び出します。Customer Service と Order Service は、それぞれ ScalarDB を介して MySQL と Cassandra を使用します。 + +![概要](images/overview.png) + +各サービスは、専用の ScalarDB Cluster を介してデータベースにアクセスします。 + +:::note + +両方の ScalarDB Cluster は、Consensus Commit プロトコルに使用される小さな Coordinator データベースにアクセスします。このサンプルアプリケーションでは、セットアップと説明を簡単にするために、Coordinator データベースは Order Service の同じ Cassandra インスタンスに共存していますが、もちろん、Coordinator データベースは別のデータベースとして管理できます。 + +また、サンプルアプリケーションでは ScalarDB の使用方法の説明に重点を置いているため、アプリケーション固有のエラー処理、認証処理などは省略されています。 + +ScalarDB での例外処理の詳細については、[例外の処理方法](../../two-phase-commit-transactions.mdx#例外の処理方法)を参照してください。 + +::: + +### サービスエンドポイント + +サービスで定義されているエンドポイントは次のとおりです。 + +- Customer Service + - `getCustomerInfo` + - `payment` + - `prepare` + - `validate` + - `commit` + - `rollback` + - `repayment` + +- Order Service + - `placeOrder` + - `getOrder` + - `getOrders` + +### このサンプルアプリケーションで実行できること + +サンプルアプリケーションは、次の種類のトランザクションをサポートしています。 + +- Customer Service の `getCustomerInfo` エンドポイントを介して顧客情報を取得します。 +- Order Service の `placeOrder` エンドポイントと、Customer Service の `payment`、`prepare`、`validate`、`commit`、`rollback` エンドポイントを介して、信用枠を使用して注文を行います。 + - 注文のコストが顧客の信用限度額を下回っているかどうかを確認します。 + - チェックに合格した場合、注文履歴を記録し、顧客が支払った金額を更新します。 +- Order Service の `getOrder` エンドポイントと、Customer Service の `getCustomerInfo`、`prepare`、`validate`、`commit`、`rollback` エンドポイントを介して、注文 ID で注文情報を取得します。 +- Order Service の `getOrders` エンドポイントと、Customer Service の `getCustomerInfo`、`prepare`、`validate`、`commit`、`rollback` エンドポイントを介して、顧客 ID で注文情報を取得します。 +- Customer Service の `repayment` エンドポイントを介して支払いを行います。 + - 顧客が支払った金額を減らします。 + +:::note + +`getCustomerInfo` エンドポイントは、コーディネーターからトランザクション ID を受信するときに、参加者サービスエンドポイントとして機能します。 + +::: + +## ScalarDB Cluster の設定 + +[Customer Service 用の ScalarDB Cluster の設定](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/scalardb-cluster-node-for-customer-service.properties)は次のとおりです。 + +```properties +scalar.db.storage=multi-storage +scalar.db.multi_storage.storages=cassandra,mysql +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=cassandra-1 +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://mysql-1:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +scalar.db.multi_storage.namespace_mapping=customer_service:mysql,coordinator:cassandra +scalar.db.multi_storage.default_storage=mysql +scalar.db.consensus_commit.isolation_level=SERIALIZABLE + +scalar.db.cluster.node.standalone_mode.enabled=true +scalar.db.sql.enabled=true + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +- `scalar.db.sql.connection_mode`: この設定は、ScalarDB への接続方法を決定します。 +- `scalar.db.storage`: ScalarDB でマルチストレージトランザクションを使用するには、`multi-storage` を指定する必要があります。 +- `scalar.db.multi_storage.storages`: ここでストレージ名を定義する必要があります。 +- `scalar.db.multi_storage.storages.cassandra.*`: これらの設定は、`scalar.db.multi_storage.storages` で定義されているストレージ名の1つである `cassandra` ストレージ用です。`cassandra` ストレージのすべての `scalar.db.*` プロパティをここで設定できます。 +- `scalar.db.multi_storage.storages.mysql.*`: これらの設定は、`scalar.db.multi_storage.storages` で定義されているストレージ名の1つである `mysql` ストレージ用です。ここで、`mysql` ストレージのすべての `scalar.db.*` プロパティを設定できます。 +- `scalar.db.multi_storage.namespace_mapping`: この設定は、名前空間をストレージにマップします。このサンプルアプリケーションでは、`customer_service` 名前空間テーブルの操作は `mysql` ストレージにマップされ、`order_service` 名前空間テーブルの操作は `cassandra` ストレージにマップされます。また、Consensus Commit トランザクションで使用される `coordinator` 名前空間にマップされるストレージを定義することもできます。 +- `scalar.db.multi_storage.default_storage`: この設定は、マッピングされていない名前空間テーブルでの操作に使用されるデフォルトのストレージを設定します。 +- `scalar.db.sql.default_transaction_mode`: ScalarDB で2フェーズコミットトランザクションモードを使用するには、`two_phase_commit_transaction` を指定する必要があります。 +- `scalar.db.consensus_commit.isolation_level`: この設定は、ConsensusCommit に使用される分離レベルを決定します。 + +詳細については、[マルチストレージトランザクション](../../multi-storage-transactions.mdx)を参照してください。 + +[Order Service 用の ScalarDB Cluster の設定](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/scalardb-cluster-node-for-order-service.properties)は次のとおりです。 + +```properties +scalar.db.storage=cassandra +scalar.db.contact_points=cassandra-1 +scalar.db.username=cassandra +scalar.db.password=cassandra +scalar.db.consensus_commit.isolation_level=SERIALIZABLE + +scalar.db.cluster.node.standalone_mode.enabled=true +scalar.db.sql.enabled=true + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +- `scalar.db.storage`: このサービスは Cassandra のみを基盤データベースとして使用するため、`cassandra` が指定されています。 +- `scalar.db.contact_points`: この設定では、Cassandra に接続するための連絡先 (ホストなど) を指定します。 +- `scalar.db.username`: この設定では、Cassandra に接続するためのユーザー名を指定します。 +- `scalar.db.password`: この設定では、Cassandra に接続するためのパスワードを指定します。 +- `scalar.db.sql.default_namespace_name`: この設定では、デフォルトの名前空間が `order_service` に設定されるため、アプリケーションで名前空間を指定する必要がなくなります。 +- `scalar.db.sql.default_transaction_mode`: ScalarDB で2フェーズコミットトランザクションモードを使用するには、`two_phase_commit_transaction` を指定する必要があります。 +- `scalar.db.consensus_commit.isolation_level`: この設定は、ConsensusCommit に使用される分離レベルを決定します。 + +このサンプルアプリケーションでは、ScalarDB Cluster はスタンドアロンモード (`scalar.db.cluster.node.standalone_mode.enabled=true`) で実行されています。 + +また、設定ファイルで ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定する必要があります。詳細については、[製品ライセンスキーの設定方法](../../scalar-licensing/README.mdx)を参照してください。 + +## セットアップ + +### ScalarDB サンプルリポジトリのクローンを作成する + +ターミナルを開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、このサンプルがあるディレクトリに移動します。 + +```console +cd scalardb-samples/spring-data-microservice-transaction-sample +``` + +### ライセンスキーを設定する + +設定ファイル [`scalardb-cluster-node-for-customer-service.properties`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/scalardb-cluster-node-for-customer-service.properties) および [`scalardb-cluster-node-for-order-service.properties`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/scalardb-cluster-node-for-order-service.properties) で、ScalarDB Clusters のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../../scalar-licensing/README.mdx) を参照してください。 + +### Cassandra、MySQL、および ScalarDB Cluster を起動する + +Cassandra、MySQL、および ScalarDB Cluster を起動するには、次の `docker-compose` コマンドを実行する必要があります。 + +```console +docker-compose up -d cassandra mysql scalardb-cluster-node-for-customer-service scalardb-cluster-node-for-order-service +``` + +:::note + +コンテナが完全に起動するまで1分以上待つ必要があります。 + +::: + +### スキーマをロード + +サンプルアプリケーションのデータベーススキーマ (データを整理する方法) は、Customer Service の場合は [`schema-for-customer-service.sql`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/schema-for-customer-service.sql)、Order Service の場合は [`schema-for-order-service.sql`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/schema-for-order-service.sql) で既に定義されています。 + +スキーマを適用するには、[ScalarDB リリース](https://github.com/scalar-labs/scalardb/releases)ページに移動し、使用する ScalarDB のバージョンに一致する SQL CLI ツールをダウンロードします。 + +#### MySQL + +[`schema-for-customer-service.sql`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/schema-for-customer-service.sql) のスキーマを MySQL にロードするには、`` をダウンロードした ScalarDB Schema Loader のバージョンに置き換えて、次のコマンドを実行します。 + +```console +java -jar scalardb-cluster-sql-cli--all.jar --config scalardb-cluster-node-for-customer-service-client.properties --file schema-for-customer-service.sql +``` + +#### Cassandra + +[`schema-for-order-service.sql`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/schema-for-order-service.sql) のスキーマを Cassandra にロードするには、`` をダウンロードした ScalarDB Schema Loader のバージョンに置き換えて、次のコマンドを実行します。 + +```console +java -jar scalardb-cluster-sql-cli--all.jar --config scalardb-cluster-node-for-order-service-client.properties --file schema-for-order-service.sql +``` + +#### スキーマの詳細 + +[`schema-for-customer-service.sql`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/schema-for-customer-service.sql) に示されているように、Customer Service のすべてのテーブルは `customer_service` 名前空間に作成されます。 + +- `customer_service.customers`: 顧客の情報を管理するテーブル + - `credit_limit`: 貸し手が各顧客に信用枠の使用を許可する最大金額 + - `credit_total`: 各顧客が信用枠を使用してすでに使用した金額 + +[`schema-for-order-service.sql`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/schema-for-order-service.sql) に示されているように、Order Service のすべてのテーブルは `order_service` 名前空間に作成されます。 + +- `order_service.orders`: 注文情報を管理するテーブル +- `order_service.statements`: 注文明細情報を管理するテーブル +- `order_service.items`: 注文する商品の情報を管理するテーブル + +スキーマのエンティティリレーションシップダイアグラムは次のとおりです。 + +![ERD](images/ERD.png) + +### マイクロサービスを開始する + +まず、次のコマンドを使用してサンプルアプリケーションの Docker イメージをビルドする必要があります。 + +```console +./gradlew docker +``` + +次に、次の `docker-compose` コマンドを使用してマイクロサービスを起動できます。 + +```console +docker-compose up -d customer-service order-service +``` + +### 初期データ + +マイクロサービスが起動すると、初期データが自動的にロードされます。 + +初期データがロードされたら、次のレコードがテーブルに保存されます: + +- `customer_service.customers` テーブルの場合: + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +- `order_service.items` テーブルの場合: + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## サンプルアプリケーションを実行する + +まず、ID が `1` である顧客に関する情報を取得します。 + +```console +./gradlew :client:run --args="GetCustomerInfo 1" +... +{"id": 1,"name": "Yamada Taro","credit_limit": 10000} +... +``` + +この時点では、`credit_total` は表示されません。つまり、`credit_total` の現在の値は `0` です。 + +次に、顧客 ID `1` を使用して、リンゴ3個とオレンジ2個を注文します。 + +注文の形式は `:,:,...` であることに注意してください。 + +```console +./gradlew :client:run --args="PlaceOrder 1 1:3,2:2" +... +{"order_id": "415a453b-cfee-4c48-b8f6-d103d3e10bdb"} +... +``` + +このコマンドを実行すると、注文 ID が表示されます。 + +注文 ID を使用して注文の詳細を確認してみましょう。 + +```console +./gradlew :client:run --args="GetOrder 415a453b-cfee-4c48-b8f6-d103d3e10bdb" +... +{"order": {"order_id": "415a453b-cfee-4c48-b8f6-d103d3e10bdb","timestamp": 1686555272435,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": $ +,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}} +... +``` + +次に、別の注文を出して、顧客 ID `1` の注文履歴を取得しましょう。 + +```console +./gradlew :client:run --args="PlaceOrder 1 5:1" +... +{"order_id": "069be075-98f7-428c-b2e0-6820693fc41b"} +... +./gradlew :client:run --args="GetOrders 1" +... +{"order": [{"order_id": "069be075-98f7-428c-b2e0-6820693fc41b","timestamp": 1686555279366,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 5,"item_name": "Melon","price": 3000,"count": 1,"total": 3000}],"total": 3000},{"order_id": "415a453b-cfee-4c48-b8f6-d103d3e10bdb","timestamp": 1686555272435,"customer_id": 1,"customer_name": "Yamada Taro","statement": [{"item_id": 1,"item_name": "Apple","price": 1000,"count": 3,"total": 3000},{"item_id": 2,"item_name": "Orange","price": 2000,"count": 2,"total": 4000}],"total": 7000}]} +... +``` + +この注文履歴は、タイムスタンプの降順で表示されます。 + +顧客の現在の `credit_total` は `10000` です。顧客は、情報を取得したときに表示された `credit_limit` に達したため、これ以上注文することはできません。 + +```console +./gradlew :client:run --args="GetCustomerInfo 1" +... +{"id": 1,"name": "Yamada Taro","credit_limit": 10000,"credit_total": 10000} +... +./gradlew :client:run --args="PlaceOrder 1 3:1,4:1" +... +io.grpc.StatusRuntimeException: FAILED_PRECONDITION: Credit limit exceeded. creditTotal:10000, payment:7500 + at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:271) + at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:252) + at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:165) + at sample.rpc.OrderServiceGrpc$OrderServiceBlockingStub.placeOrder(OrderServiceGrpc.java:296) + at sample.client.command.PlaceOrderCommand.call(PlaceOrderCommand.java:38) + at sample.client.command.PlaceOrderCommand.call(PlaceOrderCommand.java:12) + at picocli.CommandLine.executeUserObject(CommandLine.java:2041) + at picocli.CommandLine.access$1500(CommandLine.java:148) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) + at picocli.CommandLine.execute(CommandLine.java:2170) + at sample.client.Client.main(Client.java:39) +... +``` + +支払いが完了すると、顧客は再度注文できるようになります。 + +```console +./gradlew :client:run --args="Repayment 1 8000" +... +./gradlew :client:run --args="GetCustomerInfo 1" +... +{"id": 1,"name": "Yamada Taro","credit_limit": 10000,"credit_total": 2000} +... +./gradlew :client:run --args="PlaceOrder 1 3:1,4:1" +... +{"order_id": "b6adabd8-0a05-4109-9618-3420fea3161f"} +... +``` + +## クリーンアップ + +Cassandra、MySQL、マイクロサービスを停止するには、次のコマンドを実行します。 + +```console +docker-compose down +``` + +## リファレンス - マイクロサービストランザクションの実現方法 + +注文、単一注文の取得、注文履歴の取得のトランザクションは、マイクロサービストランザクションを実現します。このセクションでは、注文を例に、Customer Service と Order Service にまたがるトランザクションの実装方法に焦点を当てます。 + +次のシーケンス図は、注文を行うトランザクションを示しています。 + +![シーケンス図](images/sequence_diagram.png) + +### 1. 2フェーズコミットインターフェースによるトランザクションが開始されます + +クライアントが Order Service に注文リクエストを送信すると、`OrderService.placeOrder()` が呼び出され、マイクロサービストランザクションが開始されます。 + +最初に、Order Service は次のように `ScalarDbTwoPcRepository.executeTwoPcTransaction()` を使用して2フェーズコミットインターフェースによるトランザクションを開始します。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +// Start a two-phase commit interface transaction +TwoPcResult result = orderRepository.executeTwoPcTransaction(txId -> { + ... +}, ...); +``` + +[CRUD 操作が実行される](#2-crud-operations-are-executed)、[2フェーズコミットプロトコルを使用してトランザクションがコミットされる](#3-トランザクションは2相コミットプロトコルを使用してコミットされます)、[エラー処理](#エラー処理)のアクションは、API によって自動的に実行されます。 + +### 2. CRUD 操作が実行される + +2フェーズコミットインターフェイスを使用したトランザクションが開始されると、`ScalarDbTwoPcRepository.executeTwoPcTransaction()` によって CRUD 操作が実行されます。Order Service は、注文情報を `order_service.orders` テーブルに、詳細情報を `order_service.statements` テーブルに次のように格納します。参考までに、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +// Put the order info into the `orders` table +orderRepository.insert(order); + +AtomicInteger amount = new AtomicInteger(); +for (ItemOrder itemOrder : request.getItemOrderList()) { + int itemId = itemOrder.getItemId(); + int count = itemOrder.getCount(); + // Retrieve the item info from the `items` table + Optional itemOpt = itemRepository.findById(itemId); + if (!itemOpt.isPresent()) { + String message = "Item not found: " + itemId; + responseObserver.onError( + Status.NOT_FOUND.withDescription(message).asRuntimeException()); + throw new ScalarDbNonTransientException(message); + } + Item item = itemOpt.get(); + + int cost = item.price * count; + // Put the order statement into the `statements` table + statementRepository.insert(new Statement(itemId, orderId, count)); + // Calculate the total amount + amount.addAndGet(cost); +} +``` + +次に、Order Service は、トランザクション ID とともに Customer Service の `payment` gRPC エンドポイントを呼び出します。参考については、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +customerServiceStub.payment( + PaymentRequest.newBuilder() + .setTransactionId(transactionId) + .setCustomerId(customerId) + .setAmount(amount) + .build()); +``` + +Customer Service の `payment` エンドポイントは、まず次のように `ScalarDbTwoPcRepository.joinTransactionOnParticipant()` を使用してトランザクションを結合します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +customerRepository.joinTransactionOnParticipant(request.getTransactionId(), ...); +``` + +次に、エンドポイントは顧客情報を取得し、支払い後に顧客のクレジット合計がクレジット限度額を超えているかどうかを確認します。クレジット合計がクレジット限度額を超えていない場合、エンドポイントは顧客のクレジット合計を更新します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +Customer customer = getCustomer(responseObserver, request.getCustomerId()); + +int updatedCreditTotal = customer.creditTotal + request.getAmount(); +// Check if the credit total exceeds the credit limit after payment +if (updatedCreditTotal > customer.creditLimit) { + String message = String.format( + "Credit limit exceeded. creditTotal:%d, payment:%d", customer.creditTotal, request.getAmount()); + responseObserver.onError( + Status.FAILED_PRECONDITION.withDescription(message).asRuntimeException()); + throw new ScalarDbNonTransientException(message); +} + +// Reduce `credit_total` for the customer +customerRepository.update(customer.withCreditTotal(updatedCreditTotal)); +``` + +### 3. トランザクションは2相コミットプロトコルを使用してコミットされます + +Order Service は、支払いが成功したという更新を受け取った後、トランザクションをコミットしようとします。 + +Order Service で呼び出された `ScalarDbTwoPcRepository.executeTwoPcTransaction()` API は、ローカル Order Service とリモート Customer Service の両方の準備、検証、およびコミットを自動的に実行します。これらの手順は、上記の CRUD 操作が正常に終了した後に順番に実行されます。Customer Service の `prepare`、`validate`、および `commit` gRPC エンドポイントを呼び出す実装は、API にパラメーターとして渡す必要があります。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +TwoPcResult result = orderRepository.executeTwoPcTransaction(txId ->{ + ... + }, + + Collections.singletonList( + RemotePrepareCommitPhaseOperations.createSerializable( + this::callPrepareEndpoint, + this::callValidateEndpoint, + this::callCommitEndpoint, + this::callRollbackEndpoint + ) + ) +); +``` + +![高レベル 2PC API のシーケンス図](images/seq-diagram-high-level-2pc-api.png) + +Customer Service の `prepare` エンドポイントでは、エンドポイントは `ScalarDbTwoPcRepository.prepareTransactionOnParticipant()` を使用してトランザクションを再開し、準備します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +customerRepository.prepareTransactionOnParticipant(request.getTransactionId()); +``` + +Customer Service の `validate` エンドポイントでは、エンドポイントは `ScalarDbTwoPcRepository.validateTransactionOnParticipant()` を使用してトランザクションを再開し、検証します。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +customerRepository.validateTransactionOnParticipant(request.getTransactionId()); +``` + +Customer Service の `commit` エンドポイントでは、エンドポイントは `ScalarDbTwoPcRepository.commitTransactionOnParticipant()` を使用してトランザクションを再開し、コミットします。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +customerRepository.commitTransactionOnParticipant(request.getTransactionId()); +``` + +### エラー処理 + +トランザクションの実行中にエラーが発生した場合、`ScalarDbTwoPcRepository.executeTwoPcTransaction()` は、ローカルの Order Service とリモートの Customer Service の両方でトランザクションを自動的にロールバックします。Customer Service の `rollback` gRPC エンドポイントを呼び出す実装も、他の実装とともに API にパラメータとして渡す必要があります。参考として、[`OrderService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/order-service/src/main/java/sample/order/OrderService.java) を参照してください。 + +```java +TwoPcResult result = orderRepository.executeTwoPcTransaction(txId ->{ + ... + }, + + Collections.singletonList( + RemotePrepareCommitPhaseOperations.createSerializable( + this::callPrepareEndpoint, + this::callValidateEndpoint, + this::callCommitEndpoint, + this::callRollbackEndpoint + ) + ) +); +``` + +Customer Service の `rollback` エンドポイントでは、エンドポイントがトランザクションを再開してロールバックします。参考として、[`CustomerService.java`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-microservice-transaction-sample/customer-service/src/main/java/sample/customer/CustomerService.java) を参照してください。 + +```java +customerRepository.rollbackTransactionOnParticipant(request.getTransactionId()); +``` + +ScalarDB で例外を処理する方法の詳細については、[例外の処理方法](../../two-phase-commit-transactions.mdx#例外の処理方法)を参照してください。 diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/ERD.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/ERD.png new file mode 100644 index 00000000..c0468efa Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/ERD.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/overview.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/overview.png new file mode 100644 index 00000000..223c8ad7 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/overview.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/seq-diagram-high-level-2pc-api.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/seq-diagram-high-level-2pc-api.png new file mode 100644 index 00000000..724e52b5 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/seq-diagram-high-level-2pc-api.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/sequence_diagram.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/sequence_diagram.png new file mode 100644 index 00000000..0317b5f3 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-microservice-transaction-sample/images/sequence_diagram.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/README.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/README.mdx new file mode 100644 index 00000000..c60ec5f5 --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/README.mdx @@ -0,0 +1,335 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# マルチストレージトランザクションを備えた Spring Data JDBC for ScalarDB のサンプルアプリケーション + +import WarningLicenseKeyContact from '/src/components/ja-jp/_warning-license-key-contact.mdx'; +import TranslationBanner from '/src/components/_translation-ja-jp.mdx'; + + + +このチュートリアルでは、マルチストレージトランザクションを備えた Spring Data JDBC for ScalarDB を使用してサンプル Spring Boot アプリケーションを作成する方法について説明します。 + +## このサンプルアプリケーションの前提条件 + +- [Eclipse Temurin](https://adoptium.net/temurin/releases/) の OpenJDK LTS バージョン (8、11、17、または 21) +- [Docker](https://www.docker.com/get-started/) 20.10以降 ([Docker Compose](https://docs.docker.com/compose/install/) V2以降) + +:::note + +このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、[要件](../../requirements.mdx)を参照してください。 + +::: + + + +## サンプルアプリケーション + +### 概要 + +このチュートリアルでは、ScalarDB の [マルチストレージトランザクション](../../multi-storage-transactions.mdx)機能を使用して、アイテムを注文し、信用枠で支払いを行うことができるサンプル電子商取引アプリケーションを作成するプロセスについて説明します。 + +:::note + +このチュートリアルでは、マルチストレージトランザクションで Spring Data JDBC for ScalarDB を使用する方法を説明することに重点を置いているため、サンプルアプリケーションではアプリケーション固有のエラー処理、認証処理などは省略されています。 + +詳細については、[Spring Data JDBC for ScalarDB ガイド](../../scalardb-sql/spring-data-guide.mdx)を参照してください。 + +::: + +![概要](images/overview.png) + +アプリケーションは、ScalarDB Cluster を介してデータベースにアクセスします。 + +### スキーマ + +[スキーマ](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-multi-storage-transaction-sample/schema.sql)は次のとおりです。 + +```sql +CREATE COORDINATOR TABLES IF NOT EXIST; + +CREATE NAMESPACE IF NOT EXISTS customer; + +CREATE TABLE IF NOT EXISTS customer.customers ( + customer_id INT PRIMARY KEY, + name TEXT, + credit_limit INT, + credit_total INT +); + +CREATE NAMESPACE IF NOT EXISTS "order"; + +CREATE TABLE IF NOT EXISTS "order".orders ( + customer_id INT, + timestamp BIGINT, + order_id TEXT, + PRIMARY KEY (customer_id, timestamp) +); + +CREATE INDEX IF NOT EXISTS ON "order".orders (order_id); + +CREATE TABLE IF NOT EXISTS "order".statements ( + order_id TEXT, + item_id INT, + count INT, + PRIMARY KEY (order_id, item_id) +); + +CREATE TABLE IF NOT EXISTS "order".items ( + item_id INT PRIMARY KEY, + name TEXT, + price INT +); +``` + +すべてのテーブルは、`customer` および `order` 名前空間に作成されます。 + +- `customer.customers`: 顧客の情報を管理するテーブル + - `credit_limit`: 貸し手が各顧客にクレジットカードの使用を許可する最大金額 + - `credit_total`: 各顧客がクレジットカードを使用してすでに使用した金額 +- `order.orders`: 注文情報を管理するテーブル +- `order.statements`: 注文明細情報を管理するテーブル +- `order.items`: 注文するアイテムの情報を管理するテーブル + +スキーマのエンティティ関係図は次のとおりです。 + +![ERD](images/ERD.png) + +### トランザクション + +このサンプルアプリケーションでは、次の5つのトランザクションが実装されています: + +1. 顧客情報の取得 +2. クレジットカードによる注文 (注文のコストがクレジット限度額を下回っているかどうかを確認し、注文履歴を記録して、チェックに合格した場合は `credit_total` を更新します) +3. 注文 ID による注文情報の取得 +4. 顧客 ID による注文情報の取得 +5. 返済 (`credit_total` の金額を減らします) + +## ScalarDB Cluster の設定 + +[ScalarDB Cluster の設定](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-multi-storage-transaction-sample/scalardb-cluster-node.properties)は次のとおりです: + +```properties +scalar.db.storage=multi-storage +scalar.db.multi_storage.storages=cassandra,mysql +scalar.db.multi_storage.storages.cassandra.storage=cassandra +scalar.db.multi_storage.storages.cassandra.contact_points=cassandra-1 +scalar.db.multi_storage.storages.cassandra.username=cassandra +scalar.db.multi_storage.storages.cassandra.password=cassandra +scalar.db.multi_storage.storages.mysql.storage=jdbc +scalar.db.multi_storage.storages.mysql.contact_points=jdbc:mysql://mysql-1:3306/ +scalar.db.multi_storage.storages.mysql.username=root +scalar.db.multi_storage.storages.mysql.password=mysql +scalar.db.multi_storage.namespace_mapping=customer:mysql,order:cassandra,coordinator:cassandra +scalar.db.multi_storage.default_storage=cassandra + +scalar.db.cluster.node.standalone_mode.enabled=true +scalar.db.sql.enabled=true + +# License key configurations +scalar.db.cluster.node.licensing.license_key= +scalar.db.cluster.node.licensing.license_check_cert_pem= +``` + +- `scalar.db.storage`: ScalarDB でマルチストレージトランザクションを使用するには、`multi-storage` を指定する必要があります。 +- `scalar.db.multi_storage.storages`: ここでストレージ名を定義する必要があります。 +- `scalar.db.multi_storage.storages.cassandra.*`: これらの設定は、`scalar.db.multi_storage.storages` で定義されているストレージ名の1つである `cassandra` ストレージ用です。ここで、`cassandra` ストレージのすべての `scalar.db.*` プロパティを設定できます。 +- `scalar.db.multi_storage.storages.mysql.*`: これらの設定は、`scalar.db.multi_storage.storages` で定義されているストレージ名の1つである `mysql` ストレージ用です。ここで、`mysql` ストレージのすべての `scalar.db.*` プロパティを設定できます。 +- `scalar.db.multi_storage.namespace_mapping`: この設定は、名前空間をストレージにマップします。このサンプルアプリケーションでは、`customer` 名前空間テーブルの操作は `mysql` ストレージにマップされ、`order` 名前空間テーブルの操作は `cassandra` ストレージにマップされます。また、Consensus Commit トランザクションで使用される `coordinator` 名前空間にマップされるストレージを定義することもできます。 +- `scalar.db.multi_storage.default_storage`: この設定は、マップされていない名前空間テーブルの操作に使用されるデフォルトのストレージを設定します。 + +詳細については、[マルチストレージトランザクション](../../multi-storage-transactions.mdx)を参照してください。 + +このサンプルアプリケーションでは、ScalarDB Cluster はスタンドアロンモード (`scalar.db.cluster.node.standalone_mode.enabled=true`) で実行されています。 + +また、設定ファイルで ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定する必要があります。 詳細については、[製品ライセンスキーの設定方法](../../scalar-licensing/README.mdx)を参照してください。 + +## クライアント設定 + +[クライアント設定](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-multi-storage-transaction-sample/scalardb-sql.properties)は次のとおりです。 + +```properties +scalar.db.sql.connection_mode=cluster +scalar.db.sql.cluster_mode.contact_points=indirect:localhost +``` + +## セットアップ + +### ScalarDB サンプルリポジトリのクローンを作成する + +ターミナルを開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。 + +```console +git clone https://github.com/scalar-labs/scalardb-samples +``` + +次に、次のコマンドを実行して、このサンプルがあるディレクトリに移動します。 + +```console +cd scalardb-samples/spring-data-multi-storage-transaction-sample +``` + +### ライセンスキーを設定する + +設定ファイル [`scalardb-cluster-node.properties`](https://github.com/scalar-labs/scalardb-samples/blob/main/spring-data-multi-storage-transaction-sample/scalardb-cluster-node.properties) で ScalarDB Cluster のライセンスキー (試用ライセンスまたは商用ライセンス) を設定します。詳細については、[製品ライセンスキーの設定方法](../../scalar-licensing/README.mdx)を参照してください。 + +### Cassandra、MySQL、および ScalarDB Cluster を起動する + +Cassandra、MySQL、および ScalarDB Cluster を起動するには、次の `docker-compose` コマンドを実行する必要があります。 + +```console +docker-compose up -d +``` + +コンテナの起動には1分以上かかる場合があることに注意してください。 + +### スキーマをロード + +次に、次のコマンドでスキーマを適用する必要があります。SQL CLI ツール `scalardb-cluster-sql-cli--all.jar` をダウンロードするには、ScalarDB の [リリース](https://github.com/scalar-labs/scalardb/releases)を参照して、使用するバージョンをダウンロードしてください。 + +```console +java -jar scalardb-cluster-sql-cli--all.jar --config scalardb-sql.properties --file schema.sql +``` + +### 初期データをロードする + +コンテナが起動したら、次のコマンドを実行して初期データをロードする必要があります。 + +```console +./gradlew run --args="LoadInitialData" +``` + +初期データがロードされた後、次のレコードがテーブルに保存されます: + +- `customer.customers` テーブルの場合: + +| customer_id | name | credit_limit | credit_total | +|-------------|---------------|--------------|--------------| +| 1 | Yamada Taro | 10000 | 0 | +| 2 | Yamada Hanako | 10000 | 0 | +| 3 | Suzuki Ichiro | 10000 | 0 | + +- `order.items` テーブルの場合: + +| item_id | name | price | +|---------|--------|-------| +| 1 | Apple | 1000 | +| 2 | Orange | 2000 | +| 3 | Grape | 2500 | +| 4 | Mango | 5000 | +| 5 | Melon | 3000 | + +## サンプルアプリケーションを実行する + +まず、ID が `1` である顧客に関する情報を取得します。 + +```console +./gradlew run --args="GetCustomerInfo 1" +... +{"customer_id":1,"name":"Yamada Taro","credit_limit":10000,"credit_total":0} +... +``` + +次に、顧客 ID `1` を使用して、リンゴ3個とオレンジ2個を注文します。注文形式は `:,:,...` であることに注意してください。 + +```console +./gradlew run --args="PlaceOrder 1 1:3,2:2" +... +{"order_id":"5d49eb62-fcb9-4dd2-9ae5-e714d989937f","customer_id":1,"timestamp":1677564659810} +... +``` + +このコマンドを実行すると、注文 ID が表示されます。 + +注文 ID を使用して注文の詳細を確認してみましょう。 + +```console +./gradlew run --args="GetOrder 5d49eb62-fcb9-4dd2-9ae5-e714d989937f" +... +{"order_id":"5d49eb62-fcb9-4dd2-9ae5-e714d989937f","timestamp":1677564659810,"customer_id":1,"customer_name":"Yamada Taro","statements":[{"item_id":1,"item_name":"Apple","price":1000,"count":3,"total":3000},{"item_id":2,"item_name":"Orange","price":2000,"count":2,"total":4000}],"total":7000} +... +``` + +次に、別の注文を出して、顧客 ID `1` の注文履歴を取得しましょう。 + +```console +./gradlew run --args="PlaceOrder 1 5:1" +... +{"order_id":"ccd97d75-ee57-4393-a0bb-5230c4a8c68a","customer_id":1,"timestamp":1677564776069} +... +./gradlew run --args="GetOrders 1" +... +[{"order_id":"ccd97d75-ee57-4393-a0bb-5230c4a8c68a","timestamp":1677564776069,"customer_id":1,"customer_name":"Yamada Taro","statements":[{"item_id":5,"item_name":"Melon","price":3000,"count":1,"total":3000}],"total":3000},{"order_id":"5d49eb62-fcb9-4dd2-9ae5-e714d989937f","timestamp":1677564659810,"customer_id":1,"customer_name":"Yamada Taro","statements":[{"item_id":1,"item_name":"Apple","price":1000,"count":3,"total":3000},{"item_id":2,"item_name":"Orange","price":2000,"count":2,"total":4000}],"total":7000}] +... +``` + +この注文履歴は、タイムスタンプの降順で表示されます。 + +顧客の現在の `credit_total` は `10000` です。顧客は、情報を取得したときに表示された `credit_limit` に達したため、これ以上注文することはできません。 + +```console +./gradlew run --args="GetCustomerInfo 1" +... +{"customer_id":1,"name":"Yamada Taro","credit_limit":10000,"credit_total":10000} +... +./gradlew run --args="PlaceOrder 1 3:1,4:1" +... +java.lang.RuntimeException: Credit limit exceeded. limit:10000, total:17500 + at sample.SampleService.placeOrder(SampleService.java:102) + at sample.SampleService$$FastClassBySpringCGLIB$$1123c447.invoke() + at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) + at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) + at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) + at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) + at sample.SampleService$$EnhancerBySpringCGLIB$$1cb0cc8c.placeOrder() + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:37) + at sample.command.PlaceOrderCommand.call(PlaceOrderCommand.java:13) + at picocli.CommandLine.executeUserObject(CommandLine.java:2041) + at picocli.CommandLine.access$1500(CommandLine.java:148) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) + at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) + at picocli.CommandLine.execute(CommandLine.java:2170) + at sample.SampleApp.run(SampleApp.java:26) + at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:768) + at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:752) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) + at sample.SampleApp.main(SampleApp.java:35) +... +``` + +支払いが完了すると、顧客は再度注文できるようになります。 + +```console +./gradlew run --args="Repayment 1 8000" +... +./gradlew run --args="GetCustomerInfo 1" +... +{"customer_id":1,"name":"Yamada Taro","credit_limit":10000,"credit_total":2000} +... +./gradlew run --args="PlaceOrder 1 3:1,4:1" +... +{"order_id":"3ac4a1bf-a724-4f26-b948-9f03281a971e","customer_id":1,"timestamp":1677565028204} +... +``` + +## クリーンアップ + +Cassandra、MySQL、および ScalarDB Cluster を停止するには、次のコマンドを実行します。 + +```console +docker-compose down +``` diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/images/ERD.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/images/ERD.png new file mode 100644 index 00000000..02100437 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/images/ERD.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/images/overview.png b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/images/overview.png new file mode 100644 index 00000000..360b26c6 Binary files /dev/null and b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-samples/spring-data-multi-storage-transaction-sample/images/overview.png differ diff --git a/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-sql/grammar.mdx b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-sql/grammar.mdx new file mode 100644 index 00000000..d02884af --- /dev/null +++ b/i18n/versioned_docs/ja-jp/docusaurus-plugin-content-docs/version-3.14/scalardb-sql/grammar.mdx @@ -0,0 +1,2347 @@ +--- +tags: + - Enterprise Premium +displayed_sidebar: docsJapanese +--- + +# ScalarDB SQL 文法 + +- DDL + - [CREATE NAMESPACE](#create-namespace) + - [CREATE TABLE](#create-table) + - [CREATE INDEX](#create-index) + - [TRUNCATE TABLE](#truncate-table) + - [DROP INDEX](#drop-index) + - [DROP TABLE](#drop-table) + - [DROP NAMESPACE](#drop-namespace) + - [CREATE COORDINATOR TABLES](#create-coordinator-tables) + - [TRUNCATE COORDINATOR TABLES](#truncate-coordinator-tables) + - [DROP COORDINATOR TABLES](#drop-coordinator-tables) + - [ALTER TABLE](#alter-table) +- DML + - [SELECT](#select) + - [INSERT](#insert) + - [UPSERT](#upsert) + - [UPDATE](#update) + - [DELETE](#delete) +- DCL + - [CREATE USER](#create-user) + - [ALTER USER](#alter-user) + - [DROP USER](#drop-user) + - [GRANT](#grant) + - [REVOKE](#revoke) +- Others + - [USE](#use) + - [BEGIN](#begin) + - [START TRANSACTION](#start-transaction) + - [JOIN](#join) + - [PREPARE](#prepare) + - [VALIDATE](#validate) + - [COMMIT](#commit) + - [ROLLBACK](#rollback) + - [ABORT](#abort) + - [SET MODE](#set-mode) + - [SHOW NAMESPACES](#show-namespaces) + - [SHOW TABLES](#show-tables) + - [DESCRIBE](#describe) + - [SUSPEND](#suspend) + - [RESUME](#resume) + - [SHOW USERS](#show-users) + - [SHOW GRANTS](#show-grants) + +## DDL + +### CREATE NAMESPACE + +テーブルは1つの名前空間に属しているため、テーブルを作成する前に名前空間を作成する必要があります。`CREATE NAMESPACE` コマンドは名前空間を作成します。 + +#### 文法 + +```sql +CREATE NAMESPACE [IF NOT EXISTS] [WITH creation_options] + +creation_options: