mongoってなんだろう

Pocket

久しぶりにblog書きます。Markdownの書き方すら忘れ気味ですが大丈夫でしょうか。それ以前に、mongoとは何も分からずに 「mongoについて書きます」と、MongoDB Advent Calendar 2015に登録してしまったこと自体がまちがいではないかと、そんなことを感じています。

mongoと聞いても、某銀河氏のことしか思い出せないのですが、今回は、私と同じ境遇の人へ、私が調べた一切合切を、来る明るい将来のため、若人のため、メモとして残しておくことにいたします。

目次

mongoとは何か

そもそもmongoは正式名称ではありません。もんごでもないです。某銀河の人は「もんごもんご」言われていますが、不正確な名称です。正確にはMongoDBです。Wikipediaに聞いてみましょう。

MongoDBは、オープンソースのドキュメント指向データベースである。C++言語で記述されており、開発とサポートはMongoDB Inc.によって行なわれている。
MongoDBはRDBMSではなく、いわゆるNoSQLと呼ばれるデータベースに分類されるものである。RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する(このデータの物理的な格納はBSONと呼ばれるJSONのバイナリ版といえる形式で行われる)。コレクションはRDBMSのような固定的なスキーマを持たない。ドキュメントには複雑な階層構造を持たせることもでき、それらの構造に含まれるフィールドを指定したクエリやインデクス生成も簡単な指定によって行える。RDBMSのように高度な結合操作を効率的に行うことはできないが、データの追加・更新・削除・クエリは高速に行うことができる。また、アプリケーションは自身の構造やデータ型に合った自然な形でデータを格納することができるため、扱うデータの特性によっては、RDBMSよりも容易かつ迅速に開発を行える可能性がある。

from Wikipedia

C++で開発されたNoSQLデータベースのようです。2009年に初版が公開され、 v3.0.6(2015/12/19現在:from Wikipedia)が最新版のようです。本家本元を見てみましょう

MongoDB Inc.

本家本元のサイトは MongoDB です。ロゴだと mongoDB(左上)なんですね。紛らわしい。

なんてこった、サイトへアクセスしたらMongoDB 3.2が発表されています。download MongoDB にて、ダウンロードもできます。

対応OSとして、

  • Windows
  • Linux
  • OS X
  • Solaris

のラインナップがあります。OS XSolaris版があるのが面白いですね。

MongoDBでなにができるのか

MongoDBの特徴とはなんでしょうか。ご丁寧に、これも Wikipedia に書いてあります。パクりましょう。

整合的なUTF-8エンコーディング。非UTF-8データも、特殊なバイナリデータ型によって保存・取得できる。
クロスプラットフォームのサポート: バイナリは、Windows, Linux, OS X, Solarisで利用できる。MongoDBはほとんどのリトルエンディアンシステムで利用できる。
豊富なデータ型: 日付、正規表現、バイナリ型、コード、など(すべてのBSONデータ型)
クエリ結果にカーソルが使える

3つ目までは、これと言った特徴ではありませんが、4点目はなんでしょう。意味が分かりません。

カーソルとは

カーソル:Wikipediaにその概要が記載されています。

  1. 利用者は検索条件やソート順序を指定してカーソルを定義する。
  2. パラメータを利用している場合は値を決定し、データへのアクセスを開始する。
  3. カーソル位置のデータを取得する。検索結果の終端なら7へ。
  4. 必要に応じてカーソル位置のデータを変更・削除する。
  5. カーソルを「次のデータ」へと進める。
  6. 3から繰り返し。
  7. 繰り返しの終了後、カーソルを解放する。

Wikipedia から、その概要をイロイロとかいつまんだ程度では、よく分からないということがよく分かりました。

おわりに

こんなことで、advent calendar の1つを消耗して良いモノか分かりませんが、これから少しずつ理解を深めていこうと考えるに至りました。

今後ともヨロシク、もんご。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください