Slide 1

Slide 1 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved MongoDBとNeo4jの選び方 (ドキュメントタイプとグラフタイプの選び方を纏めて解説) [“李 昌桓”,”LEE CHANGHWAN”] [“CREATIONLINE,INC”] [“2020-04-25”] 1

Slide 2

Slide 2 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved { 設立: [ "2006年1月", "140人ぐらい"], 事業概要 : [ "DevOps関連サービス事業", "ioTビックデータ分析事業", "サブスクリプション販売&サポート"], ホームページ: { url: "https://www.creationline.com" } } クリエーションライン株式会社 2

Slide 3

Slide 3 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 自己紹介 { 名前: [ “李 昌桓”, “LEE CHANGHWAN”, “@awk256”] , 職務: “データベースが大好きなサーバサイドのエンジニア。 IoTビックデータ分析基盤のアーキテクト、 MongoDBとNeo4jのテクニカルサポートなど” , 所属: { クリエーションライン : “www.creationline.com”, Neo4jユーザーグループ : “jp-neo4j-usersgroup.connpass.com” }, ブログ: [ “www.creationline.com/lab”, “www.qiita.com/aw256” ] 著書: [ “グラフデータベースNeo4jの他”, “www.amazon.co.jp/李昌桓/e/B004LWEKOU”] } 3

Slide 4

Slide 4 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved はじめに  データを取り巻く大変革  データベース大繁栄の時代  複数のタイプのデータベース利用は当たり前  MongoDBとは  Neo4jとは 4

Slide 5

Slide 5 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データを取り巻く大変革 1 ◼ データ爆発の時代的な背景  インターネットの登場、スマートフォンの登場、 クラウド・IoT・AIの登場 ◼ データのタイプの多様化  構造的なデータ、半構造的なデータ、非構造的なデータ ◼ データ構成が可変的  ゲーム、ECサイト、シングルビュー、SNS、スマホアプリ、IoT… ◼ データ構成は固定でも非常に数が多く、1イベント毎のアクティブなデータの数がとても 少ない  数百カラムが存在するが、一度に上がってくるデータは10数以下とか (IoT) 5

Slide 6

Slide 6 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データを取り巻く大変革 2 ◼ ボリュームの問題  直ぐ利用できる状態で大量に溜め込み必要がある  ソースデータ、中間データ、レポーティングデータなどさらに増える一方 ◼ 高速処理要求  ビックデータを高速処理にできること自体が価値にもなる ◼ 分析手段の大変革  ML、AI、 Graph ・・・ 6

Slide 7

Slide 7 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 獲物が豊富だと、同然、捕食者も繁栄 7

Slide 8

Slide 8 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 世界には、14種!355のDBMSが存在している(2020年4月) 8 https://db-engines.com/en/ranking

Slide 9

Slide 9 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved カテゴリ別のDBMSの数と割合(2020年4月) DBMSの数が実際のシェアではあいませんが、、 9 Relational DBMS 142 34.4% Key-value stores 64 15.5% Document stores 47 11.4% Time Series DBMS 33 8.0% Graph DBMS 32 7.7% Object oriented DBMS 21 5.1% Search engines 21 5.1% RDF stores 19 4.6% Multivalue DBMS 10 2.4% Wide column stores 10 2.4% Native XML DBMS 7 1.7% Event Stores 3 0.7% Content stores 2 0.5% Navigational DBMS 2 0.5%

Slide 10

Slide 10 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 2013年から2020年までの動向 10 グラフ タイムシリーズ ドキュメント リレーショナル キーバリュー

Slide 11

Slide 11 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データベースのタイプはデータモデルが決め手 データモデルはストレージエンジンの設計やクエリー言語開発のベースライン 11 ワイドカラム グラフ 001,title : “Neo4j” 001:price : 3000 001:Author : “李” 001:Phone : 1111 002:title : “MongoDB” 002:Price : 2000 002:Author : “田中” 002:Address : “横浜” { title : “NoSQL”, price : 3000, author : { name : “李”, phone: 110 }, publisher: { company: “秀和システム” } … } name : “李”, address : ‘東京’, Phone: 1111 Book Person WROTE title : “Neo4j”, price: 3000 ドキュメント(JSON) [Book] title,price Neo4j,3000 MongoDB,200 [Author] name,address,phone 李,NULL,1111 田中,横浜,NULL リレーションナル name : “田中”, address : ‘横浜’ title : “MongoDB”, price: 2000 列 行 MySQL PostgreSQL Cassandra MongoDB Neo4j

