NoSQLとは(全体像)
NoSQLは、従来の「表(テーブル)」の形にこだわらないデータベースたちのこと。名前は「No SQL(SQL禁止)」ではなく、「Not Only SQL(SQLだけじゃない)」の意味だよー。
身近にたとえると、道具を用途で使い分ける感じ。ネジにはドライバー、釘にはハンマー、というように、データの性質に合わせて種類を選ぶのー。
押さえるのは、代表が4種類あって、それぞれ得意な用途が違うこと。そして、分散向けに整合性をゆるめたBASEという考え方が出てくることだよー。
詳しく:4種類とBASEだけ覚えれば戦える
ここが記事の心臓部。まず4種類を見ていこーね。
NoSQLの4種類
| 種類 | イメージ | 代表 | 得意な用途 |
|---|---|---|---|
| Key-Value | 鍵と値のペア | Redis | キャッシュ・セッション(速く単純) |
| Document | JSONのような書類 | MongoDB | 柔軟な形のデータ・アプリ |
| Column | 列のまとまり | Cassandra | 大量・時系列・広域分散 |
| Graph | 点と線のつながり | Neo4j | SNS・おすすめ・つながり分析 |
それぞれ得意が違うので、用途で選ぶのが基本だよー。
次に、分散向けの考え方BASE。
BASE(ACIDをゆるめた考え方)
| 文字 | 意味 |
|---|---|
| BA | だいたい常に使える(Basically Available) |
| S | 状態は一時的に揺れてもよい(Soft state) |
| E | いずれ整合する(Eventually consistent=結果整合性) |
BASEは、ACID(厳密さ重視)の対の考え方で、「今すぐ全部きっちり一致」より「だいたい使えて、いずれ一致すればよい」を選んで、分散しても止まりにくくするもの。ここで一番のひっかけが「NoSQLはSQLが一切使えない」という誤解。NoSQLでもSQLに似た問い合わせができるものがある(名前は「Not Only SQL」)。
もう1つのひっかけが「NoSQLはACIDに対応していない」という古い思い込み。最近はMongoDBなど、ACIDに対応したNoSQLもあるよー。
わかりやすく言い換えると
要するに、道具の使い分けでイメージするとラクだよー。
①4種類 … Key-Value(速い)/Document(柔軟)/Column(大量)/Graph(つながり)
②BASE … 「今すぐ完璧」より「だいたい使えて、いずれ一致」を選ぶ分散向けの考え方
③名前の意味 … NoSQLは「SQL禁止」でなく「SQLだけじゃない(Not Only SQL)」
つまり、「4種類を用途で使い分け」「BASEはACIDをゆるめた分散向け」、この2点が試験の急所なのー。
試験のツボ
🔴 一番出る:NoSQLの4種類と用途
①Key-Value(速く単純)・Document(柔軟)・Column(大量・分散)・Graph(つながり)
②それぞれ得意な用途が違うので、用途で使い分ける
🔴 次に出る:BASE
①BASEはACID(厳密さ重視)の対の考え方
②「いずれ整合する(結果整合性)」を選んで、分散しても止まりにくくする
🟡 押さえると安定:名前の意味とACID対応
①NoSQLは「SQL禁止」でなく「Not Only SQL(SQLだけじゃない)」
②最近はMongoDBなどACIDに対応したNoSQLもある
よくある間違い
①「NoSQLはSQLがいっさい使えないデータベースである」→ ✗ NoSQLは「Not Only SQL」。SQLに似た問い合わせができるものもある。
②「NoSQLはどれもACIDに対応していない」→ ✗ 最近はMongoDBなど、ACIDに対応したNoSQLもある。
③「NoSQLの4種類はどれも同じで使い分けは不要である」→ ✗ Key-Value・Document・Column・Graphで得意が違う。用途で選ぶ。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(NoSQLの4種類)
NoSQLに関する次の記述のうち、正しいものはどれか。
- NoSQLは画面を表示しないデータベースの一種のことだとされているものである
- NoSQLは複数の種類があり、データの性質に合わせて用途で使い分けるものである
- NoSQLは必ず1種類しかなく、用途による違いはまったくないものだとされている
- NoSQLはデータを必ず紙に印刷するためのしくみのことだとされているものである
解答は 2 だよー。
NoSQLには、Key-Value(速い)・Document(柔軟)・Column(大量)・Graph(つながり)など複数の種類があって、用途で使い分けるのー。道具を用途で選ぶ感じだよー。
選択肢1の「画面を表示しない」、選択肢3の「1種類しかない」、選択肢4の「紙に印刷」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 画面表示の有無の話ではない |
| 2 | ✓ | 4種類を用途で使い分ける |
| 3 | ✗ | 複数の種類がある |
| 4 | ✗ | 紙に印刷するしくみではない |
オリジナル問題2(BASE)
BASEに関する次の記述のうち、正しいものはどれか。
- BASEは画面の明るさを調整するための設定のことだとされているものである
- BASEはACIDより厳密で、今すぐ全部きっちり一致させることを必ず保証するものである
- BASEはデータを必ず削除するための命令のことだとされているものである
- BASEはACIDをゆるめた分散向けの考え方で、「いずれ整合する(結果整合性)」を選ぶ
解答は 4 だよー。
BASEは、ACID(厳密さ重視)をゆるめた分散向けの考え方で、「今すぐ完璧」より「だいたい使えて、いずれ整合する(結果整合性)」を選ぶのー。分散しても止まりにくくするためだよー。
選択肢1の「明るさ調整」、選択肢2の「ACIDより厳密」、選択肢3の「削除する命令」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 明るさ調整ではない |
| 2 | ✗ | ACIDをゆるめた側(厳密ではない) |
| 3 | ✗ | 削除する命令ではない |
| 4 | ✓ | ゆるめた分散向け・いずれ整合 |
オリジナル問題3(名前の意味とACID対応)
NoSQLの名前や対応に関する次の記述のうち、正しいものはどれか。
- NoSQLは「Not Only SQL」の意味で、SQLに似た問い合わせやACID対応もある
- NoSQLは「SQL禁止」という意味で、どんな問い合わせもいっさいできないものだとされている
- NoSQLはすべてがACID非対応で、今後も対応することはないものだとされているものである
- NoSQLは画面の色を決めるための設定のことで、データベースとは無関係だとされているものだ
解答は 1 だよー。
NoSQLは「Not Only SQL(SQLだけじゃない)」の意味で、SQLに似た問い合わせができるものもあるのー。最近はMongoDBなどACIDに対応したものもあるよー。
選択肢2の「SQL禁止」、選択肢3の「すべてACID非対応」、選択肢4の「画面の色の設定」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | Not Only SQL・ACID対応もある |
| 2 | ✗ | SQL禁止の意味ではない |
| 3 | ✗ | ACID対応のものもある |
| 4 | ✗ | 画面の色の設定ではない |
まとめ
押さえどころ
- 🔴 NoSQLの4種類 = Key-Value(速い)・Document(柔軟)・Column(大量・分散)・Graph(つながり)。用途で使い分ける。
- 🔴 BASE = ACIDをゆるめた分散向けの考え方。「いずれ整合する(結果整合性)」を選ぶ。
- 🟡 名前の意味とACID対応 = NoSQLは「Not Only SQL」。最近はACID対応のNoSQLもある。
次に学ぶ
- トランザクションACID ── 厳密さを支える4つの約束。BASEはこのACIDをゆるめた対の考え方。
- インデックス種類 ── 検索を速くする索引。ベクトルなどNoSQLにも関わる。
執筆: SikakuQuest編集部