Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MongoDBとNeo4jの選び方

7fbed5de4418ca82ad7eb64d66bedb2c?s=47 awk256
April 24, 2020

 MongoDBとNeo4jの選び方

複数のタイプのデータベースが混在するシステムが当たり前の時代、データベースの適材適所が問われています。このスライドでは、最も現代的なアーキテクチャー及び最も洗練されたテクノロジーを駆使しているMongoDBとNeo4jの選び方を纏めて紹介します。

・データを取り巻く大変革
・データベース大繁栄の時代
・複数のタイプのデータベース利用は当たり前
・MongoDBとは
・Neo4jとは

7fbed5de4418ca82ad7eb64d66bedb2c?s=128

awk256

April 24, 2020
Tweet

More Decks by awk256

Other Decks in Technology

Transcript

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

    昌桓”,”LEE CHANGHWAN”] [“CREATIONLINE,INC”] [“2020-04-25”] 1
  2. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved { 設立: [

    "2006年1月", "140人ぐらい"], 事業概要 : [ "DevOps関連サービス事業", "ioTビックデータ分析事業", "サブスクリプション販売&サポート"], ホームページ: { url: "https://www.creationline.com" } } クリエーションライン株式会社 2
  3. 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
  4. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved はじめに  データを取り巻く大変革

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

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

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

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

  9. 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%
  10. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 2013年から2020年までの動向 10 グラフ

    タイムシリーズ ドキュメント リレーショナル キーバリュー
  11. 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
  12. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 複数のタイプのデータベース利用は当たり前(IoTプロジェクトでの実体験) ◼ 異なるタイプのデータベースを適材適所に利用する

     「データベース何にするか」、という言葉が消え、「データストア何にするか」、という言葉が定着した  常に最適なタイプの手段を見極めようとしている内に自然にこうなった ◼ 複数のタイプのデータベースを適材適所に利用することによって、 データ処理の効率を最適化する  ソースデータを集めて蓄積する手段を最適化  ソースデータを加工し、分析で利用できる中間データを生成する手段を最適化  分析結果のデータを格納する手段を最適化  データの構成などを格納する手段を最適化 12
  13. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ドキュメントデータベース No.1 MongoDB

    13 最も現代的なアーキテクチャー 最も洗練されたテクノロジー
  14. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ MongoDB社 ◼

    2007年設立 ◼ 本社は米国ニューヨーク ◼ 100カ国以上で15,000社以上のエンタープライズの導入実績 (フォーチュン100の50%が導入) ◼ 20カ国で1000人以上の従業員 ◼ 60 million download MongoDB 14
  15. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 設計・開発のスピードアップにコミットしたデータベース ◼ データモデル

    JSON(JavaScript Object Notation)の利便性、柔軟性 ◼ 過不足がないデータベース設計 Embedded Data Models(正), Normalized Data Models(副) ◼ スキーマレス 扱いの簡便さ MongoDBとは 15
  16. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 全てのタイプのDBランキングで、RDB4強に次ぐ5位 16 https://db-engines.com/en/ranking

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

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

  19. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ MongoDB Community(SSPL)

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

    Object Notation)  普遍性→IT全般のデファクトスタンダード  分かり易く、柔軟  設計が簡単 20
  21. 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が推奨 データ データ
  22. 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も併用可能 データ データ
  23. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved リレーショナルモデル 23

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

  25. 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
  26. 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
  27. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データ構造の比較 27 RDB

    MongoDB データベース(database) データベース(database) テーブル、表(table) コレクション(collection) ロウ、行(row) ドキュメント(document) カラム、列(column) フィルド(field)
  28. 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) 高可用性 〇 〇 水平分散 △ 〇 スキーマレス ✖ 〇
  29. 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
  30. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 誰が使っているのか 30

  31. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved MongoDBを選ぶポイント 設計・開発のスピードアップにコミットしたデータベース 31

    項目 リレーショナルタイプ ドキュメントタイプ データモデル 表形式 JSON データベース設計 正規化(主) 非正規化(主)+正規化(副) スキーマレス ✖ 〇 その他 大同小異
  32. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved グラフデータベース No.1 Neo4j

    32 Relations are everyware! Graphs are everyware!
  33. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4j ◼ Neo4j社

    ◼ 2007年創業 ◼ 米国シリコンバレー ◼ 世界で300社以上のエンタープライズの導入実績(グロバル2000社が150社) ◼ 教育期間が20,000校以上 ◼ 5カ国で250名以上の従業員 ◼ 15 million downloads 33
  34. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 全てのタイプのDBランキングで、21位 34 https://db-engines.com/en/ranking

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

  36. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4jとは 非常に「複雑なデータ処理」に特化したデータベース 36

    実は、全てのデータは本質的にネットワーク構造である 繋がりはどんどん広がり、どんどん密になりつつある 分析の大半は繋がりを理解しようとしている
  37. 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/ レ ス ポ ン ス タ イ ム ( 秒 )
  38. 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 分析 開発 データ統合 運用
  39. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ◼ Neo4j Community(GPL

    v3)  SLA付のサポートなし  データ件数の制限(340億まで)  シングルデータベース ◼ Neo4j Enterprise (有償)  SLA付のサポート  データ件数の制限なし  マルチデータベース  メトリック、ホットバックアップ、高可用性、スケールアウト(v4.x)などのオプション Neo4j Editionの種類 39
  40. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved リレーショナルモデル ◼ データの重複を徹底的に排除し、同種類のデータを2次元の表形式でまとめる

    ◼ MySQL,PostgreSQLなど 40 Book title price author pubisher Author name address phone Publisher name address phone
  41. 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 ノード リレーションシップ プロパティ プロパティ
  42. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved The Basic JCIJ

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

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

    Management 44 Displaying 17 nodes, 63 relationships. https://neo4j.com/sandbox/
  45. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved データ構造 ※トラバーサル Neo4jのリレーションシップは永続化され、検索時に始点ノードIDと終点ノードIDを繋ぐインデックスのような役

    割を果たす 45 RDB Neo4j データベース(database) データベース(database) テーブル、表(table) ラベル(labels) ジョイン(join) クエリーで紐解く リレーションシップ(relationship) ※トラバーサル カラム、列(column) プロパティ(キー:バリュー)
  46. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 一般的な特徴 46 区分

    RDB Neo4j データモデルの特性 表形式 グラフ形式 データベース設計 Normalized Data Models グラフディザイン CRUD 〇 〇 プライマリキー 〇 〇 セカンダリインデックス 〇 〇 クエリ言語 標準SQL Cypher(サイファー) ジョイン 〇 ◎(リレーションシップ) トランザクション処理 〇 〇 高可用性 〇 〇 水平分散 △ 〇(データベースファブリック) v.4x スキーマレス ✖ 〇
  47. 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
  48. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved 誰か使っているのか 48

  49. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved NTT Comware様(IT Network

    and IT Operations) ◼ NTTグループ企業のネットワーク機器管理に向け「Neo4j」を採用 RDBの数百倍となる”超“高速検索により障害対応・保守の迅速化と品質向上を実現 49 https://www.creationline.com/clientvoice/case17
  50. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved Neo4jを選ぶポイント とても複雑なリレーションを持つデータ処理にコミットしたデータベース 50

    項目 リレーショナルタイプ ドキュメントタイプ データモデル 表形式 グラフ(頂点ノード) データベース設計 正規化 グラフデザイン スキーマレス ✖ 〇 クエリー可能性 ジョイン トラバーサル その他 大同小異
  51. Copyright ⓒ2020 CREATIONLINE, INC. All Rights Reserved ご清聴ありがとうございました! 51