11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

image.png

はじめに

データベースと聞くと、まず思い浮かぶのは
表形式でデータを管理する RDB(リレーショナルデータベース) かもしれません。

image.png

RDBは、行と列で構成されるテーブルにデータを保存し、SQLを使ってデータを検索・更新します。
Oracle Database、MySQL、PostgreSQL などが代表的です。

一方で、Webアプリ、ログ分析、キャッシュ、IoT、ビッグデータなどの文脈では、
NoSQL という言葉もよく登場します。

この記事では、NoSQLとは何か、RDBと何が違うのか、そして代表的な種類である KVS(Key-Value Store) についても含めて、簡潔に整理します。

NoSQLとは?

NoSQLは、ざっくり言うと
「RDBのような表形式に固定されないデータベース」 です。

image.png

NoSQL は “Not Only SQL” と説明されることが多く、
SQLをまったく使わないという意味ではなく、
RDB以外の柔軟なデータ管理方式も含む考え方 と捉えると分かりやすいです。

RDBでは、事前にテーブルの列や型を決めておき、そこにデータを格納します。

たとえば、ユーザー情報を管理する場合は次のようなイメージです。

id name email
1 Taro taro@example.com
2 Hanako hanako@example.com

一方、NoSQLでは、データの持ち方がより柔軟です。
JSONのような形で保存したり、キーと値の組み合わせで保存したり、データ同士の関係性をグラフとして扱ったりします。

NoSQLの代表的な種類

NoSQLにはいくつか種類があります。
代表的なものは次のとおりです。

種類 特徴 代表例
Key-Value型(KVS) キーと値の組み合わせで保存する。高速な読み書きが得意 Redis, DynamoDB
ドキュメント型 JSONのような形式でデータを保存する MongoDB
カラム指向型 大量データを列単位で扱いやすい Cassandra, HBase
グラフ型 データ同士の関係性を表現しやすい Neo4j

NoSQLとひとことで言っても、すべてが同じ仕組みではありません。
「RDB以外のデータベース」という大きなカテゴリの中に、いくつかのタイプがあるイメージです。

image.png

KVSとは?

NoSQLの代表的な種類のひとつに、KVS(Key-Value Store) があります。

KVSは名前の通り、
キー(Key)と値(Value)の組み合わせでデータを保存する仕組み です。

たとえば、ユーザーIDをキーにして、そのユーザー情報を値として保存するようなイメージです。

user:001 → "Taro"
user:002 → "Hanako"

もう少し実際のアプリに近づけると、次のようにセッション情報や設定情報を保存できます。

session:abc123 → { "user_id": 1, "expires": "2026-04-01T10:00:00" }
user_setting:001 → { "theme": "dark", "language": "ja" }

KVSは構造がとてもシンプルです。
そのため、キーを指定して値を高速に取り出す ことが得意です。

イメージとしては、プログラムで使う辞書や連想配列に近いです。

キーを渡す → 対応する値が返ってくる

image.png

KVSが向いている場面

KVSは、複雑な検索やJOINにはあまり向いていません。
一方で、「このキーに対応する値をすばやく取り出したい」という用途には非常に向いています。

たとえば、次のような場面で使われます。

  • キャッシュ
  • ログインセッションの管理
  • ユーザー設定の保存
  • 一時的なトークン管理
  • ランキング情報
  • ショッピングカート情報

image.png

代表的なKVSには、次のようなものがあります。

製品 特徴
Redis インメモリで高速。キャッシュやセッション管理でよく使われる
Amazon DynamoDB AWSのマネージドNoSQL DB。大規模アクセスに強い
Oracle NoSQL Database Oracleが提供する分散型NoSQLデータベース

RDBが「表の中から条件を指定して探す」のに対して、
KVSは “キーを渡したら値が返ってくるシンプルな箱” のようなものです。

ドキュメント型とは?

NoSQLの中でもよく使われるのが、ドキュメント型データベースです。

代表例は MongoDB です。

ドキュメント型では、JSONのような形式でデータを保存します。

{
  "id": 1,
  "name": "Taro",
  "email": "taro@example.com",
  "skills": ["JavaScript", "Python", "MongoDB"]
}

RDBのように、すべてのデータが同じ列構成である必要はありません。
データごとに持つ項目が多少違っていても扱いやすいのが特徴です。

