ã°ã©ã ããŒã¿ããŒã¹ã¯ãããŒã¿éã®è€éãªãªã¬ãŒã·ã§ã³ã·ãããæ ŒçŽããã³ç §äŒããããã®äžè¬çãªãœãªã¥ãŒã·ã§ã³ã«ãªã£ãŠããŸãã ã°ã©ã ããŒã¿ã®éãå¢ããé«ãåæå®è¡æ§ã®å¿ èŠæ§ãé«ãŸãã«ã€ããŠãã¹ã±ãŒã«ãåŠçããããã«åæ£ã°ã©ã ããŒã¿ããŒã¹ãäžå¯æ¬ ã§ãã
ãã ããããŒã¿ãèªåçã«ã·ã£ãŒãåãã忣ã°ã©ã ããŒã¿ããŒã¹ãèŠã€ããªãããåºç€ãšãªãã¹ãã¬ãŒãžããµãŒãã¹ã®ã¢ãŒããã¯ãã£ããŸãã¯ã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã倿ŽããããšãªããäŒæ¥ãå°èŠæš¡ããå ãšããž ã¬ãã«ãŸã§æ¡åŒµã§ããããã«ããããšã¯ãå°é£ãªå ŽåããããŸããÂ
ãã®èšäºã§ã¯ãçµç¹ããããã®èª²é¡ã«å¯ŸåŠããã®ã«åœ¹ç«ã€ææ°ã®ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ã§ããNebulaGraphã«ã€ããŠèª¬æããŸãã

æé²ã°ã©ãã«äŒã
NebulaGraph ã¯ãææ°ã®ãªãŒãã³ãœãŒã¹ã®ã¯ã©ãŠããã€ãã£ãã°ã©ãããŒã¿ããŒã¹ã§ãããã¹ã±ãŒã©ããªãã£ã®äœããåŸ æ©æéã®é·ãã¹ã«ãŒãããã®äœäžãªã©ãåŸæ¥ã®ã°ã©ãããŒã¿ããŒã¹ã®å¶éã«å¯ŸåŠããããã«èšèšãããŠããŸãã NebulaGraphã¯ãŸããéåžžã«ã¹ã±ãŒã©ãã«ã§æè»æ§ããããå°èŠæš¡ããå ãšããžã¬ãã«ãŸã§ã®å€§èŠæš¡ãªã°ã©ãããŒã¿ãåŠçã§ããŸãã
NebulaGraphã¯ã2018幎以æ¥ãããŒã«ãšãµããŒãã®è±å¯ãªãšã³ã·ã¹ãã ãšãšãã«ã 1000人以äžã®ãšã³ã¿ãŒãã©ã€ãºãŠãŒã¶ãŒã® ç¹æ ããã³ãã¥ããã£ãæ§ç¯ããŠããŸããã ãããã®å©ç¹ã«ãããã°ã©ãããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãæ€èšããŠããçµç¹ã«ãšã£ãŠã¯è²»çšå¯Ÿå¹æã®é«ããœãªã¥ãŒã·ã§ã³ã§ãããéçºè ãããŒã¿ãµã€ãšã³ãã£ã¹ãã«ãšã£ãŠã¯åªããåŠç¿ãªãœãŒã¹ã«ãªããŸãã
NebulaGraphã¯ã©ãŠããã€ãã£ãããŒã¿ããŒã¹ã¯ãã¯ã©ãŠãç°å¢ã§ã®å±éãšç®¡çã容æã«ããããã® Kubernetesãªãã¬ãŒã¿ãŒ ãæäŸããŸãã ãã®æ©èœã¯ãã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã¹ã±ãŒã©ããªãã£ãšæè»æ§ã掻çšããããšããŠããçµç¹ã«æé©ã§ãã
æé²ã°ã©ãããŒã¿ããŒã¹ã®ã¢ãŒããã¯ãã£
NebulaGraphã¯ãã°ã©ããµãŒãã¹ãã¹ãã¬ãŒãžãµãŒãã¹ãã¡ã¿ãµãŒãã¹ã®3ã€ã®ãµãŒãã¹ã§æ§æãããŠããŸã(å³1)ã ã¹ããŒãã¬ã¹ ããã»ã¹ (æé²ã°ã©ã) ã§æ§æãããã°ã©ã ãµãŒãã¹ã¯ãã°ã©ã ã¯ãšãªãæ åœããŸãã ã¹ãã¬ãŒãžãµãŒãã¹(æé²ã¹ãã¬ãŒãž)ã¯ãã°ã©ãããŒã¿ãæ°žç¶çã«ä¿åãã忣(ã©ãã)ã¹ãã¬ãŒãžã¬ã€ã€ãŒã§ãã MetaãµãŒãã¹ã¯ããŠãŒã¶ãŒã¢ã«ãŠã³ããã¹ããŒãæ å ±ãããã³ãžã§ã管çã®ç®¡çãæ åœããŸãã ãã®èšèšã«ãããNebulaGraphã¯åªããã¹ã±ãŒã©ããªãã£ãé«å¯çšæ§ãè²»çšå¯Ÿå¹æãããã³æ¡åŒµæ§ãæäŸããŸãã

