キーポイント
-
NoSQLクラウドデータベースサービスは、キーバリュー操作、高可用性、高スケーラビリティ、予測可能なパフォーマンスで人気がある。これらの特徴は、一般的にトランザクションのサポートとは相反すると考えられている。DynamoDBはトランザクションをサポートし、パフォーマンス、可用性、スケールに妥協することなくそれを実現している。
-
DynamoDBは、キーバリューストアのセマンティクスを利用しながら、タイムスタンプ順序プロトコルを使用してトランザクションを追加し、トランザクション操作と非トランザクション操作の両方で低レイテンシを実現した。
-
Amazon DynamoDBは、2つの新しいシングルリクエスト操作を導入した。
TransactGetItems
とTransactWriteItems
だ。これらのオペレーションは、任意のテーブルの任意のアイテムに対して、一連のオペレーションをアトミックかつシリアライズ可能に実行できる。Amazon DynamoDB上のトランザクション操作は、リージョン内での原子性、一貫性、独立性、および耐久性(ACID)の保証を提供する。 -
本番実装に対する実験結果は、パフォーマンス、可用性、スケールを損なうことなく、完全なACID特性を持つ分散トランザクションをサポートできることを示している。
キーポイント
図11:トランザクションの予測可能な待ち時間
ベストプラクティス
DynamoDBでトランザクションを利用するためのベストプラクティスとは何か。
-
べき等書き込みトランザクション:TransactWriteItemsを呼び出すとき、要求がべき等であることを保証するためにクライアントトークンを含めるオプションがある。トランザクションにべき等性を組み込むことで、同じ操作が不注意で複数回送信された場合の潜在的なアプリケーションエラーを防げる。この機能は、AWS SDKを利用する際にデフォルトで利用可能だ。
-
自動スケーリングまたはオンデマンド:自動スケーリングを有効にするか、オンデマンドテーブルの利用を推奨する。これにより、トランザクションのワークロードを効率的に処理するために必要なキャパシティが確保される。
-
一括ロードのためのトランザクションを避ける:一括ロードを目的とする場合は、トランザクションに依存するのではなく、DynamoDBの一括インポート機能を利用する方が費用対効果が高く効率的である。
DynamoDBのトランザクションは、ユーザーの貴重なフィードバックに大きく影響されており、ユーザーに代わって革新を起こすよう私たちにインスピレーションを与えてくれた。このような優れたチームが私の側にいてくれたことを非常にうれしく思う。Elizabeth Solomon氏、Prithvi Ramanathan氏、Somu Perianayagam氏に深く感謝したい。DynamoDBについてはUSENIX ATC 2022で発表された論文で、DynamoDBのトランザクションについてはUSENIX ATC 2023で発表された論文で詳しく学ぶことができる。
コミュニティコメント