LoginSignup
2
1

More than 3 years have passed since last update.

【SQL】SQLとNoSQLの違いをざっくり解説 no.1

Last updated at Posted at 2021-04-12

名称未設定のデザイン (10).png
こんにちは、まゆみです。

今回の記事から『Database』に関する記事をシリーズで書いていきます

今回は第1回目になります。

実は『Database』と一言で言っても、Database にはたくさんの種類が存在します。

Databaseを選ぶ時、まず問われることが『SQLベースかNoSQLベースか』になります

そこで今回の記事では、

SQLとNoSQLの違い、長所・短所にフォーカスを当てて書いていこうと思います

ではさっそく始めていきますね。

SQL・NoSQLデータベースの例

SQLデータベース NoSQLデータベース
MySQL MongoDB
PostgreSQL Redit

SQLとNoSQLの構造の違い

見出しを追加 (100).png

ざっくりいうとSQLはテーブル型のデータベースで

NoSQLはSQLとは違うフォーマットで書かれたデータベース全て

のことになります

1.png

2.png

ではさっそく例を上げながら説明します。

あなたはWebショップを運営している店長さんです

とりあえずSQLかNoSQLかどちらを使えば分からないから、SQLベースのデータベースを作りました。

見出しを追加 - 2021-04-12T102858.245.png

ただ、たなか太郎さんは、自分の住所を教えたがらず、住所の欄が空欄(null) になってしまいます。
また、やまだ花子さんからは、DMは家の住所よりむしろEmailの方に送ってもらった方が助かると言っています。

このような状態で、SQLベースのデータ(テーブル型の四角形のデータ)を作ろうとすると、データがないところは自動的に『null』が挿入されてしまい、良くない結果を招く原因となってしまいます。(Email がnull というアドレスに送られてしまったり)

一方、NoSQLベースのデータベースを使えば(例えばMongoDBはJSONフォーマットで格納されている)

見出しを追加 - 2021-04-12T104227.226.png
後で新しい項目を追加したり、柔軟性という点では優れています。

フレキシブルにデータベースを作れるという点では、『NoSQL』に軍配が上がりそうですが、NoSQLがSQLに劣っている点はあるのでしょうか?

リレーショナル or 非リレーショナル

SQLとNoSQLを比較するときに、

リレーショナルか

非リレーショナルか

ということはどこかで耳にされたことがあるかも知れません。

先ほどのWebショップの運営でデータベースを作る例に戻りましょう

あなたは、それぞれのお客さんの個人情報・買ったもの・個数・価格などを盛り込んだリストを作ろうとしていますが、次の日に同じお客さんがまた別の物を買い、同じ顧客の名前・個人情報に加えてその日に買ったものをリストにする。。。

それは得策ではなく、

顧客情報リスト

商品リスト

オーダーリスト

と分けて書くほうが、理にかなっていますよね。

見出しを追加 - 2021-04-12T120409.550.png

上のイラストのように、それぞれユニークなidでそれぞれのテーブルをつなぐような関連を持たせれば、うまくデータを管理する事ができます。

SQLベースのデータベースはこのように複雑な関連をそれぞれつないでデータを管理したい時などに、力を発揮します

このように相互の関連をつなぐことが得意な方のデータベースを

リレーショナルなデータベースと言います。

ただ、事前に『どのような構造(専門用語でスキーマと呼ばれます。)のテーブルにするべきか?』を考慮しなければいけませんが。

複雑な関連をつなぐのはNoSQLは可能ですが、苦手分野になります。

まとめ

SQL NoSQL
テーブル構造 ドキュメント・キーバリューペアー
複雑な関連をつなぐのが得意 複雑な関連は苦手
事前に構造を考えないといけない よりフレキシブル
2
1
2

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
2
1