NewSQLとは(全体像)
NewSQLは、2つの良さを「いいとこ取り」した分散データベースだよー。
- 従来のDB … 厳密(ACIDを守る)だけど、たくさんのコンピュータに広げにくい
- NoSQL … 広げやすいけど、厳密さ(ACID)をゆるめがち
この両方の良さ、「SQLとACIDを守りながら、大きく広げられる」を目指したのがNewSQLなのー。
身近にたとえると、「きっちり管理」と「大きく広げる」を両立させた新しいお店のしくみ。押さえるのは、NoSQLとは別ものということだよー。
詳しく:ACID+スケール両立とNoSQLとの違いだけ覚えれば戦える
ここが記事の心臓部。まずNewSQLの位置づけを見ていこーね。
3つのデータベースの位置づけ
| 種類 | 厳密さ(ACID) | 拡張しやすさ(スケール) |
|---|---|---|
| 従来のDB | 守る | 広げにくい |
| NoSQL | ゆるめがち | 広げやすい |
| NewSQL | 守る | 広げやすい(両立をねらう) |
ここで一番のひっかけが「NewSQLはNoSQLの一種(同じもの)」という誤解。NewSQLは「SQL+ACID+スケール」を両立させたもので、ACIDをゆるめがちなNoSQLとは別ものだよー。
代表的なNewSQLも押さえておこーね。
代表的なNewSQL
| 名前 | ひとこと |
|---|---|
| Google Spanner | グローバルに分散しても一貫性を保つ |
| CockroachDB | Spannerに着想・PostgreSQL互換 |
| TiDB | MySQL互換・分析と取引を両立(HTAP) |
ここで2つめのひっかけが「SpannerはMySQLのこと」という誤解。Spannerは独自のデータベース(SQLは使える)で、MySQLとは別ものだよー。
わかりやすく言い換えると
要するに、いいとこ取りでイメージするとラクだよー。
①NewSQL … 「きっちり(ACID)」と「大きく広げる(スケール)」を両立させた新しい分散DB
②NoSQLとの違い … NoSQLはACIDをゆるめがち、NewSQLはACIDを守る(別もの)
③代表 … Spanner・CockroachDB・TiDB
つまり、「NewSQLはSQL+ACID+スケールの両立」「NoSQLとは別もの」、この2点が試験の急所なのー。
試験のツボ
🔴 一番出る:NewSQLの特徴
①従来DBの厳密さ(ACID)とNoSQLの拡張しやすさ(スケール)を両立
②SQLも使えて、たくさんのコンピュータに広げられる(2010年代〜)
🔴 次に出る:NoSQLとの違い
①NoSQLはACIDをゆるめがち
②NewSQLはACIDを守る(SQL+ACID+スケール)。NoSQLとは別もの
🟡 押さえると安定:代表的なNewSQL
①Google Spanner(グローバル分散で一貫性)・CockroachDB(PostgreSQL互換)
②TiDB(MySQL互換・分析と取引を両立=HTAP)
よくある間違い
①「NewSQLはNoSQLの一種で、同じものである」→ ✗ NewSQLはSQL+ACID+スケールを両立したもの。ACIDをゆるめがちなNoSQLとは別もの。
②「SpannerはMySQLのことである」→ ✗ Spannerは独自のデータベース(SQLは使える)。MySQLとは別もの。
③「NewSQLはACIDを守れない」→ ✗ NewSQLはACIDを守りつつ拡張できることをねらった分散DB。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(NewSQLの特徴)
NewSQLに関する次の記述のうち、正しいものはどれか。
- NewSQLは画面を必ず新しく描き直すためだけに使う専用の機能のことだとされているものである
- NewSQLは従来DBの厳密さ(ACID)とNoSQLの拡張しやすさを両立させた分散DBだ
- NewSQLはデータを必ずすべて暗号化するための専用の命令のことだとされているものである
- NewSQLは音を鳴らして知らせるためだけに使う専用の設定のことだとされているものである
解答は 2 だよー。
NewSQLは、従来DBの厳密さ(ACID)とNoSQLの拡張しやすさ(スケール)を両立させた分散データベースなのー。いいとこ取りをねらった新しいしくみだよー。
選択肢1の「描き直す機能」、選択肢3の「暗号化」、選択肢4の「音を鳴らす」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 描き直す機能ではない |
| 2 | ✓ | ACIDとスケールを両立する分散DB |
| 3 | ✗ | 暗号化の命令ではない |
| 4 | ✗ | 音を鳴らす設定ではない |
オリジナル問題2(NoSQLとの違い)
NewSQLとNoSQLに関する次の記述のうち、正しいものはどれか。
- NewSQLとNoSQLはまったく同じもので、違いはいっさいないものだとされているものである
- NewSQLはSQLが使えず、ACIDもいっさい守れないものだとされているものである
- NoSQLはACIDをゆるめがちだが、NewSQLはACIDを守る点が違って、両者は別ものだ
- NewSQLは画面の色を決めるためだけに使う専用の設定のことだとされているものである
解答は 3 だよー。
NoSQLはACIDをゆるめがちだけど、NewSQLはACIDを守るのー。「SQL+ACID+スケール」を両立するのがNewSQLで、NoSQLとは別ものだよー。
選択肢1の「まったく同じ」、選択肢2の「SQLが使えない」、選択肢4の「色を決める設定」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 別ものである |
| 2 | ✗ | SQLが使えACIDも守る |
| 3 | ✓ | NoSQLはゆるめがち・NewSQLは守る |
| 4 | ✗ | 色を決める設定ではない |
オリジナル問題3(代表的なNewSQL)
代表的なNewSQLに関する次の記述のうち、正しいものはどれか。
- SpannerやCockroachDBは代表的なNewSQLで、ACIDを守って分散できる
- Spannerは画面に文字や図を表示するためだけの専用の機能のことだとされているものである
- CockroachDBはデータを必ずすべて削除するための専用の命令のことだとされているものである
- SpannerはMySQLとまったく同じもので、独自の点はいっさいないものだとされているものである
解答は 1 だよー。
SpannerやCockroachDBは代表的なNewSQLで、ACIDを守りながら分散できるのー。Spannerはグローバル分散でも一貫性を保つのが特徴だよー。
選択肢2の「画面を表示する機能」、選択肢3の「削除する命令」、選択肢4の「MySQLと同じ」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 代表的NewSQL・ACID+分散 |
| 2 | ✗ | 画面表示の機能ではない |
| 3 | ✗ | 削除する命令ではない |
| 4 | ✗ | Spannerは独自(MySQLではない) |
まとめ
押さえどころ
- 🔴 NewSQLの特徴 = 従来DBの厳密さ(ACID)とNoSQLの拡張しやすさ(スケール)を両立させた分散DB(2010年代〜)。
- 🔴 NoSQLとの違い = NoSQLはACIDをゆるめがち、NewSQLはACIDを守る。SQL+ACID+スケールで別もの。
- 🟡 代表的なNewSQL = Google Spanner・CockroachDB・TiDB。Spannerは独自(MySQLではない)。
次に学ぶ
- NoSQL(4種類・BASE) ── 表にこだわらないDBとBASE。NewSQLとの違いを押さえる。
- トランザクションACID ── 信頼の4つの約束。NewSQLが守ろうとするのがこのACID。
執筆: SikakuQuest編集部