Spring Data JDBC for ScalarDB を使用した ScalarDB Cluster SQL をはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチュートリアルでは、Spring Data JDBC for ScalarDB を介して ScalarDB Cluster SQL を使用してサンプルアプリケーションを作成する方法について説明します。
このサンプルアプリケーションの前提条件
- Eclipse Temurin の OpenJDK LTS バージョン (8、11、17、または 21)
- Kubernetes クラスターで実行されている ScalarDB Cluster
- ScalarDB Cluster をローカルにデプロイする方法 の手順に従ってデプロイした Kubernetes クラスターで ScalarDB Cluster が実行されていることを前提としています。
このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、要件を参照してください。
サンプルアプリケーション
このチュートリアルでは、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 サンプルリポジトリをクローンする
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
アドレスを取得する必要があります。
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
を開きます。
vim scalardb-sql.properties
次に、scalardb-sql.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 の開発者ガイドを参照してください。
ステップ 3. スキーマをロードする
スキーマをロードするには、SQL CLI を使用する必要があります。SQL CLI は ScalarDB リリースからダウンロードできます。JAR ファイルをダウンロードしたら、次のコマンドを実行して Cluster 用の SQL CLI を使用できます。
java -jar scalardb-cluster-sql-cli-3.15.1-all.jar --config scalardb-sql.properties --file schema.sql
ステップ 4.application.properties
を変更する
次に、ScalarDB Cluster に接続するために application.properties
も変更する必要があります。
vim src/main/resources/application.properties
scalardb-sql.properties
と同様に、scalar.db.sql.connection_mode
プロパティに cluster
を指定し、indirect
クライアントモードを使用する必要があります。そのためには、application.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