Slide 12

Slide 12 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 複数のタイプのデータベース利用は当たり前(IoTプロジェクトでの実体験) ◼ 異なるタイプのデータベースを適材適所に利用する  「データベース何にするか」、という言葉が消え、「データストア何にするか」、という言葉が定着した  常に最適なタイプの手段を見極めようとしている内に自然にこうなった ◼ 複数のタイプのデータベースを適材適所に利用することによって、 データ処理の効率を最適化する  ソースデータを集めて蓄積する手段を最適化  ソースデータを加工し、分析で利用できる中間データを生成する手段を最適化  分析結果のデータを格納する手段を最適化  データの構成などを格納する手段を最適化 12

Slide 13

Slide 13 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ドキュメントデータベース No.1 MongoDB 13 最も現代的なアーキテクチャー 最も洗練されたテクノロジー

Slide 14

Slide 14 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ MongoDB社 ◼ 2007年設立 ◼ 本社は米国ニューヨーク ◼ 100カ国以上で15,000社以上のエンタープライズの導入実績 (フォーチュン100の50%が導入) ◼ 20カ国で1000人以上の従業員 ◼ 60 million download MongoDB 14

Slide 15

Slide 15 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 設計・開発のスピードアップにコミットしたデータベース ◼ データモデル JSON(JavaScript Object Notation)の利便性、柔軟性 ◼ 過不足がないデータベース設計 Embedded Data Models(正), Normalized Data Models(副) ◼ スキーマレス 扱いの簡便さ MongoDBとは 15

Slide 16

Slide 16 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 全てのタイプのDBランキングで、RDB4強に次ぐ5位 16 https://db-engines.com/en/ranking

Slide 17

Slide 17 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 同タイプのDBランキングで圧倒的な1位 17 https://db-engines.com/en/ranking/document+store

Slide 18

Slide 18 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved オンプレミスからクラウドへ MongoDBファミリー 18

Slide 19

Slide 19 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ MongoDB Community(SSPL)  SLA付のサポートなし  OSS版でもクラスターの構築・運用可、ロールベースのユーザ特権管理可 ◼ MongoDB Enterprise Advanced(有償)  SLA付のサポート  運用管理ツール、ネットワークセキュリティー、 データ暗号化、監査ログ、インメモリエン ジン、BIサポート、アプリ開発など MongoDB Editionの種類 19

Slide 20

Slide 20 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データモデル ◼ JSON(JavaScript Object Notation)  普遍性→IT全般のデファクトスタンダード  分かり易く、柔軟  設計が簡単 20

Slide 21

Slide 21 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ RDB → Normalized Data Models ◼ MongoDB → Embedded Data Models, Normalized Data Models データモデリングの方法 1 21 本 -------------- 本ID タイトル 著者ID ページ 価格 … 著者 ----------------- 著者ID 名前 電話番号 … 本 { _id:”123 ”, タイトル:”Atlas ”, 著者 { 名前:”李”, 電話番号:”123-0000 ”, … }, ページ:”120 ” 価格:” 1200”, … } Normalized Data Models Embedded Data Models MongoDBは基本的にEmbedded Data Modelsが推奨 データ データ

Slide 22

Slide 22 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ RDB → Normalized Data Models ◼ MongoDB → Embedded Data Models, Normalized Data Models データモデリングの方法 2 22 本 -------------- 本ID タイトル 著者ID ページ 価格 … 著者 ----------------- 著者ID 名前 年齢 電話番号 … 本 { _id:”123 ”, タイトル:”Atlas ”, 著者ID: abc, ページ:”120 ” 価格:” 1200”, … } Normalized Data Models Normalized Data Models 著者 { 著者ID:”abc ”, 名前: ”李”, … }, 大量の重複を避けるためにNormalized Data Modelsも併用可能 データ データ

Slide 23

Slide 23 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved リレーショナルモデル 23

Slide 24

Slide 24 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ドキュメントモデル 24

Slide 25

Slide 25 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 登録は 自己紹介のドキュメントを食べさせてみます db.profile.insert( { 名前: [ "李 昌桓", "LEE CHANGHWAN", "@awk25" ] , 職務: "データベースが大好きなサーバサイドのエンジニア。 IoTビックデータ分析基盤のアーキテクト、MongoDBとNeo4jのテクニカル サポートなど", 所属: { company: "www.creationline.com", community: "jp-neo4j-usersgroup.connpass.com" }, ブログ: [ "www.creationline.com/lab", "www.qiita.com/aw256" ], 著書: [ "グラフデータベースNeo4jの他", "www.amazon.co.jp/李昌桓/e/B004LWEKOU"] } ) 25

