NoSQLが生まれた背景

リレーショナルデータベース(RDB)はスキーマの硬直性・水平スケールの限界から、Webスケールのサービスに対応できない場面が生まれました。各社が独自のNoSQLを開発し、現在はユースケースに応じた多様な選択肢があります。

主要NoSQLデータベース比較

DB 種類 得意なこと 代表的なユースケース
MongoDB ドキュメント 柔軟なスキーマ・JSON操作 CMS・カタログ・プロトタイプ
Redis KVS(インメモリ) 超高速・TTL付きデータ キャッシュ・セッション・ランキング
Cassandra ワイドカラム 書き込み高速・高可用性 IoTログ・タイムシリーズ
Elasticsearch 全文検索 テキスト検索・集計 ログ分析・検索エンジン
DynamoDB KVS/ドキュメント AWSフルマネージド サーバーレスアプリ全般

Redisの活用例(Pythonサンプル)

import redis
r = redis.Redis(host="localhost", port=6379)

# キャッシュ(5分TTL)
r.setex("user:123:profile", 300, json.dumps(user_data))

# カウンター(PV数)
r.incr("page:top:views")

# ランキング(Sorted Set)
r.zadd("leaderboard", {"alice": 1500, "bob": 1200})
top3 = r.zrevrange("leaderboard", 0, 2, withscores=True)

RDBとNoSQLの使い分け判断

RDBを選ぶ場面:ACID特性が必要・複雑なJOINが多い・トランザクション整合性が最優先。

NoSQLを選ぶ場面:スキーマが頻繁に変わる・水平スケールが必要・特定のアクセスパターンに特化・超大量データの書き込み。

現代のアーキテクチャでは、RDB+Redis(キャッシュ)の組み合わせが最も一般的なスタックです。