ScalarDB のデータベースを設定する
注記
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このドキュメントでは、ScalarDB を使用するアプリケーションが正しく効率的に動作するように、ScalarDB の基盤となるデータベースを設定する方法について説明します。
基盤となるデータベースの一般的な要件
ScalarDB では、基盤となる各データベースが、データベースでトランザクションを実行するための特定の機能を提供する必要があります。このドキュメントでは、一般的な要件と、要件を満たすために各データベースを設定する方法について説明します。
ScalarDB では、基盤となる各データベースが、データベースでトランザクションを実行するために少なくとも次の機能を提供する必要があります。
- 単一のデータベースレコードに対す る線形化可能な読み取りと条件付きミューテーション (書き込みと削除)。
- 書き込まれたデータベースレコードの耐久性。
- 各データベースレコードにアプリケーションデータのほかに任意のデータを保存できる機能。
一般的な要件を満たすようにデータベースを設定する
一般的な要件を満たすようにデータベースを設定する方法の詳細については、データベースを選択してください。
- JDBC データベース
- NoSQL データベース
- Object Storage
- すべての操作に単一のプライマリサーバーまたは同期された複数のプライマリサーバーを使用します (プライマリデータベースから非同期にレプリケートされた読み取りレプリカに対する読み取り操作はありません)。
- 読み取りコミットまたはより厳格な分離レベルを使用します。
NoSQL データベースを選択してください。
- Cassandra
- Cosmos DB for NoSQL
- DynamoDB
- すべての操作に単一のプライマリクラスターを使用します (プライマリ以外のクラスターでは読み取りまたは書き込み操作は行いません)。
commitlog_syncにはbatchまたはgroupを使用します。- Cassandra 互換データベースを使用している場合、それらのデータベースは軽量トランザクション (LWT) を適切にサポートしている必要があります。
- 「Strong」または「Bounded Staleness」の一貫性を持つすべての操作に単一のプライマリリージョンを使用します。
- すべての操作に単一のプライマリリージョンを使用します。(プライマリリージョン以外のグローバルテーブルに対する読み取りおよび書き込み操作は実行できません。)
- DynamoDB にはプライマリリージョンの概念がないため、プライマリリージョンは自分で指定する必要があります。
- すべての操作に単一のリージョンを使用します。Blob Storage の場合は、単一のプライマリリージョンを使用してください。
- 各ストレージに対して次のストレージクラスまたはアクセス層を選択します:
- S3: S3 標準
- Blob Storage: Standard 汎用 v2、ホットアクセス層
- Cloud Storage: Standard ストレージ
注記
上記以外のストレージクラスまたはアクセス層も使用可能ですが、上記のものは検証済みでサポートされています。
推奨事項
ScalarDB の基盤となる各データベースを適切に設定して、高パフォーマンスと高可用性を実現することが推奨されます。次の推奨事項には、更新すべきいくつかのオプションが含まれています。
注記
ScalarDB は基盤となるデータベースのアプリケーションと見なすことができるため、効率を向上させるためによく使用されるその他のオプションを更新してみることをお勧めします。
- JDBC データベース
- NoSQL データベース
- Object Storage
- パフォーマンスを向上させるには、読み取りコミット分離を使用します。
- 各データベース のパフォーマンス最適化のベストプラクティスに従います。たとえば、パフォーマンスを向上させるには、通常、バッファサイズ (PostgreSQL の
shared_buffersなど) を増やし、接続数 (PostgreSQL のmax_connectionsなど) を増やすことが推奨されます。
NoSQL データベースを選択してください。
- Cassandra
- Cosmos DB for NoSQL
- DynamoDB
- スループットを高めるために、
concurrent_readsとconcurrent_writesを増やします。詳細については、concurrent_writesに関する Cassandra の公式ドキュメントを参照してください。
- 高いスループットを実現するために、リクエストユニット (RU) の数を増やします。
- ポイントインタイムリストア (PITR) を有効にします。
- 可用性ゾーンを有効にします。
- 読み取り容量ユニット (RCU) と書き込み容量ユニット (WCU) の数を増やして、スループットを高めます。
- ポイントインタイムリカバリ (PITR) を有効にします。
注記
DynamoDB はデフォルトで複数のアベイラビリティーゾーンにデータを保存するため、可用性を向上させるために設定を調整する必要はありません。
- S3 を使用する場合は、不完全なマルチパートアップロードを削除するためのバケットライフサイクル設定の構成で説明されているように、不完全なマルチパートアップロードを削除するライフサイクルルールを設定してください。
- オブジェクトストレージ固有のスキーマ設計の推奨事項については、オブジェクトストレージアダプターのキーとインデックスのマッピ ングを参照してください。