AWS TRAINING COURSE
---LESSON 11---
NoSQLデータベースのマネージドサービス
Amazon DynamoDB
AWSジャパンの吉田です。前職ではシステムインテグレーターとしてデータベースを専門に、システムのアーキテクチャ設計やチューニング、トラブルシューティングの支援などを行っておりました。今回はオンプレミスでのデータベース設計・運用経験も交えながら、AWSが提供するNoSQLデータベースのマネージドサービス「Amazon DynamoDB」を紹介します。
リレーショナルとNoSQL
システムの要件に合わせて選択
リレーショナルデータベースは本連載のLESSON:07でも詳しく解説していますが、列と行を持った表(テーブル)形式のデータを互いに関連付けてデータの集合を表現するもので、企業内の顧客管理システムや人事システム、ECサイト、オンラインゲームをはじめ非常に多くのシステムで汎用的に使われています。
リレーショナルデータベースはデータを正確に表すことと、複数のユーザーが同時に参照・更新した場合でもトランザクションによって強い一貫性と整合性を実現することに重きを置いています。
一方のNoSQLデータベースはワークロードを効率的に処理すること、システムの目的を達成するために最適なデータモデルとアクセス方法を提供することにフォーカスしています。トレーディングやオンラインゲームで求められるような低遅延でのデータアクセスを提供するインメモリーデータベースや、JSON・XMLといった柔軟なデータ構造をそのまま保存して探索できるドキュメント指向データベースもNoSQLデータベースの一種です。
拡張のしやすさもNoSQLデータベースの特長です。リレーショナルデータベースではデータの整合性を重視する関係上、サーバーのCPUやメモリー、ストレージといったハードウェアの増設を行って性能向上を図るスケールアップがよく用いられます。これはサーバー単体での最大性能までしか拡張を行えないというデメリットとなります。
サーバーの台数を増やし、処理を分担することで性能向上を図るスケールアウトも実現は可能ですが、データの分割範囲をアプリケーション側で把握したり、複数のデータベース間でデータの整合性を保ったりする必要があるなど、設計や運用の負荷が高くなりがちです。
NoSQLデータベースの多くはデータを自動的に複数のサーバーに分散させた上で、アプリケーションはデータの格納場所を意識せずに、単一の接続ポイントからデータの読み書きができるアーキテクチャーを採用しています。
スケールアウトが前提のアーキテクチャになっているため拡張性は非常に高いのですが、トランザクションの機能をリレーショナルデータベースと比較して限定的にしているなど一部トレードオフもあります。
データの整合性や一貫性が重要であればリレーショナルデータベース、拡張性が重要であればNoSQLデータベースといったように、システムの要件に合わせてデータベースの選択を行うことが重要です。
Amazon DynamoDBの三つの特長
機能上のトレードオフも解消できる
AWSが提供する「Amazon DynamoDB」はNoSQLデータベースの一つ、キーバリューストアのマネージドサービスです。データを単一的に識別する鍵(キー)に対して、値(バリュー)を持つシンプルなデータモデルに最適化されています。
高いパフォーマンスと可用性、使った分だけの従量課金と運用の手軽さ、機能の豊富さから多数の会員に利用されるサービスや、アクセス負荷の予測が困難なサービスなどを支えるデータベースとしてAmazon.comをはじめLYFTやCapital One、国内では、はてな、GREE、PayPayなどのユーザーに利用されています。ではAmazon DynamoDBの三つの特長を紹介しましょう。
ハイパフォーマンス
Amazon DynamoDBではデータが数多くのサーバーに分散して格納されており、要求される性能やデータ量に応じてサーバーの台数は自動的に増減(スケール)できるようになっています。処理能力は1秒間当たり数リクエストといった規模から数百万リクエストといった規模まで、ストレージ容量についてもメガバイトの規模からペタバイトまで柔軟にスケールすることができます。
アプリケーションは単一の接続ポイント(エンドポイント)からデータの読み書きができるため、個々のサーバーやデータの格納場所を意識する必要はありませんし、レスポンスについても1桁ミリ秒と低遅延なデータアクセスを提供しています。
サービスがスタートしたばかりで小規模の時から成長して大規模になるまで、一貫したパフォーマンスを提供しつつ拡張ができるため、負荷の予測が困難なWebサービスはもちろんのこと、安定したパフォーマンスが求められるミッションクリティカルなシステムでも利用できます。
実際にAmazon.comではさまざまな処理でAmazon DynamoDBを活用しており、2021年のプライムデー(1年に1回の大セール)では、期間中延べ回数にして何兆回ものAPIコールをミリ秒単位のレスポンスで処理したほか、ピーク時においても1秒間8,920万回のリクエスト処理を実現しました。
サーバーレス
NoSQLデータベースは拡張のしやすさが特長の一つですが、多数のサーバーを安定して運用するのは手間とコストがかかります。Amazon DynamoDBではサーバーのスケールや監視、セキュリティパッチの適用、個々のサーバーの障害対応といった作業をAWSに任せられ、サーバーの管理が不要になります。
エンタープライズグレードの機能提供
NoSQLデータベースは高いパフォーマンスや拡張性を実現するために、機能上のトレードオフを設けていることがあります。プロダクトによってはリレーショナルデータベースのような完全なトランザクションを提供していない、データの暗号化をサポートしていないなどの制限があり、金融や医療といった特定のワークロードをはじめ、機微な情報を取り扱うシステムには適用できないこともありました。
Amazon DynamoDBではそのようなワークロードにも対応できる機能が実装されています。複数の項目を同時に更新・参照してもデータの一貫性が保証されるトランザクション機能や、通信経路と保存されているデータの暗号化、特定時点を指定してのデータ復旧(ポイントインタイムリカバリー)といった機能を活用することで、NoSQLデータベースのパフォーマンス、拡張性といった利点はそのままに、ミッションクリティカルなワークロードにも対応できます。