SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
neo4jで
はじめる
グラフDB
入門
2016-07-20
駒原 雄祐 (こまはら ゆうすけ)
35歳
妻と生後1ヶ月の娘と2歳のチワワの
3人と1匹暮らし
大学卒業後、
某SIerでJavaプログラマ
 ↓
某BI専門のコンサル会社でコンサルタントおよびアーキテクト
 ↓
2010年にサイバーエージェント中途入社 (もうすぐ丸6年)
課金系(アメゴールド、月額課金など)の基盤
Amebaなうなどの旧Amebaコミュニティサービス
2012年後半から広告系のお仕事
現在MDHにて広告プロダクトA.J.A.の開発・運用
Agenda
● グラフDBって何?
● RDBとのデータ構造比較
● neo4j
● demo
Agenda
● グラフDBって何?
● RDBとのデータ構造比較
● neo4j
● demo
グラフ理論を基礎とした、
グラフ構造を持つデータベース
グラフ構造って何?
● 点(ノード)と線(エッジ)でエンティティとリレーションを表現する
● ノードとエッジはプロパティを持つことができる (プロパティグラフ)
User
User
User
Group
Group
follow
follow
follow
join
join
join
name: taro
age: 20
name: jiro
age: 25
job: engineer
name: hanako
age: 33
job: president
name: JJUG
name: ScalaJP
at: 2010-08-31
at: 2013-02-16
at: 2015-01-21
User
User
User
Group
Group
follow
follow
follow
join
join
join
name: taro
age: 20
name: jiro
age: 25
job: engineer
name: hanako
age: 33
job: president
name: JJUG
name: ScalaJP
at: 2010-08-31
at: 2013-02-16
at: 2015-01-21
ノード
User
User
User
Group
Group
follow
follow
follow
join
join
join
name: taro
age: 20
name: jiro
age: 25
job: engineer
name: hanako
age: 33
job: president
name: JJUG
name: ScalaJP
at: 2010-08-31
at: 2013-02-16
at: 2015-01-21
エッジ
User
User
User
Group
Group
follow
follow
follow
join
join
join
name: taro
age: 20
name: jiro
age: 25
job: engineer
name: hanako
age: 33
job: president
name: JJUG
name: ScalaJP
at: 2010-08-31
at: 2013-02-16
at: 2015-01-21
プロパティ
Agenda
● グラフDBって何?
● RDBとのデータ構造比較
● neo4j
● demo
グラフDBのデータ構造
User
User
User
Group
Group
follow
follow
follow
join
join
join
name: taro
age: 20
name: jiro
age: 25
job: engineer
name: hanako
age: 33
job: president
name: JJUG
name: ScalaJP
at: 2010-08-31
at: 2013-02-16
at: 2015-01-21
name age job
taro 20 (null)
jiro 25 engineer
hanako 33 president
name
JUGG
ScalaJP
user_name group_name at
jiro JUGG 2013-02-16
jiro ScalaJP 2015-01-21
hanako JUGG 2010-08-31
User Group
UserJoinGroup
RDBのデータ構造
グラフDB分かりやすい!
RDBとのTraverse比較
グラフDBの場合
親
親
子
子
子
孫
孫
孫
孫
グループ
グループ
グループ
赤い親が持つ赤い子が持つ孫のうち、グループから赤いリレーションが貼られているものを除外
→ (neo4j Cypher Queryの場合のイメージ)
MATCH (p: 親 {color: ‘red’}-[:HAS]->(c: 子 {color: ‘red’})-[:HAS]->(g: 孫)<-[b:BELONG]-(gr: グループ)
WHERE b.color != ‘red’
RETURN g
RDBの場合
親ID
色
子ID
色
親ID
孫ID
色
子ID
孫ID
グループID
色
グループID
親 子 孫 グループグループ所属孫
赤い親が持つ赤い子が持つ孫のうち、グループから赤いリレーションが貼られているものを除外
→ SQLのイメージ
SELECT 孫.*
FROM 親 INNER JOIN 子 ON 親.親ID = 子.親ID
INNER JOIN 孫 ON 子.子ID = 孫.子ID
INNER JOIN グループ所属孫 ON 孫.孫ID = グループ所属孫.孫ID
INNER JOIN グループ ON グループ所属孫.グループID = グループ.グループID
WHERE 親.色 = ‘red’ AND 子.色 = ‘red’ AND グループ所属孫.色 <> ‘red’
JOINの繰り返し!
クエリの複雑化
動作が重くなる
(><)
グラフDB簡潔&Traversal動作速い!
Agenda
● グラフDBって何?
● RDBとのデータ構造比較
● neo4j
● demo
そんなグラフDBで
(たぶん)一番メジャーな存在
それが
https://neo4j.com/
neo4j
● neo technology社が開発したグラフデータベース
● OLTP対応
● ACID準拠
● Cypher Query Language (Cypher, CQL)という宣言型クエリ言語でのデータ参照
○ 従来アプリケーションで表現していた複雑な処理や、 RDB上のSQLでは多重結合になるような処理
でも、簡潔に表現でき、高速に実行することができる
● 幅広い実行インターフェース
○ Webインターフェース
○ RESTful API
○ 主要な言語のクライアントライブラリ
● 有償エンタープライズ版
○ 高パフォーマンスキャッシュ
○ master/slave型のHA構成
○ オンラインバックアップ
○ カスタマーサポート etc…
チュートリアルが同梱されている
demo

Weitere ähnliche Inhalte

Ähnlich wie Neo4jで始めるグラフDB入門 - LT Thursday

LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 GIG inc.
 
子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう子供達と プログラミングをはじめよう
子供達と プログラミングをはじめようMasao Niizuma
 
ブランディングを意識したサービス開発の一歩
ブランディングを意識したサービス開発の一歩ブランディングを意識したサービス開発の一歩
ブランディングを意識したサービス開発の一歩Haiji Haiiro
 
Data-centricなML開発
Data-centricなML開発Data-centricなML開発
Data-centricなML開発Takeshi Suzuki
 
新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー慧悟 岩本
 
転職潜在層採用のためのダイレクトリクルーティング&タレントプール
転職潜在層採用のためのダイレクトリクルーティング&タレントプール転職潜在層採用のためのダイレクトリクルーティング&タレントプール
転職潜在層採用のためのダイレクトリクルーティング&タレントプールKentaro Someya
 
機械学習に取り組んでいる企業の紹介
機械学習に取り組んでいる企業の紹介機械学習に取り組んでいる企業の紹介
機械学習に取り組んでいる企業の紹介Kazuma Kadomae
 
20221116_テスト自動化プラットフォーム mabl はいいぞ!
20221116_テスト自動化プラットフォーム mabl はいいぞ!20221116_テスト自動化プラットフォーム mabl はいいぞ!
20221116_テスト自動化プラットフォーム mabl はいいぞ!Shohei Oda
 
20171129 #jbug tokyo_#3_lt_beajouneyman
20171129  #jbug tokyo_#3_lt_beajouneyman20171129  #jbug tokyo_#3_lt_beajouneyman
20171129 #jbug tokyo_#3_lt_beajouneymanJourneyman
 
アプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdfアプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdfivanov23
 
ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法Ryota Ono
 
アプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdfアプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdfivanov23
 
ODBC/JDBC/ADOで(も)つながる Saasの世界
ODBC/JDBC/ADOで(も)つながるSaasの世界ODBC/JDBC/ADOで(も)つながるSaasの世界
ODBC/JDBC/ADOで(も)つながる Saasの世界CData Software Japan
 
20130928 ゼロディレ運用編スライド
20130928 ゼロディレ運用編スライド20130928 ゼロディレ運用編スライド
20130928 ゼロディレ運用編スライドKenta Nakamura
 
集客ROI 最大化セミナー
集客ROI 最大化セミナー集客ROI 最大化セミナー
集客ROI 最大化セミナーIMJ Corporation
 
090601 担当者のコトバに振り回されるな!
090601 担当者のコトバに振り回されるな!090601 担当者のコトバに振り回されるな!
090601 担当者のコトバに振り回されるな!Ryohei Katayama
 
正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論
正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論
正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論さくらインターネット株式会社
 

Ähnlich wie Neo4jで始めるグラフDB入門 - LT Thursday (20)

LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
 
子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう
 
ブランディングを意識したサービス開発の一歩
ブランディングを意識したサービス開発の一歩ブランディングを意識したサービス開発の一歩
ブランディングを意識したサービス開発の一歩
 
Data-centricなML開発
Data-centricなML開発Data-centricなML開発
Data-centricなML開発
 
新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー新卒採用を、まっとうに ー面接者への通信簿ー
新卒採用を、まっとうに ー面接者への通信簿ー
 
分析手法のご紹介
分析手法のご紹介分析手法のご紹介
分析手法のご紹介
 
転職潜在層採用のためのダイレクトリクルーティング&タレントプール
転職潜在層採用のためのダイレクトリクルーティング&タレントプール転職潜在層採用のためのダイレクトリクルーティング&タレントプール
転職潜在層採用のためのダイレクトリクルーティング&タレントプール
 
石狩での プログラミング教育支援 ~2年目の成果~
石狩でのプログラミング教育支援~2年目の成果~石狩でのプログラミング教育支援~2年目の成果~
石狩での プログラミング教育支援 ~2年目の成果~
 
機械学習に取り組んでいる企業の紹介
機械学習に取り組んでいる企業の紹介機械学習に取り組んでいる企業の紹介
機械学習に取り組んでいる企業の紹介
 
20221116_テスト自動化プラットフォーム mabl はいいぞ!
20221116_テスト自動化プラットフォーム mabl はいいぞ!20221116_テスト自動化プラットフォーム mabl はいいぞ!
20221116_テスト自動化プラットフォーム mabl はいいぞ!
 
20171129 #jbug tokyo_#3_lt_beajouneyman
20171129  #jbug tokyo_#3_lt_beajouneyman20171129  #jbug tokyo_#3_lt_beajouneyman
20171129 #jbug tokyo_#3_lt_beajouneyman
 
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
 
アプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdfアプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdf
 
ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法
 
アプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdfアプリ開発、SaaS開発を経て最近考えていること.pdf
アプリ開発、SaaS開発を経て最近考えていること.pdf
 
ODBC/JDBC/ADOで(も)つながる Saasの世界
ODBC/JDBC/ADOで(も)つながるSaasの世界ODBC/JDBC/ADOで(も)つながるSaasの世界
ODBC/JDBC/ADOで(も)つながる Saasの世界
 
20130928 ゼロディレ運用編スライド
20130928 ゼロディレ運用編スライド20130928 ゼロディレ運用編スライド
20130928 ゼロディレ運用編スライド
 
集客ROI 最大化セミナー
集客ROI 最大化セミナー集客ROI 最大化セミナー
集客ROI 最大化セミナー
 
090601 担当者のコトバに振り回されるな!
090601 担当者のコトバに振り回されるな!090601 担当者のコトバに振り回されるな!
090601 担当者のコトバに振り回されるな!
 
正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論
正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論
正解はどれ?『プログラミング教育』を取り巻くステークホルダーと議論
 

Neo4jで始めるグラフDB入門 - LT Thursday