ãªãããã¥ã©ã°ã©ããªã®ã?
NebulaGraphã¯ããã®ã¢ãŒããã¯ãã£ãšèšèšã«ããã髿§èœãã¹ã±ãŒã©ããªãã£ãããã³è²»çšå¯Ÿå¹æãå®çŸãããããã°ã©ãããŒã¿ããŒã¹ã®ããŒãºã«æé©ã§ãã ãã®ã¢ãŒããã¯ãã£ã¯ãã¹ãã¬ãŒãžãšã³ã³ãã¥ãŒãã£ã³ã° ã¢ãŒããã¯ãã£ã®åé¢ã«åŸã£ãŠãããæ¬¡ã®å©ç¹ããããŸãã
- èªåã·ã£ãŒãã£ã³ã°:NebulaGraphã¯ã°ã©ãããŒã¿ãèªåçã«ã·ã£ãŒãã£ã³ã°ãããããäŒæ¥ã¯åºç€ãšãªãã¹ãã¬ãŒãžãã¢ãŒããã¯ãã£ããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã倿Žããããšãªããå°èŠæš¡ãã1å ãšããžã¬ãã«ã®ããŒã¿ããªã¥ãŒã ã«æ¡åŒµã§ããŸãã
- 髿§èœ:æé©åãããã¢ãŒããã¯ãã£ãšèšèšã«ãããNebulaGraphã¯è€éãªã°ã©ãã¯ãšãªãšãã©ããŒãµã«æäœã«é«ãããã©ãŒãã³ã¹ãæäŸããŸãã
- é«å¯çšæ§: Graph ãµãŒãã¹ã®äžéšã«é害ãçºçããŠããã¹ãã¬ãŒãž ãµãŒãã¹ã«ãã£ãŠæ ŒçŽãããããŒã¿ã¯ãã®ãŸãŸæ®ããŸãã
- æè»æ§: NebulaGraphã¯ããããã£ã°ã©ãããµããŒãããè€éãªã°ã©ãã¯ãšãªãšãã©ããŒãµã«æäœããµããŒãããæé²ã°ã©ãã¯ãšãªèšèª(nGQL)ãšåŒã°ãã匷åãªã¯ãšãªèšèªãæäŸããŸããÂ
- API ã®ãµããŒã: 忣ã·ã¹ãã å ã®ä»ã®ããŒã«ããµãŒãã¹ãšã®çµ±åãå¯èœã«ããããŸããŸãª API ãšã³ãã¯ã¿ãæäŸããŸãã
ãªãããã¥ã©ã°ã©ããããã«ãŒæ¡åŒµæ©èœãšããŠå®è¡ããã®ã§ãã?
æ¬çªç°å¢ã§ã¯ãNebulaGraphãKubernetesãŸãã¯ã¯ã©ãŠãã«ãããã€ã§ãããããã¯ã©ã¹ã¿ãŒã®ç®¡çãšã¡ã³ããã³ã¹ã®è€éãããŠãŒã¶ãŒããé ãããšãã§ããŸãã ãã ããéçºããã¹ããããã³åŠç¿ã®ç®çã§ããã¹ã¯ããããŸãã¯ããŒã«ã«ç°å¢ã«NebulaGraphã¯ã©ã¹ã¿ãŒãã»ããã¢ããããããšã¯ãç¹ã«ã³ã³ãããã³ãã³ãã©ã€ã³ããŒã«ã«æ £ããŠããªããŠãŒã¶ãŒã«ãšã£ãŠã¯ãäŸç¶ãšããŠå°é£ã§ã³ã¹ãã®ãããããã»ã¹ã«ãªãå¯èœæ§ããããŸãã
ãããããã¥ã©ã°ã©ãããã«ãŒãšã¯ã¹ãã³ã·ã§ã³ã®åºçªã§ãã æ°åã¯ãªãã¯ããã ãã§å®å šã«æ©èœããNebulaGraphã¯ã©ã¹ã¿ãŒãã»ããã¢ããããããã®ãšã¬ã¬ã³ãã§äœ¿ãããããœãªã¥ãŒã·ã§ã³ãæäŸããéçºè ãããŒã¿ãµã€ãšã³ãã£ã¹ããããã³NebulaGraphãåŠã³ãå®éšãããäººã«æé©ã§ãã
Docker Desktop ã§ã® NebulaGraph ã®äœ¿çšãéå§ãã
ã»ããã¢ãã
åææ¡ä»¶: Docker ãã¹ã¯ããã 4.10 以éã
ã¹ããã 1: Docker æ¡åŒµæ©èœãæå¹ã«ãã
Docker ãã¹ã¯ãããã® [èšå®] ã¿ãã§ Docker æ¡åŒµæ©èœãæå¹ã«ããå¿ èŠããããŸãã Docker ãã¹ã¯ãããå ã§ã Docker æ¡åŒµæ©èœ ãæå¹ã«ãªã£ãŠããããšã確èªããŸã (å³ 2)ã [èšå®] > [æ¡åŒµæ©èœ] ã«ç§»åãã[Docker æ¡åŒµæ©èœãæå¹ã«ãã] ãéžæããŸãã