Slide 26

Slide 26 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 検索は db.profile.find( { 名前 : { $in : [“李 昌桓”] } }).pretty() > db.profile.find( { 名前 : { $in : ["李 昌桓"] } }).pretty() { "_id" : ObjectId("5e4a6d34efbe3c59b153dc10"), "名前" : [ "李 昌桓", "LEE CHANGHWAN", "@awk25" ], "職務" : "データベースが大好きなサーバサイドのエンジニア。 IoTビックデータ分析基盤のアーキテクト、MongoDBとNeo4jのテクニカルサポートなど", "所属" : { "company" : "www.creationline.com", "community" : "jp-neo4j-usersgroup.connpass.com" }, "ブログ" : [ "www.creationline.com/lab", "www.qiita.com/aw256" ], "著書" : [ "グラフデータベースNeo4jの他", "www.amazon.co.jp/李昌桓/e/B004LWEKOU" ] } 26

Slide 27

Slide 27 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データ構造の比較 27 RDB MongoDB データベース(database) データベース(database) テーブル、表(table) コレクション(collection) ロウ、行(row) ドキュメント(document) カラム、列(column) フィルド(field)

Slide 28

Slide 28 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 一般的な特徴 28 区分 RDB MongoDB データモデル 表形式 JSON データベース設計 Normalized Data Models Embedded Data Models(主)、 Normalized Data Models(副) CRUD 〇 〇 プライマリキー 〇 〇 セカンダリインデックス 〇 〇 クエリ言語 標準SQL MQL(Mongo Query Language) ジョイン 〇 △(Left outer join) トランザクション処理 〇 〇(v4.x) 高可用性 〇 〇 水平分散 △ 〇 スキーマレス ✖ 〇

Slide 29

Slide 29 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ Internet of Things and Time Series (Bosch, Jaguar Land Rover) ◼ Mobile (The Weather Channel, ADP, Nationwide) ◼ eCommerce and Payment Processing (Cisco, Coinbase, 7-Eleven) ◼ Single View (MetLife, AO.com) ◼ Analytic and AI (City of Chicago, KPMG, Auto Trader) ◼ Personalization (Expedia, eHarmony) ◼ Catalogs (Under Armour, Otto) ◼ Gaming (EA, Sega) ◼ Mainframe Offload (Alight Solutions, Barclays) ◼ SNS アプリケーションシナリオ 29

Slide 30

Slide 30 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 誰が使っているのか 30

Slide 31

Slide 31 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved MongoDBを選ぶポイント 設計・開発のスピードアップにコミットしたデータベース 31 項目 リレーショナルタイプ ドキュメントタイプ データモデル 表形式 JSON データベース設計 正規化(主) 非正規化(主)+正規化(副) スキーマレス ✖ 〇 その他 大同小異

Slide 32

Slide 32 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved グラフデータベース No.1 Neo4j 32 Relations are everyware! Graphs are everyware!

Slide 33

Slide 33 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4j ◼ Neo4j社 ◼ 2007年創業 ◼ 米国シリコンバレー ◼ 世界で300社以上のエンタープライズの導入実績(グロバル2000社が150社) ◼ 教育期間が20,000校以上 ◼ 5カ国で250名以上の従業員 ◼ 15 million downloads 33

Slide 34

Slide 34 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 全てのタイプのDBランキングで、21位 34 https://db-engines.com/en/ranking

Slide 35

Slide 35 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 同タイプのデータベースランキングで1位 35

Slide 36

Slide 36 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4jとは 非常に「複雑なデータ処理」に特化したデータベース 36 実は、全てのデータは本質的にネットワーク構造である 繋がりはどんどん広がり、どんどん密になりつつある 分析の大半は繋がりを理解しようとしている

Slide 37

Slide 37 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved RDBとの分岐点 37 RDBは1SQLでの結合の数、Neo4jは繋がりの数 Neo4jが効率 的 RDBと 大差はない Neo4j RDB https://neo4j.com/blog/oracle-rdbms-neo4j-fully-sync-data/ レ ス ポ ン ス タ イ ム ( 秒 )

Slide 38

