🎃

DynamoDBの概要

2023/05/17に公開

はじめに

案件でDynamoDBを触っているので、開発するにあたり最初に知っておきたかったことをまとめる

選定理由

フルマネージドサービスであること

AWSによって完全に管理されており、ユーザーは基盤の管理やメンテナンスについて心配する必要がない。
他のNoSQLデータベースでは、自身でサーバーの設定や管理を行う必要がある場合がある

スケーラビリティ

自動スケーリングのため、大量のリクエストを処理できる。
リクエスト数が予測できない場合や、大量のデータを扱う際に有用

パフォーマンス

低レンシーパフォーマンスのため、リアルタイムのデータ処理が必要なアプリに有用
DynamoDBはミリ秒単位の遅延で一貫したパフォーマンスを提供する

インデックス

DynamoDBは2つのタイプのインデックスを使用する

プライマリインデックス

DynamoDBのすべてのテーブルに存在するインデックス。
パーティションキーのみ。またはソートキーと組み合わせで構成される
パーティションキーのみの場合は重複不可

ソートキーはパーティションキーで指定した値を取り出す際の順序が決まるキー。
ソートキーが重複しなければパーティションキーが重複してもOK

セカンダリインデックス

ローカルセカンダリインデックス(LSI)

プライマリインデックスと同じパーティションキーを使用するが、異なるソートキーを持つことができる。
同じパーティション内で別のクエリを使用することができる

グローバルセカンダリインデックス(GSI)

異なるパーティションキーとソートキーを持つことができる。
これにより、異なる属性に基づいてデータをクエリすることができる。

DynamoDBはスキャンとクエリ二つのデータ取得方法があるが、スキャンは全インデックススキャンのためパフォーマンスが遅くなる。
GSIを設定することで、パーティションキーとは異なる属性でもクエリができるようになりパフォーマンスが向上する。
ただし、nullを許容しないため、GSIを設定する属性はnullが入らないことを確認すること

DynamoDBのnull値について

属性にnull値を設定する代わりに、その属性を省略するか、特殊な値を使用してnull値を示すことが一般的

Discussion