この記事はMarkLogic Advent Calendar 2017の2日目です。
#はじめに
いよいよ12月となりまして、JucoMLが主催するMarkLogic Advent Calendar 2017に参加することにしました。クリスマスまでよろしくお願いします(既に12月1日分を投稿済みですが・・・)。
MarkLogicといえばスキーマレスのXML/JSON DBですが、魅力的なのはそれだけではなく、多くの機能を搭載しています。MarkLogicの魅力をお伝えしたいと思います。
#なにをやろう
で、テーマをどうするか悩みましたが、ちょうど年末年始に遊ぼうと思っていたRaspberry Pi3や各種センサー類が手元にありますので、これとMarkLogicを連携して何か面白いことをやってみようと思います。
取りあえずは以下のようなことを徐々に投稿していきます。
- MarkLogic9のインストール
- node.jsとの連携
- MQTTでMarkLogicにアクセスしてみる
- RaspberryPi3のセンサー情報をMQTTで連携してみる
#今回やること
まずはMarkLogic環境を構築するところから始めます。そして今回の一連の記事で使用するデータベースを構築するところまで実施します。
#環境
以下の環境を使用します。
環境 | バージョン等 |
---|---|
CentOS7 | 7.4.1708 |
MarkLogic9 | 9.0-3 |
#注意事項
MarkLogicは商用DBです。商用利用する際にはライセンスの購入が必要になります。
開発目的や今回のような実験目的であれば、無料の開発者ライセンスが使用可能です。
MarkLogicの開発者ライセンスの詳細は以下をご確認下さい。
http://developer.marklogic.com/free-developer
#事前準備
MarkLogicのインストールや設定・管理を行うためには、WebブラウザでMarkLogicに接続する必要があり、ポート番号8001番や8000番を使用します。
CentOS7の場合、firewalldの設定でこれらのポートへのアクセスを許可するか、firewalldを無効化しておいて下さい。
#まずはMarkLogic9のインストール
CentOS7にMarkLogic9をインストールします。MarkLogic9はこの辺りからRPMを入手出来ます。
以下でインストールを実行します。
# yum install MarkLogic-9.0-3.1.x86_64.rpm -y
インストールが完了したら起動します。
# systemctl start MarkLogic.service
MarkLogicのセットアップとデータベース作成
初期設定
インストールと起動が完了したら、MarkLogicの初期設定を行います。
初期設定については、JucoMLのこの記事が参考になります。こちら記事はMarkLogic8ですが、MarkLogic9も同様の手順で設定出来ます。
データベースの作成
初期設定の完了後、今回使用するデータベースを作成します。
Webブラウザで8001番にアクセスし、管理画面を表示します。
データベースを作成するには、管理画面の左ペインから「Databases」をクリックします。次に右ペインの「Create」タブをクリックします。
この画面で必要事項を入力するとデータベースが作成されます。
今回は以下のように設定しました。それ以外は初期値にしておきます。
項目名 | 設定値 |
---|---|
database name | IoTDatabase |
language | ja |
入力を終えたら、画面の「ok」ボタンを押します。
すると、「This database has no forests, select Database->Forests to attach a forest.」と警告されます。
MarkLogicのデータベース情報は「フォレスト」と呼ばれるファイル群に保存されています。Oracleで例えるなら「データファイル」のようなものでしょうか。
データベースを作成しようとしても、このフォレストが存在しないため警告されました。
フォレストの作成
続いてフォレストを作成します。警告文中の「Database->Forests」リンクを押下すると、フォレストの作成を行えます。
「Create a Forest」を押下します。
上記画面で必要事項を入力して「ok」を押下するとフォレストが作成されます。
「forest name」に「IoTDatabaseForest01」と入力し、それ以外は初期値としました。
フォレストを作成したら、先ほど作成したデータベースに紐付けます。
画面の右ペインの「Summary」タブをクリックすると、現在存在するフォレストの一覧が表示されます。
この中から先ほど作成したフォレスト「IoTDatabaseForest01」を探し、「Databases」列のドロップダウンから紐付けるデータベースを選択します。そして「ok」ボタンを押下するとデータベースにフォレストが紐付き、データベースを使用できるようになります。
#データを登録してみる
作成したデータベースを使用出来るか確認してみます。
今回はQueryConsoleを使用します。Webブラウザ上でXQueryやJavascriptを実行できます。
Webブラウザを起動し、当該サーバの8000番ポートにアクセスしてログインします。
画面右上のドロップダウン「Database」で「IoTDatabase」を選択します。
その右隣の「Query Type:」で「XQuery」を選択します。
そして、以下のクエリを実行してXMLファイルを作成してみます。
クエリをテキストエリアに入力し、「Run」を押下すると実行されます。
ちなみに、「ALT+Enter」でも実行可能です。
xdmp:document-insert("/helloworld.xml", <message>Hello, World</message>)
これでドキュメントが作成されたはずです。確認してみます。
fn:doc("/helloworld.xml")
登録したドキュメントの内容が表示されれば成功です。
#おしまい
MarkLogicはインストールからDB構築まで非常に簡単に実施できる商用DBです。
初期設定のままでも十分使用可能な状態となっています。
#次回予告
次はnode.jsを導入し、MarkLogicと接続してみようと思います。