Amazon Web Services ブログ

Amazon DynamoDB – ユーザーの会社にパワーを与える機能

Amazon DynamoDB について初めてお話したのは 2012 年の早い時期で、内容は次のようなものでした。

大きく考えてほしい。大きく夢を見て、知らないあいだにユーザー数を 0 から何千、何億までスケーリング可能なデータ集約型アプリケーションを思い描いて (それからビルドして) 欲しい。良い結果を願っていますが、そのためにはじゃまになるデータベースは要りません。皆さんはご自分のアプリケーションとユーザーベースに集中して、その運用はわれわれにお任せください。

あれから 6 年経って、DynamoDB は毎日何兆ものリクエストを処理する、100,000 以上の AWS カスタマーに最適な NoSQL データベースとなっています。

私はときどき振り返って、最近のローンチをまとめるのが好きです。かつてない速さでイノベーションを起こし続けているため、皆さんが何か重要なものを見逃してしまうことが絶対ないようにしたいという思いもありますし、個別のリリースをより大きなコンテキストに置いて考えたいということもあります。

エンタープライズ向け
DynamoDB における最近の新機能の多くは、エンタープライズ顧客のニーズに応えるものでした。以下に例を挙げます。

グローバルテーブル – 昨年 11 月に発表された機能で、グローバルテーブルは 2 つ以上の AWS リージョンに存在し、リージョンをまたいですばやく自動的にレプリケーションします。

暗号化 – 2 月に発表された機能で、オーバーヘッドなしで保存中にテーブルを暗号化できます。

ポイントインタイムリカバリ – 3 月に発表された機能で、連続バックアップがテーブルを 1 秒刻みで以前の状態に復元する機能をサポートし、最大 35 日前まで戻ることができます。

DynamoDB サービスレベルアグリーメント – 6 月に発表された SLA では、DynamoDB テーブルで期待されるアベイラビリティを定めています。

アダプティブキャパシティー – 新機能ではありませんが、最近の人気ブログ記事で DynamoDB がアクセスパターンの変更に自動で適応する仕組みを説明しました。

これらの重要機能について、個別に見ていきましょう。エンタープライズ顧客に対して特に価値があるものとして重要機能を挙げましたが、その価値は DynamoDB の全ユーザーに納得いただけるものと考えております。

グローバルテーブル
自分の好みでサービスや機能を特別扱いしないよう努めてはいるのですが、この機能は正直なところ本当に気に入っています。この機能を使うと、マルチマスターの書き込みを完全にサポートし、複数の AWS リージョンをまたいで自動的にレプリケーションするテーブルが、数クリックで作成できます。付加的レベルの冗長性 (テーブルは各リージョンで 3 つのアベイラビリティゾーンをまたいでレプリケートされます) と、グローバルアプリケーションで最も厳しいニーズに応じてスケーリング可能な高速の読込 / 書込パフォーマンスを得られます。

グローバルテーブルは 9 つの AWS リージョンで利用可能 (最近さらに 3 リージョンのサポートが追加) であり、テーブル作成時に設定できます。

詳細は、Amazon DynamoDB Update – Global Tables and On-Demand Backup をお読みください。

暗号化
お客様は機密データを DynamoDB に保存しており、コンプライアンス上の目標を達成するため、このデータを保護する必要があります。保存データの暗号化機能は AES-256 を使用して、テーブル、ローカルセカンダリインデックス、グローバルセカンダリインデックスに保存されたデータを保護します。この暗号化はストレージのオーバーヘッドを増やすことがなく、完全に透過的で、レイテンシーに影響しません。新規のテーブル作成時には、ワンクリックで実現できます。

詳細は、New – Encryption at Rest for DynamoDB をお読みください。

ポイントインタイムリカバリ
あらゆる運用上の予防策をとったとしても、プロダクションデータベースに取り返しのつかない何かをしてしまう可能性はあります。仮定の話ではなく、起こってしまったときには、DynamoDB ポイントインタイムリカバリ機能を利用して時間を戻し、データベースを最大 35 日前の時点まで復元させることができます。テーブルの連続バックアップが可能であれば復元は簡単で、復元させたい時点を選ぶだけです。

詳細は、New – Amazon DynamoDB Continuous Backups and Point-in-Time Recovery (PITR) をお読みください。

サービスレベルアグリーメント
DynamoDB でアプリケーションをビルドし、業務の基幹データの保存を DynamoDB に依存している場合は、期待されるアベイラビリティはどういったものかを知っておく必要があります。DynamoDB サービスレベルアグリーメント (SLA) では、月次請求対象期間において単一リージョンのテーブルについて 99.99% のアベイラビリティを、グローバルテーブルについて 99.999% のアベイラビリティを約束しています。アベイラビリティの保証が満たされない場合は、SLA によりサービスクレジットが提供されます。

アダプティブキャパシティー
DynamoDB は背後で多数の処理を実行することで、多様なワークロードに対応します。たとえば、ワークロードが拡大、展開すると、DynamoDB は読込スループット、書込スループット、ストレージの変化に応じて、自動的に再シャーディングを行い、複数のストレージパーティション間で動的にデータを再分配します。

さらに、DynamoDB はアダプティブキャパシティーの仕組みを使って、テーブルのストレージパーティションをまたいでデータ分配が不均等になる状況に対応します。この仕組みにより、必要な限りにおいて、1 つのパーティションを、テーブルに対し全体でプロビジョニングされたキャパシティーの相応のシェア以上に消費することができます。ただし、プロビジョニングされたキャパシティーの使用総量が制限内に収まっている場合に限ります。変更によって、キーの分散に関して過去に述べたアドバイスには、重要性はほとんどなくなりました。

本機能に関する詳細、および本機能で DynamoDB テーブルへの予期しないアクセスパターンや異常なアクセスパターンを補完する方法については、How Amazon DynamoDB adaptive capacity accommodates uneven data access patterns をお読みください。

最後に
エンタープライズスタイルの DynamoDB 最新機能をいくつかざっと見てきました簡単に振り返りましたが、ここまでお楽しみいただけたなら幸いです。他にもいろいろ進行中のもがあります。今後のアップデートにご注目ください。

Jeff;

追伸 – 先週、コンテナ化された開発環境下の使用や、CI テストへの使用が可能な DynamoDB local Docker image を発表しました。