NoSQLって何?わかりやすく解説

「データベース」って言葉、最近よく聞くようになったよね。でも「SQLとかNoSQLとか、何が違うの?」って混乱したことない?プログラミングを勉強し始めると絶対に出てくるキーワードなんだ。難しそうに見えるけど、イメージさえつかめば全然怖くない。この記事を読めば、NoSQLが何なのか・どんな場面で使われているのかが、スッキリわかるよ!

NoSQLって名前を聞いたんだけど、「SQLじゃない何か」ってこと?なんか否定形みたいで変な名前だな〜。

鋭い観察だよ!NoSQLは「Not Only SQL」の略で、つまり「SQLだけじゃないよ」ということなんだ。昔は「Non-SQL(SQLじゃない)」って意味で使われてたけど、今は「SQLも含みつつ、それ以外の方法も使えるよ」というニュアンスになってるんだよ。
そもそもSQLって何なの?データベースって言葉は聞いたことあるけど、よくわかってないかも…。

データベースはデータを整理して保存する仕組みのことで、エクセルの超強化版だと思ってね。SQLはそのデータベースを操作するための言語で、従来のSQLデータベースはテーブル(表)形式でデータを管理するのが特徴なんだよ。
じゃあNoSQLは表形式じゃないってこと?どんな形でデータを保存するの?

NoSQLにはいくつか種類があってね、「JSONみたいな形で保存するタイプ」「キーと値のペアで保存するタイプ」「SNSの人間関係みたいに繋がりを管理するタイプ」などがあるんだ。つまりデータの形に合わせて保存方法を選べるのが最大の特徴だよ!
すごい!じゃあもうNoSQLを使えば全部解決じゃないの?

そうでもないんだよ笑。NoSQLにも得意・不得意があって、「複数のテーブルを組み合わせた複雑な検索」は従来のSQLデータベースの方が向いてたりする。用途に合わせて使い分けることが大事なんだよね。
📝 3行でまとめると
  1. NoSQLは「Not Only SQL」の略で、表形式にとらわれない自由なデータ保存の仕組みのことだよ。
  2. SNSや動画配信など大量のデータを高速に処理する場面で特に力を発揮するんだ。
  3. NoSQLが万能なわけじゃなく、用途に合わせてSQLと使い分けるのが正解だよ。
目次

もうちょっと詳しく

NoSQLが生まれた背景には、インターネットの爆発的な普及がある。2000年代以降、TwitterやFacebookのようなSNSが登場して、1日に何億件ものデータが生まれるようになったんだ。従来の表形式のデータベース、つまりリレーショナルデータベースでは、そのスピードと量についていけないことが増えてきた。「もっと柔軟で速いデータの保存方法が必要だ!」という声から生まれたのがNoSQLだよ。GoogleやAmazonなどの巨大IT企業が自社サービスのために開発した技術が、後にオープンソースとして公開されて、世界中のエンジニアが使えるようになった——そんな歴史があるんだ。今では当たり前のように使われているんだよ。

💡 ポイント
NoSQLはGoogleやAmazonが大規模サービスのために開発した技術が起源!

⚠️ よくある勘違い

❌ 「NoSQLはSQLの上位互換だから、全部NoSQLに替えればいい」
→ NoSQLは「SQLより優れている」わけじゃなく、「別の得意分野を持つ別物」なんだよ。銀行の口座情報など正確さが命のシステムでは、SQLデータベースの方が向いてるんだ。
⭕ 「NoSQLとSQLはそれぞれ得意なことが違う、使い分けるもの」
→ 大量データの高速処理や柔軟なデータ構造が必要なときはNoSQL、複雑な条件で正確に検索したいときはSQL、と目的に合わせて選ぶのが正解だよ。
なるほど〜、あーそういうことか!

[toc]

SQLって何?まず基本を押さえよう

NoSQLを理解するには、まず「SQL(エスキューエル)とは何か」を知っておく必要があるよ。SQLとはStructured Query Language(構造化照会言語)の略で、つまり「決まった形に整理されたデータを操作するための言語」ということだよ。

