サーバー、データベース、インフラに関するトピックス
■第16話:MongoDB入門 -データベースの新時代
(最終更新日:2023.11.03)
(絵が小さい場合はスマホを横に)
「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のデータ構造(Document<Collection<Database)
3.MongoDBのインストール
MongoDBは、Windows、MacOS、Linuxで動作する。
動作環境としては、最低2GBのRAMを必要とする。
最近であれば、ラズベリーパイのようなシングルボードコンピューターでも動くだろう。
ストレージとしては、SSDが推奨される。ドキュメント指向のデータベースはデータへのランダムアクセスが頻繁に行われるからだ。
これを用いることで、I/Oのパフォーマンス向上が更に期待できる。
LinuxにおけるMongoDBの一般的なインストール手順を紹介する。
下記の通りで、インストールから起動、データベースの接続、表示の確認までが行える。
環境やバージョンによって手順が異なるため、基本的には公式のドキュメントを参照してほしい。
MongoDBのインストール
ちなみに、Windowsであれば、msiファイルが用意されているので、もっと簡単にインストールできる。 無料で使う場合は、Community Editionを選択しよう。 Windows版はインストールすると、下記に示すGUIのアプリケーションが使える。 画面下部では、先ほど示したコマンドで命令することもできる。 簡単に操作できるので、まずはWindowsで始めるのも手だろう。
Windows版MongoDB
4.まとめ
今回、MongoDBの特徴とインストール方法を紹介した。
リレーショナルデータベースとは異なり、様々な構造のデータを同じコレクション(テーブルのようなもの)にまとめることができる。
そして、保存したデータに対して高速にアクセスできるのも特徴だ。
一方、ACID特性を犠牲にし、テーブル同士の連結を行うということは弱い。
一時的にデータを貯めて渡すというような目的には強いので、目的に合わせてリレーショナルデータベースと使い分けることが大事だ。
まずは使ってみて、その特性を感じてみよう。
▼参考図書、サイト
MongoDB
MongoDB公式サイト