Web制作、Web開発の歩き方

サーバー、データベース、インフラに関するトピックス

■第16話:MongoDB入門 -データベースの新時代

(最終更新日:2023.11.03)

NoSQLのイメージ
この記事は6分で読めます!
(絵が小さい場合はスマホを横に)

「NoSQLを使おう!」

近年、データベース技術の進化は目覚ましいものがある。 伝統的なリレーショナルデータベースシステム(RDBMS)は長年にわたり、データの保存、検索、更新のデファクトスタンダードとして機能してきた。 しかし、現代のアプリケーションの要件や大量のデータを扱うニーズに応えるために、NoSQLデータベースが台頭してきた。 MongoDBはその中でも特に注目されるNoSQLの一つだ。今回から4回に分けて、このMongoDBについて学んでいく。


1.MongoDBの特徴

MongoDBはRDBMSと異なり、NoSQLを採用している。 まずは、RDBMSとNoSQLの違いを抑えよう。

■データモデルの違い
RDBMSは固定されたスキーマを持つテーブルベースのデータモデルを採用している。 一方、NoSQLは柔軟なスキーマを持つことが多く、ドキュメント、キー&バリュー、カラム、グラフなどのデータモデルを採用できる。 ただし、MongoDBは、基本的にはキー&バリュー型のJSONのような形式でデータを保存する。

■スケーラビリティの違い
RDBMSは垂直スケーリングが主で、ハードウェアを強化することでパフォーマンスを向上させる。 一方、NoSQLは水平スケーリングが得意で、データベースのクラスタを追加することで容易にスケーリングすることができる。 つまり、何台かのデータベースサーバーに分散させることで、読みこみや書きこみのパフォーマンスを向上できる。

■トランザクションの違い
RDBMSはACID特性(原子性、一貫性、独立性、永続性)を強く保持している。 一方、NoSQLの多くは一部のACID特性を犠牲にすることで、パフォーマンスやスケーラビリティを向上させている。 つまり、データの確実性を保証したいならRDBMS、スピーディにデータを扱いたいならNoSQLということである。

■クエリの違い
RDBMSはSQLを使用する。 一方、NoSQLデータベースは専用のクエリ言語やAPIを使用することが多い。


これらを踏まえてMongoDB自体の特徴を説明する。

■ドキュメント指向
MongoDBはJSON-likeなBSON形式のドキュメントを使用してデータを保存する。 これにより、柔軟なスキーマと複雑なデータ構造をサポートすることができる。

■水平スケーラビリティ
MongoDBはシャーディングをサポートしており、大量のデータを効率的に分散保存・処理することが可能である。

■高い可用性
レプリカセットを通じて、データの冗長性と高可用性を提供する。 障害が発生しても、自動的にフェイルオーバーが行われ、サービスの中断を最小限に抑える。

■リッチなクエリ
SQLに匹敵する強力なクエリ言語をサポートしており、様々なデータ操作や集約を行うことができる。

これらの特徴の中でも、MongoDBはJSON形式でのデータ表現は、開発者にとって直感的であるため、 アプリケーション開発が容易にしやすいNoSQLデータベースと言える。


水平スケーリング

複数台のサーバーによる水平スケーリング


2.MongoDBの基本

MongoDBはBSON形式のデータ表現を用いる。 BSONとはBinary JSONの略でJSONと似たキーと値のペアに基づくデータ表現形式だ。 バイナリ形式のためエンコードとデコードが高速に行え、BOOL値やtimestamp、バイナリデータなど、様々なデータタイプをサポートする。

MongoDBでは、リレーショナルデータベースの「テーブル」に相当するものが「コレクション」として呼ばれる。 コレクションはスキーマフリーであり、異なる構造を持つドキュメントを含むことができる。 このドキュメントは、BSON形式のデータの最小単位となる。 リレーショナルデータベースのレコード(行)に相当する。 ドキュメント自体はJSONと同様にキーと値のペアから構成されており、 深いネスト構造や配列など、複雑なデータ構造を持つことができる。

コレクションは複数のドキュメントを格納することができ、MongoDB内では複数のコレクションを持つことができる。 コレクション内のドキュメントは、異なる種類、構造のドキュメントを持つことができる。 この点で、同じ項目しか持てないリレーショナルデータベースとは異なる。 複数のコレクションをまとめたものが、データベースとなる。

MongoDBのデータ構造

MongoDBのデータ構造(Document<Collection<Database)

3.MongoDBのインストール

MongoDBは、Windows、MacOS、Linuxで動作する。 動作環境としては、最低2GBのRAMを必要とする。 最近であれば、ラズベリーパイのようなシングルボードコンピューターでも動くだろう。 ストレージとしては、SSDが推奨される。ドキュメント指向のデータベースはデータへのランダムアクセスが頻繁に行われるからだ。 これを用いることで、I/Oのパフォーマンス向上が更に期待できる。

LinuxにおけるMongoDBの一般的なインストール手順を紹介する。 下記の通りで、インストールから起動、データベースの接続、表示の確認までが行える。 環境やバージョンによって手順が異なるため、基本的には公式のドキュメントを参照してほしい。

MongoDBのインストール

MongoDBのインストール

ちなみに、Windowsであれば、msiファイルが用意されているので、もっと簡単にインストールできる。 無料で使う場合は、Community Editionを選択しよう。 Windows版はインストールすると、下記に示すGUIのアプリケーションが使える。 画面下部では、先ほど示したコマンドで命令することもできる。 簡単に操作できるので、まずはWindowsで始めるのも手だろう。

Windows版MongoDB

Windows版MongoDB


4.まとめ

今回、MongoDBの特徴とインストール方法を紹介した。 リレーショナルデータベースとは異なり、様々な構造のデータを同じコレクション(テーブルのようなもの)にまとめることができる。 そして、保存したデータに対して高速にアクセスできるのも特徴だ。

一方、ACID特性を犠牲にし、テーブル同士の連結を行うということは弱い。 一時的にデータを貯めて渡すというような目的には強いので、目的に合わせてリレーショナルデータベースと使い分けることが大事だ。 まずは使ってみて、その特性を感じてみよう。


▼参考図書、サイト

   MongoDB  MongoDB公式サイト