Upload
ippeisuzuki
View
2.136
Download
2
Embed Size (px)
Citation preview
RDBMSから グラフDBへグラフデータベースの可能性について
October2015
アジェンダ
• Neo4jの歴史• グラフデータベースの特徴• エンタプライズアーキテクチャとpolyglotpersistenceについて
NeoTechnology社の紹介
製品• Neo4j:世界で最も利用されてい
るグラフDB• ダウンロード数=100万以上、毎
月、5万件の追加• 顧客=150社以上(内、Global2000は50社)
企業• Neo4jの開発元• 従業員=100+• 本社=シリコンバレー、ロンドン、
ミュンヘン、パリ• 現時点の出資状況 =$45M
(Fidelity,Sunstone,Conor,Creandum,DawnCapital)
業界別のNeo4j導入実績金融 テレコム 医療 HR/
リクルート メディア/
出版 ソーシャル
ウェブ ロジスティクス
エンタメ コンシューマリテール ITシステム ビジネスサービス
Neo4jを利用したアプリケーションデータセンタ
運用管理 MDM(マスター
データ管理) ソーシャル レコメンデーション エンジン
ID/アクセス 管理
検索ディスカバリ
地図情報 ナビゲーション
“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/
グラフデータベース業界における最大のエコシステム
• 1,000,000+のダウンロード• 20,000+人以上のトレーニング経験者• 18,000+ミートアップ参加メンバー• 100+社以上のパートナーネットワーク• 150+社のエンタプライズ顧客
(内、50社はGlobal2000企業)
データの“関連性”における重要な価値を見出す
データ量の急激な増大…• 新しいデータ発生源• オンライン処理の増大• ソーシャルネットワークの増大• デバイスの増加
このデータの関連性にこそ価値を見出す• リアルタイム レコメンデーション• 不正アクセス/利用の検知• MDM(マスターデータ管理)• ネットワーク/IT運用管理• ID/アクセス管理• グラフベースの検索…それらの接続も同様に増大
ユーザ、製品、プロセス、デバイス同士の通信も増大 è データの関連性に重視
早くからグラフを採用した企業は成功してる
RDBは、“データ関連性”の管理が不得意
• データ関連性のモデル化、管理はシステムを急激に複雑化させる。
• データ関連性が複雑化するとシステム性能が急激に落ちる
• JOINの増加でクエリーが複雑化する• 新データタイプや関連性を追加するとスキーマの再設計、再構築が必要になる。
…特に、データ関連性が複雑なデータベースのリアルタイムでの運用が非常に困難になる。
開発期間の増大性能問題
スケーラビリティ運用管理が困難
データの“関連性”における重要な価値を見出す
• データと、その関連性を組み合わせ
たグラフデータモデルを採用
• リアルタイムでデータ関連性をアクセ
ス、迅速なビジネス判断に活かす
• 変化し続けるビジネスに対して新規
のデータ関連性を動的に追加
グラフデータベースのモデリング
ホワイトボードに描いたモデルがそのままグラフモデルに
CAR
name:“Dan”born:May29,1970twiKer:“@dan”
name:“Ann”born:Dec5,1975
since:Jan10,2011
brand:“Volvo”model:“V70”
グラフモデルのコンポーネント
ノード• データオブジェクトはグラフで表記• プロパティ情報も内包• ラベルも付ける事が可能
関係• ノード間の関係をタイプと方向性
で表記• プロパティ情報も内包
LOVES
LOVES
LIVESWITHPERSON PERSON
リレーショナルとグラフモデルの違い
リレーショナルモデル グラフモデル
知人のび太
しずか
ジャイアン
スネ夫
人 友人人/友人関係
のび太しずか
スネ夫
ジャイアン
RDBからのグラフモデル化
顧客、サプライヤ、商品データ(マスターデータ)オーダー(受注活動)
RDB型のNorthwindデータベースを作る!
グラフ型の
(Northwind)-[:TO]->(Graph)
ドメインモデルは簡単だが、、、
社員
受注
商品
カテゴリー
サプライヤ
所属
Northwindサンプルデータのグラフモデル
複雑怪奇なER図…
まず、ノード間の関係を定義する
販売
従業員 Order受注
外部キーを見つける
(外部キー)-[:変化]->(関係)方向性も適正化する
外部キーを取り除く
ジョインテーブルを見つける
ジョインテーブルがそのまま関係データになる
属性付きのジョインテーブルは、プロパティ付きの関係データに変換
グラフ化されるデータの最終系
データへのクエリー
基本クエリー:誰が誰にレポートするのか?
MATCH(:Employee{firstName:“Steven”})-[:REPORTS_TO]->(:Employee{firstName:“Andrew”})
REPORTS_TOSteven Andrew
ラベル プロパティ
ノード ノード
ラベル プロパティ
基本クエリー:誰が誰にレポートするのか?
MATCH (e:Employee)<-[:REPORTS_TO]-(sub:Employee)RETURN *
基本クエリー:誰が誰にレポートするのか?
基本クエリー:誰が誰にレポートするのか?
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言語によるクエリー
“Neo4jが、従来のMySQLによるクエリーの数千倍も処理速度が速い、ということを発見した。同時に、そのクエリーのコード量は1/10から1/100に減った。Neo4jは、今までeBayが実現できなかった機能をもたらしてくれている。”VolkerPacherSeniorDeveloper
Robertがレポートしている上位の従業員は誰か?
MATCH p=(e:Employee)<-[:REPORTS_TO*]-(sub:Employee)WHERE sub.firstName = ‘Robert’RETURN p
Robertがレポートしている上位の従業員は誰か?
一番のボスは誰か?
MATCH p=(e:Employee)WHERE NOT (e)<-[:REPORTS_TO]->()RETURN e.firstName as bigBoss
一番のボスは誰か?
クロスセル商品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’という商品を販売した従業員が、さらにク
ロスセルで同じ顧客に販売した他の商品の商品名と、
その販売個数を多い順にリストアップする。
クロスセル商品
性能面での特徴
Neo4jクラスター運用スケールアウト性能と可用性を重視したアーキテクチャ
42
性能面での強み• クエリーの際にネットワーク間のホップは一切無し
• リアルタイムのクエリー処理による、早く、そして安定した性能
• キャッシュシャーディングにより大規模データベースをクラスタ間に分散
クラスター機能• マスタ/スレーブ型のレプリカセット• マスタ障害時の選挙トフェールオーバー機能も充実
• 各インスタンスは個々にローカルキャッシュを保有
• 水平スケーリング+障害対策
ロードバランサ
Neo4jNeo4jNeo4j
Neo4jへのデータロード
Cypherによる“LOADCSV”機能• ACID特性を持つトランザクションwrite• 1000万ノード+関係 データの移行が可能
コマンドラインによる、バルク処理neo4j-import• 初期的なデータ移行に有効• 100億ノード級のデータ移行が可能• 100レコード/病の性能が可能
458万件の辞書データを100秒でロード完了
データをすべて移行
グラフデータのみ移行
データ多重化
グラフ以外のデータ グラフデータ
グラフデータ全データ
全データ
リレーショナルデータベース
グラフデータベース
アプリ
アプリ
アプリ
Neo4jでのデータ管理方法:3つのパターン
PolyglotPersistence
データストレージとビジネスルールの実行
データマイニングとアグリゲーション
Neo4jを既存のエンタプライズ環境に統合
アプリケーション
グラフデータベースクラスタ
Neo4j Neo4j Neo4j
アドホックな分析
データウェアハウスインフラ
GraphComputeEngineEDW…
データサイエンティスト
エンドユーザ
データベースRDB
NoSQLHadoop