NoSQL / KVS データベース
RDBの限界(スケール・スキーマ固定)に対し、用途特化で生まれた非リレーショナルDB群。_moc-web-infra
分類
- KVS(Key-Value Store): redis が代表。シンプルで高速。
- ドキュメント指向: MongoDB。v3.2 から JOIN 相当(
$lookup)が可能に。 - ワイドカラム: Cassandra(Facebook発)。
- マネージドKVS: Amazon DynamoDB。DynamoDB Streams で cqrs-event-sourcing が組める。
- マルチモデル: SurrealDB。ドキュメント/グラフ/全文検索/ベクトルを一体化。Cypher 風クエリで知識グラフ用途も。
Redis
インメモリKVS。Pub/Sub の上位互換である Redis Streams を持ち、マイクロサービスのメッセージング基盤になる。Sorted Set(zrangebyscore)で簡易な遅延実行キューを実装できる(sidekiq の内部実装と同様)。セッションを外出ししてmicroservices-architectureのスティッキーセッション問題を解消する用途にも。
SQL vs NoSQL
RDBは一貫性とJOINに強いがスケールしにくい。NoSQLは水平スケール・スキーマ柔軟性に強いが、JOINや強整合性を捨てることが多い(database-transaction-theoryの結果整合性)。クライアント直結のNoSQLとしては Firestore(firebase)がある。