1. wan-liner

    Posted

    wan-liner
Changes in title
+Gremlin?なぜにこのネーミングか。。
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,69 @@
+#Do you know about Gremlin ?
+
+
+ウチにもいます。こんなのが。![Image-1.jpg](https://qiita-image-store.s3.amazonaws.com/0/89791/3094a797-7b2f-768d-3c74-9c88cef6a0f4.jpeg)
+
+
+Qiitaで話題とするのはApache TinkerPopにより開発されたグラフデータベース操作言語のグレムリンです。
+
+![gremlin-logo.png](https://qiita-image-store.s3.amazonaws.com/0/89791/8ac288f2-f762-3115-d432-6486d7a0aeb1.png)
+
+なんじゃ、こいつは。
+
+
+
+![apache-tinkerpop-logo.png](https://qiita-image-store.s3.amazonaws.com/0/89791/bae5bf4a-e020-90e9-1412-08fb8abfdb4c.png)
+
+こんなやつまで。
+
+##TinkerPop
+
+Apache財団さまの「グラフデータベースフレームワーク」プロジェクト。
+現在は3世代目となっているらしい。
+
+まずは、
+http://tinkerpop.apache.org/docs/current/tutorials/getting-started/
+こちらのGetting Startからどんなものか、みてみましょう。
+
+
+###グレムリンの友達の友達は?というクエリはこうなる。
+
+ g.V().has("name","gremlin").
+ out("knows").out("knows").values("name")
+
+g : Graph インスタンス
+V() : 頂点 (vertex)、ノードのこと。
+
+グラフデータベースでは、点と点のつながりを辿っていく。この経路のことをTravesalと呼ぶ。traverseとは横切る、とか走査するとかの意味がある。これまでのSQLであれば、カーソル、といったインスタンスがイテレータになっていたが、グラフデータベースではトラバーサルになると思えばよい。
+
+矢印の方向に注目して下の図を見てみよう。
+
+![modern-edge-1-to-3-1.png](https://qiita-image-store.s3.amazonaws.com/0/89791/ef892ebd-ee43-0a34-d4f1-6db72d23ee79.png)
+
+起点となる1はout,edge がつながり、in が対象の点。
+クエリの文法ではこの用語を押さえておくとよい。
+
+具体的にこんな感じ:
+
+ gremlin> graph = TinkerGraph.open()
+ ==>tinkergraph[vertices:0 edges:0]
+ gremlin> v1 = graph.addVertex(T.id, 1, T.label, "person", "name", "marko", "age", 29)
+ ==>v[1]
+ gremlin> v2 = graph.addVertex(T.id, 3, T.label, "software", "name", "lop", "lang", "java")
+ ==>v[3]
+ gremlin> v1.addEdge("created", v2, id, 9, "weight", 0.4)
+ ==>e[9][1-created->3]
+
+![modern-edge-1-to-3-1-gremlin.png](https://qiita-image-store.s3.amazonaws.com/0/89791/55b8cd39-bfc1-a47d-b77d-9d0d9316bcec.png)
+
+
+
+ThinkerPopは、上記のグレムリンを含む、いくつかのレイヤーからなるグラフデータベースフレームワーク。ある特定のデータベースやプロセッサにとらわれず、同じコードを使って、異なったグラフデータベース間で自分たちの環境に最適かどうかをテストしたり、並列化へのスケールアップもシームレスに行えます。ThinkPopAPIの下にあるproviderの切り替えで、別のグラフデータベースに入れ替えも可能です。
+
+![provider-integration.png](https://qiita-image-store.s3.amazonaws.com/0/89791/7282a0fe-022f-c83a-eda1-c4103b7d336c.png)
+
+
+
+Gremlin Serverは、RESTや WebSocketといったエンドポイントから、リモートのグレムリンスクリプトのリクエストを受けつけて、自身のグラフデータベースから応答を返すサーバーです。thinkpopのjavaドライバからサードパーティの他の言語でもWebSocketで通信することができます。(MySQLやpostgresのドライバー接続のように)
+
+では、次回は実際にサーバーを構築して見ます。