マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】MongoDB


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「MongoDB」とは
「MongoDB」基本情報
■概要
MongoDB(モンゴデービー)とは、スキーマレスのドキュメント指向データベースです。「NoSQLの高パフォーマンス」と「RDBMSの有用性」がバランスよく組み込まれているデータベースです。
■基本説明
MongoDBは、NoSQLドキュメント指向データベースです。「クエリ」と「インデックス」を使用でき、「柔軟性」「スケーラビリティ」「高可用性」「スケーラブル(水平スケールアウト)」「分散データベース」「大量データの高速処理」を実現します。
データをフレキシブルなJSONライクなドキュメントデータとして保存します。データをドキュメントとしてそのまま格納でき、データの一部更新も可能です。
■経緯
・2009年 初版リリース
■ユースケース
MongoDBは、次のようなケースに向いています。
・スキーマを事前定義できないケース
・高速処理が求められるケース
一方、次のようなケースには向いていません。
・トランザクション処理を多用するケース
・厳密なデータ整合性が求められるケース
・データ間リレーションが多いケース
■オフィシャルサイト情報
オフィシャルサイト
→MongoDB(Welcome to the MongoDB Community)
ライセンス情報
MongoDBのライセンスは「SSPL(Server Side Public License)v1.0+他」です。
詳細について、こちらを参照ください。
→MongoDB →MongoDB Licensing
ダウンロード
MongoDBは、Linux/Windows/macOSをサポートし、クラウド環境にも対応しています。
→MongoDB →MongoDB Download Center
導入事例
→MongoDB →Flexible enough to fit any Industry(Successful innovators across the globe)
■同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Apache Cassandra」「Apache Hbase」「Neo4j」など。
「MongoDB」のドキュメントデータモデル
■NoSQLデータベースとは
NoSQLデータベースは、リレーショナルデータベースと比較すると、一般的に「高いスケーラビリティ」と「優れたパフォーマンス」を提供します。
高価なモノリシックアーキテクチャではなく、地理的に分散したスケールアウトアーキテクチャに対応します。
動的スキーマ
NoSQLデータベースは、あらかじめ定義されたスキーマなしでデータを格納できるように構築されています。
サービスを中断することなく、アプリケーションの大幅な変更をリアルタイムで簡単に行うことができ、「開発高速化」「コード統合の信頼性向上」「データベース管理コスト削減」などのメリットを得られます。
データモデル
NoSQLデータベースのデータモデルは、リレーショナルモデルでは対処できないいくつかの問題を解決できます。
・急速に変化する大量の「構造化データ」「半構造化データ」「非構造化データ」
・アジャイルスプリント
・頻繁なスキーマ反復とコードプッシュ など。
データガバナンスを強化
従来のリレーショナルデータベース環境において、エンジニアは「フィールド定義」「データ型設定」「許容値設定」など、アプリケーション側にデータ品質管理のためのコードを追加する必要がありました。
それに対して、NoSQLデータベースでは、データベース内に検証ルールを適用できるため、ユーザーは動的スキーマの俊敏性を維持しながら、データ全体のガバナンスを強化できます。
■MongoDBのデータ階層構造
MongoDBは「①データベース」「②コレクション」「③ドキュメント」の3階層構造になっています。
階層①データベース
MongoDBの最上位要素は、RDBと同じように「データベース」です。複数のデータベースを作成できます。
「①データベース」には複数の「②コレクション」が格納されます。
階層②コレクション
「②コレクション」は「RDBのテーブル」に該当し、複数のJSON形式構造体「③ドキュメント」を格納します。
RDBのテーブルのようにスキーマ定義はなく、どのような構造のJSON形式構造体でも格納できます。読み取り時にはJSON構造を把握する必要があるため、JSON形式構造体の定義管理は必要です。
このため、データベースに登録するデータの構成が変化しても、柔軟な対応が可能です。
階層③ドキュメント
「③ドキュメント」は「RDBのレコード」に該当し、JSON(JavaScript Object Notation)オブジェクトに似ている構造体です。
内部的には、JSONバイナリ形式「BSON」で格納されます。BSONエンコーディングは、一般的なJSON表現を拡張したもので、1つ以上のフィールドがあり、「フィールド」と「値」のペアで構成されるデータ構造です。
値には以下のような種類があります。
・基本データ型(int、long、date、浮動小数点、decimal128)
・バイナリデータ
・サブドキュメント(他のドキュメント)
・配列 など
■MongoDBのドキュメントデータモデル
MongoDBは、データを柔軟なJSONライクなドキュメントに保存するため、あらゆる構造のデータを永続化に格納できます。
RDBでは「テーブルに格納されているすべてのレコードが同じカラムを有する」に対して、MongoDBでは「階層③のドキュメントごとに自由なフィールドを定義できる」点が特徴です。
データはスキーマレスなドキュメントとして格納されます。ORM(オブジェクトリレーショナルマッピング)を行うことなく直接格納できます。任意のタイミングでJSONフィールド単位での追加/更新を行えるため、フレキシブルな運用を行えます。
開発者は「アプリケーション内データ」と「ドキュメント」の間のマッピングを簡単かつ迅速にモデル化でき、「スキーマガバナンスコントロール」「データアクセス」「複雑な集計」「豊富なインデックス機能」を活用して、簡単にデータを操作できます。扱うデータ特性によっては、RDBMSよりも容易かつ迅速に開発を行えます。
ドキュメントに関するその他の利点
・多くのプログラミング言語のネイティブデータ型に対応
・動的スキーマであるため多態性をサポートできる
・結合の必要性を低減できる
・複雑な要件に対応しやすい
・ダウンタイムなしでスキーマの動的変更が可能
・複雑な階層構造を持たせることができる
・データの追加/更新/削除が可能
・高速クエリ
・フィールドを指定したクエリやインデックス生成が容易
・JSONライクであるため開発者の学習コストが低い
「MongoDB」の主な特徴
「MongoDB」の主な特徴
■ハイパフォーマンス
埋め込みデータモデル
MongoDBは、埋め込みデータモデルのサポートにより、データベースシステムのI/Oアクティビティを減少させます。
インデックス
インデックスは、埋め込みドキュメントや配列からのキーを含めることができ、より高速なクエリをサポートします。
ネイティブ圧縮サポート
一部のストレージエンジンは、ネイティブ圧縮をサポートし、物理ストレージのフットプリントを80%削減します。
ストレージ容量削減に加えて、ディスクから読み取るビット数が減るため、ストレージI/Oスケーラビリティが大幅に向上します。
効率的なネットワーク転送
MongoDBは、分散データベースとして、「クエリルーティング」や「ノード間レプリケーション」時の効率的なネットワーク転送が可能です。
「クライアントからデータベースへのワイヤプロトコルの圧縮」「クラスタ内トラフィックの圧縮」などの機能により、ネットワークトラフィックを80%程度まで圧縮できます。
パブリッククラウド環境などに接続する場合の接続コストを削減できます。
■分散システム設計
MongoDBは分散データベースであるため、「ガバナンス」「サービスクラス」「低レイテンシアクセス」などの要件に応じて、必要な場所にデータを配置できます。
■スケーラビリティ
MongoDBは、コア機能の一部として、「ネイティブシャーディングによる水平スケーラビリティ」を提供しています。
任意の数のサーバにデータをネイティブかつ自動的に分散します。シャーディングは自動的に行われるため、クラスタリングソフトウェアを展開する必要はありません。
データとクエリの負荷はサーバ間で自動的にバランスされ、サーバーがダウンすると、アプリケーションを中断することなく迅速かつ透過的に置き換えることができます。
取り扱うデータ量の増加によってサーバの能力が不足した場合、安価なIAサーバを追加して処理能力を向上させるスケールアウトを容易に行なえます。
■高可用性
MongoDBは、組み込みレプリケーション機能「レプリカセット」を提供しています。
レプリカセットとフェールオーバーにより、冗長性と可用性を高め、データセットを維持します。
レプリケーションおよび自己修復回復により、世界的に回復力のあるアプリケーションを展開できます。
■各種言語用ネイティブドライバサポート
MongoDBは、各種プログラミング言語やフレームワーク用のネイティブドライバを提供し、開発生産性をサポートしています。
サポートされている主なドライバ
・C
・C++
・C#
・Java
・Node.js
・Perl
・PHP
・Python
・Ruby
・Scala
・Go言語
・Erlang など
→MongoDB →MongoDB Drivers and ODM
「MongoDB」の主な機能
「MongoDB」の主な機能
■アドホッククエリ
MongoDBは「フィールド」「範囲クエリ」「正規表現」での検索をサポートしています。
クエリはドキュメントの特定のフィールドを返すことができ、ユーザ定義のJavaScript関数も含むことができます。クエリは与えられたサイズの結果のランダムサンプルを返すように設定することもできます。
■分析機能
MongoDBは、データにアクセスして分析する機能として「アドホッククエリ」「インデックス作成」「リアルタイム集計」などの機能を提供しています。
参考元サイト
- MongoDB
- Headwaters Tech Note →【MongoDB】初めてでも分かる!MongoDB入門(前編)
- TRACPATH →世界第4位!最有力NoSQLデータベースMongoDBはRDBとどう違うのか?特徴と使い分け
- Wikipedia →MongoDB
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク3位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク4位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク5位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク6位🏆
【AIツール実験室】画像生成AIツール「 Emi 」(前編) - 🏆ランク7位🏆
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選 - 🏆ランク8位🏆
【無料で使える】「 バックアップ 」ツールまとめ - 🏆ランク9位🏆
【ChatGPT使ってみる実験室】 WordPress関数を作って記事リストを出力 - 🏆ランク10位🏆
【無料で使える】「 グループウェア 」まとめ
おすすめの記事


ChatGPT探訪
2023.11.10
【ChatGPT探訪】GPT-4V「 画像解析機能 」🔍
ChatGPT4の「 画像解析機能 」について、 画像読み込み機能チェックを実施してみました🔍 「請求書不備チェック」は便利なのですが、 クローズドGPTを使いたくなります🤔 さまざまな用途に活用できる可能性を感じました🌟 いろいろ分析してくれるので、 試してみてください👍