大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

MongoDB

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

 

背景

現在の開発で利用している「MongoDB」について調べてみようと思いました。

以前データベースについて調べた内容はこちらです。主にRDBMSについて記述しています。

 

MongoDB

MongoDBとは?

C++言語で記述されたているオープンソースのドキュメント指向データベースです。

クロスプラットフォームにも対応しています。

RDBMSではなく、NoSQLと呼ばれるデータベースに分類されます。

開発とサポートはMongoDB Inc.によって行われています。

 

Mongoは、英語で「ばかでかい」を意味する「humongous 」に由来している。

 

2018年2月時点では、人気のデータベースランキングで5位となっている。 

 

「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合をコレクションとして管理する。

ちなみに、形式は厳密に言うとJSOMのバイナリ版と言える「BSON」が使われている。

 

特徴

・コレクションは固定的なスキーマを持たない ⇨保存するのはどんな構造のJSONでもかまいません

・ドキュメントに複雑な階層構造を持たせることができる

・フィールドを指定したクエリやインデクス生成を簡単な指定で行える

・整合的なUTF-8エンコーディング。非UTF-8データも、特殊なバイナリデータ型によって保存・取得できる

・豊富なデータ型

・クエリ結果にカーソルが使える

⇨アプリの構造やデータ型に合った自然な形でデータを格納できる。データの処理を高速に行うことができる。

 

ビックデータ系ソリューションでよく活用される。

 

NoSQLとは?

RDBMS以外のデータベース管理システムを指す大まかな分類語。

 

特徴

・固定されたスキーマに縛られない

・関係モデルの結合操作を利用しない

・水平スケーラピリティが確保しやすいことが多い

トランザクションを利用できないものが多い

⇨データの格納および取得が高度に最適化されているものが多く、処理が速い

 

用語

クロスプラットフォーム

異なるプラットフォーム上で、同じ仕様のものを動かすことができるプログラム(ソフトウェア)のこと。

例えば、MacWindowsのように全く仕様が異なるハードウェアでも、同じように動かすことができるプログラム(ソフトウェア)。

 

BSON:

データ交換フォーマットで、バイナリ型JSONの略語。

主にMongoDBのデータストレージ及びネットワーク転送フォーマットとして利用されている。 

オブジェクトやドキュメントを示すバイナリ構造になっている。

構造は、フィールド名・型・値の要素順である。 

JSONに比べて、ストレージ容量およびスキャン速度に効率的な設計である。

また、型は名目上JSONの上位集合である。

 

スキーマ

データベースの構造であり、属性や関係に関する定義を記述しているもの。

 

水平スケーラピリティ(スケールアウト):

接続されたサーバの台数を増やして処理能力を向上させること。

 

スケーラビリティ:

システムの規模(スケール)の変化に柔軟に対応できる度合いのこと。

スケーラビリティは、一般的には、想定されるシステム規模の増大に対して対応できるように設計されたシステムを指し、「スケーラビリティが高い」などと表現したりする。

 

トランザクション

コンピュータ内で実行される、分けることができない一連の情報処理の一単位を意味する。

 

カーソル:

一連のデータに順番にアクセスする際の検索条件および「現在位置」を保持するデータ要素。

 

今後に向けて

NoSQLとRDMSDBを比較しようと思います。

 

参考

素晴らしい記事に感謝いたします。

MongoDB - Wikipedia

NoSQL - Wikipedia

クロスプラットフォーム - Wikipedia

BSON - Wikipedia

Javascript|JSONでの、レコードの表現方法(配列、連想配列)→{}と[]の違い - ウィリアムのいたずらの開発?日記

スキーマ (データベース) - Wikipedia

スケールアウトとスケールアップ:サーバ処理能力向上の2つのアプローチ - ZDNet Japan

トランザクション - Wikipedia

カーソル (データベース) - Wikipedia