NoSQL
データベースの分類だよ
リレーショナルデータベース(リレーショナルデータベースマネジメントシステム)じゃないやつだよ
「これがNoSQL!」という明確な定義があるわけじゃないから何となくの分類だよ
「No」は(昔は「Yes/No」の「No」のことだったけど今では)「Yes/No」の「No」ではなくて「Not only」の省略表現らしいよ
簡単に書くよ
NoSQL(読:ノーエスキューエル)とは
データベースの分類のひとつ
であり
リレーショナルデータベース(リレーショナルデータベースマネジメントシステム)じゃないデータベースのこと
です。
よく分からない人は
パッと見の印象や操作感がOracleとかMySQLとかとは違うデータベースのこと
と思っても……良いかな?良いよね!多分、良いです。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・データベース
・リレーショナルデータベース(RDB)
・データベースマネジメントシステム(DBMS)
・リレーショナルデータベースマネジメントシステム(RDBMS)
・SQL
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
データベースは「データを入れておく箱」です。
突っ込んで考えると混乱するかもしれません。
何となくのフィーリングで理解してください。
リレーショナルデータベース(RDB)は「データを表形式で扱っていて、表同士をくっつけたりなんだりできるデータベース」です。
データベースの種類のひとつです。
よく分からない人は、よく分からないままで かまいません。
一旦スルーしてください。
データベースマネジメントシステム(DBMS)は「データベースを便利に使うための あれやこれやな機能が付いているソフト」です。
箱(データベース)を扱うための道具です。
これも やっぱり、よく分からない人は、よく分からないままで かまいません。
一旦スルーしてください。
リレーショナルデータベースマネジメントシステム(RDBMS)は「リレーショナルデータベースを便利に使うための あれやこれやな機能が付いているソフト」です。
その名の通り、リレーショナルデータベースのデータベースマネジメントシステムです。
これも やっぱり、よく分からない人は、よく分からないままで かまいません。
一旦スルーしてください。
さて、いろいろ華麗にスルーして、ここまで辿り着きましたね。
サッパリ分かっていない状態だと思いますが問題ありません。
(多分)これからサクっと分かります。
「リレーショナルデータベースマネジメントシステム」とか小難しい呼び名が付いていますが、要はOracleとかMySQLとかSQL ServerとかPostgreSQLとかのことです。
OracleとかMySQLとかはデータを入れる箱を表形式で扱います。
OracleとかMySQLとかはリレーショナルデータベースです。
OracleとかMySQLとかを構成する要素はデータを入れる箱だけでは ありません。
他にも「ビューが、どーたら」とか「インデックスが、こーたら」とか、いろいろな機能がくっついています。
OracleとかMySQLとかは単なるデータベースでは ありません。
「データベース+ソフト」な箱(データベース+)データベースマネジメントシステムです。
OracleとかMySQLとかはリレーショナルデータベースのデータベースマネジメントシステムです。
だから、リレーショナルデータベースマネジメントシステムです。
単に「データベース」と呼ばれることが多いですけどね。
実際には、リレーショナルデータベースマネジメントシステムなのです。
次に行きましょう。
「SQL(とSQL文)」について説明します。
SQLは「データベースと やり取りするときに使う言葉」です。
データベースにデータを入れるときは、データベースさんに「これを入れておいて」と命令します。
データベースからデータを取り出すときは、データベースさんに「こんなデータを取り出しておくれ」と命令します。
SQLは、そんな命令をするときに使う言葉です。
SQL文は「データベースに対する、SQLを使った命令文」です。
「クエリ」とも呼ばれます。
「SQL」と「SQL文」は違います。
あまり神経質になる必要はありませんが、区別できるように しておいてください。
SQLは「言語」です。
SQL文は「命令(文)」です。
例えば、そうですね。
ピヨ子さんがピヨ太君に日本語で「パン買ってこい!」と命令したとしましょう。
ピヨ子さんが人間、ピヨ太君がデータベースだとすれば「日本語」が「SQL」です。
「パン買ってこい!な命令」が「SQL文」になります。
以上を踏まえて
リレーショナルデータベースマネジメントシステム「以外」のデータベース箱(データベースマネジメントシステム)
を指す分類上の呼び名が「NoSQL」です。
「データベース箱(データベースマネジメントシステム)」というカテゴリの中に「リレーショナルデータベース(リレーショナルデータベースマネジメントシステム)」と「NoSQL」があります。
以前は、データベースと言えば、ほとんど?がリレーショナルデータベースでした。
「データベースを使おうぜー!」となったら「Oracleにする?MySQLにする?SQL Serverにする?PostgreSQLにする?それとも……」だったのです。
ところがどっこい、あれやこれやの事情でリレーショナルデータベース以外のデータベースも増えてきました。
その結果、生まれたであろう「リレーショナルデータベース以外のデータベース」の呼び名がNoSQLです。
注意点として、どんなデータベースがNoSQLに分類されるかは結構あいまいです。
リレーショナルデータベースだったMySQLさんが「MySQL 8.0はRDBとNoSQLの両方イケるようにするよ!」と言ったりもしたみたいですしね。
あまり突っ込んで考えると混乱すると思います。
繰り返しになりますが、NoSQLはデータベースの「分類」です。
別に「NoSQL」という名前のデータベースがあるわけでは ありません。
会議とかで「今度のシステムではデータベースにNoSQLを使いましょう!」とかいう発言が出てきたら「具体的には何のデータベースを使うの?」と確認してください。
「デザートは和菓子にしましょう」と言っているのと同じだからです。
一口に「和菓子」と言っても、いろいろありますよね?
ちなみに「NoSQL」の「No」は「Yes/No」の「No」では ありません。
「Not only」の省略表現(らしい)です。
「SQLいらね!(No!SQL!)」では ありません。
「SQLだけじゃないよ!(Not only SQL!)」です。
※昔は「Yes/No」の「No」のつもりだったらしいですが、SQLも使えるやつが出てきたからか「Not only」の省略と解釈するようになったみたいです。
あと、最近では、RDBとNoSQLの良いとこ取りをしようとした「NewSQL」なんていうのも出てきて、今まで以上に分類がややこしくなっています。
そこら辺の あれやこれやが気になる方は他のところで情報を補完してください。
一言でまとめるよ
まぁ「NoSQL」って単語が出てきたら「『リレーショナルデータベース(リレーショナルデータベースマネジメントシステム)じゃないよ!』を意味するデータベースの分類なんだな~」と お考えください。
おまけ
■訳してみるよ
「No」は「Not only(ノット・オンリー)」の略らしいです。
「not(ノット)」の意味は「~でない」とかです。
否定を意味します。
「only(オンリー)」の意味は「~だけ」とかです。
「SQL(エスキューエル、シークェル)」はIT用語の「SQL」です。
何となく くっつけると
SQLだけじゃない
となります。
■検索してみる?






