前編では、NoSQLのデータベース「MongoDB」を
VPSサーバにインストールし、サービス起動するところまでを
書きました。
sandplover-petro.hatenablog.com
本来であれば、ユーザ権限の設定とかはあるのですが、
「とりあえず、データを入れてみたいよね」という感じだったので
今回はデータを登録してみることにしました。
1.RDBとNoSQL(ドキュメント型)の違いって?
すーごくザックリ言うと、下の図のような感じになります。
※2021年現在では、RDBでもNoSQLみたいなデータの持たせ方は
できるようになっています。Oracle とか MySQL とかでいうところの
BLOBなんてのが、そんな感じになるのかと。
そこらへんを書いちゃうと、いろいろごちゃっとしてくるんで今回は省略。。。
Excelに例えるのならば、1件のレコードは「Excelの行」みたいな感じかと。
一方、NoSQL(ドキュメント型)では、
1件のレコードが「ファイル」みたいな感じです。
一長一短があるのですが、
NoSQL(ドキュメント型)では、途中から項目が追加されたりしても
柔軟に対応できる良さがあります。
上の図で行くと、「保育士」というテーブルに
「保育士1」とか「保育士2」、「保育士3」という項目があると思います。
RDBでは、保育士が4人になった場合は「保育士4」という項目を追加する
ことになります。
しかし、NoSQLでは「保育士」が増えても以下の感じにしてけばOKです。
(例)アナ雪保育園の保育士に、「アナ」が追加になった場合
⇒"保育士":["クリストフ","スヴェン","オラフ"]を
"保育士":["クリストフ","スヴェン","オラフ","アナ"]と
するだけでOK。項目追加は不要です。
これはほんの一例なんですが、項目追加に柔軟に変更できるというのは
結構便利なことなんですよね。
2.データ登録準備
実際に、MongoDBにデータを追加する流れを追ってみようと思います。
※今回はWindowsマシンから接続。
tera term を使ってみました。
①MongoDBに接続する。
今回は接続ユーザの指定とかはしないので、
単純に「mongo」と入力してEnterキーを叩きます。
②MongoDBに接続できました。
③データベース(器のようなものです)の確認コマンドを実行し、
使用するデータベースを選択します。
使用するデータベース名が存在しない場合は、勝手に作ってくれちゃいます。
※便利と言えば便利ですが、タイプをミスったら無駄な器が量産される…。
3.データの登録
データを登録します。
ザックリ言うと、こんな感じで書いてきます。
db.コレクション名.insert({"項目名","値"});
(例)db.test_001.insert({"保育園名":"ラプンツェル保育園"});
test_001⇒コレクション名
保育園名⇒項目名
ラプンツェル保育園⇒値
また、配列の時はこんな感じで書いていきます(例の「保育士」にあたります)
db.コレクション名.insert({"項目名",["値", "値"]});
(例)db.test_001.insert({"保育士":["ユージーン","パスカル"});
test_001⇒コレクション名
保育士⇒項目名
※コレクションは、RDBでいうところの「テーブル」にあたります。
insertする場合、コレクションが存在しない場合は、自動で作ってくれちゃいます。
データの登録が完了しました。
案外あっさりできました。
4.データの確認
引き続いて、データの確認を。
SQLでいうところの SELECT 文になります。
MongoDBでは、SQLが使えないので、それに準じるものを使います。
※MongoQueryとか言ったかな...。
細かいことはいろいろできるのですが、それは次の投稿で。
まずは基本中の基本「全件抽出(検索条件なし)」を。
db.コレクション名.find();
(例)db.test_001.find();
test_001⇒コレクション名
検索結果の先頭には、MongoDB側で採番した値(_id)が設定されています。
これはランダムに設定される値となります。
RDBでもある「主キー」、「プライマリキー(PK)」と同じものです。
1件だけだとちょっと寂しさがあるので、
もう3件データを追加しました。
次の投稿からは、このデータを使ってちょこちょこ見ていこうと思います。
よろしかったら、次回もお付き合いくださいませ。