Slide 38 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4j’s Graph Platform 38 Neo4j Server(DBMS)を軸にしてグラフフラットフォームに進化しつつある neo4j-etl Bloom Graph Algorithms Procedure Bolt Driver Neo4j Stream RDB NoSQL Kafka connector 分析 開発 データ統合 運用

Slide 39

Slide 39 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ Neo4j Community(GPL v3)  SLA付のサポートなし  データ件数の制限(340億まで)  シングルデータベース ◼ Neo4j Enterprise (有償)  SLA付のサポート  データ件数の制限なし  マルチデータベース  メトリック、ホットバックアップ、高可用性、スケールアウト(v4.x)などのオプション Neo4j Editionの種類 39

Slide 40

Slide 40 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved リレーショナルモデル ◼ データの重複を徹底的に排除し、同種類のデータを2次元の表形式でまとめる ◼ MySQL,PostgreSQLなど 40 Book title price author pubisher Author name address phone Publisher name address phone

Slide 41

Slide 41 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved グラフモデル ◼ ノード(頂点): Author ◼ リレーションシップ(辺): WROTE, PUBHISH ◼ プロパティ: {name}, {tilte} 41 Author name:李 year:2016 isbn:xxx-xxx-xxx Book title:Neo4j Publisher Company:インプレス PUBLISH WRITE  クエリ言語→Cypher(サイファ―) CREATE (:Author{ name : '李' })-[:WRITE]->(:Book { title : 'Neo4j' }) MATCH (a: Author{ name : '李' })-[:WRITE]->(b:Book) RETURN a.name, b.title ノード リレーションシップ プロパティ プロパティ

Slide 42

Slide 42 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved The Basic JCIJ Data Model(パナマ文書) 42 Displaying 4 nodes, 322 relationships https://neo4j.com/sandbox/

Slide 43

Slide 43 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Crime Investigation 43 Displaying 11 nodes, 18 relationships. https://neo4j.com/sandbox/

Slide 44

Slide 44 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Network and IT Management 44 Displaying 17 nodes, 63 relationships. https://neo4j.com/sandbox/

Slide 45

Slide 45 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データ構造 ※トラバーサル Neo4jのリレーションシップは永続化され、検索時に始点ノードIDと終点ノードIDを繋ぐインデックスのような役 割を果たす 45 RDB Neo4j データベース(database) データベース(database) テーブル、表(table) ラベル(labels) ジョイン(join) クエリーで紐解く リレーションシップ(relationship) ※トラバーサル カラム、列(column) プロパティ(キー:バリュー)

Slide 46

Slide 46 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 一般的な特徴 46 区分 RDB Neo4j データモデルの特性 表形式 グラフ形式 データベース設計 Normalized Data Models グラフディザイン CRUD 〇 〇 プライマリキー 〇 〇 セカンダリインデックス 〇 〇 クエリ言語 標準SQL Cypher(サイファー) ジョイン 〇 ◎(リレーションシップ) トランザクション処理 〇 〇 高可用性 〇 〇 水平分散 △ 〇(データベースファブリック) v.4x スキーマレス ✖ 〇

Slide 47

Slide 47 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved アプリケーションシナリオ ◼ Real-Time Recommendations ◼ Master Data Management ◼ Identity and Access Management ◼ Network and IT Operations ◼ Fraud Detection ◼ Anti Money Laundering / Tax Evasion ◼ Graph-Based Search ◼ Knowledge Graphs ◼ Graph Analytics and Algorithms ◼ Graph-powered Artificial Intelligence ◼ Smart Homes ◼ Internet of Things / Internet of Connected Things 47

Slide 48

Slide 48 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 誰か使っているのか 48

Slide 49

Slide 49 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved NTT Comware様(IT Network and IT Operations) ◼ NTTグループ企業のネットワーク機器管理に向け「Neo4j」を採用 RDBの数百倍となる”超“高速検索により障害対応・保守の迅速化と品質向上を実現 49 https://www.creationline.com/clientvoice/case17

Slide 50

Slide 50 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4jを選ぶポイント とても複雑なリレーションを持つデータ処理にコミットしたデータベース 50 項目 リレーショナルタイプ ドキュメントタイプ データモデル 表形式 グラフ(頂点ノード) データベース設計 正規化 グラフデザイン スキーマレス ✖ 〇 クエリー可能性 ジョイン トラバーサル その他 大同小異

Slide 51

Slide 51 text

Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ご清聴ありがとうございました! 51