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 方式は認証のみですが高速です。
認証方式の設定方法:
- クライアントの設定で
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
を利用するデータベースに合わせて設定します。
対応データベースとバージョンは要件を参照してください。
アプリケーションが 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
である必要があります)
その他の設定
Ledger には TLS や gRPC などの設定を追加で設定可能です。詳細は以下を参照してください。
Ledger の起動
Ledger とクライアントの設定後、Ledger を起動します。ScalarDB がサポートする任意のデータベースで起動可能です。対応データベースとバージョンは要件を参照してください。
Docker Compose を使ったローカルでの Ledger 起動方法は データベースを選択して ScalarDL を起動しますを参照してください。ローカルまたはクラウドベースの Kubernetes 環境での起動方法は ローカル Kubernetes 環境に ScalarDL をデプロイするまたはクラウドベースの Kubernetes 環境に ScalarDL をデプロイするを参照してください。
Client SDK のダウンロード
ScalarDL コマンドを実行する場合は Client SDK をダウンロードしてください。手順は Client SDK のダウンロードを参照してください。
クライアントから証明書または秘密鍵の登録
電子署名認証方式の場合、以下のコマンドで証明書を Ledger に登録できます。詳細は ScalarDL クライアントコマンドリファレンスを参照してください。
scalardl register-cert --properties <CLIENT_PROPERTIES_FILE>
HMAC 認証方式の場合、以下のコマンドでシークレットキーを Ledger に登録できます。詳細は ScalarDL クライアントコマンドリファレンスを参照してください。
scalardl register-secret --properties <CLIENT_PROPERTIES_FILE>
また、ClientService を利用して ScalarDL Java Client SDK から証明書や秘密鍵の登録も可能です。
クライアントからコントラクトやファンクションの登録
以下のコマンドでコントラクトを Ledger に登録できます。詳細は ScalarDL クライアントコマンドリファレンスを参照してください。
scalardl register-contract --properties <CLIENT_PROPERTIES_FILE> --contract-id <CONTRACT_ID> --contract-binary-name <CONTRACT_BINARY_NAME> --contract-class-file <CONTRACT_CLASS_FILE>
ファンクションは以下のコマンドで Ledger に登録できます。詳細は ScalarDL クライアントコマンドリファレンスを参照してください。
scalardl register-function --properties <CLIENT_PROPERTIES_FILE> --function-id <FUNCTION_ID> --function-binary-name <FUNCTION_BINARY_NAME> --function-class-file <FUNCTION_CLASS_FILE>
また、ClientService を利用して ScalarDL Java Client SDK からコントラクトやファンクションの登録も可能です。
アプリケーションの実行
クライアントからコントラクトやファンクションの登録が完了したら、ScalarDL アプリケーションを実行できます。