1. 気になったこと
以前の投稿で軽く、OrientDBに接続してみました。
GitHubやTwitter, Facebookなどから人物相関図を作りたいな、と思った時にはなかなかに便利そうなOrientDBですが、手動でぽちぽちとデータは登録したくはないですね。
せっかくなので、Elixirでなにかないかなー、とGitHubを検索すると下記がありました。
便利な世の中です。。
2. 使ってみる
2-1. Mixプロジェクトに依存を追加する
defp deps do
[{:marco_polo, "~> 0.1"}]
end
からの、mix.deps getをします。
2-2. iexで試してみた
iex -S mix
して、使ってみます。
iex(1)> {:ok, conn} = MarcoPolo.start_link(user: "admin", password: "admin", connection: {:db, "GratefulDeadConcerts", :graph})
{:ok, #PID<0.383.0>}
これで、接続はできたようです。
次にクエリを投げてみます。
iex(4)> query = "select * from employee"
"select * from employee"
iex(5)> MarcoPolo.command(conn, query)
{:ok,
%{linked_records: #HashDict<[]>,
response: [%MarcoPolo.Document{class: "Employee",
fields: %{"empno" => 101, "firstName" => "John", "lastName" => "Jacob",
"out_WorksAt" => {:link_bag, [#MarcoPolo.RID<#19:0>]}, "sal" => 5000},
rid: #MarcoPolo.RID<#17:0>, version: 2},
%MarcoPolo.Document{class: "Employee",
fields: %{"empno" => 102, "firstName" => "Adam", "lastName" => "Bill",
"out_WorksAt" => {:link_bag, [#MarcoPolo.RID<#19:1>]}, "sal" => 7000},
rid: #MarcoPolo.RID<#17:1>, version: 2},
%MarcoPolo.Document{class: "Employee",
fields: %{"empno" => 103, "firstName" => "David", "lastName" => "Manon",
"out_WorksAt" => {:link_bag, [#MarcoPolo.RID<#19:2>]}, "sal" => 4000},
rid: #MarcoPolo.RID<#17:2>, version: 2}]}}
linked_records
なるものが取得されます。
この中で、リンクの属性があるものについては、link_bag
というものが付与されて、Vectorが取得できるみたいです。
他にもデータ登録系のクエリもごくごく普通に登録できそうなので、なかなか便利だな^^ という印象です。
3. 感想
- elixir-graphqlも使ってみたいです。
- graphqlをphoenixで使うプロジェクトで試してみようかな
- 集めたデータをいったん登録してみようと思います^^
Neo4Jも触ってみたい。。
本日は以上となります。