MongoDBとは
MongoDBは、ドキュメント指向データベースとして知られるNoSQLデータベースの一つです。RDBMS(リレーショナルデータベース管理システム)とは異なり、テーブルとレコードではなく、形式に似た「ドキュメント」と呼ばれる構造化されたデータを扱います。これらのドキュメントの集合は「コレクション」として管理され、スキーマ定義が不要なため、柔軟なデータ管理が可能です。データの格納形式には
BSON(
バイナリ)が用いられます。
特徴
柔軟なデータ構造: ドキュメントは複雑な階層構造を持つことができ、フィールドの追加や変更が容易です。スキーマレスなため、データ構造の変化に柔軟に対応できます。
高速な処理: データの追加、更新、削除、クエリが高速に行えます。特に、書き込み処理において高いパフォーマンスを発揮します。これは、2015年のバージョン3.0以降に導入されたWiredTigerストレージエンジンによる、ドキュメント単位でのロック機能に起因します。
豊富なデータ型: 日付、正規表現、バイナリデータなど、多様なデータ型をサポートしています。
強力なクエリ機能: 特定のフィールドを指定したクエリや、範囲検索、正規表現検索など、多様なクエリが可能です。
JavaScript関数を述語として使用することもできます。
インデックス機能: 単一キー、複合キー、ユニーク/非ユニーク、地理空間インデックスなど、様々なインデックスをサポートしており、検索速度を向上させることができます。
集約機能: SQLのGROUP BYに相当する集約処理や、MapReduceなどの機能も提供しています。
ファイルストレージ: GridFSと呼ばれるプロトコルにより、大きなファイルをデータベースに格納・取得できます。
サーバーサイドJavaScript:
JavaScriptをクエリや集約関数に使用できるだけでなく、データベースに直接送信して実行することも可能です。ストアドプロシージャのように
JavaScriptを扱うことも可能です。
Cappedコレクション: 固定サイズのコレクションを作成し、古いドキュメントから順に削除することで、ログデータなどの管理に適しています。tailable cursorを利用することで、リアルタイムでのデータ監視も可能です。
デプロイとサポート
MongoDBは、各種LinuxディストリビューションやmacOS、Windowsなど、様々なプラットフォームで利用できます。公式ウェブサイトからバイナリパッケージをダウンロードしてインストールできるほか、多くのLinuxパッケージ管理システムでも提供されています。ただし、32-bitシステムではメモリ制限により利用できるデータサイズに制限があります。
レプリケーションとシャーディング
レプリケーション: レプリカセットと呼ばれる仕組みにより、データの高可用性を実現します。データの複数のコピーを保持し、プライマリレプリカが故障した際には、自動的にセカンダリレプリカがプライマリに昇格します。
シャーディング: 水平スケーリングを可能にするシャーディング機能を提供します。データはshardキーに基づいて分散され、大量のデータを効率的に管理できます。mongosと呼ばれるルーティングプロセスを介して、アプリケーションは複数のshardを意識せずにデータを操作できます。
管理と監視
公式ツール: mongoシェルは、データベースの閲覧、挿入、削除、更新、レプリケーション情報の取得、シャーディング設定、サーバー停止など、様々な操作を行える強力な管理ツールです。Webベースの管理インターフェースも利用可能です。
監視: munin、ganglia、scout、cactiなどの監視ツールに対応したプラグインが提供されています。
GUI: Fang of Mongo、Futon4Mongo、Mongo3、MongoHub、Opricot、Database Master、BI Studio、RockMongo、Robo 3TなどのGUIツールが存在し、データの可視化や管理を容易に行えます。
MongoDB Community Serverは、ソースアベイラブルなServer Side Public License (SSPL) の下で利用できます。以前はAGPL
ライセンスでしたが、クラウドサービスでの利用に関する制限を設けるためにSSPLに移行しました。
言語ドライバは
Apache Licenseで提供されています。過去のバージョンでは、設計上の問題でデータの永続性が保証されないという批判もありました。
幅広い採用実績
MTV Networks、craigslist、Disney Interactive Media Group、Wordnik、diaspora、Shutterfly、foursquare、bit.ly、The New York Times、SourceForge、Business Insider、Etsy、CERN LHC、Thumbtack、AppScale、
Uber、Ameba など、多くの企業や組織で採用されています。
その他の情報
MongoDBは、ドキュメント指向データベース、NoSQL、Apache CouchDB、MEAN (ソフトウェアバンドル)などの技術と関連しています。
これらの特徴から、MongoDBは特にWebアプリケーションやモバイルアプリケーション、IoT、ビッグデータ分析など、多様なデータを取り扱う分野で広く利用されています。