NoSQLとは?4つの種類・カラム型の2つの意味・RDBとの比較とRedisで確かめた使いどころ【2026年】

NoSQL(ノーエスキューエル)とは、表(テーブル)以外の形でデータを保存するデータベースをまとめた呼び方です。MySQLやPostgreSQLのようなリレーショナルデータベース(RDB)が、データを行と列の表に整理してSQLで扱うのに対して、NoSQLは「キーと値の組」「JSONのような文書」「人と人のつながり」など、用途に合わせた形でデータを持ちます。名前は「Not only SQL(SQLだけではない)」の意味で使われることが多い言葉です。

NoSQLは、大量のアクセスを高速にさばく、形の決まっていないデータを柔軟に保存する、といった場面で使われます。この記事では、NoSQLの4つの種類と代表的な製品、混同されやすい「カラム型データベース」の2つの意味、RDBとの比較と選び方を解説します。代表的なNoSQLであるRedisを実際に動かした結果も紹介します。

この記事の確認方法(2026年10月6日時点)

  • Redisのライセンスや機能は、Redisの公式サイト(redis.io)で確認しました
  • Redisは、MacにHomebrewで入れたRedis 8.10.2で実行し、出力をそのまま載せています

NoSQLとは?4つの種類・RDBとの違いとRedisで確かめた使いどころ

NoSQLとは:RDBとの違い

RDB(リレーショナルデータベース)NoSQL
データの形行と列の表。表どうしを関係づけるキーと値、文書(JSON)、列のまとまり、グラフなど
データの決まり(スキーマ)先に表の形を決める決めなくてよいものが多い。1件ごとに形が違ってもよい
問い合わせSQL。表をつなぐJOINや集計が得意製品ごとの命令やAPI。JOINは苦手か、できないものが多い
得意なことデータの正しさ、複雑な検索と集計大量のアクセスを速くさばく、サーバーを増やして規模を広げる
代表例MySQL、PostgreSQL、SQLiteRedis、MongoDB、Cassandra、Neo4j

NoSQLは、RDBの代わりではなく得意な場面が違う道具です。実際のWebサービスでは、会員情報や注文はRDBに保存し、表示を速くするためのキャッシュやランキングはRedisに置く、というように組み合わせて使うことがよくあります。

NoSQLの4つの種類

種類データの持ち方代表的な製品よく使われる場面
キー・バリュー型「キー」と「値」の組。キーを指定して値を取り出すRedis、Amazon DynamoDBキャッシュ、ログイン状態(セッション)、ランキング、カウンター
ドキュメント型JSONのような文書を1件ずつ保存する。文書ごとに項目が違ってよいMongoDB、Firebase の Cloud Firestoreアプリのデータ、商品カタログ、ブログ、設定
ワイドカラム型行ごとに、たくさんの列を自由に持てる。複数のサーバーに分けて大量に保存するApache Cassandra、Google Cloud Bigtable、Apache HBaseIoTの機器データ、アクセスの記録など、書き込みが非常に多いデータ
グラフ型「点(ノード)」と「線(つながり)」でデータを持つNeo4jSNSの友達関係、おすすめ、不正の検知、経路の探索

最近は、AIの検索で使う「ベクトル」を保存して、意味の近いデータを探すデータベースも広がっています。Redisも、Redis 8で「vector set」というデータ型を加えています。

「カラム型データベース」には2つの意味がある

「カラム型データベース」という言葉は、まったく別の2つのものを指して使われるので注意が必要です。

ワイドカラム型(NoSQL)列指向(カラムナ)データベース
何のこと上の表のNoSQLの1種類。行ごとに自由な列を持つデータを「列ごと」にまとめて保存するデータベース。多くはSQLで使う
得意なこと大量の書き込みを、たくさんのサーバーに分けて受け止める大量のデータの集計(「全部の売上の合計」など、特定の列だけ読む処理)
例Apache Cassandra、Google Cloud Bigtable、Apache HBaseGoogle BigQuery、Amazon Redshift、ClickHouse、DuckDB
NoSQLかNoSQL多くはNoSQLではない(SQLで使う分析用のデータベース)

データ分析の文脈で「カラム型」と言われたら、多くは列指向のデータベースのことです。列ごとに保存すると、集計に必要な列だけを読めばよく、同じ種類の値が並ぶので圧縮もしやすくなります。一方、NoSQLの種類として「カラム型」と言われたら、ワイドカラム型のことです。

Redisを実際に動かしてみた

キー・バリュー型の代表であるRedisを、手元のMacで動かしました。redis-cli というコマンドで命令を送っています(> の行が命令、その下が結果です。日本語を読めるように --raw を付けています)。

1.値の保存、カウンター、有効期限

> SET user:1:name "佐藤"
OK
> GET user:1:name
佐藤
> INCR page:top:views
1
> INCR page:top:views
2
> INCR page:top:views
3
> SET session:abc123 "user:1" EX 1800
OK
> TTL session:abc123
1800
> GET user:999:name
  • SET と GET で、キーを指定して値を保存・取り出し。存在しないキー(user:999:name)は空が返ります
  • INCR は値を1増やします。たくさんのアクセスが同時に来ても数え間違えないので、閲覧数のカウンターなどに使われます
  • EX 1800 を付けると、1800秒(30分)たつと自動で消えるデータになります。TTL で残り秒数がわかります。ログイン状態やキャッシュに向いています

2.いろいろなデータの形

