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

N:Nツリー構造データにおけるグラフDB活用

 N:Nツリー構造データにおけるグラフDB活用

Yasuhiro Murata

July 21, 2022
Tweet

More Decks by Yasuhiro Murata

Other Decks in Technology

Transcript

  1. Copyright ©2022 by Future Corporation はじめまして 村田 靖拓 (むらた やすひろ)

    • 新卒でFutureへ入社 • Future Value Group 所属 • フロントエンド畑で育ち、以後クラウドインフラベースでIoT案件に 関わる • CCoE : Google Cloud パートナーアライアンスリード • テクマーケ : Future Tech Castパーソナリティ @famipapamart
  2. Copyright ©2022 by Future Corporation よくあるアプローチ – 隣接リスト n 「自身の親(あるいは子)は誰か」の情報をそれぞれ保有する。

    部品ID 親ID ・・・ A - ・・・ B - ・・・ C A ・・・ C B ・・・ D - ・・・ E D ・・・ F C ・・・ F E ・・・ 場合により パフォーマンス懸念あり?!
  3. Copyright ©2022 by Future Corporation よくあるアプローチ – 閉包テーブル n 「先祖

    – 子孫」の関係性情報を別途保有する。 先祖ID 子孫ID A C A F A G ・・・ ・・・ E F E G E H ・・・ ・・・ E M “経路”が取得できるわけじゃない
  4. Copyright ©2022 by Future Corporation Cypherクエリによる検索 n 経由地も含めた情報が欲しい = パス検索

    MATCH path=()-[:made_from*0..]->(p:Product)-[:made_from*0..]->() WHERE p.product_id = ”${target_id}" RETURN path; n 以下のpathを取得 – A〜B – A〜B〜C – A〜B〜D – A〜B〜D〜E – B〜B – B〜C – B〜D – B〜D〜E 経由地がとれた!けど...
  5. Copyright ©2022 by Future Corporation Cypherクエリによる検索 n 本来欲しいのは、2つの経路だけ。 n 欲しい経路

    – A〜B – A〜B〜C – A〜B〜D – A〜B〜D〜E – B〜B – B〜C – B〜D – B〜D〜E A B C D E
  6. Copyright ©2022 by Future Corporation Cypherクエリによる検索 n 無事に2つの経路のみ取得することに成功。 n 取得できた経路

    – A〜B – A〜B〜C – A〜B〜D – A〜B〜D〜E – B〜B – B〜C – B〜D – B〜D〜E A B C D E