「NoSQL」って言葉、最初はすごく身構えた。SQLにどっぷり浸かった脳に、スキーマレスの世界は異質すぎた。でもDynamoDBを実戦投入して半年、その思想に納得してる。
DynamoDBはAWSのフルマネージドNoSQLデータベース。キー・バリュー型で、RDBとはテーブル設計の考え方が根本的に違う。とにかく速い。そして勝手にスケールする。アクセスが急増しても自動でスケールしてくれるから、負荷で眠れない夜とは無縁だ。
DynamoDBの設計、一番大事なのはパーティションキーとソートキー。パーティションキーでデータの物理的な置き場所が決まり、ソートキーで範囲検索ができる。この2つの設計で性能がほぼ決まる。RDBの「正規化」とは全く違う考え方だから、最初は戸惑う。
僕が実際にDynamoDBを使って「正解だった」と思った場面:
- セッション管理 — ユーザーIDをパーティションキーに、セッションIDをソートキーに。シンプルなのに爆速。
- アクセスログ — 時系列データをソートキーにして。RDSより圧倒的に安く済む。
- サーバーレスアプリのバックエンド — Lambdaとの相性が完璧。接続プールの管理から解放される。
逆に、複雑なJOINやトランザクションが必要な処理は素直にRDSを使った方がいい。DynamoDBは「適材適所」。RDSとDynamoDBのハイブリッドが結局一番強い。
RDB脳から抜け出すのにちょっと時間かかったけど、一度コツを掴むともう手放せない。個人開発のスケーラビリティ問題を根本解決してくれる。