新・クマックマのダラダラダイアリー

エスタディオクマックマ

おー!って思ったことをブログに書いてきます。

VPSサーバにMongoDBをインストールしてみる(2)

 


f:id:sandplover_petro:20210117005046j:plain

 

前編では、NoSQLのデータベース「MongoDB」を

VPSサーバにインストールし、サービス起動するところまでを

書きました。

 

sandplover-petro.hatenablog.com

 

本来であれば、ユーザ権限の設定とかはあるのですが、

「とりあえず、データを入れてみたいよね」という感じだったので

今回はデータを登録してみることにしました。

 

 

1.RDBとNoSQL(ドキュメント型)の違いって?

すーごくザックリ言うと、下の図のような感じになります。

※2021年現在では、RDBでもNoSQLみたいなデータの持たせ方は

 できるようになっています。Oracle とか MySQL とかでいうところの

 BLOBなんてのが、そんな感じになるのかと。

 そこらへんを書いちゃうと、いろいろごちゃっとしてくるんで今回は省略。。。

 

f:id:sandplover_petro:20210123131105j:plain

RDBは、Excelでよく見るような表形式のものです。

Excelに例えるのならば、1件のレコードは「Excelの行」みたいな感じかと。

 

一方、NoSQL(ドキュメント型)では、

1件のレコードが「ファイル」みたいな感じです。

 

一長一短があるのですが、

NoSQL(ドキュメント型)では、途中から項目が追加されたりしても

柔軟に対応できる良さがあります。

上の図で行くと、「保育士」というテーブルに

「保育士1」とか「保育士2」、「保育士3」という項目があると思います。

RDBでは、保育士が4人になった場合は「保育士4」という項目を追加する

ことになります。

 

しかし、NoSQLでは「保育士」が増えても以下の感じにしてけばOKです。

(例)アナ雪保育園の保育士に、「アナ」が追加になった場合

   ⇒"保育士":["クリストフ","スヴェン","オラフ"]を

    "保育士":["クリストフ","スヴェン","オラフ","アナ"]と

    するだけでOK。項目追加は不要です。

 

これはほんの一例なんですが、項目追加に柔軟に変更できるというのは

結構便利なことなんですよね。

 

2.データ登録準備

実際に、MongoDBにデータを追加する流れを追ってみようと思います。

※今回はWindowsマシンから接続。

 tera term を使ってみました。

 

①MongoDBに接続する。

今回は接続ユーザの指定とかはしないので、

単純に「mongo」と入力してEnterキーを叩きます。

f:id:sandplover_petro:20210123131137j:plain

 

②MongoDBに接続できました。

f:id:sandplover_petro:20210123131133j:plain

 

③データベース(器のようなものです)の確認コマンドを実行し、

 使用するデータベースを選択します。

 使用するデータベース名が存在しない場合は、勝手に作ってくれちゃいます。

 ※便利と言えば便利ですが、タイプをミスったら無駄な器が量産される…。

f:id:sandplover_petro:20210123151548j:plain

 

3.データの登録

データを登録します。

ザックリ言うと、こんな感じで書いてきます。

db.コレクション名.insert({"項目名","値"});

(例)db.test_001.insert({"保育園名":"ラプンツェル保育園"});

   test_001⇒コレクション名

   保育園名⇒項目名

   ラプンツェル保育園⇒値

 

また、配列の時はこんな感じで書いていきます(例の「保育士」にあたります)

db.コレクション名.insert({"項目名",["値", "値"]});

(例)db.test_001.insert({"保育士":["ユージーン","パスカル"});

   test_001⇒コレクション名

   保育士⇒項目名

   ユージーン、パスカル⇒値

※コレクションは、RDBでいうところの「テーブル」にあたります。

 insertする場合、コレクションが存在しない場合は、自動で作ってくれちゃいます。

 

f:id:sandplover_petro:20210123131206j:plain

 

データの登録が完了しました。

案外あっさりできました。

f:id:sandplover_petro:20210123131202j:plain

 

 

4.データの確認

引き続いて、データの確認を。

SQLでいうところの SELECT 文になります。

MongoDBでは、SQLが使えないので、それに準じるものを使います。

※MongoQueryとか言ったかな...。

 

細かいことはいろいろできるのですが、それは次の投稿で。

まずは基本中の基本「全件抽出(検索条件なし)」を。

db.コレクション名.find();

(例)db.test_001.find();

   test_001⇒コレクション名

 

f:id:sandplover_petro:20210123151807j:plain

 

検索結果の先頭には、MongoDB側で採番した値(_id)が設定されています。

これはランダムに設定される値となります。

RDBでもある「主キー」、「プライマリキー(PK)」と同じものです。

 

1件だけだとちょっと寂しさがあるので、

もう3件データを追加しました。

f:id:sandplover_petro:20210123131156j:plain

 

次の投稿からは、このデータを使ってちょこちょこ見ていこうと思います。

 

よろしかったら、次回もお付き合いくださいませ。