Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,779 views

Published on

Neo4jの簡単な紹介をして、さらに非常に関心度の高い、既存RDBからのデータ移行を絵解きで説明しています。MySQLでくっついてくる、Northwindサンプルデータを素材に、その手順を紹介します。

Published in: Technology

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

  1. 1. RDBMS から グラフDBへ グラフデータベースの可能性について Oc tober2015
  2. 2. アジェンダ •  Neo4jの歴史 •  グラフデータベースの特徴 •  エンタプライズアーキテクチャとpolyglot persistenceについて
  3. 3. Neo Technology社の紹介 製品 • Neo4j:世界で最も利用されてい るグラフDB • ダウンロード数 = 100万以上、毎 月、5万件の追加 • 顧客 = 150社以上(内、Global 2000は50社) 企業 • Neo4jの開発元 • 従業員= 100+ • 本社 = シリコンバレー、ロンドン、 ミュンヘン、パリ • 現時点の出資状況 = $45M (Fidelity, Sunstone, Conor, Creandum, Dawn Capital)
  4. 4. 業界別のNeo4j導入実績 金融 テレコム 医療 HR/
 リクルート メディア/ 出版 ソーシャル ウェブ ロジスティクス エンタメ コンシューマリテール ITシステム ビジネスサービス
  5. 5. Neo4jを利用したアプリケーション データセンタ 運用管理 MDM(マスター データ管理) ソーシャル レコメンデーション エンジン ID/アクセス 管理 検索
 ディスカバリ 地図情報 ナビゲーション
  6. 6. “Forresterは、25%以上のエンタプライズ企業が 2017年まで にグラフデータベースを採用する、と予測している” Neo4jの評価 “Neo4jはグラフデータベース業界において、間違いなく、 リーダー企業である、と言える。” “グラフデータ分析は、保有/生成する大量のデータを分析、そ してマネタイズしたい企業にとって、最も効果的な武器として位 置付けられる。” IT Market Clock for Database Management Systems, 2014 hKps://www.gartner.com/doc/2852717/it-market-clock-database-management TechRadar™: Enterprise DBMS, Q1 2014 hKp://www.forrester.com/TechRadar+Enterprise+DBMS+Q1+2014/fulltext/-/E-RES106801 Graph Databases – and Their PotenKal to Transform How We Capture Interdependencies (Enterprise Management Associates) hKp://blogs.enterprisemanagement.com/dennisdrogseth/2013/11/06/graph-databasesand-potenZal-transform-capture-interdependencies/
  7. 7. グラフデータベース業界における最大のエコシステム •  1,000,000+ のダウンロード •  20,000+人以上のトレーニング経験者 •  18,000+ ミートアップ参加メンバー •  100+ 社以上のパートナーネットワーク •  150+ 社のエンタプライズ顧客 (内、50社はGlobal 2000企業)
  8. 8. データの“関連性”における重要な価値を見出す データ量の急激な増大… •  新しいデータ発生源 •  オンライン処理の増大 •  ソーシャルネットワークの増大 •  デバイスの増加 このデータの関連性にこそ価値を見出す •  リアルタイム レコメンデーション •  不正アクセス/利用の検知 •  MDM(マスターデータ管理) •  ネットワーク/IT運用管理 •  ID/アクセス管理 •  グラフベースの検索 … それらの接続も同様に増大 ユーザ、製品、プロセス、デバイ ス同士の通信も増大  è データの関連性に重視 早くからグラフを採用した企業は成功してる
  9. 9. RDBは、“データ関連性”の管理が不得意 •  データ関連性のモデル化、管理はシステムを 急激に複雑化させる。 •  データ関連性が複雑化するとシステム性能が 急激に落ちる •  JOINの増加でクエリーが複雑化する •  新データタイプや関連性を追加するとスキーマ の再設計、再構築が必要になる。 … 特に、データ関連性が複雑なデータベースの リアルタイムでの運用が非常に困難になる。 開発期間の増大 性能問題 スケーラビリティ 運用管理が困難
  10. 10. データの“関連性”における重要な価値を見出す •  データと、その関連性を組み合わせ たグラフデータモデルを採用 •  リアルタイムでデータ関連性をアクセ ス、迅速なビジネス判断に活かす •  変化し続けるビジネスに対して新規 のデータ関連性を動的に追加
  11. 11. グラフデータベースのモデリング
  12. 12. ホワイトボードに描いたモデルがそのままグラフモデルに
  13. 13. CAR name: “Dan” born: May 29, 1970 twiKer: “@dan” name: “Ann” born: Dec 5, 1975 since: Jan 10, 2011 brand: “Volvo” model: “V70” グラフモデルのコンポーネント ノード •  データオブジェクトはグラフで表記 •  プロパティ情報も内包 •  ラベルも付ける事が可能 関係 •  ノード間の関係をタイプと方向性 で表記 •  プロパティ情報も内包 LOVES LOVES LIVES WITH PERSON PERSON
  14. 14. リレーショナルとグラフモデルの違い リレーショナルモデル グラフモデル 知人 のび太 しずか ジャイアン スネ夫 人 友人 人/友人関係 のび太 しずか スネ夫 ジャイアン
  15. 15. RDBからのグラフモデル化 顧客、サプライヤ、商品データ(マスターデータ) オーダー(受注活動)
  16. 16. RDB型の Northwindデータベースを作る! グラフ型の
  17. 17. (Northwind)-[:TO]->(Graph)
  18. 18. ドメインモデルは簡単だが、、、 社員 受注 商品 カテゴリー サプライヤ 所属 Northwindサンプルデータのグラフモデル
  19. 19. 複雑怪奇なER図…
  20. 20. まず、ノード間の関係を定義する 販売 従業員 Order 受注
  21. 21. 外部キーを見つける
  22. 22. (外部キー)-[:変化]->(関係) 方向性も適正化する
  23. 23. 外部キーを取り除く
  24. 24. ジョインテーブルを見つける
  25. 25. ジョインテーブルがそのまま関係データになる
  26. 26. 属性付きのジョインテーブルは、 プロパティ付きの関係データに変換
  27. 27. グラフ化されるデータの最終系
  28. 28. データへのクエリー
  29. 29. 基本クエリー: 誰が誰にレポートするのか? MATCH (:Employee{ firstName:“Steven”} ) -[:REPORTS_TO]-> (:Employee{ firstName:“Andrew”} ) REPORTS_TO Steven Andrew ラベル プロパティ ノード ノード ラベル プロパティ
  30. 30. 基本クエリー:誰が誰にレポートするのか? MATCH (e:Employee)<-[:REPORTS_TO]-(sub:Employee) RETURN *
  31. 31. 基本クエリー:誰が誰にレポートするのか?
  32. 32. 基本クエリー:誰が誰にレポートするのか?
  33. 33. MATCH (sub)-[:REPORTS_TO*0..3]->(boss), (report)-[:REPORTS_TO*1..3]->(sub) WHERE boss.name = “John Doe” RETURN sub.name AS Subordinate, count(report) AS Total 複雑なクエリーもCypher言語で簡単に表記、実行 ボスであるJohn Doeに直接レポート する従業員を全て見つけ、各々が 何人の従業員を部下として持つの か、その人数を下位レベル3つまで 抽出 Cypher言語によるクエリー SQL言語によるクエリー
  34. 34. “Neo4jが、従来のMySQLによるクエリーの数千倍も処理 速度が速い、ということを発見した。同時に、そのクエ リーのコード量は1/10から1/100に減った。Neo4jは、 今までeBayが実現できなかった機能をもたらしてくれて いる。” Volker Pacher Senior Developer
  35. 35. Robertがレポートしている上位の従業員は誰か? MATCH p=(e:Employee)<-[:REPORTS_TO*]-(sub:Employee) WHERE sub.firstName = ‘Robert’ RETURN p
  36. 36. Robertがレポートしている上位の従業員は誰か?
  37. 37. 一番のボスは誰か? MATCH p=(e:Employee) WHERE NOT (e)<-[:REPORTS_TO]->() RETURN e.firstName as bigBoss
  38. 38. 一番のボスは誰か?
  39. 39. クロスセル商品 MATCH (choc:Product {productName: 'Chocolade'}) <-[:PRODUCT]-(:Order)<-[:SOLD]-(employee), (employee)-[:SOLD]->(o2)-[:PRODUCT]->(other:Product) RETURN employee.firstName, other.productName, count(distinct o2) as count ORDER BY count DESC LIMIT 5; ‘Chocolade’という商品を販売した従業員が、さらにク ロスセルで同じ顧客に販売した他の商品の商品名と、 その販売個数を多い順にリストアップする。
  40. 40. クロスセル商品
  41. 41. 性能面での特徴
  42. 42. Neo4j クラスター運用 スケールアウト性能と可用性を重視したアーキテクチャ 42 性能面での強み •  クエリーの際にネットワーク間のホップは 一切無し •  リアルタイムのクエリー処理による、早く、 そして安定した性能 •  キャッシュシャーディングにより大規模 データベースをクラスタ間に分散 クラスター機能 •  マスタ/スレーブ型のレプリカセット •  マスタ障害時の選挙トフェールオーバー 機能も充実 •  各インスタンスは個々にローカルキャッ シュを保有 •  水平スケーリング+障害対策 ロードバランサ Neo4j Neo4j Neo4j
  43. 43. Neo4jへのデータロード Cypherによる “LOAD CSV” 機能 •  ACID特性を持つトランザクションwrite •  1000万ノード+関係 データの移行が可能 コマンドラインによる、バルク処理 neo4j-import •  初期的なデータ移行に有効 •  100億ノード級のデータ移行が可能 •  100レコード/病の性能が可能 458万件の辞書データ を100秒でロード完了
  44. 44. データを すべて移行 グラフデータ のみ移行 データ 多重化 グラフ以外のデータ グラフデータ グラフデータ 全データ 全データ リレーショナル データベース グラフ データベース アプリ アプリ アプリ Neo4jでのデータ管理方法:3つのパターン
  45. 45. Polyglot Persistence
  46. 46. データストレージと ビジネスルールの実行 データマイニングと アグリゲーション Neo4jを既存のエンタプライズ環境に統合 アプリケー ション グラフデータベースクラスタ Neo4j Neo4j Neo4j アドホックな 分析 データウェアハウス インフラ Graph Compute Engine EDW … データ サイエンティスト エンド ユーザ データベース RDB NoSQL Hadoop

×