> HSET user:2 name "高橋" course "AI駆動開発" score 91
3
> HGETALL user:2
name
高橋
course
AI駆動開発
score
91
> RPUSH queue:mail "高橋さんへの案内" "田中さんへの案内" "伊藤さんへの案内"
3
> LPOP queue:mail
高橋さんへの案内
> LLEN queue:mail
2
> ZADD ranking 82 "佐藤" 64 "鈴木" 91 "高橋" 77 "田中" 85 "伊藤"
5
> ZREVRANGE ranking 0 2 WITHSCORES
高橋
91
伊藤
85
佐藤
82
> ZINCRBY ranking 20 "鈴木"
84
> ZREVRANK ranking "鈴木"
2
  • ハッシュ(HSET):1つのキーに、名前・コース・点数のような項目をまとめて保存
  • リスト(RPUSH・LPOP):入れた順に取り出す「待ち行列」。メールの送信待ちなどに使います
  • ソート済みセット(ZADD):点数で自動的に並ぶ集まり。ZREVRANGE で上位3人がすぐ出ます。鈴木さんに20点足すと(ZINCRBY)、順位(ZREVRANK、0から数える)が2、つまり3位に上がりました。ゲームのランキングによく使われます

3.どれくらい速いか

$ redis-benchmark -q -t set,get -n 100000
SET: 149476.83 requests per second, p50=0.255 msec
GET: 165562.92 requests per second, p50=0.239 msec

Redisに付いてくる計測ツールで、10万回の書き込み(SET)と読み込み(GET)を試すと、1秒あたり約15万〜16万回の処理ができました。Redisはデータをメモリに置くので、とても速く動きます。筆者のパソコン(Apple シリコンのMac)での一例で、サーバーやネットワークの条件で変わります。

Redisが苦手なこと

Redisは「キーを指定して取り出す」のは得意ですが、「80点以上の人を全員探す」「コースごとに平均点を出す」といった、値の中身で探したり集計したりするのは、RDBのSQLのようには書けません。ランキングのように、あらかじめ用途に合わせた形でデータを持っておく必要があります。どう使うかを先に決めて、それに合わせてデータの形を決めるのが、NoSQLの基本的な考え方です。

Redisのライセンスの変化

Redisは2024年3月に、ライセンスをオープンソースではない形(SSPLなど)に変えました。これをきっかけに、Redisから分かれたValkeyというプロジェクトが生まれています。その後、Redis 8からは、OSI(オープンソースの定義を管理する団体)に認められたAGPLv3も選べるようになりました。仕事で使うときは、使う版とライセンスを確かめておきましょう。

RDBでもJSONは扱える

「形の決まっていないデータを保存したいからNoSQL」と考える前に、RDBのJSON機能も検討しましょう。PostgreSQLのJSONB型や、MySQLのJSON型を使えば、表のデータと一緒にJSONを保存して、SQLで検索できます。実際に動かした例はPostgreSQLとは?とMySQLとは?で紹介しています。データの正しさやJOINが必要なら、まずRDBで足りないかを考えるのがおすすめです。

NoSQLの選び方

やりたいこと候補
表示を速くしたい(キャッシュ)、ログイン状態を持ちたい、ランキングを作りたいキー・バリュー型(Redisなど)
スマホアプリのデータを手軽に保存・同期したい、文書ごとに項目が違うドキュメント型(MongoDB、Cloud Firestoreなど)
機器のデータなど、毎秒大量の書き込みを受け止めたいワイドカラム型(Cassandraなど)
つながりをたどる検索をしたい(友達の友達、おすすめ)グラフ型(Neo4jなど)
注文や会員など、正しさが大事で、表をつないで集計したいNoSQLではなくRDB(MySQL、PostgreSQLなど)
大量のデータを集計・分析したい列指向のデータベース(BigQueryなど)

よくある質問

Q.NoSQLはSQLを使わないという意味ですか?

一般には「Not only SQL(SQLだけではない)」の意味で使われます。NoSQLの製品の中にも、SQLに似た問い合わせの言葉を持つものがあります。

Q.NoSQLとRDB、どちらを学ぶべきですか?

まずはRDBとSQLがおすすめです。多くのシステムの中心にはRDBがあり、データの考え方の基本も身につきます。そのうえで、キャッシュのRedisなど、必要になったNoSQLを足していくのが実際の現場の流れです。SQLの基本はSQLとは?で解説しています。

Q.NoSQLはデータが消えやすいのですか?

製品と設定によります。Redisはデータをメモリに置きますが、ディスクに保存する設定も用意されています。逆に、キャッシュのように「消えても元のデータから作り直せる」ものだけを置く使い方もあります。大事なデータを置くときは、保存とバックアップの設定を確かめましょう。

まとめ

  • NoSQLは、表以外の形でデータを持つデータベースの総称。キー・バリュー型、ドキュメント型、ワイドカラム型、グラフ型の4種類が代表的
  • 「カラム型」には、NoSQLのワイドカラム型と、分析用の列指向データベースという、別の2つの意味がある
  • Redisを動かすと、キャッシュの有効期限、カウンター、待ち行列、ランキングが数行の命令で作れ、1秒あたり約15万回の処理ができた
  • NoSQLは「使い方を先に決めてデータの形を決める」道具。正しさやJOINが大事なデータはRDBに置き、組み合わせて使う

データベースを使いこなすには、まずプログラミングとSQLの基本が欠かせません。テックジムの無料Python入門講座で、手を動かしながら始めてみてください。

関連記事


参考情報

あわせて読みたい

全体像はインフラ・ネットワークの基礎、開発環境まわりはGitと開発環境の基礎にまとめています。

SQLとデータベースの基礎はSQLとは?初心者でも分かる基礎知識にまとめています。