「NoSQL」って言葉に最初は身構えた。SQLに慣れ切った脳に、スキーマレスの世界は異質すぎた。でもDynamoDBを触って、その思想に納得した。
DynamoDBはAWSのフルマネージドNoSQLデータベース。キー・バリュー型で、テーブル設計がRDBとは根本的に違う。とにかく速い。そしてスケールする。アクセスが増えても自動でスケールするから、負荷を心配する必要がない。
DynamoDB設計の肝はパーティションキーとソートキー。パーティションキーでデータの置き場所が決まり、ソートキーで範囲検索ができる。この2つの設計で性能が決まる。RDBの「正規化」とは全く違う考え方だ。
使い所:
- セッション管理、アクセスログ、メタデータ保存 — 単純なキーアクセスが多いもの
- サーバーレスアプリのバックエンド — Lambdaとの相性が抜群
- 高トラフィックなアプリ — オートスケーリングで安心
逆に、複雑なJOINが必要なものや、トランザクションが頻繁なものはRDSの方がいい。DynamoDBは「使える場所を見極める」のが大事だ。