ScalarDL Ledger を介して ScalarDL アプリケーションを実行する
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、ScalarDL Ledger を介して ScalarDL アプリケーションを実行する方法を説明します。このドキュメントは、すでにクイックスタートチュートリアルのいずれかを試し、アプリケーションを書くガイドを参考にしてクライアント SDK を使用して ScalarDL を統合したアプリケーションを作成済みであることを前提としています。
設定を決定する
Ledger を介して 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 パラメータの詳細については、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 環境で Ledger を起動する方法については、それぞれ ローカル Kubernetes 環境に ScalarDL をデプロイするまたはクラウドベース Kubernetes 環境に ScalarDL をデプロイするを参照してください。
HashStore、TableStore、または Ledger 抽象化のクライアントを設定する
アプリケーションが基づく抽象化(具体的には、HashStore、TableStore、または Ledger)に応じて、設定手順が異なります。抽象化を選択して、手順に従ってください。
- HashStore
- TableStore
- Ledger
HashStore クライアントをブートストラップする
アプリケーションで HashStoreClientService を作成する際、クライアント証明書またはシークレットキーと HashStore を使用するために必要なコントラクトが、ClientConfig の設定に基づいて自動的に登録されます。したがって、HashStore クライアントを手動でブートストラップする必要はありません。テスト目的などで手動で実行したい場合は、Client SDK をダウンロードするに従って HashStore Client SDK をダウンロードし、以下のコマンドを実行してください。
scalardl-hashstore bootstrap --properties <CLIENT_PROPERTIES_FILE>
TableStore クライアントをブートストラップする
アプリケーションで TableStoreClientService を作成する際、クライアント証明書またはシークレットキーと TableStore を使用するために必要なコントラクトが、ClientConfig の設定に基づいて自動的に登録されます。したがって、TableStore クライアントを手動でブートストラップする必要はありません。テスト目的などで手動で実行したい場合は、Client SDK をダウンロードするに従って TableStore Client SDK をダウンロードし、以下のコマンドを実行してください。
scalardl-tablestore bootstrap --properties <CLIENT_PROPERTIES_FILE>
クライアントコマンドをダウンロードする
Ledger クライアントを設定する際には、Client SDK に含まれるクライアントコマンドを実行する必要があります。Client SDK を取得するには、Client SDK をダウンロードするを参照して ください。
Ledger クライアントをブートストラップする
以下の bootstrap コマンドを実行して、クライアント ID とシステムコントラクトを登録します:
scalardl bootstrap --properties <CLIENT_PROPERTIES_FILE>
ブートストラップコマンドは、認証方式を決定するで行った認証設定に基づいて、クライアント証明書またはシークレットキーを登録します。
ScalarDL Java Client SDK の ClientService を使用してブートストラップすることもできます。
コントラクトと関数を登録する
register-contract コマンドを使用してコントラクトを登録できます。
scalardl register-contract --properties <CLIENT_PROPERTIES_FILE> --contract-id <CONTRACT_ID> --contract-binary-name <CONTRACT_BINARY_NAME> --contract-class-file <CONTRACT_CLASS_FILE>
register-function コマンドを使用して関数を登録できます。
scalardl register-function --properties <CLIENT_PROPERTIES_FILE> --function-id <FUNCTION_ID> --function-binary-name <FUNCTION_BINARY_NAME> --function-class-file <FUNCTION_CLASS_FILE>
ScalarDL Java Client SDK の ClientService を使用してコントラクトと関数を登録することもできます。
アプリケーションを実行する
必要な ID とコントラクトを登録したので、ScalarDL を統合したアプリケーションを実行できます。
参照
各コマンドの詳細については、以下のコマンドリファレンスを参照してください: