【ISSUE】DynamoDBストリームって何?

0

2024年12月23日 8:40

はじめに

DynamoDBのストリームについて学ぶ機会があったので、備忘録として記事を書きます。

DynamoDBストリームとは

DynamoDBストリームとは、DynamoDBの機能の一つで、テーブルのデータ変更(アイテムの作成、更新、削除)をリアルタイムにキャプチャし、それに基づく処理をトリガーするためのものです
DynamoDBストリームを有効にすると、テーブル内のアイテムに対する変更がストリームに記録されます。これにより、変更の内容を順次取得して、様々な用途に利用することができます。
「Stream」の「流れ」という意味の通り、テーブル内のデータ変更(作成、更新、削除)の連続的な流れをキャプチャし、保存する機能ということです。

image.png

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html

DynamoDBストリームの主な特徴

  • リアルタイムキャプチャ:
    テーブル内のアイテム変更をリアルタイムにキャプチャし、処理をトリガーすることができ、DBの更新に伴い、処理を実行させることが可能です。

  • 変更履歴の保存
    アイテムの作成、更新、削除の履歴をストリームに保存することができます。

  • 順序保証

同一パーティションキー内の変更は、時系列順に記録されます。

  • 利用可能なデータ

新しいイメージ、古いイメージ、またはその両方のデータを取得可能です。

ストリームの利用方法

  • ストリームの有効化

DynamoDBテーブルでストリームを有効にし、キャプチャするデータタイプ(新しいイメージ、古いイメージ、またはその両方)を選択します。
ストリームを有効化する手順については、以下の記事に書いています。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.html#Streams.Enabling

https://zenn.dev/collabostyle/articles/3ed9b3440c7d09#%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8B

  • ストリームの処理

AWS Lambdaなどを使用してストリームの変更を処理。Lambda関数はストリームイベントをトリガーとして実行され、必要な処理を実行します。

  • ユースケース

ユースケースとしては、データのリアルタイム同期、分析、通知システムのトリガー、バックアップおよびリカバリ、データレプリケーションなどがあります。

実装における有効活用例

  • 注文機能

ユーザーが注文をした際に、データベースの更新に伴い、注文データをストリームを通じて処理し、支払い確認、在庫引当、配送手配といった一連の処理を自動で呼び出して処理を行う。などの処理が可能です。

  • 在庫管理システム

商品の在庫が更新された際に、DynamoDBストリームを利用してリアルタイムで在庫数をモニタリングします。
例えば、在庫が一定数以下になった場合に自動的に仕入れ発注を行うなどの処理が可能です。また、在庫更新情報を他のシステム(例えば、店舗POSシステムなど)と同期させることもできます。

  • ログ集約システム

アプリケーションの動作ログやエラーログをDynamoDBテーブルに記録し、DynamoDBストリームを利用してログデータをリアルタイムで収集、処理します。
これにより、ログデータをElasticsearchに転送して可視化し、リアルタイムのモニタリングや障害対応を行うことができます。

  • データ同期

複数のDynamoDBテーブルや他のデータベース間でデータをリアルタイムに同期するために、DynamoDBストリームを使用します。
例えば、本社のデータベースと各店舗のデータベース間でデータを同期させることで、全体のデータ整合性を保ちながら、リアルタイムで情報を共有できます。

まとめ

DynamoDBストリームを使用すると、DynamoDBテーブル内のデータ変更(アイテムの作成、更新、削除)をリアルタイムでキャプチャし、それに基づく様々な処理を自動的に実行することができます。
DynamoDBストリームは、様々なユースケースに対応できる強力なツールであり、効率的かつ効果的なアプリケーション開発をサポートしてくれます。

最後に

他にも色々な記事を書いているので、よければ読んでいってください!

https://qiita.com/hukuryo/items/97797a91d7e2ee0bcabc

https://qiita.com/hukuryo/items/2c07c52ff3386d5d75b9

https://qiita.com/hukuryo/items/ebeb26823f944f143b11
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。