Submit Search
Upload
Neoの世界へ
•
Download as PPTX, PDF
•
0 likes
•
914 views
時
時雨 大西
Follow
Neo4jとCypherのお話です。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 65
Download now
Recommended
PHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストア
Takuya Sato
MySQL
MySQL
paulowniaceae
Lispmeetup48 cl-online-learningによる文書分類
Lispmeetup48 cl-online-learningによる文書分類
Satoshi imai
[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読
Deep Learning JP
Neo4jrbにおけるOGM
Neo4jrbにおけるOGM
takabes00
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
Hisao Soyama
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
Hisao Soyama
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
Recommended
PHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストア
Takuya Sato
MySQL
MySQL
paulowniaceae
Lispmeetup48 cl-online-learningによる文書分類
Lispmeetup48 cl-online-learningによる文書分類
Satoshi imai
[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読
Deep Learning JP
Neo4jrbにおけるOGM
Neo4jrbにおけるOGM
takabes00
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
グラフデータベース「Neo4j」の 導入の導入(続き)-Cypherの基本のキ-
Hisao Soyama
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
Hisao Soyama
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
現実世界から学ぶ効率のいいサーバの使い方
現実世界から学ぶ効率のいいサーバの使い方
時雨 大西
アルゴリズム研究所 in nanapi
アルゴリズム研究所 in nanapi
時雨 大西
Pgunconf neo4j fdw
Pgunconf neo4j fdw
Toshi Harada
WebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろい
Hiroyuki Anai
20150520 lt-neo4j勉強会-neofj fdw
20150520 lt-neo4j勉強会-neofj fdw
Toshi Harada
チョコ溶かす奴
チョコ溶かす奴
翔 石井
Neo4j発表者募集
Neo4j発表者募集
洸平 土岐
neo4jを使ったブロックチェーンデータの解析
neo4jを使ったブロックチェーンデータの解析
shigeyuki azuchi
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
Soudai Sone
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
Insight Technology, Inc.
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Keiichiro Seida
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
Terui Masashi
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
RDBってなに?
RDBってなに?
Soudai Sone
MongoDB
MongoDB
あしたのオープンソース研究所
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
civicpg
セマンテックウェブとRDFDB
セマンテックウェブとRDFDB
Hirosuke Asano
Dot net+sql server tips
Dot net+sql server tips
Oda Shinsuke
Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法
Kazuki Saito
【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについて
kazuki matsumura
More Related Content
Viewers also liked
現実世界から学ぶ効率のいいサーバの使い方
現実世界から学ぶ効率のいいサーバの使い方
時雨 大西
アルゴリズム研究所 in nanapi
アルゴリズム研究所 in nanapi
時雨 大西
Pgunconf neo4j fdw
Pgunconf neo4j fdw
Toshi Harada
WebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろい
Hiroyuki Anai
20150520 lt-neo4j勉強会-neofj fdw
20150520 lt-neo4j勉強会-neofj fdw
Toshi Harada
チョコ溶かす奴
チョコ溶かす奴
翔 石井
Neo4j発表者募集
Neo4j発表者募集
洸平 土岐
neo4jを使ったブロックチェーンデータの解析
neo4jを使ったブロックチェーンデータの解析
shigeyuki azuchi
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
Soudai Sone
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
Insight Technology, Inc.
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Keiichiro Seida
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
Viewers also liked
(12)
現実世界から学ぶ効率のいいサーバの使い方
現実世界から学ぶ効率のいいサーバの使い方
アルゴリズム研究所 in nanapi
アルゴリズム研究所 in nanapi
Pgunconf neo4j fdw
Pgunconf neo4j fdw
WebGLとvideoを組み合わせるおもしろい
WebGLとvideoを組み合わせるおもしろい
20150520 lt-neo4j勉強会-neofj fdw
20150520 lt-neo4j勉強会-neofj fdw
チョコ溶かす奴
チョコ溶かす奴
Neo4j発表者募集
Neo4j発表者募集
neo4jを使ったブロックチェーンデータの解析
neo4jを使ったブロックチェーンデータの解析
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
[db tech showcase Tokyo 2015] E27: Neo4jグラフデータベース by クリエーションライン株式会社 李昌桓
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
Similar to Neoの世界へ
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
Terui Masashi
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
NTT Communications Technology Development
RDBってなに?
RDBってなに?
Soudai Sone
MongoDB
MongoDB
あしたのオープンソース研究所
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
civicpg
セマンテックウェブとRDFDB
セマンテックウェブとRDFDB
Hirosuke Asano
Dot net+sql server tips
Dot net+sql server tips
Oda Shinsuke
Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法
Kazuki Saito
【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについて
kazuki matsumura
Accelerating AdTech on AWS #AWSAdTechJP
Accelerating AdTech on AWS #AWSAdTechJP
Eiji Shinohara
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
Yutuki r
About NoSQL
About NoSQL
hideaki honda
インフラ系自主トレするならAWS
インフラ系自主トレするならAWS
Yasuhiro Araki, Ph.D
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
Kazuaki Takase
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
Code4Lib JAPAN
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
Hiroshi Tokumaru
Linked Open Dataとは
Linked Open Dataとは
Linked Open Dataチャレンジ実行委員会
Morning Session - AWS Serverless Ways
Morning Session - AWS Serverless Ways
akitsukada
Similar to Neoの世界へ
(20)
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
RDBってなに?
RDBってなに?
MongoDB
MongoDB
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
セマンテックウェブとRDFDB
セマンテックウェブとRDFDB
Dot net+sql server tips
Dot net+sql server tips
Node-RED TIPS:functionノード間で関数を共有する方法
Node-RED TIPS:functionノード間で関数を共有する方法
【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについて
Accelerating AdTech on AWS #AWSAdTechJP
Accelerating AdTech on AWS #AWSAdTechJP
Cassandraとh baseの比較して入門するno sql
Cassandraとh baseの比較して入門するno sql
About NoSQL
About NoSQL
インフラ系自主トレするならAWS
インフラ系自主トレするならAWS
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
20110305_Code4Lib2011参加報告会:田辺浩介参加報告
Rails SQL Injection Examplesの紹介
Rails SQL Injection Examplesの紹介
Linked Open Dataとは
Linked Open Dataとは
Morning Session - AWS Serverless Ways
Morning Session - AWS Serverless Ways
Neoの世界へ
1.
Neoの世界へ @shigure_onishi
2.
自己紹介 - AWSエンジニア - Ruby始めました -
Dockerとか - 好きなサービス: S3 - 最近社内AWS勉強会始めた - SecurityGroup大切だよ
3.
アジェンダ - 前回のおさらい - 書き方 -
アンチパターン - 実装パターン
4.
前回のおさらい
5.
前回のおさらい - 前回の状態を見せる
6.
グラフの概念 - グラフ理論の起源 - 一筆書きの証明をすることで不可能を証明した
7.
グラフデータベースとは? - 情報と情報をつなぐ関係性を表現することができる - インデックスなし隣接性 データベース内で繋がっているノードが お互いを指している状態 -
RDBでもグラフを表現できる しかしそれはグラフデータベースではない
8.
グラフデータベース - Neo4j - InfiniteGraph -
Sparksee - AllegroGraph - OrientDB - Titan - FlockDB
9.
他のデータベースと比較 - RDBでさえも繋がりを表現するのは苦手 RDBは表としての繋がりを表現するのは得意
10.
パフォーマンス - RDB 全体のデータ量と一致件数によって決まる O(m log
n) = 処理速度 - グラフ 一致件数のみで決まる O(n) = 処理速度
11.
できないこと - 全体に対して更新できない UPDATE users
SET point = point + 100; - 集計とかできない(苦手) SELECT SUM(point) FROM users;
12.
使用例 - 路線図 - レコメンド -
友達の友達 - ネットワーク構成
13.
Neo4jとCypher 今日はここのお話
14.
書き方
15.
書き方(Node作成) CREATE句でデータの詳細記述して、RETURN句で返す CREATE (onishi:Ningen { #
Ningen 識別子、カテゴリみたいなもの name:"大西", name_en:"Onishi", nickname:"Shigu" }) RETURN onishi;
16.
書き方(Node作成) もうひとつ作ります。 RETURN句なくても作れる。(RETURN = SELECT句) CREATE (:Ningen
{ name:"手塚", name_en:"Tezuka", nickname:"zuccahn"} );
17.
書き方(繋がりを作る) MATCH = 変数定義、CREATEで繋がり形式を表現 MATCH (ningen1:Ningen
{ name_en: 'Onishi'}), (ningen2:Ningen { name_en: 'Tezuka'}) CREATE (ningen1)-[:SENPAI {name:'senpai'}]->(ningen2) RETURN ningen1, ningen2
18.
書き方(繋がりを探す) MATCHで繋がりのパターンを記述しWHEREで絞る MATCH (kouhai) -[:SENPAI]-> (senpai) WHERE kouhai.name
= ‘大西’ RETURN kouhai, senpai
19.
書き方(繋がりを探す)
20.
書き方(Nodeを増やす) CREATE (kojima:Ningen { name:"小島", name_en:"Kojima", nickname:"Kozyty"} ), (kagaya:Ningen { name:"加賀谷", name_en:"Kagaya", nickname:"Violetyk"} );
21.
書き方(繋がりも増やす) MATCH (ningen1:Ningen { name_en:
'Tezuka'}), (ningen2:Ningen { name_en: 'Kojima'}), (ningen3:Ningen { name_en: 'Kagaya'}) CREATE (ningen1)-[:SENPAI {name:'senpai'}]->(ningen2), (ningen2)-[:SENPAI {name:'senpai'}]->(ningen3) RETURN ningen1, ningen2, ningen3
22.
書き方(繋がりも増やす)
23.
書き方(検索パターン、距離の指定) MATCH (kouhai) -[:SENPAI*2]-> (senpai) WHERE kouhai.name
= ‘大西’ RETURN kouhai, senpai
24.
書き方(検索パターン、距離の指定)
25.
書き方(検索パターン、距離の指定) - [:SENPAI*2] #自分からSENPAIの関係で二つ先の人 -
[:SENPAI*1..2] # 自分からSENPAIの関係で1~2先の人 - [:SENPAI*] # いくつでもOK
26.
書き方(検索パターン、関係) MATCH (kouhai) -[:SENPAI]-> (senpai1)
-[:SENPAI]-> (senpai2) WHERE kouhai.name = ‘大西’ RETURN kouhai, senpai1, senpai2
27.
書き方(検索パターン、関係)
28.
書き方(検索パターン、関係) - 連結 (kouhai) -[:SENPAI]->
(senpai1) -[:SENPAI]-> (senpai2) - 関係指定なし、関係を取得するパターン MATCH (kouhai) -[r1]-> (senpai1) -[r2]-> (senpai2) WHERE kouhai.name = ‘大西’ RETURN r1, r2
29.
書き方(検索パターン、関係)
30.
書き方(検索パターン、関係) - OR (ningen1) -[:SENPAI
| :KOUHAI]-> (ningen2) - 条件指定 (ningen1) -[:SENPAI {pattern: ‘age’}]-> (ningen2) - 反対も書ける (ningen2) <-[:SENPAI]- (ningen1) - [:KOUHAI] -> (ningen3)
31.
書き方(検索パターン、関係も距離も指定なし) - 全パターンHitする MATCH (kouhai) -[r*]->
(senpai) WHERE kouhai.name = ‘大西’ RETURN kouhai, senpai, r
32.
書き方(検索パターン、関係も距離も指定なし)
33.
アンチパターン
34.
アンチパターン - 双方を全く同じ関係で繋ぐ - つながりは厳密に言えば双方繋がり方が違う 友達申請した人と、申請された人 電車の上りと下り -
表現したいものが表現できなくなることがある
35.
アンチパターン - 何かに使いそうだからとりあえず繋がり作っとこう - 実行計画がないものは作らない RDBとかと違って表現したいものだけを必ず作る パフォーマンスの低下に繋がる 大体本当に表現したかったものではない
36.
アンチパターン - メールで学ぶ正しい関係 - 登場人物3人 -
TOとCCでメール送る - TOで送られた人が返信する
37.
アンチパターン - 繋がりは正確に (これはダメなパターン)
38.
アンチパターン - 繋がりは正確に (正解のパターン)
39.
アンチパターン - 返信はメールに対して関係を持っている
40.
実装パターン
41.
実装パターン - emosiというサービスがありました - ネガティブな投稿をした人に、ポジティブな投稿で他 の人が返すサービス -
その行動でネガティブだった人がポジティブになり、 他のネガティブな人をポジティブにしていく
42.
実装パターン 誰かがネガティブを投稿しました(アクション)
43.
実装パターン 誰かが反応しました(リアクション)
44.
実装パターン 左でアクションしてた人が、今度はリアクションしている
45.
実装パターン こういった関係がずっと続く
46.
実装パターン これって幸せにしたことにならない?
47.
実装パターン もっと言えばこうだよね
48.
実装パターン リアクション二つもらうこともあるよね
49.
emosiとは? - これが世界平和、世界はひとつで繋がる - 円環の理を表現したい 始まりと終わりが永遠と続く運命
50.
51.
設計の問題 - SQL書けない - JOINのJOINのJOINのJOIN? それデータ件数増えても同じこと言えんの?
52.
サービスの問題 - 繋がるのは人? - アクションとリアクション?
53.
サービスの問題 二度繋がる
54.
サービスの問題 永遠に増え続けるし、3日立ってからReactionもらうとか 一番右の黄色の後についた
55.
RDBで実装してみた 左のrelationカラムが今までの経路をJSONで保存 右のrelation_usersが今まで繋がったユーザーの経路
56.
設計の問題 - よくわからない - 表現するために機能を制限した -
なんとなく表現できたものがこれだったからこの設計 にした
57.
なんか動いてる!
58.
プアマンズ・リレーションエンジン (貧者の関係エンジン)
59.
Neo4jで実装してみた
60.
Neo4jで実装してみた
61.
Neo4jで実装してみた アクションのIDを指定して PositiveかReで繋がってるものを2まで取得 MATCH (action) -[ r:Positive
| :Re*2 ]-> (make) WHERE action.id = '2' RETURN action, r, make
62.
Neo4jで実装してみた
63.
Neo4jで実装してみた MATCH (make_prev) - [r_prev:Positive|:Re*2] -> (action) -
[r_next:Positive|:Re*2] -> (make_next) WHERE action.id = '2'
64.
表現できるわけないだろ、jk 無理とか決めつけていて 申し訳ございませんでした。
65.
〜 Fin 〜
Download now