0
Enjoy GraphDB!     ~ Python with Bulbs and Rexster ~Fungoing LLC / Satoshi MiyauchiTwitter : @bibrost
宮内 聖 / Satoshi Miyauchi @bibrost          野良です          MongoDB、Python、Scalaとか          最近HotなのはやはりFluent          秋葉原に別荘を...
みなさんおつかれさまです               Page : 2
ここまでの話でGraphDBの理解は 深まったはず              Page : 3
しかし      Page : 4
アプリで使えないと意味がないよね            Page : 5
ということで         Page : 6
Enjoy GraphDB!                 Page : 7
GraphDBへアクセスする方法アプリから利用する方法はいくつかあります  1.ネイティブドライバで直接接続する  2.DB固有のHTTPインターフェイスを使う  3.TinkerPop/Gremlinを経由  4.Tinkerpop/Rexs...
1.ネイティブドライバで直接接続する・プロダクト毎、かなりAPIに差があるので、 心中の覚悟が必要・メジャーどころは基本Javaなので、 ちょっと使うにはコストが高すぎる・・・                         Page : 9
2.DB固有のHTTPインターフェイス・やはりプロダクト毎、APIに差があるので 心中の覚悟が必要・ものによってはサポートしていない動作も 多くどうもメインストリームではなさそう                        Page : 10
3.TinkerPop/Gremlinを経由 ・インターフェイスが共通化されているので  そこはとてもよい ・ただしJava(というかGroovy)なので  これはこれでヘビー。。。                           Page...
4.Tinkerpop/Rexster経由(HTTP) ・HTTPでかつ共通化されたインターフェイス  使い勝手だけなら最良(管理画面付き) ・ただしコアとの距離がかなり遠いので  おそらくパフォーマンス悪い   +バージョンの追従がどうなのか...
どれも微妙。         Page : 13
とはいえどれか選ぶ必要はある                 Page : 14
仮説 ディープに使い切るなら  →   心中する覚悟で(1)をScala/Groovy/Clojureから使う      お金があるならNeo4j、無いならOrientDBがよさそう GraphDBをそれなりに使いこなしたいなら  →   (3...
というわけで(4)            Page : 16
GraphDBの現状 ネイティブドライバ以外はほとんど情報がない  →   まぁ、仕方ないね ORMのような使い勝手を高めるライブラリはほとんどない  →   きっとまだそんな段階じゃないね 見渡す限り茨の道  →   困ったら大元のドキュメン...
でも一応ORMぽいのもあった                 Page : 18
なんだか楽しそう!   Page : 19
Bulbs Bulbs is an open-source Python persistence framework for graph databases and the first piece of a larger Web-develop...
James ThorntonIt’s like an ORM for graphs, but instead of SQL,you use the graph-traveral language Gremlin to query thedata...
from bulbs.model import Nodefrom bulbs.datatype import Property, Stringclass Idea(Node):      element_type = "idea"      t...
まずはこれを試そう            Page : 23
Enjoy!への道  1.JVM環境を入れておく(説明は割愛)  2.Rexsterのパッケージを落とす  3.Rexsterを起動する  4.Bulbsをインストールする  5.Enjoy!(幻想でした)                   ...
2.Rexsterのパッケージを落とすhttps://github.com/tinkerpop/rexster/downloadsbulbsは0.5用なので0.5を落とそうDL数は見なかったことにしよう                     ...
3.Rexsterを起動するrexster-start.(sh|bat)[INFO] WebServer - .:Welcome to Rexster:.[INFO] GraphConfigurationContainer - Graph em...
3.Rexsterを起動するhttp://localhost:8183/管理画面もあるよ                         Page : 27
4.Bulbsをインストールする    easy_install bulbs                         Page : 28
Enjoy!         Page : 29
Code snippet# Node classclass User(Node):      element_type = "user"      name = Property(String, nullable=False)# add Use...
GraphDBの力がわかる問題                  Page : 31
次のデータを取得するクエリを書いてください(言語等自由)ユーザ[u]のまだ友達になっていない友達の友達           制限時間:20秒                                Page : 32
Except patterng.v(u).out.aggregate(x).out.except(x)                                  Page : 33
g.v(u).out.aggregate(x).out.except(x)u                                      Page : 34
g.v(u).out.aggregate(x).out.except(x)u                                      Page : 35
g.v(u).out.aggregate(x).out.except(x)u              x                                      Page : 36
g.v(u).out.aggregate(x).out.except(x)u              x                                      Page : 37
g.v(u).out.aggregate(x).out.except(x)u              x                                      Page : 38
f        ff友達[ f ]と友達の友達[ ff ]の差集合(difference set)を求めるのがまさにExcept Pattern※積集合を求めるRetain Patternもある                        ...
More Patternshttps://github.com/tinkerpop/gremlin/wiki ・ Backtrack Pattern ・ Except/Retain Pattern ・ Flow Rank Pattern ・ P...
Demoコードの構成https://github.com/bibrost/python-graphdb-demo           Tornade                   Rexster             Bulbs    ...
最後に      Page : 42
新しいパラダイムに触れることはとてもエキサイティングだし、勉強になるまだGraphDB自体を使うところまでいっていないがインスパイアされてMongoDB用のGraphを作るなど実用的なメリットも既に受けている(こちらは既にProductionに...
そんなGraphDB、今日からEnjoyしませんか                 Page : 44
ドメインとWordPressをご用意しておきました      http://graphdb.jp/                            Page : 45
いつでもアカウント発行します。君もContributorにならなイカ?                       Page : 46
Enjoy GraphDB! ~ Python with Bulbs and Rexster ~                          ありがとうございました。                                    ...
Upcoming SlideShare
Loading in...5
×

Enjoy GraphDB! - graphdb jp #1(Japanese)

3,685

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,685
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Enjoy GraphDB! - graphdb jp #1(Japanese)"

  1. 1. Enjoy GraphDB! ~ Python with Bulbs and Rexster ~Fungoing LLC / Satoshi MiyauchiTwitter : @bibrost
  2. 2. 宮内 聖 / Satoshi Miyauchi @bibrost 野良です MongoDB、Python、Scalaとか 最近HotなのはやはりFluent 秋葉原に別荘を借りました 11月にカリフォルニア行ってきます Page : 1
  3. 3. みなさんおつかれさまです Page : 2
  4. 4. ここまでの話でGraphDBの理解は 深まったはず Page : 3
  5. 5. しかし Page : 4
  6. 6. アプリで使えないと意味がないよね Page : 5
  7. 7. ということで Page : 6
  8. 8. Enjoy GraphDB! Page : 7
  9. 9. GraphDBへアクセスする方法アプリから利用する方法はいくつかあります 1.ネイティブドライバで直接接続する 2.DB固有のHTTPインターフェイスを使う 3.TinkerPop/Gremlinを経由 4.Tinkerpop/Rexsterを経由(HTTP) Page : 8
  10. 10. 1.ネイティブドライバで直接接続する・プロダクト毎、かなりAPIに差があるので、 心中の覚悟が必要・メジャーどころは基本Javaなので、 ちょっと使うにはコストが高すぎる・・・ Page : 9
  11. 11. 2.DB固有のHTTPインターフェイス・やはりプロダクト毎、APIに差があるので 心中の覚悟が必要・ものによってはサポートしていない動作も 多くどうもメインストリームではなさそう Page : 10
  12. 12. 3.TinkerPop/Gremlinを経由 ・インターフェイスが共通化されているので そこはとてもよい ・ただしJava(というかGroovy)なので これはこれでヘビー。。。 Page : 11
  13. 13. 4.Tinkerpop/Rexster経由(HTTP) ・HTTPでかつ共通化されたインターフェイス 使い勝手だけなら最良(管理画面付き) ・ただしコアとの距離がかなり遠いので おそらくパフォーマンス悪い +バージョンの追従がどうなのか・・・ Page : 12
  14. 14. どれも微妙。 Page : 13
  15. 15. とはいえどれか選ぶ必要はある Page : 14
  16. 16. 仮説 ディープに使い切るなら → 心中する覚悟で(1)をScala/Groovy/Clojureから使う お金があるならNeo4j、無いならOrientDBがよさそう GraphDBをそれなりに使いこなしたいなら → (3)をScala/Groovy/Clojureから使う とりあえず体験してみたいなら → (4)を自分の慣れた言語から使う Page : 15
  17. 17. というわけで(4) Page : 16
  18. 18. GraphDBの現状 ネイティブドライバ以外はほとんど情報がない → まぁ、仕方ないね ORMのような使い勝手を高めるライブラリはほとんどない → きっとまだそんな段階じゃないね 見渡す限り茨の道 → 困ったら大元のドキュメントかソースを読むしかない それで解決するかも不明(そもそも解決してないかも) Page : 17
  19. 19. でも一応ORMぽいのもあった Page : 18
  20. 20. なんだか楽しそう! Page : 19
  21. 21. Bulbs Bulbs is an open-source Python persistence framework for graph databases and the first piece of a larger Web-development toolkit that will be released in the upcoming weeks. Page : 20
  22. 22. James ThorntonIt’s like an ORM for graphs, but instead of SQL,you use the graph-traveral language Gremlin to query thedatabase.グラフ用のORMみたいなもんさ。でも使うのはSQLじゃない。Bulbsはgraph-traversal-language Gremlinを使うんだ Page : 21
  23. 23. from bulbs.model import Nodefrom bulbs.datatype import Property, Stringclass Idea(Node): element_type = "idea" text = Property(String, nullable=False) stub = Property(String,"make_stub") def make_stub(self): return utils.create_stub(self.text) def after_created(self): Relationship.create(self,"created_by",current_user) なかなかコンパクトに書けそうなのでお試しにはよさそう Page : 22
  24. 24. まずはこれを試そう Page : 23
  25. 25. Enjoy!への道 1.JVM環境を入れておく(説明は割愛) 2.Rexsterのパッケージを落とす 3.Rexsterを起動する 4.Bulbsをインストールする 5.Enjoy!(幻想でした) Page : 24
  26. 26. 2.Rexsterのパッケージを落とすhttps://github.com/tinkerpop/rexster/downloadsbulbsは0.5用なので0.5を落とそうDL数は見なかったことにしよう Page : 25
  27. 27. 3.Rexsterを起動するrexster-start.(sh|bat)[INFO] WebServer - .:Welcome to Rexster:.[INFO] GraphConfigurationContainer - Graph emptygraph - tinkergraph[vertices:0 edges:0] loaded[INFO] RexsterApplicationGraph - Graph [tinkergraph] - configured with allowable namespace [tp:gremlin][INFO] GraphConfigurationContainer - Graph tinkergraph - tinkergraph[vertices:6 edges:6] loaded[INFO] RexsterApplicationGraph - Graph [tinkergraph-readonly] - configured with allowable namespace [tp:gremlin][INFO] GraphConfigurationContainer - Graph tinkergraph-readonly - (readonly)tinkergraph[vertices:6 edges:6] loaded[INFO] RexsterApplicationGraph - Graph [gratefulgraph] - configured with allowable namespace [tp:gremlin][INFO] GraphConfigurationContainer - Graph gratefulgraph - tinkergraph[vertices:809 edges:8049] loaded[INFO] GraphConfigurationContainer - Graph emptysailgraph - not enabled and not loaded.[INFO] GraphConfigurationContainer - Graph sailgraph - not enabled and not loaded.[INFO] GraphConfigurationContainer - Graph orientdbsample - not enabled and not loaded.[INFO] GraphConfigurationContainer - Graph neo4jsample - not enabled and not loaded.[INFO] GraphConfigurationContainer - Graph dexsample - not enabled and not loaded.[INFO] GraphConfigurationContainer - Graph remotetinkergraph - not enabled and not loaded.[INFO] WebServer - Web Server configured with com..sun..jersey..config..property..packages: com.tinkerpop.rexster[INFO] WebServer - Web Server configured with com..sun..jersey..spi..container..ContainerResponseFilters: com.tinkerpop.rexster.HeaderResponseFilter[INFO] WebServer - Rexster Server running on: [http://localhost:8182][INFO] WebServer - No servlet initialization parameters passed for configuration: admin-server-configuration[INFO] WebServer - Dog House Server running on: [http://localhost:8183][INFO] WebServer - RexPro serving on port: [8185][INFO] ShutdownManager$ShutdownSocketListener - Bound shutdown socket to /127.0.0.1:8184. Starting listener thread for shutdown requests. Page : 26
  28. 28. 3.Rexsterを起動するhttp://localhost:8183/管理画面もあるよ Page : 27
  29. 29. 4.Bulbsをインストールする easy_install bulbs Page : 28
  30. 30. Enjoy! Page : 29
  31. 31. Code snippet# Node classclass User(Node): element_type = "user" name = Property(String, nullable=False)# add Useruser = User(name=“bibrost")user.save()# add RelationsshipRelationship.create(User.get(from_id),"follow",User.get(to_id)) Page : 30
  32. 32. GraphDBの力がわかる問題 Page : 31
  33. 33. 次のデータを取得するクエリを書いてください(言語等自由)ユーザ[u]のまだ友達になっていない友達の友達 制限時間:20秒 Page : 32
  34. 34. Except patterng.v(u).out.aggregate(x).out.except(x) Page : 33
  35. 35. g.v(u).out.aggregate(x).out.except(x)u Page : 34
  36. 36. g.v(u).out.aggregate(x).out.except(x)u Page : 35
  37. 37. g.v(u).out.aggregate(x).out.except(x)u x Page : 36
  38. 38. g.v(u).out.aggregate(x).out.except(x)u x Page : 37
  39. 39. g.v(u).out.aggregate(x).out.except(x)u x Page : 38
  40. 40. f ff友達[ f ]と友達の友達[ ff ]の差集合(difference set)を求めるのがまさにExcept Pattern※積集合を求めるRetain Patternもある Page : 39
  41. 41. More Patternshttps://github.com/tinkerpop/gremlin/wiki ・ Backtrack Pattern ・ Except/Retain Pattern ・ Flow Rank Pattern ・ Paths Pattern ・ Loop Pattern ・ Split/Merge Pattern Githubのgremlinレポジトリに ・ Pattern Match Pattern 色々あります Page : 40
  42. 42. Demoコードの構成https://github.com/bibrost/python-graphdb-demo Tornade Rexster Bulbs GraphDB Page : 41
  43. 43. 最後に Page : 42
  44. 44. 新しいパラダイムに触れることはとてもエキサイティングだし、勉強になるまだGraphDB自体を使うところまでいっていないがインスパイアされてMongoDB用のGraphを作るなど実用的なメリットも既に受けている(こちらは既にProductionに乗ってる) Page : 43
  45. 45. そんなGraphDB、今日からEnjoyしませんか Page : 44
  46. 46. ドメインとWordPressをご用意しておきました http://graphdb.jp/ Page : 45
  47. 47. いつでもアカウント発行します。君もContributorにならなイカ? Page : 46
  48. 48. Enjoy GraphDB! ~ Python with Bulbs and Rexster ~ ありがとうございました。 Page : 47
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×