SQLを使うデータベースはリレーショナルデータベースと呼ばれていて、データをエクセルのような「表(テーブル)」に保存するのが特徴なんだ。学校の出席簿を思い浮かべてみて。縦に生徒の名前、横に日付が並んで、各マスに「出席○」「欠席×」が入ってるよね?あれがまさにリレーショナルデータベースのイメージだよ。

リレーショナルデータベースの強みは「データの整合性」、つまり「データに矛盾がない状態を保てること」だよ。銀行の振り込みで考えてみよう。AさんがBさんに1万円を送るとき、Aさんの口座から引いてBさんの口座に足す2つの処理が、必ず同時に完了しないといけないよね。途中でエラーが起きたら、どちらも元に戻す。これをトランザクション、つまり「一連の処理をひとまとめにして、全部成功か全部失敗かにする仕組み」というんだ。

リレーショナルデータベースの弱点

ただ、リレーショナルデータベースには弱点もある。それは「データの形が決まっている」こと。エクセルで新しい列を追加するのと同じで、テーブルの設計を後から変えるのが難しいんだ。SNSの投稿みたいに「テキストだけの人もいれば、画像を5枚つける人もいる、タグが0個の人もいれば100個つける人もいる」というバラバラなデータを扱うのは苦手なんだよ。さらにユーザーが何億人にもなったとき、サーバーを増やして処理を分散させる「スケールアウト」がリレーショナルデータベースでは難しいという問題もある。こういった課題を解決するために登場したのが、NoSQLなんだよ。

NoSQLの4つの種類を知ろう

NoSQLと一口に言っても、実はいくつかのタイプがあるんだ。データの保存方法によって大きく4種類に分けられるよ。それぞれどんな特徴があるか、身近なたとえで説明するね。

① ドキュメント型

最も人気があるタイプで、JSON形式、つまり「項目名:値」のペアが入れ子になったテキスト形式でデータを保存するんだ。SNSのプロフィールを例にすると、田中くんは「趣味:サッカー・ゲーム」で、鈴木さんは「趣味:読書・料理・旅行、資格:英検2級」みたいに、人によってデータの項目数や内容が違っても全部OKなんだよ。代表例はMongoDB(モンゴディービー)で、スタートアップや個人開発者に特に人気だよ。

② キーバリュー型

「キー(鍵)と値のペア」でシンプルにデータを保存するタイプ。ロッカーのイメージで考えてね。ロッカーの番号(キー)を指定すれば、中身(バリュー)がすぐ取り出せる。検索がとにかく高速!代表例はRedis(レディス)で、「最近見た商品」などの一時データ保存や、セッション情報のキャッシュ(つまり「よく使うデータを一時的に取り出しやすい場所に置いておくこと」)に使われることが多いよ。

③ カラム型

表形式に似てるけど、「列(カラム)単位でデータを保存する」タイプ。大量のデータに対して「特定の列だけ集計したい」という処理が超速い。代表例はApache Cassandra(カサンドラ)で、Netflixなどの大規模サービスが採用しているんだよ。

④ グラフ型

データ同士の「繋がり」を管理するのが得意なタイプ。「AさんとBさんは友達」「BさんとCさんも友達、じゃあAさんとCさんは友達の友達?」という関係性の分析が得意なんだ。SNSの「知り合いかも?」機能や不正検出に使われることが多いよ。代表例はNeo4j(ネオフォージェイ)だよ。

NoSQLが活躍する場面って?

「どんなときにNoSQLを使えばいいの?」これはエンジニアがよく考える問いだよ。NoSQLが特に力を発揮する3つの場面を具体的に見ていこう。

大量のデータをリアルタイムで処理するとき

TwitterやInstagramのように、世界中の何億人ものユーザーが毎秒投稿するサービスを想像してみて。1秒間に何十万件もの書き込みを処理するには、データベースのサーバーを何台も並べて「処理を分散させる」こと、つまりスケールアウトが必要なんだよ。NoSQLはこの分散処理がとても得意で、サーバーを増やせば増やしただけ処理能力が上がるんだ。

データの形がバラバラなとき

