Table of Contents
はじめに
FundastA Inc.の鈴木です。
現在、AWS ソリューションアーキテクトアソシエイト試験合格に向け AWS について勉強中です。
今回は DynamoDB について勉強したことを備忘録として、記述していきます。
DynamoDB
完全マネージド型の NoSQL データベースサービス!!
特徴
-
ハイスケーラブルで無制限に性能を拡張できる
-
負荷が高くなっても応答速度が低下しない低レイテンシー
-
高可用性
-
マネージド型のためメンテナンスフリー
-
プロビジョンドスループット
-
ストレージの容量制限がない
できること
-
キーに対するバリューの CRUD 操作
-
簡易なクエリやオーダー
-
数万人が同時アクセスして処理が必要になるアプリケーションのデータ処理など
できない/向いてない
-
Join/Transaction/Commit/RollBack は不可
-
詳細なクエリやオーダー
-
大量のデータ読み書きにコストがかかる
整合性モデル
-
Wtite
-
少なくとも2つの AZ での書き込み完了の確認が取れた時点で完了
-
-
Read
-
デフォルト:結果整合性モデル
-
最新書き込み結果が即時読み取り処理に反映されない可能性がある
-
-
オプション:強い整合性モデル
-
GetItem/Query/Scan では強い整合性のある読み込みオプションが指定可能
-
-
パーティショニング
大量データを高速処理するためにパーティショニングによる分散処理をしている。
ユースケース
ビッグデータ
- 大量のデータを収集・蓄積・分析するために DB として採用
- Hadoop(副データ処理)と連携してビッグデータ処理が可能
アプリケーション
-
大規模サービスでのデータ高速処理が必要なアプリケーション向けの活用
-
多数のユーザーが一度にアクセスするようなアプリケーションのデータ処理など
プライマリーキー
- ハッシュキー
- KVS におけるキーに相当するデータを一意に特定するための ID などのこと
- テーブル作成時に1つの属性を選び、ハッシュキーとして宣言
- ハッシュ関数によってパーティションを決定するためハッシュキーと呼ぶ
- レンジキー
- ハッシュキーにレンジを加えたものをレンジキーまたは複合キーと呼ぶ
- 2つの値の組み合わせによって1つの項目を特定
- 複合キーは、単独であれば重複が許される
DynamoDB Streams
DynamoDB テーブルに保存された項目の追加・変更・削除の発生時の履歴をキャプチャできる機能
-
過去 24 時間以内のデータ変更の履歴を保存し、24 時間経過すると消去される
-
データ容量はマネージド型で自動的に管理
データ保存の順番
-
操作が実施された順番に応じてデータはシリアライズされる
-
特定のハッシュキーに基づいた変更は正しい順番で保存されるが、ハッシュキーが異なる場合は受信した順番が前後される可能性がある。
ユースケース
データ更新とトリガーとしたアプリケーションなど
-
クロスリージョン、レプリケーション
-
ストリームによるキャプションをトリガーとしてクロスリージョンレプリケーションを実施することが可能
-
-
データ更新をトリガーとしたアプリケーション機能
-
データ更新に応じた通知処理などのアプリケーション処理の実行など
-
DynamoDB Accelerator( DAX )
DAX は DynamoDB にインメモリキャッシュ型の機能を付与
-
ミリ秒単位からマイクロ秒単位まで結果整合性のある読み込みワークロードの応答時間を短縮
-
DynamoDB を使用する API と互換性を持つマネージド型サービスであり、運用上そしてアプリケーションの複雑性を減少させて容易に導入可能
-
読み取りの多いワークロードや急激に増大するワークロードに対して、DAX はスループットを今日強化したり読み込みキャパシティーユニットを必要以上にプロビジョニングしないよう設計することで運用コストの節約が可能
インメモリキャッシュとは
アプリケーション・サーバ上に、アプリケーションから利用しやすい形式でデータを保持(キャッシュ)すること。
主にデータベースなどから取得したデータを一時的に保持しておき、2 回目以降のデータの読み取り速度を速める目的で使われる。
オンデマンドバックアップ
パフォーマンスに影響なく数百 TB のバックアップを実行可能
-
任意のタイミングで利用可能な長期間データ保存用バックアップ
-
従来はデータパイプラインを利用して取得したバックアップを容易に実施できるようになった。
おわりに
DynamoDB について勉強したことを記述しました。
DynamoDB は実際に触ってみると簡単にデータベースを作成することができるため、ハンズオンしてみることをお勧めします。
DynamoDB に付属する Stream や DAX なども選択肢として出てきそうなので、覚えておいて損はないかと思います。
ご覧いただきありがとうございす。