メインコンテンツまでスキップ
バージョン: 3.10

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 の一貫性保証メカニズムと互換性がありません。

その他の設定を決定する​

クライアントと Ledger には TLS や gRPC などの設定を追加で設定可能です。詳細は以下を参照してください。

Ledger を起動する​

Ledger とクライアントの設定後、Ledger を起動します。

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 アプリケーションを実行できます。