ネットショッピングを考えてみよう。洋服には「サイズ・色・素材」という項目があるけど、食品には「賞味期限・アレルゲン」という項目が必要だよね。電化製品なら「消費電力・メーカー保証期間」が要る。全部違う!こういった「カテゴリによってデータの形が違う」ケースで、ドキュメント型のNoSQLはそれぞれの商品情報をそのまま自由な形で保存できるから、テーブル設計が複雑にならないんだよ。

高速なキャッシュが必要なとき

Webサイトを開くとき、毎回データベースに問い合わせてたら遅くなるよね。そこで「よく使うデータをメモリ(超高速の記憶領域)に一時的に保存しておく」のがキャッシュの仕組みだよ。キーバリュー型のRedisはこのキャッシュ用途で大活躍していて、多くのWebサービスの裏側で使われているんだよ。

NoSQLのメリット・デメリット、正直に語ろう

NoSQLは「なんか新しくてスゴい!」というイメージがあるかもしれないけど、メリットもデメリットも両方あるんだよ。正直に整理してみるね。

NoSQLのメリット

まずスケーラビリティが高いこと、つまり「サーバーを増やせば増やした分だけ処理能力が上がる」点が大きな強みだよ。次にスキーマが柔軟なこと。スキーマとは「データの設計図」のことで、NoSQLはこの設計図が固定じゃないから、後からデータの形を変えやすいんだ。それから読み書きが高速なこと。特にキーバリュー型は、1件のデータを取り出す速度がリレーショナルデータベースより圧倒的に速いんだよ。

NoSQLのデメリット

一方で、データの整合性が弱い場合があるという問題がある。NoSQLの多くは「結果整合性」という考え方を採用していて、つまり「すぐには全サーバーに最新データが反映されないけど、最終的には揃うよ」という仕組みなんだ。銀行口座みたいに「今すぐ正確に!」が必要な場面には向いていないよ。また複雑なデータの組み合わせ検索が苦手な場合が多くて、「顧客テーブルと注文テーブルを組み合わせた検索」などはSQLの方が得意なんだ。さらにデータベースごとに使い方が違うため、MongoDBを覚えてもCassandraはまた別物だったりして、学習コストがかかるのもデメリットだよ。

有名なNoSQLデータベースと使っているサービス

「結局、どんなサービスがNoSQLを使ってるの?」気になるよね。実は身近なサービスでばんばん使われているんだよ。

MongoDB

最も有名なNoSQLデータベースのひとつ。ドキュメント型で、JSONに似たBSON形式でデータを保存するよ。スタートアップ企業やWebアプリの開発でよく使われていて、Uberの配車データ管理Adobe Creative Cloudのユーザーデータなどに使われているんだ。

Redis

「レディス」と読むよ。キーバリュー型で、データをすべてメモリ(RAM)に保存するから超高速なんだ。Twitter(X)のタイムラインのキャッシュや、GitHubのセッション管理など、多くの大規模サービスの「縁の下の力持ち」として活躍しているよ。

Apache Cassandra

Facebookが開発して後にオープンソースになったカラム型データベースだよ。Netflixが視聴データの管理に使っていて、1億人以上のユーザーデータを扱えるスケーラビリティが売りなんだ。「動画が止まらない」体験の裏側にCassandraがいるんだよ。

Amazon DynamoDB

AmazonのAWSが提供するキーバリュー型データベースで、サーバーの管理が不要なフルマネージドサービス、つまり「インフラ管理をAmazonが全部やってくれるサービス」として人気だよ。Amazonのショッピングカートのデータ管理にも使われているとも言われていて、世界規模のトラフィックを支えているんだよ。

こうして見ると、日頃使っているサービスの裏側でNoSQLがいっぱい動いているんだってわかるよね!「データベース」と一言で言っても、使う場面によって最適な種類が違う。それを知っているだけで、エンジニアとしての考え方がグッと広がるんだよ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大人になってから「これ知らなかった…」と恥ずかしい思いをした経験から、このサイトを作りました。お金・仕事・社会のしくみって、学校で教えてくれないのに知らないと損することだらけ。むずかしい言葉を「あーそういうことか!」って思えるまでかみ砕いて説明するのが得意です。主に経済・法律・税金・ライフイベント周りの用語を毎日更新中。

目次