Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kevin Bacon Number with Neo4j
Search
kawakubox
August 17, 2016
Programming
0
2k
Kevin Bacon Number with Neo4j
グラフデータベースのNeo4jを使って、ケビン・ベーコン数の検証をしたLTのスライド
kawakubox
August 17, 2016
Tweet
Share
More Decks by kawakubox
See All by kawakubox
speee-eng-mtg-20160810
kawakubox
0
1.6k
speee-kaigi-160629
kawakubox
1
2.8k
Other Decks in Programming
See All in Programming
Package Management Learnings from Homebrew
mikemcquaid
0
230
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
140
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
740
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
CSC307 Lecture 04
javiergs
PRO
0
660
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
460
2026年 エンジニアリング自己学習法
yumechi
0
140
AI時代の認知負荷との向き合い方
optfit
0
170
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Producing Creativity
orderedlist
PRO
348
40k
Documentation Writing (for coders)
carmenintech
77
5.3k
Designing for Timeless Needs
cassininazir
0
130
Typedesign – Prime Four
hannesfritz
42
3k
Are puppies a ranking factor?
jonoalderson
1
2.7k
The Curse of the Amulet
leimatthew05
1
8.7k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
390
Building a Scalable Design System with Sketch
lauravandoore
463
34k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Transcript
Neo4j Ͱ έϏϯɾϕʔ ίϯʹ৮ΕͯΈΔ 2016.8.17 (Wed)
• ໊લ: Տٱอ ൟ࢙ (kawakubox) • ւ֎ࣄۀ෦ Eng • !
ϑϧϚϥιϯࢦͯ͠ ΦϑΟε to ࣗ ͷ Extreme ୀ ࣾͳΜ͔ͰτϨʔχϯάதɻ
ಥવͰ͕͢ɺέϏϯɾϕ ʔίϯͬͯͬͯ·͢ ͔ʁ
None
ΞϝϦΧ߹ऺࠃͷആ༏ ओͳग़ԋ࡞ • ʰτϨϚʔζʱ • ʰΞϙϩ13ʱ • ʰX-MEN: ϑΝʔετɾδΣωϨʔγϣϯʱ etc
etc ...
ͰɺέϏϯɾϕʔίϯ ͬͯͬͯ·͔͢ʁ
έϏϯɾϕʔίϯͱ өըആ༏ͷڞԋؔͷʮڑʯΛέϰΟϯɾϕʔίϯΛىʹ ܭଌ͞ΕΔ ϕʔίϯຊਓ͕ʮϋϦουͷશһ͕ࣗͷڞԋऀ͔ɺڞԋऀ ͷڞԋऀͩʯͱ͍͏झࢫͷൃݴͨ͜͠ͱ͕͖͔͚ͬ — wikipedia
έϏϯɾϕʔίϯͷਤ Ͱඳ͘ͱ
None
࣍ͷִͨΓ ࣍ͷִͨΓʢΖ͘͡ͷͩͨΓɺSix Degrees of Separationʣ ͱɺશͯͷਓࣄ6εςοϓҎͰܨ͕͍ͬͯͯɺ༑ୡͷ ༑ୡ…Λհͯ͠ੈքதͷਓʑͱؒతͳΓ߹͍ʹͳΔ͜ͱ͕ Ͱ͖Δɺͱ͍͏Ծઆɻ — wikipedia
• SNSͳͲͷԼʹͳ͍ͬͯΔԾઆ
·͞ʹάϥϑDBʹͱͬͯ࠷దͷͳͷͰɺNeo4jͷੑೳݕূ ݉Ͷͯେ͖ΊͳσʔλΛೖͯ͠ΈΑ͏
σʔλϞσϧ
None
Node : Person • ϓϩύςΟ • person_id • name
Relation : KNOWS • ϓϩύςΟͳ͠
લఏ • 1ਓ࠷100ਓͱΓ߹͍Ͱ͋Δ
1,000,000ਓͷੈք σʔλೖ࣌ؒ(csv import) IMPORT DONE in 7m 6s 292ms. Imported:
1000000 nodes 200000000 relationships 2000000 properties
1,000,000ਓͷੈք ϗοϓͷ # ࢼߦճ : 1,065ճ {0=>0, 1=>0, 2=>43, 3=>1021,
4=>1, 5=>0}
10,000,000ਓͷੈք IMPORT DONE in 3h 5m 4s 706ms. Imported: 10000000
nodes 2000000000 relationships 20000000 properties
10,000,000ਓͷੈք ϗοϓͷ # ࢼߦճ : 1,065ճ {0=>0, 1=>0, 2=>4, 3=>592,
4=>469, 5=>0}
֬ೝ༻ͷCYPHERΫΤϦ MATCH (a:Person {person_id: {i}}), (b:Person {person_id: {j}}), p =
shortestPath((a)-[*..6]->(b)) RETURN length(p) as len
CYPHERΫΤϦͷ༁ MATCH // person_id = i Λ࣋ͭϊʔυΛऔಘ͠ɺ a ͱ͢Δ (a:Person
{person_id: {i}}), // person_id = j Λ࣋ͭϊʔυΛऔಘ͠ɺ b ͱ͢Δ (b:Person {person_id: {j}}), // a ͱ b ͷϗοϓ͕ 6 ҎͷͷͰɺ࠷ܦ࿏Λऔಘ͢Δ p = shortestPath((a)-[*..6]->(b)) RETURN // ࠷ܦ࿏ͷ͞(len)Λฦ٫͢Δ length(p) as len
126,000,000ਓͷੈքʢຊʣ -rw-r--r-- 1 kawakubox staff 21M 8 16 22:09 person_1000000.csv
-rw-r--r-- 1 kawakubox staff 221M 8 17 01:31 person_10000000.csv -rw-r--r-- 1 kawakubox staff 2.6G 8 16 22:12 relation_1000000.csv -rw-r--r-- 1 kawakubox staff 2.9G 8 17 01:34 person_japan.csv -rw-r--r-- 1 kawakubox staff 29G 8 17 03:53 relation_10000000.csv ϦϨʔγϣϯೖ༻σʔλ͕ 10,000,000 ͷ࣌Ͱ 30G ͋ͬͨ ͷͰɺσʔλ࡞࣌Ͱஅ೦ɺɺɺ
ࠓճͬͯΈͯͷؾ͖ • ϊʔυ͕ 10,000,000 Ͱɺదʹ index షΕɺprimary ݕ ࡧࣗମ 0ms
͘Β͍Ͱฦͬͯ͘Δ • ϦϨʔγϣϯ͕ 2,000,000,000 ͘Β͍ʹͳΔͱɺ͘ͳͬͯ ͘Δ (5sec ͘Β͍) • ͍ΫΤϦɺCPUར༻ 300% ͑ͱ͔ฏؾͰ͢Δ • Enterprise൛ͬͯͷΫϥελϦϯάͳΜ͔ࢼͯ͠Έͨ ͍
END