ScalarDL Ledger を介して ScalarDL アプリケーションを実行する
このガイドでは、ScalarDL Ledger を介して ScalarDL アプリケーションを実行する方法を説明します。このドキュメントは、すでに ScalarDL Ledger をはじめようチュートリアルを試し、Java で ScalarDL アプリケーションを書くガイドを参考にして Client SDK を使った ScalarDL アプリケーションを作成済みであることを前提としています。
設定する
Ledger および Ledger と通信するクライアントの設定を行う必要があります。
以下の重要なオプションを決定し、設定してください。
Auditor を無効化にする
Ledger のみでアプリケーションを実行する場合は Auditor を無効化する必要があります。Auditor の無効化は、クライアントと Ledger の設定で以下のように行います。
- クライアントの設定で
scalar.dl.client.auditor.enabled
をfalse
に設定します。 (デフォルト値がfalse
のため、省略可能です) - Ledger の設定で
scalar.dl.ledger.auditor.enabled
をfalse
に設定します。 (デフォルト値がfalse
のため、省略可能です)
scalardl-samples
環境を利用している場合は、対応するストレージの ledger.properties
ファイルを参照してください。
設定の詳細は以下を参照してください。
認証方式を決定する
クライアントの認証方式として、電子署名または HMAC のいずれかを選択する必要があります。電子署名方式は認証に加えて否認防止も提供しますが遅く、HMAC 方式は認証のみですが高速です。
認証方法は以下のように設定できます。クライアントと Ledger の両方で同じ方法 (digital-signature
または hmac
) を設定する必要があります。
- クライアントの設定で
scalar.dl.client.authentication.method
をdigital-signature
またはhmac
に設定します。 - Ledger の設定で
scalar.dl.ledger.authentication.method
をdigital-signature
またはhmac
に設定します。
また、秘密情報の準備も必要です。電子署名方式の場合は証明書と秘密鍵、HMAC 方式の場合はシークレットキーを用意してください。ScalarDL の認証について詳しくは ScalarDL 認証ガイドを参照してください。
設定の詳細は以下を参照してください。
データベース設定を決定する
Ledger は ScalarDB を利用してデータベースを操作します。ScalarDB がサポートする様々なデータベース上で ScalarDL を実行できます。アプリケーション要件に応じて利用するデータベースを決定し、いくつかの ScalarDB パラメータを設定してください。
ScalarDB パラメータの詳細については、ScalarDB の設定も参照してください。
下位のデータベース
使用するデータベースの設定方法:
- Ledger の設定で
scalar.db.storage
,scalar.db.contact_points
,scalar.db.username
,scalar.db.password
を利用するデータベースに合わせて設定します。
ScalarDB を介して ScalarDL でサポートされるデータベースとそのバージョンについては、要件を参照してください。
アプリケーションが Function 機能を介してテーブルを読み書きし、そのテーブルが ScalarDB アプリケーションからも直接アクセスされる場合は、ここで選択したデータベースを適切に設定する必要があります。具体的には、一貫性を保証するために、ScalarDL アプリケーションと ScalarDB アプリケーションの両方が同じ Coordinator テーブルを参照する必要があります。
分離レベル
Ledger は ScalarDB の Consensus Commit トランザクションマネージャを利用してトランザクションを管理 します。トランザクションマネージャは、トランザクションの分離性を保証し、整合性・正確性を担保します。
Ledger の分離レベルは以下のように設定できます。どの分離レベルを使うべきかわからない場合は、SERIALIZABLE
を使用してください。
- Ledger の設定で
scalar.db.consensus_commit.isolation_level
に希望する分離レベルを設定します。デフォルト値はSNAPSHOT
です。
制限事項
ScalarDL は ScalarDB を活用していますが、以下の ScalarDB 機能は ScalarDL の一貫性保証メカニズムと互換性がありません。
- Coordinator テーブルのグループコミット (
scalar.db.consensus_commit.coordinator.group_commit.enabled
はfalse
である必要があります) - パフォーマンス関連の設定における Coordinator テーブルへの書き込み省略最適化 (
scalar.db.consensus_commit.coordinator.write_omission_on_read_only.enabled
はfalse
である必要があります)
その他の設定を決定する
クライアントと Ledger には TLS や gRPC などの設定を追加で設定可能です。詳細は以下を参照してください。
Ledger を起動する
Ledger とクライアントの設定後、Ledger を起動します。
Docker Compose を使ったローカルでの Ledger 起動方法は データベースを選択して ScalarDL を起動しますを参照してください。ローカルまたはクラウドベースの Kubernetes 環境での起動方法は ローカル Kubernetes 環境に ScalarDL をデプロイするまたはクラウドベースの Kubernetes 環境に ScalarDL をデプロイするを参照してください。