46
RDBMS から グラフDBグラフデータベースの可能性について Oc tober2015

グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

Embed Size (px)

Citation preview

Page 1: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

RDBMSから グラフDBへグラフデータベースの可能性について

October2015

Page 2: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

アジェンダ

•  Neo4jの歴史•  グラフデータベースの特徴•  エンタプライズアーキテクチャとpolyglotpersistenceについて

Page 3: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

NeoTechnology社の紹介

製品• Neo4j:世界で最も利用されてい

るグラフDB• ダウンロード数=100万以上、毎

月、5万件の追加• 顧客=150社以上(内、Global2000は50社)

企業• Neo4jの開発元• 従業員=100+• 本社=シリコンバレー、ロンドン、

ミュンヘン、パリ• 現時点の出資状況 =$45M

(Fidelity,Sunstone,Conor,Creandum,DawnCapital)

Page 4: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

業界別のNeo4j導入実績金融 テレコム 医療 HR/

リクルート メディア/

出版 ソーシャル

ウェブ ロジスティクス

エンタメ コンシューマリテール ITシステム ビジネスサービス

Page 5: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

Neo4jを利用したアプリケーションデータセンタ

運用管理 MDM(マスター

データ管理) ソーシャル レコメンデーション エンジン

ID/アクセス 管理

検索ディスカバリ

地図情報 ナビゲーション

Page 6: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

“Forresterは、25%以上のエンタプライズ企業が2017年までにグラフデータベースを採用する、と予測している”

Neo4jの評価

“Neo4jはグラフデータベース業界において、間違いなく、リーダー企業である、と言える。”

“グラフデータ分析は、保有/生成する大量のデータを分析、そしてマネタイズしたい企業にとって、最も効果的な武器として位置付けられる。”

ITMarketClockforDatabaseManagementSystems,2014hKps://www.gartner.com/doc/2852717/it-market-clock-database-managementTechRadar™:EnterpriseDBMS,Q12014hKp://www.forrester.com/TechRadar+Enterprise+DBMS+Q1+2014/fulltext/-/E-RES106801GraphDatabases–andTheirPotenKaltoTransformHowWeCaptureInterdependencies(EnterpriseManagementAssociates)hKp://blogs.enterprisemanagement.com/dennisdrogseth/2013/11/06/graph-databasesand-potenZal-transform-capture-interdependencies/

Page 7: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

グラフデータベース業界における最大のエコシステム

•  1,000,000+のダウンロード•  20,000+人以上のトレーニング経験者•  18,000+ミートアップ参加メンバー•  100+社以上のパートナーネットワーク•  150+社のエンタプライズ顧客

(内、50社はGlobal2000企業)

Page 8: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

データの“関連性”における重要な価値を見出す

データ量の急激な増大…•  新しいデータ発生源•  オンライン処理の増大•  ソーシャルネットワークの増大•  デバイスの増加

このデータの関連性にこそ価値を見出す•  リアルタイム レコメンデーション•  不正アクセス/利用の検知•  MDM(マスターデータ管理)•  ネットワーク/IT運用管理•  ID/アクセス管理•  グラフベースの検索…それらの接続も同様に増大

ユーザ、製品、プロセス、デバイス同士の通信も増大 è データの関連性に重視

早くからグラフを採用した企業は成功してる

Page 9: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

RDBは、“データ関連性”の管理が不得意

•  データ関連性のモデル化、管理はシステムを急激に複雑化させる。

•  データ関連性が複雑化するとシステム性能が急激に落ちる

•  JOINの増加でクエリーが複雑化する•  新データタイプや関連性を追加するとスキーマの再設計、再構築が必要になる。

…特に、データ関連性が複雑なデータベースのリアルタイムでの運用が非常に困難になる。

開発期間の増大性能問題

スケーラビリティ運用管理が困難

Page 10: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

データの“関連性”における重要な価値を見出す

•  データと、その関連性を組み合わせ

たグラフデータモデルを採用

•  リアルタイムでデータ関連性をアクセ

ス、迅速なビジネス判断に活かす

•  変化し続けるビジネスに対して新規

のデータ関連性を動的に追加

Page 11: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

グラフデータベースのモデリング

Page 12: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

ホワイトボードに描いたモデルがそのままグラフモデルに

Page 13: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

CAR

name:“Dan”born:May29,1970twiKer:“@dan”

name:“Ann”born:Dec5,1975

since:Jan10,2011

brand:“Volvo”model:“V70”

グラフモデルのコンポーネント

ノード•  データオブジェクトはグラフで表記•  プロパティ情報も内包•  ラベルも付ける事が可能

関係•  ノード間の関係をタイプと方向性

で表記•  プロパティ情報も内包

LOVES

LOVES

LIVESWITHPERSON PERSON

Page 14: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

リレーショナルとグラフモデルの違い

リレーショナルモデル グラフモデル

知人のび太

しずか

ジャイアン

スネ夫

人 友人人/友人関係

のび太しずか

スネ夫

ジャイアン

Page 15: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

RDBからのグラフモデル化

顧客、サプライヤ、商品データ(マスターデータ)オーダー(受注活動)

Page 16: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

RDB型のNorthwindデータベースを作る!

グラフ型の