ãã¹ãŠã®Dockeræ¡åŒµæ©èœãªãœãŒã¹ã¯ããã©ã«ãã§é衚瀺ã«ãªã£ãŠããããããã®å¯èŠæ§ã確ä¿ããã«ã¯ã[ èšå®]>[ æ¡åŒµæ©èœ]ã«ç§»åãã[ Dockeræ¡åŒµæ©èœã®è¡šç€º]ã·ã¹ãã ã³ã³ããã確èªããŸãã
ã¹ããã2:ããã¥ã©ã°ã©ãããã«ãŒæ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãã
NebulaGraph æ¡åŒµæ©èœã¯ãDocker Desktop ã® Extensions Marketplace ããã³ Docker Hub ããå ¥æã§ããŸãã éå§ããã«ã¯ãæ¡åŒµæ©èœããŒã±ãããã¬ã€ã¹ã§NebulaGraphãæ€çŽ¢ãã[ ã€ã³ã¹ããŒã« ]ãéžæããŸã(å³3)ã

ãã®æé ã§ã¯ãææ°ããŒãžã§ã³ã®NebulaGraphããã«ãŒæ¡åŒµæ©èœãDocker HubããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸãã ã€ã³ã¹ããŒã«ããã»ã¹ã確èªããã«ã¯ã[ 詳现 ]ãã¯ãªãã¯ããŸã(å³4)ã

ã¹ããã 3: ã¯ã©ã¹ã¿ãŒã皌åããã®ãåŸ æ©ãã
æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãããåŸãæåã®å®è¡ã§ã¯ãã¯ã©ã¹ã¿ãŒãå®å šã«æ©èœãããŸã§ã«éåžž 5 åæªæºããããŸãã åŸ ã£ãŠããéã ç§ãã¡ã¯ ããã«ããŒã ã¿ããš ã¹ã¿ãŒãã¢ãã ã¿ããééããŠãNebulaGraphãšNebulaGraph StudioãWebGUI Utilsã®è©³çްãèŠãããšãã§ããŸãã
ãŸããå³ 5 ã«ç€ºãããã«ãæ¡åŒµæ©èœã® [ ãªãœãŒã¹ ] ã¿ãã§ã³ã³ãããŒã®ç¶æ ã確èªããããšã§ãæºåãã§ããŠãããã©ããã確èªããããšãã§ããŸãã