たとえば、ユーザーごとにプロフィール項目が違う場合や、商品ごとに属性が大きく異なる場合などに向いています。

image.png

RDBとの違い

RDBとNoSQLの大きな違いは、
データ構造の柔軟性スケールの考え方 です。

観点 RDB NoSQL
データ構造 テーブル形式 種類によって異なる
スキーマ 事前に定義することが多い 柔軟に変更しやすい
得意なこと 厳密な整合性、複雑な検索、JOIN 大量データ、高速処理、柔軟な構造
スケール 垂直スケールが中心になりやすい 水平スケールしやすいものが多い
代表例 Oracle Database, MySQL, PostgreSQL Redis, MongoDB, Cassandra

RDBは、データの整合性をしっかり守りたいシステムに向いています。
たとえば、金融、在庫管理、会計、基幹システムなどです。

一方、NoSQLは、データ構造が変わりやすいシステムや、大量データを高速に扱いたい場面で使われます。

image.png

NoSQLが向いている場面

NoSQLは、次のようなケースで向いています。

  • ユーザーごとに保存する項目が異なる
  • アプリの仕様変更に合わせてデータ構造が頻繁に変わる
  • 大量のログやイベントデータを高速に保存したい
  • JSON形式のデータをそのまま扱いたい
  • キャッシュやセッション管理を高速に行いたい
  • サーバーを増やして横方向にスケールさせたい

たとえば、次のような用途ではNoSQLが選ばれることがあります。

用途 向いているNoSQLの例
キャッシュ KVS
セッション管理 KVS
ユーザープロファイル ドキュメント型
商品カタログ ドキュメント型
ログ収集 カラム指向型
SNSの関係性分析 グラフ型

NoSQLは、特に 変化しやすいデータ大量アクセスが発生するデータ と相性がよいです。

NoSQLなら何でもよいわけではない

NoSQLは便利ですが、RDBの代わりに何でも置き換えられるものではありません。

特に、次のようなケースではRDBの方が向いていることも多いです。

  • データの整合性を厳密に守りたい
  • 複雑なJOINや集計を多用する
  • トランザクション処理が重要
  • データ構造が安定している
  • SQLで柔軟に分析したい

たとえば、銀行の振込処理や在庫管理のように、
「途中で失敗したら困る」「データの矛盾が許されない」ようなシステムでは、RDBの強みが活きます。

NoSQLは「RDBより新しいから優れている」というものではありません。
大事なのは、データの性質やシステムの要件に応じて選ぶこと です。

どう使い分けるとよいか

ざっくり使い分けるなら、次のように考えると分かりやすいです。

こういう場合 向いている選択肢
厳密な整合性が重要 RDB
複雑な検索やJOINが多い RDB
JSONのような柔軟な構造で保存したい ドキュメント型NoSQL
キー指定で高速に読み書きしたい KVS
大量ログを分散して扱いたい カラム指向型NoSQL
人やモノ同士の関係性をたどりたい グラフ型NoSQL

実際のシステムでは、RDBかNoSQLのどちらか一方だけを使うとは限りません。

たとえば、

  • 注文データはRDBで管理する
  • セッション情報はRedisに保存する
  • 商品カタログはMongoDBで管理する
  • ログは別のNoSQLに保存する

というように、用途ごとに使い分けることもあります。

image.png

まとめ

NoSQLは、RDBのような表形式に固定されず、
用途に応じて柔軟にデータを扱えるデータベースの総称です。

ポイントをまとめると、次のようになります。

  • NoSQLは、RDB以外の柔軟なデータベースの総称
  • “Not Only SQL” と捉えると分かりやすい
  • Key-Value型、ドキュメント型、カラム指向型、グラフ型などがある
  • KVSは、キーと値の組み合わせでデータを扱うシンプルなNoSQL
  • KVSはキャッシュ、セッション管理、一時データの保存などに向いている
  • ドキュメント型は、JSONのような柔軟な構造を扱いやすい
  • NoSQLは、大量データや変化しやすいデータに強い
  • 一方で、厳密な整合性や複雑なJOINが必要な場合はRDBが向いていることも多い

NoSQLは、ざっくり言えば
「変化しやすいデータや大量データを、柔軟に扱うための選択肢」 です。

まずは、RDBとNoSQLを対立するものとして見るのではなく、
用途に応じて使い分けるデータベースの選択肢 として理解するとよさそうです。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?