本記事では、ドキュメント指向型のNoSQLデータベースの代表、MongoDBのクラウドサービス「MongoDB Atras」を個人で無料利用するための手順を紹介します。ついでに、NoSQLについても少しだけ触れようと思います。

NoSQL とは
Not Only SQL の略で、従来のRDBMS (MySQL, PostgreSQL など) では管理しにくい多種多様な大容量のデータを管理するために生み出された技術のことです。ビッグデータ時代の今だからこそ、徐々に注目され始めた技術ですね。
RDBMSは、基本的にはエクセルのシートのような列と行からなる表形式のテーブルでデータを管理します。 一方、NoSQLは大きく分類すると以下の4種類の形式でデータを管理します。
- Key-Value型
文言通り、KeyとValueがMapのような形式で対応するデータモデルです。 代表的なKey-Value型のNoSQLとして、オープンソースのインメモリ型データベースである、Redis が挙げられます。Springで構築したWebシステムのキャッシュサーバとしてお世話になっている方も多いのではないでしょうか。
- カラム指向型
先述の Key-Value型に、カラムの概念を足したデータモデルです。特定のKeyに対して、複数のカラムが紐づいて管理されます。カラム数は動的に変更でき、他のKeyに存在しないカラムを保持することができます。 代表的なカラム指向型のNoSQLとして、Apache Cassandra が挙げられます。
- ドキュメント指向型
Json, XML といった、ドキュメントの形式でデータを管理するデータモデルです。 代表的なドキュメント指向型のNoSQLとして、本記事で話題にあげたMongoDBが挙げられます。世界のDBのシェアでも上位に食い込んでおり、今後もサービスの成長が期待できます。
- グラフ型
データ間のつながりを管理できるデータモデルです。ちょっと特殊な形式のためイメージしにくいのですが、データを「ノード」「エッジ」「プロパティ」という形式で管理します。SNSの友達同士のつながりを管理するイメージですね。 私はあまり触れたことはありませんが、Neo4jが有名みたいです。(気になるので今度触ってみよう)
MongoDB とは
前章にて紹介した「ドキュメント指向型」のNoSQLであり、MongoDB, Inc.がサービスを提供しています。
MongoDBは、Dwight Merriman、Eliot Horowitz、およびKevin Ryan(DoubleClickを支えるチーム)によって2007年に設立されました。インターネット広告会社のDoubleClick(現在はGoogleが所有)で、チームは多くのカスタムデータストアを開発して使用し、既存のデータベースの欠点を回避しました。このビジネスは毎秒400,000の広告を配信しましたが、スケーラビリティと俊敏性の両方に苦労することがよくありました。イライラしたチームは、DoubleClickが直面する課題に取り組むデータベースを作成するように促されました。 MongoDBは、最先端の汎用データベースプラットフォームであり、ソフトウェアとデータの能力を開発者と開発者が構築するアプリケーションに提供するように設計されています。ニューヨークに本社を置き、北米、ヨーロッパ、アジア太平洋にオフィスを構え、ビジネスを行う場所に近接しています。MongoDBには、100か国以上に18,400を超える顧客がいます。MongoDBデータベースプラットフォームは1億1千万回以上ダウンロードされ、100万以上のMongoDB University登録があります。
(引用:MongoDB公式ホームページ 会社概要 上記は機械翻訳した内容です。)
日本ではまだメジャーとは言えないですが既に世界的にはシェアを伸ばしており、RDBMSでは管理できないデータの管理サービスとして注目を集めています。MongoDBはローカルで構築して利用することもできますが、提供されるサービスの中にはクラウド上で利用できる Atras というものもあります。
どうしても個人のローカル環境だとマシンスペックに依存しますが、クラウドサービスとなれば話は別です。 一定の制約はあるものの、個人利用としては十分な内容が無料で利用できます。
1. MongoDB Atras の利用登録
こちら から登録します。 メールアドレスもしくはGoogleアカウントがあれば、すぐに登録できます。

サインアップが完了したら、以下のような画面が表示されます。

2. Organization の作成
[Create Organizations] ボタンから、最初の組織を作成します。
任意の組織名を入力し、[Select Cloud Service] では [MongoDB Atras] を選択します。

[Next] をクリックし、 [Add members] は一旦スキップして問題ありません。 複数人で作業する場合に、作成した組織にメールアドレスで他のユーザを招待できます。
3. Projectの作成
[New Project] から、作業する単位であるプロジェクトを作成します。

こちらも組織同様、任意のプロジェクト名を設定し、メンバーを任意で追加します。
4. Clusterの作成
ここから、ようやくMongoDBのクラスターの構築作業です。もちろん実務においては冗長構成にするなど考慮事項は多いですが、個人利用であれば無料枠での利用なのであまり選択の余地はありません。(有償利用はもちろんご自由にお願いします)
[Builder a Cluster] ボタンから、クラスターの選択画面に遷移します。

今回は無料枠の利用のため、Shared Clusters を選択します。

[Cloud Provider & Region] では、AWS, GCP, Azure からクラウド環境とリージョンが選択できます。 特にこだわりがなければ、初期選択のAWSのままで問題ありません。
他にもいろいろオプションがありますが、画面下部の「Free」という表示がある限り無料利用の範囲です。 Cluster Name の変更などはこのタイミングで行っておきましょう。
5. DB Userの作成
先ほど作成したDBにアクセスするためのユーザを作成します。
画面中央の [Create a DB User] をクリックします。

最初のAdmin権限のユーザを画面に沿って作成します。
※無料枠では、パスワード認証しか選択できません。セキュアなパスワードの自動生成機能を利用しましょう。

6. IP Whitelist の設定
作成したクラスタにアクセスできるIPを制限します。
画面中央の [Add IP Address] をクリックします。

本来であればセキュリティを高めるために固定IPを設定すべきですが、今回は特に制限を設けません。 [ALLOW ACCESS FROM ANYWHERE] をクリックします。
※任意のIPを設定する場合は、次の画像の [Whitelist Entry] に対象のIPを設定します。

7. Clusterへの接続
作成したクラスターの [Connect] をクリックします。

自分の好きな接続方法で、クラスターに対しての接続を設定します。
※この時、先ほど作成したDB Userを利用します。

今回は、MongoDBの提供する Connect using MongoDB Compass というGUIツールを利用してみます。
ご自身のOSに応じたモジュールをインストールしてください。
接続情報を入力し、[Connect] をクリックします。
※<password> の部分はご自身のユーザのパスワードに置き換えてください。

接続に成功すると、以下のようにクラスター情報が表示されます。

おわりに
今回はMongoDBのクラウド環境のセットアップまでの手順を紹介しました。 完全に個人の事情ですが、会社でビッグデータ関連の情報を集める必要が出てきたので、実際の利用やパフォーマンスについても徐々に掘り下げていこうと思います。
では、最後までお読みいただきありがとうございました。