【初めてのNoSQL】 ApsaraDB for MongoDBを触って見た

こんにちは!SBクラウドSAのよしい(@yoshiichannel)です。 長かったゴールデンウィークが終わり、皆さんお仕事復帰されてお疲れかと思いますが、いかがお過ごしでしょうか。

今回は、先月新たにリリースされたApsaraDB for MongoDBを触ってみたので、簡単に使用方法と特徴をご紹介したいと思います。

はじめに MongoDBとは

MongoDBは、OracleやMySQLなどに続いて人気の、最有力なNoSQLのドキュメント指向型データベースです。RDBと比較して処理が速く、容易にスケールアウトができます。
また、データの読み書きの性能が高く、ソーシャルゲームなどで実際に使われたりしています。
そんなMongoDBがAlibabaCloudで使えるサービスが、ApsaraDB for MongoDBです。

ApsaraDB for MongoDBの特徴(インスタンスタイプについて)
購入するときに、従量課金とサブスクリプションの課金体系で、それぞれ2種類のインスタンスタイプを選ぶことが出来ます。
f:id:sbc_aokin:20190527082536p:plain

以下、2つのインスタンスタイプについて説明します。

①レプリカセット 可用性を高めるために、自動的にPrimaryノード、Secondaryノード、Hiddenノードの3つが作られます。ミラーリングのようなイメージです。 それぞれのノードはデータが同期されます。 Hiddenノードはユーザーから直接アクセスすることは出来ないので、ご注意ください。 f:id:sbc_aokin:20190527082847p:plain

②シャーディング データを分割し、複数に分散させて運用・管理できるインスタンスタイプです。①のレプリカセットを複数作成してデータの分散をするイメージです。自動的にMongosノードが作成され、書き込み/読み込みの操作をShardノード(データが保存されているノード)に振り分ける役割をしてくれます。 f:id:sbc_aokin:20190527082921p:plain

ApsaraDB for MongoDBの特徴(バックアップ、監視について)

コンソール上で以下の機能を簡単に設定することができます。

①曜日指定、時間指定でのバックアップ取得
※バックアップの保持期間は7日間です。この期間はデフォルトで決まっていて、変更はできません。 f:id:sbc_aokin:20190527082948p:plain
②取得したバックアップを元にインスタンスを作成(DBの選択が可能です) f:id:sbc_aokin:20190527083014p:plain
③ログの取得(実行クエリの確認が可能です) f:id:sbc_aokin:20190527083034p:plain
CloudMonitor(AlibabaCloudの監視サービス)と連携してアラートメールを送信 f:id:sbc_aokin:20190527083102p:plain

ECSからログインしてみる

ECSにMongoDBクライアントをインストールして、実際にApsaraDB for MongoDBにアクセスしてみます。 MongoDBはバージョン3.0以上のものをインストールしてください。

まずはじめに、IPアドレスのホワイトリストを設定します。 設定は以下から実施できます。 f:id:sbc_aokin:20190527083134p:plain

次に、デフォルトではイントラネット接続アドレスしか発行されないので、 インターネット接続が必要な場合は別途発行する必要があります。 発行はコンソール上から簡単に行うことが出来ます。 f:id:sbc_aokin:20190527083157p:plain

mongo --host dds-xxxx.mongodb.rds.aliyuncs.com:3717 -u root -p 123456 --authenticationDatabase admin

でログインすることが出来ます。 (アドレス、パスワードはご自身のものに変更してください)

コマンドを実行し、以下のような表示が出たらログイン成功です!

f:id:sbc_aokin:20190527083226p:plain

データの挿入・検索

ログインしたのでデータを挿入したり検索したりしてみます!が、その前にドキュメント指向型であるMongoDBのデータ構造について簡単に触れたいと思います。

MongoDBはデータベース、コレクション、ドキュメントの3つの要素で構成されています。 SQLで言うとコレクション=テーブル、ドキュメント=レコードに該当します。

f:id:sbc_aokin:20190527083300p:plain

では、DBを検索してみます。「show dbs」で一覧を表示できます。ちなみに;は必要ありません。 f:id:sbc_aokin:20190527083322p:plain
次に、「dbtest」DBの中身を見てみます。「db.”DB名”.find()」でデータを全件取得することができます。 f:id:sbc_aokin:20190527083400p:plain
まだ中身は空っぽなので、何も表示されませんでした。 では、ドキュメントを挿入してみましょう!「db.”DB名”.insert({XXX:’OOO’})」で挿入が出来ます。 f:id:sbc_aokin:20190527083419p:plain
再度全件取得してみると f:id:sbc_aokin:20190527083445p:plain
挿入した内容が表示されました!


まとめ

このような形で、AlibabaCloudでは簡単にバックアップ機能、監視機能を備えたMongoDBインスタンスを作成することができます。 Webサイトの操作ログなど、単純な構造のデータベースに向いているので、これを機会にお試し頂いてはいかがでしょうか!