Page 17: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

(Northwind)-[:TO]->(Graph)

Page 18: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

ドメインモデルは簡単だが、、、

社員

受注

商品

カテゴリー

サプライヤ

所属

Northwindサンプルデータのグラフモデル

Page 19: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

複雑怪奇なER図…

Page 20: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

まず、ノード間の関係を定義する

販売

従業員 Order受注

Page 21: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

外部キーを見つける

Page 22: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

(外部キー)-[:変化]->(関係)方向性も適正化する

Page 23: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

外部キーを取り除く

Page 24: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

ジョインテーブルを見つける

Page 25: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

ジョインテーブルがそのまま関係データになる

Page 26: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

属性付きのジョインテーブルは、プロパティ付きの関係データに変換

Page 27: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

グラフ化されるデータの最終系

Page 28: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

データへのクエリー

Page 29: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

基本クエリー:誰が誰にレポートするのか?

MATCH(:Employee{firstName:“Steven”})-[:REPORTS_TO]->(:Employee{firstName:“Andrew”})

REPORTS_TOSteven Andrew

ラベル プロパティ

ノード ノード

ラベル プロパティ

Page 30: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

基本クエリー:誰が誰にレポートするのか?

MATCH (e:Employee)<-[:REPORTS_TO]-(sub:Employee)RETURN *

Page 31: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

基本クエリー:誰が誰にレポートするのか?

Page 32: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

基本クエリー:誰が誰にレポートするのか?

Page 33: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

MATCH(sub)-[:REPORTS_TO*0..3]->(boss),(report)-[:REPORTS_TO*1..3]->(sub)WHEREboss.name=“JohnDoe”RETURNsub.nameASSubordinate,count(report)ASTotal

複雑なクエリーもCypher言語で簡単に表記、実行

ボスであるJohnDoeに直接レポート

する従業員を全て見つけ、各々が

何人の従業員を部下として持つの

か、その人数を下位レベル3つまで

抽出

Cypher言語によるクエリー

SQL言語によるクエリー

Page 34: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

“Neo4jが、従来のMySQLによるクエリーの数千倍も処理速度が速い、ということを発見した。同時に、そのクエリーのコード量は1/10から1/100に減った。Neo4jは、今までeBayが実現できなかった機能をもたらしてくれている。”VolkerPacherSeniorDeveloper

Page 35: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

Robertがレポートしている上位の従業員は誰か?

MATCH p=(e:Employee)<-[:REPORTS_TO*]-(sub:Employee)WHERE sub.firstName = ‘Robert’RETURN p

Page 36: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

Robertがレポートしている上位の従業員は誰か?

Page 37: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

一番のボスは誰か?

MATCH p=(e:Employee)WHERE NOT (e)<-[:REPORTS_TO]->()RETURN e.firstName as bigBoss

Page 38: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

一番のボスは誰か?

Page 39: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

クロスセル商品MATCH (choc:Product {productName: 'Chocolade'}) <-[:PRODUCT]-(:Order)<-[:SOLD]-(employee), (employee)-[:SOLD]->(o2)-[:PRODUCT]->(other:Product)RETURN employee.firstName, other.productName, count(distinct o2) as countORDER BY count DESCLIMIT 5;

‘Chocolade’という商品を販売した従業員が、さらにク

ロスセルで同じ顧客に販売した他の商品の商品名と、

その販売個数を多い順にリストアップする。

Page 40: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

クロスセル商品

Page 41: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

性能面での特徴

Page 42: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

Neo4jクラスター運用スケールアウト性能と可用性を重視したアーキテクチャ

42

性能面での強み•  クエリーの際にネットワーク間のホップは一切無し

•  リアルタイムのクエリー処理による、早く、そして安定した性能

•  キャッシュシャーディングにより大規模データベースをクラスタ間に分散

クラスター機能•  マスタ/スレーブ型のレプリカセット•  マスタ障害時の選挙トフェールオーバー機能も充実

•  各インスタンスは個々にローカルキャッシュを保有

•  水平スケーリング+障害対策

ロードバランサ

Neo4jNeo4jNeo4j

Page 43: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

Neo4jへのデータロード

Cypherによる“LOADCSV”機能•  ACID特性を持つトランザクションwrite•  1000万ノード+関係 データの移行が可能

コマンドラインによる、バルク処理neo4j-import•  初期的なデータ移行に有効•  100億ノード級のデータ移行が可能•  100レコード/病の性能が可能

458万件の辞書データを100秒でロード完了

Page 44: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

データをすべて移行

グラフデータのみ移行

データ多重化

グラフ以外のデータ グラフデータ

グラフデータ全データ

全データ

リレーショナルデータベース

グラフデータベース

アプリ

アプリ

アプリ

Neo4jでのデータ管理方法:3つのパターン

Page 45: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

PolyglotPersistence

Page 46: グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介

データストレージとビジネスルールの実行

データマイニングとアグリゲーション

Neo4jを既存のエンタプライズ環境に統合

アプリケーション

グラフデータベースクラスタ

Neo4j Neo4j Neo4j

アドホックな分析

データウェアハウスインフラ

GraphComputeEngineEDW…

データサイエンティスト

エンドユーザ

データベースRDB

NoSQLHadoop