lightning-talk: ramen->graph->database, neo4j_fdw

Post on 22-Jun-2015

657 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Neo4j 勉強会Lightning-Talk-1

ラーメン -> グラフ -> データベース

ぬこ@横浜 (@nuko_yokohama)

諸君、私はラーメンが好きだ。諸君、私はラーメンが好きだ。諸君、私はラーメンが好きだ。諸君、私はラーメンが好きだ。

諸君、私はラーメンが諸君、私はラーメンが本当に大好きだ。本当に大好きだ。

ラーメンデータベースhttp://ramendb.supleks.jp

登録店舗数6 万超

ユーザ数12 万超

単なるレビューサイトではなくコメントのやりとりなど

ラヲタの SNS っぽくもある

さて

Neo4j の勉強をするときに、何か「生きた」データが欲しい

ラーメンデータベースのユーザと、ユーザ間のコメントのやりとりをグラフデータのサンプルとして使えないか?

でもラーメンデータベースでは

そんな情報を収集するようなWeb-API は公開してない…

しょうがないのでラーメンデータベースのWeb ページを解析して

ユーザー ⇒ ノードコメント ⇒ エッジ

を生成するツールを作成

収集ルール

人気ユーザ 100 人の直近 10 件のレビューに

コメントしたユーザ

これをノード用 / エッジ用のCSV としてダンプ

で、 CSV を Neo4j にダンプするツールも作る。

本当は GraphML とかにするほうが良いと思うけど

面倒だからやらない。

収集&ロードした結果をNeo4j 管理コンソールで参照

(表示設定もしておく)

せっかくなのでCypher で検索してみる

Cypher 検索 1

自分にコメントをしてくれたユーザの一覧

START n=node:node_auto_index(uid="8999") MATCH n<-[:c]-f RETURN distinct f.uid, f.name, f.location;

Cypher 検索 2

自分がコメントをしたユーザの一覧

START n=node:node_auto_index(uid="8999")MATCH n-[:c]->fRETURN distinct f.uid, f.name, f.location;

Cypher 検索 3

自分と相互にコメントしているユーザの一覧

START n=node:node_auto_index(uid="8999")MATCH n-[:c]->f-[:c]->nRETURN distinct f.uid, f.name, f.location;

Cypher 検索 4

自分から見た神奈川県のユーザの HOP 数START n=node:node_auto_index(uid="8999"),u=node(*)MATCH p=shortestpath(n-[:c*..15]-u)WITH length(p) as l, u as uWHERE u.location = "神奈川県 "RETURN l, u.name, u.location order by l;

そんな分析っぽいことができます。

いやらしい楽しいですね。

おしまい

Neo4j 勉強会Lightning-Talk-2

neo4j_fdw

ぬこ@横浜 (@nuko_yokohama)

諸君、私は PostgreSQL が好きだ。諸君、私は PostgreSQL が好きだ。

諸君、私は PostgreSQL が本当に大好きだ(しつこい)

ということでPostgreSQLに関するお話

PostgreSQL の FDW

PostgreSQL にはForeign Data Wrapper という

外部情報源を仮想テーブル化するステキ開発フレームワークがある。

( Oracle, MySQL, Redis, MongoDB, CouchDB, Twitter, etc… )

なので、 PostgreSQL からSQL 経由で

Neo4j を検索するFDW を作ってみた

neo4j_fdw

じゃあ、いつ作るか?今でしょ!

Neo4j Server

Neo4j Foriegn Data WrapperPostgreSQL

Relational Model

CypherQuery

JSONResult

SQL

PostgreSQLRecord

Defined Cypher Query

Execute Cypher Query on REST

Generate PostgreSQL Record

Neo4j-FDWConceptProvide Cypher result View.

Graph Model

olumn1 column2 column3

・・・ ・・・ ・・・

・・・・ ・・・・ ・・・

詳細説明は割愛neo4j_fdw のデモ

詳細な説明は 7/13 のPostgreSQL Unconference で!

つまり

PostgreSQL とNeo4j が両方備わり

最強に見えるかも・・・

興味のある方はソースをGithub に置いたので

見てくださいませ(まだまだ開発途上ですが)

https://github.com/nuko-yokohama/neo4j_fdw

おしまい

top related