datomic を試してみる(2) - 導入
何はともあれまずはインストール。
今後ちょくちょくリンクを出すことになるが、datomic 公式は以下。
Datomic - Home
どっかに置く
本体は jar で固められた Java のライブラリなのだが、初期設定や簡単な動作確認に便利なコマンドラインツールも含まれているのでダウンロードした zip 展開フォルダ毎どこか適当な場所に置く。
Storage Service を使えるようにする
元ドキュメントだと以下に当たる。
Datomic Development Resources
datomic では Storage と言うある意味汎化されたデータソースを通じてやりとりすると言う仕組み。
SQL DB/DynamoDB/Riak/Couchbase/Infinispan memory cluster/ローカルファイル/オンメモリをバックエンドのDBとする事が可能。ただし Free 版で可能なのはローカルファイルとオンメモリのみ。ちなみに RDBMS は JDBC ドライバさえ提供されていればどれでも良いとの事。
以降では上記公式ドキュメントと対応する見出しをなるべく入れるようにする。
評価キー送付依頼(Request an evaluation key)(任意)
RDBMS などを storage として試したい場合、評価キーをもらえれば 30 日間は無償で試せる。依頼先 URL は以下でメールアドレスさえ持っていればすぐもらえる。
上記リンクで reCAPTCHA で表示されるパスワードとメールアドレス入れたら確認メールが来るのでそこにある確認リンクに飛べば確認完了し、評価キーが記載されたメールが来る。
ローカルファイル Storage で試す(Provisioning dev mode)
せっかく評価キーを発行してもらってるので今回は dev mode と言うローカルファイルをストレージに見立てたものを試す。
評価キーインストール(Install your licence key)
公式だとライセンスキーを transactor の設定ファイル項目 license-key に入れるだけというまあその通りではあるんだが、
~/config/sample/dev-transactor-template.properties と言うテンプレートがあるので、これを
~/config/sample/dev-transactor.properties にリネームコピーしたものに以下の様な感じで license-key を入れて使う事にする。
license-key=(もらった評価キー)
もらったメールにある評価キーは 6 行に渡ってるが、改行はバックスラッシュでエスケープされてるのでそのままコピペすれば良い。
transactor 起動
~ 以下でさっき保存した ~\config\dev-transactor.properties を指定して transactor 起動する。
C:\datomic-pro-0.8.4218>bin\transactor config\dev-transactor.properties 'data-dir' property not set, defaulting to 'data' in current directory 'log-dir' property not set, defaulting to 'log' in current directory ************** This system is running in evaluation mode. For a production license, go to http://datomic.com. **************** Starting datomic:dev://localhost:4334/<DB-NAME>, storing data in: data ... System started datomic:dev://localhost:4334/<DB-NAME>, storing data in: data
Starting datomic~ となっていれば良いらしい。
transactor 接続確認(Connecting to the transactor)
beanshell と言う何やら Java をスクリプトっぽく扱うツールも含まれてるのでコマンドプロンプトをも一個立ち上げて繋がるか試す。
C:\datomic-pro-0.8.4218>bin\shell Datomic Java Shell Type Shell.help(); for help. datomic % uri = "datomic:dev://localhost:4334/test"; <datomic:dev://localhost:4334/test> datomic % Peer.createDatabase(uri); <true> datomic % Peer.connect(uri); <{:db-id "test-0c83c230-01f8-4c19-b559-e30a7d80956f", :unsent-updates-queue 0, : pending-txes 0, :next-t 1000, :basis-t 62, :index-rev 0, :index-root {:rev 0, :k ey "5268d7e7-9bec-4f7c-9731-a6c542ff88f0"}, :log-root {:rev 1, :key "5268d7e7-0c 60-46dd-b423-6693e2522019"}}> datomic %
transactor 起動時にも書いてあるんだが、接続情報 datomic:dev://localhost:4334/ の後に DB 名(ここでは test)で test と言う名の datomic DB が作成される。
んで、その作成された DB に対して Peer.connect()する事で実際に繋がるかどうかの確認となる。何かしらの内部的なマップデータらしきものが返されれば良いっぽい。
*2
SQL で言うテーブル・フィールド定義や SELECT に当たるものは次々回(?)で。