【AWS】 DynamoDBの解説
DynamoDB
完全マネージド型のNoSQLデータベースサービスで、ドキュメント型およびキー・バリュー型のデータモデルをサポートしている。
自動スケーリング機能により、負荷に応じて自動的にスループット容量を調整でき、ミリ秒単位の遅延でデータアクセスが可能。
また、複数のAWSリージョンにデータを自動的にレプリケートすることで、世界中で低遅延アクセスを実現する。
主要コンポーネント
テーブル: データを保存する基本的なコンテナ。テーブル内には複数のレコードを格納できます。
アイテム: テーブル内の個々のデータレコードで、一意のプライマリキーによって識別されます。
属性: アイテムのデータ要素。各アイテムは複数のキーと値のペアを持つことができます。
プライマリキー: テーブル内の各アイテムを一意に識別するためのキー。プライマリキーは単一の属性(パーティションキー)または二つの属性の組み合わせ(パーティションキーとソートキー)で構成
オンデマンド バックアップ機能
完全なテーブルデータのバックアップを取得し、必要な時にデータを復元することができる機能。スナップショットで特定時点のデータ状態を迅速にキャプチャし、プロセスは元のテーブルデータとは分離されたストレージで行われるため、DynamoDBテーブルのパフォーマンスや可用性に影響を与えない。
キャパシティユニット
データベース操作のための処理能力を表していて、読み取りキャパシティユニットと書き込みキャパシティユニットの2種類がある。
読み取りキャパシティユニット (RCU): 一秒間に整合性のある読み取り(または二回の結果整合性のある読み取り)を1KBまで行える能力。たとえば、1KBのデータを10回読み取りたい場合は、10RCUが必要。
書き込みキャパシティユニット (WCU): 1秒間に1KBまでのデータを1つの項目として書き込む能力。たとえば、1KBのデータを10回書き込みたい場合は、10WCUが必要。
オプション
プロビジョニングモード: ユーザーが必要なキャパシティユニットの量を事前に設定し、その範囲内で料金が決定される。予測可能なトラフィックがある場合に適している。
オンデマンドモード: 使用したキャパシティに基づいて料金が計算される。突発的なトラフィックがある場合や、使用量が不規則な場合に便利。
バーストと適応能力
バースト能力
DynamoDBは、一時的にトラフィックが増加するシナリオに対応できるようにバースト能力を提供している。この機能は、プロビジョニングされたキャパシティを超える読み書きが一時的に発生した場合に、未使用のキャパシティユニットを利用してピークの負荷に対応する。
具体的には、DynamoDBはキャパシティユニットの使用量が低い時に「バーストクレジット」と呼ばれるものを蓄積しており、これが高負荷の瞬間に自動的に消費されることで、一時的に高いスループットが得られる。このシステムは、トラフィックの予測が難しい場合や突発的なデータアクセスが必要な時に非常に有効。
適応能力
適応能力(Adaptive Capacity)は、DynamoDBが異なるパーティションの負荷を自動的に調整し、全体のパフォーマンスを最適化する機能。この機能により、DynamoDBはパーティションキーの設計による不均衡な負荷が発生しても、その影響を最小限に抑えることができる。
S3インポートとエクスポート
S3へのエクスポート
DynamoDBのデータをS3にエクスポートするには、「DynamoDB Export to S3」という機能を使うことができる。
この機能は、指定したDynamoDBテーブルのデータを直接S3バケットにエクスポートする。データは、CSVまたはApache Parquetフォーマットで保存され、データ分析やバックアップに便利。
S3からのインポート
S3からDynamoDBへのデータのインポートもサポートされており、AWS Data Pipelineや新しくリリースされた「Amazon DynamoDB Import from S3」というサービスを利用できる。このサービスを使うと、S3に保存されたデータを直接DynamoDBテーブルにインポートできる。
DynamoDB Accelerator(DAX)
DynamoDBのインメモリキャッシュで、パフォーマンスを大幅に向上させるために設計されている。DAXを利用することで、データベースの読み取りレスポンス時間をマイクロ秒単位に短縮できる。
DynamoDBへの読み込みリクエスト数が減少するため、スループットを向上させ、キャパシティユニットの消費を抑えることができる。転送中の暗号化もサポートしている。
DynamoDB Streams
DynamoDBテーブルで行われた変更(挿入、更新、削除)の順序付きストリームを提供する。このストリームを利用することで、テーブルの変更データをリアルタイムでキャプチャし、アプリケーションはデータの変更を即座に検知して対応することが可能になる。
利用シナリオ
データレプリケーション: DynamoDB Streamsを使用して、テーブルの変更を別のDynamoDBテーブルや異なるデータベースに複製できる。
イベント駆動アーキテクチャ: ストリームをトリガーとして使用し、AWS Lambdaなどのサービスで変更に応じた処理を実行する。
アプリケーションキャッシュの更新: データベースの変更を検知してキャッシュを即座に更新し、データの一貫性を保つ。
分析とモニタリング: データの変更をストリームから読み取り、リアルタイム分析やダッシュボードの更新に使用する。
テーブルの作成方法
DynamoDBサービスにアクセス: コンソールの「Services」メニューから「DynamoDB」を選択。
テーブルの作成:
「テーブルの作成」ボタンをクリック。
テーブル名: テーブルの名前を入力。これはユニークな名前でなければならない。
パーティションキー: テーブルの主キーの一部として使用される属性を指定。通常は文字列または数値を選択。
ソートキー (オプション): パーティションキーと合わせて主キーを構成。ソートキーを設定すると、そのキーの範囲内でデータをソートできる。
詳細設定(キャパシティユニットの設定、オートスケーリングのオプション、DAXなど)を選択することも可能。
「テーブルの作成」をクリック: 全ての情報を入力した後、「テーブルの作成」ボタンをクリックすると、テーブルが作成される。
バックアップの作成方法
オンデマンドバックアップ
オンデマンドバックアップを使うと、任意の時点でテーブルの完全なバックアップを取ることができる。これは長期間保存が必要な場合や、特定のイベント前後でのデータ保護に便利。
AWS Management Consoleを使用したバックアップの作成
DynamoDBサービスにアクセス:AWS Management ConsoleでDynamoDBを選択。
テーブルを選択:バックアップを作成したいテーブルを選ぶ。
「バックアップの作成」を選択:「バックアップ」タブから「バックアップの作成」をクリック。
バックアップの詳細を設定:バックアップに名前を付け、任意の詳細を入力。
「バックアップの作成」をクリック:これでバックアッププロセスが開始される。
DAX クラスターの作成方法
DAXサービスにアクセス:コンソールの「Services」メニューから「DynamoDB」を選択し、その後左のナビゲーションペインから「DAX」を選ぶ。
クラスターの作成:
「Create cluster」ボタンをクリック。
Cluster name: クラスターに名前をつける。
Node type: 使用するノードのタイプを選択(例:dax.r4.large)。ノードタイプはクラスターのパフォーマンスとコストに影響を与える。
Number of nodes: クラスターに必要なノード数を選択。最小は3ノードが推奨されることが多い。
IAM role: DAXが操作を行うために使用するIAMロールを選択または新規作成する。
Subnet group: クラスターを配置するVPC内のサブネットグループを選択。
Security group: クラスターに適用するセキュリティグループを選択。
Encryption: 必要に応じて、データ暗号化を有効にする。
その他の設定:必要に応じて、その他の設定(アラーム、メンテナンスウィンドウなど)を行う。
「Create cluster」をクリック:全ての情報を入力した後、「Create cluster」ボタンをクリックしてクラスターの作成を開始する。