AWS_DynamoDBの概要 #375
DynamoDBとは、AWSの代表的なNoSQL型データベースです。
今回はその概要について整理したいと思います。
DynamoDBとは
IoTやWebセッションなどのストリーミングデータを利用した「リアルタイムデータ処理」などに最適なデータベースとして利用する、NoSQL型データベースです。「テーブル -> 項目 -> 属性」という設計になっています。
また、DynamoDBはワイドカラムのキーバリュー型で、キーに対するバリューのCRUD操作が可能です。ただしJOIN / TRANSACTION / COMMIT / ROLLBACKはできません。
容量に実用的な制限はありませんが、1データあたり400KBが上限という特徴があるため、画像などの大容量データの保存には向いていません。
大量データを高速処理するため、パーティショニングによる分散処理を実施しています。
DynamoDBのユースケース
リアルタイムデータ処理にDynamoDBですが、具体的に以下のようなユースケースがあります。
IoT等のビッグデータ処理
IoT等で発生するキーバリュー型のシーケンシャルな(連続的な、順次的な)データを収集・蓄積・分析に向いています。Amazon EMRのHadoop処理(分散処理)と連携してビッグデータ処理も可能です。
セッションデータ・メタデータ・ユーザー行動データ
セッションデータやメタデータ等、アプリ上でシンプルなデータを蓄積できます。それらのデータをリアルタイムで高パフォーマンスに処理可能です。
バックエンドデータ処理
モバイルアプリのバックエンド / バッチ処理のロック管理 / フラッシュマーケティング / ストレージのインデックス等に使用できます。
DynamoDBの性能
DynamoDBは完全マネージド型のNoSQLデータベースサービスです。冒頭に述べた通り1データあたり400KBが上限という制約があり、画像などの大きなデータは格納できませんが、その制約を考慮しても驚くべき性能を持っています。
ストレージの容量制限がない
まずテーブルのサイズに実用的な上限がありません。テーブル内の項目数やバイト数が無制限です(1データあたり400KBという制限はある)。
低レイテンシー
負荷が高くなっても応答速度が低下しません。1桁のミリ秒レイテンシーを実現しています。DAXというインメモリキャッシュを活用すれば更に速められます。
高可用性
SPOF (Single Point Of Failer) がなく、データは3箇所のAZに保存されます。
メンテナンスフリー
マネージド型のため当然メンテナンスは不要です。CloudWatchで運用されます。
DynamoDBの整合性モデル
書き込みと読み取りでそれぞれ以下のようになっています。
書き込みの整合性モデル
少なくとも2つのAZでの書き込み完了が確認された時点で完了
読み取りの整合性モデル
【デフォルト】
結果整合性モデル(最新の書き込み結果が反映されない可能性がある)
【オプション】
強い整合性モデル(GetItem, Query, Scanで指定可能)
DynamoDBのインデックス
ハッシュキーとレンジキーという2種類のプライマリーキーと、LSIとGSIというセカンダリインデックスがあります。
ハッシュキー
データを一意に特定するためのIDなどで、テーブル作成時に1つの属性を選び、ハッシュキーとして宣言します。分散処理のためのパーティションを決定するハッシュ関数のキーです。
レンジキー
ハッシュキーにレンジを加えたもので、複合キーとも呼ばれます。テーブル作成時に2つの属性を選び、1つをハッシュキーとして、もう1つをレンジキーとして宣言します。2つの値の組み合わせで1つの項目を特定します。
LSI (Local Secondary Index)
複合キーテーブルにのみ設定可能なインデックスです。パーティションキーを上記で指定したうえで、別の規格のインデックスとなり、クエリ検索に利用できます。
GSI (Global Secondary Index)
インデックス用に新たにパーティションキーとソートキーを指定する検索方式です。ハッシュキーテーブルと複合キーテーブルの両方に設定できます。ハッシュキーの代わりになるため、ハッシュキーを跨いで物理パーティションにとらわれない検索が可能です。
DynamoDBストリーム
DynamoDBの機能で、テーブルに保存された項目の追加・変更・削除の発生時の履歴をキャプチャできます。過去24時間のデータ変更の履歴を保存し、24時間経過すると削除されます。ハッシュキーが異なる場合は順番が前後する可能性があるので注意です。
DynamoDBストリームを活用することで、データ変更をトリガーとして処理を実行する機能を作れます。例えばデータ更新に応じた通知処理や、キャプションをトリガーとしたクロスリージョンレプリケーションの実施などです。
DAX (DynamoDB Accelerator)
DAXはDynamoDBにインメモリキャッシュ型の機能を付与します。これによる高速なインメモリパフォーマンスが可能になり、1秒あたりのリクエスト数が数百万件になる場合でも、ミリセカンドからマイクロセカンドへ向上できます。
バックアップとリカバリ
DynamoDBでは、パフォーマンスに影響なく数百TBのバックアップを実行可能です。
オンデマンドバックアップ
任意のタイミングでテーブルの完全なバックアップを作成します。長期間の保存とアーカイブを実施します。
ポイントインタイムリカバリ
バックアップを継続的に実施し、任意のタイミングでリカバリできるようにします。過去35日間の任意の時点にテーブルを復元可能です。
ここまでお読みいただきありがとうございました!!
参考
この記事が気に入ったらサポートをしてみませんか?