ã¹ããã4:æé²ã°ã©ãã䜿ãå§ãã
ã¯ã©ã¹ã¿ãŒãæ£åžžã«ãªã£ããã ã¯ããã«ã® æé ã«åŸã£ãŠNebulaGraph Studioã«ãã°ã€ã³ããåæããŒã¿ã»ãããããŒãããŠãã°ã©ãã«ã¯ãšãªãå®è¡ã§ããŸã(å³6)ã

ã¹ããã 5: ã¹ã¿ãŒã¿ãŒããŒã¿ã»ãããã詳现ã確èªããÂ
ã°ã©ã ããŒã¿ããŒã¹ã§ã¯ãããŒã¿éã®é¢ä¿ã«çŠç¹ãåœãŠãããŸãã NebulaGraph Studioã§å©çšå¯èœãªã¹ã¿ãŒã¿ãŒããŒã¿ã»ããã䜿çšãããšããããã®é¢ä¿ãããããçè§£ã§ããŸãã å¿ èŠãªã®ã¯ããŠã§ã«ã«ã ããŒãžã®åããŒã¿ã»ãã ã«ãŒãã® [ ããŠã³ããŒã ] ãã¿ã³ãã¯ãªãã¯ããããšã ãã§ã (å³ 7)ã

ããšãã°ã(ãœãŒã·ã£ã« ãããã¯ãŒã¯) ããŒã¿ã»ããã§ã¯ demo_sns ãæ¬¡ã®ã¯ãšãªã䜿çšããŠãæãçžäºã®å人ãå€ã 2 床ã®å人ãç¹å®ããããšã§ãæ°ããåäººã®æšå¥šäºé
ãèŠã€ããããšãã§ããŸãã
Einstein

ã¯ãšãªçµæã衚瀺ããã ãã§ãªãããã¿ãŒã³å šäœãè¿ããŠãç°¡åã«åææ å ±ãåŸãããšãã§ããŸãã ããšãã°ãå³ 9 ã§ã¯ãã¬ããã³ ãžã§ãŒã ãºã Tim ãš 2 ã€ã®å ±éã®å人ã®éãæ©ãã§ããããšãããããŸãã

å¥ã®äŸã¯ã demo_fraud_detection 次ã®ã¯ãšãªã«ç€ºãããã«ãå±éºãªç³è«è
ã«å¯Ÿã㊠10 床ã®ãã§ãã¯ãå®è¡ã§ãã (ããŒã³ã®ã°ã©ã) ããŒã¿ã»ããã«ãããŸãã
MATCH
p_=(p:`applicant`)-[*1..10]-(p2:`applicant`)
WHERE id(p)=="p_200" AND
p2.`applicant`.is_risky == "True"
RETURN p_ LIMIT 100
å³10ã«ç€ºãçµæã¯ããã®ç³è«è
ã p_190.

ããŒã¿ãã€ã³ãéã®é¢ä¿ã調ã¹ãããšã§ãããŒã¿ã«å¯Ÿããããæ·±ãæŽå¯ãåŸãŠãããå€ãã®æ å ±ã«åºã¥ããæææ±ºå®ãè¡ãããšãã§ããŸãã æ°ããåéãèŠã€ããããšãäžæ£è¡çºã®æ€åºããŸãã¯ãã®ä»ã®ãŠãŒã¹ã±ãŒã¹ã«èå³ããããã©ããã«ããããããã¹ã¿ãŒã¿ãŒããŒã¿ã»ããã¯è²Žéãªåºçºç¹ãæäŸããŸãã
ããŒã¿ã»ãããããŠã³ããŒãããããŸããŸãªã¯ãšãªã詊ããŠãã©ã®ãããªæ°ããæŽå¯ãåŸããããã確èªããŠãããNebulaGraphã³ãã¥ããã£ã§å ±æããããšããå§ãããŸãã
ããã¥ã©ã°ã©ããã詊ããã ãã
NebulaGraphã®è©³çްã«ã€ããŠã¯ãåœç€Ÿã® Webãµã€ãã ããã¥ã¡ã³ããµã€ãã«ã¢ã¯ã»ã¹ãããã GitHubãªããžããªã«ã¹ã¿ãŒãä»ãããã ã³ãã¥ããã£ãã£ããã«åå ããŠãã ããã