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

PostgreSQL and SQL:2023 - Property Graph Queries の話題と各RDBの実装

Koji Annoura
November 24, 2023

PostgreSQL and SQL:2023 - Property Graph Queries の話題と各RDBの実装

PostgreSQL Conference Japan 2023の発表資料です。

【A1】PostgreSQL and SQL:2023 - Property Graph Queries の話題と各RDBの実装

SQL:2023では、Part 16: Property Graph Queries (SQL/PGQ)が追加されました。 Oracle Database 23c には既に実装され、PostgreSQLでは将来の機能となっています。 他のRDBも実装が始まっています。それぞれ、実装はどう違っているのでしょうか? RDBに追加された問い合わせ言語 SQL/PGQ と 2024年にリリースされるグラフデータベース用のGQL はどこが異なっているのでしょうか? 最新の話題をお伝えします。

Koji Annoura

November 24, 2023
Tweet

More Decks by Koji Annoura

Other Decks in Programming

Transcript

  1. 8IPBN* ⿣ *MPWF ⿣ /FPK(SBQI%BUBCBTF ⿣ /FPK6TFST(SPVQ5PLZP ⿣ *BNPOFPGUIFGPVOEFST ⿣

    (SBQI$PNNVOJUZ.71 ⿣ "QBDIF)PQ ⿣ %BUB0SDIFTUSBUJPO"QQ ⿣ "QBDIF6TFS(SPVQ+BQBO ⿣ *BNBGPVOEFS
  2. 42-1(2 ⿣ 1SPQFSUZ(SBQI2VFSZ ⿣ IUUQTXXXJTPPSHTUBOEBSEIUNM ⿣ 42- *40*&$  ⿣

    1BSU ⿣ (FOFSBMJOGPSNBUJPO ⿣ 4UBUVT  1VCMJTIFE ⿣ 1VCMJDBUJPOEBUF   ⿣ 4UBHF*OUFSOBUJPOBM4UBOEBSEQVCMJTIFE ⿣ &EJUJPO   ⿣ /VNCFSPGQBHFT   ⿣ 5FDIOJDBM$PNNJUUFF *40*&$+5$4$ 4PVSDF*40 IUUQTXXXJTPPSHTUBOEBSEIUNM
  3. 42-1(2BOE(2- ⿣ 42-1(2 ⿣ 42-JODMVEFT 1SPQFSUZ(SBQI2VFSZ ⿣ 0SBDMF%BUBCBTFD ⿣ (2-

    ⿣ *OUFSOBUJPOBM4UBOEBSE ⿣ XJMMSFMFBTF 4PVSDFPQFO$ZQIFSIUUQTXXXHRMTUBOEBSETPSHIPNF
  4. ,FZXPSET ⿣ 5ZQFTPG%BUBCBTFT ⿣ 42- ⿣ /P42- ⿣ (SBQI ⿣

    /BUJWF(SBQI ⿣ /PO/BUJWF(SBQI ⿣ -BOHVBHF ⿣ $ZQIFS ⿣ PQFO$ZQIFS ⿣ (2- ⿣ (SBQI2-
  5. 5ZQFTPG%BUBCBTFT ⿣ 42- ⿣ /P42- ⿣ ,FZrWBMVFTUPSF ⿣ %PDVNFOUTUPSF ⿣

    8JEFDPMVNOTUPSF ⿣ (SBQITUPSF ⿣ /BUJWF(SBQI ⿣ /PO/BUJWF(SBQI ⿣ *ONFNPSZTUPSF 4PVSDF8JLJQFEJB IUUQTFOXJLJQFEJBPSHXJLJ/P42-
  6. /FPK ⿣ 0O1SFNJTFT ⿣ /FPK(SBQI%BUBCBTF ⿣ $MPVE ⿣ /FPK"VSB%# ⿣

    (PPHMF ⿣ "84 ⿣ "[VSF 4PVSDF/FPK IUUQTOFPKDPNQSPEVDUOFPKHSBQIEBUBCBTF
  7. /BUJWF(SBQI ⿣ (SBQI%BUBCBTF ⿣ /BUJWF(SBQI ⿣ /FPK ⿣ /PO/BUJWF(SBQI ⿣

    (SBQITUPSBHF ⿣ 3%# ⿣ 8JEF$PMVNO ⿣ 0UIFS/P42-
  8. /BUJWFWT/PO/BUJWF ⿣ (SBQI%BUBCBTF ⿣ /BUJWF(SBQI ⿣ /FPK $ZQIFS  ⿣

    .FNHSBQI PQFO$ZQIFS  ⿣ 5JHFS(SBQI (42-  ⿣ /PO/BUJWF(SBQI ⿣ .JDSPTPGU"[VSF$PTNPT%# 42-  ⿣ +BOVT(SBQI (SFNMJO  ⿣ "NB[POF/FQUVOF (SFNMJO PQFO$ZQIFS  41"32-  ⿣ 4UBS%PH 41"32-
  9. +BOVT(SBQI ⿣ +BOVT(SBQI ⿣ 5IF-JOVY'PVOEBUJPO ⿣ 7FSTJPO 0DUPCFS  

    ⿣ +BWB ⿣ %BUB4UPSBHF ⿣ "QBDIF$BTTBOESB ⿣ "QBDIF)#BTF ⿣ (PPHMF$MPVE#JHUBCMF ⿣ 0SBDMF#FSLFMFZ%# ⿣ 4DZMMB%# 4PVSDF*40 IUUQTKBOVTHSBQIPSH
  10. )PXJTJUCFJOHVTFE ⿣ (SBQI%BUBCBTF ⿣ 6TBHFTJNJMBSUP#* ⿣ /PUSFBMUJNF CVUHBJOJOHJOTJHIUT GSPNEBUBSFMBUJPOTIJQT ⿣

    /BUJWFHSBQIVTBHF ⿣ 3FBMUJNFBOBMZTJTJO*P5 JOTVSBODF  BOEDSFEJUDBSEGSBVEEFUFDUJPOEVF UPVOEFSTUBOEJOHEBUBSFMBUJPOTIJQT ⿣ 4FBSDIJOHUIFTDPQFPGJNQBDUPG GBVMUEFUFDUJPOJOSFBMUJNF
  11. 2VFSZ-BOHVBHF ⿣ 3%# ⿣ 42- ⿣ (SBQI%BUBCBTF ⿣ (2- ⿣

    $ZQIFS /FPK "NB[PO/FQUVOF 4"1  ⿣ 1(2- 0SBDMF  ⿣ ($03& -%#$  ⿣ (42- 5JHFS(SBQI  ⿣ 41"32- "NB[PO/FQUVOF  ⿣ (SFNMJO "[VSF$PTNPT%# +BOVT(SBQI  "NB[PO/FQUVOF 4PVSDF1FUFS&JTFOUSBVU IUUQQFUFSFJTFOUSBVUPSHCMPHQPTUHSFTRMBOETRM
  12. $ZQIFS ⿣ "OESÉT5BZMPS ⿣ "4$**"SU ⿣ /PEF <3&-"5*0/4)*1> /PEF 

    ⿣ $ZQIFS ⿣ 8)&3&BOE03%&3#:GSPN42- ⿣ 1BUUFSONBUDIJOHGSPN41"32- ⿣ $PMMFDUJPOTFNBOUJDTGSPN)BTLFMM BOE1ZUIPO 4PVSDF."53*98JLJ  IUUQTNBUSJYGBOEPNDPNXJLJ$ZQIFS
  13. 41:º'".*-: ⿣ 41:º'".*-: ࡗמݖՈՈ  ⿣ +BQBOFTFNBOHBTFSJFTXSJUUFO BOEJMMVTUSBUFECZ5BUTVZB&OEP ⿣ $IBSBDUFST

    ⿣ -PJE'PSHFS ⿣ :PS'PSHFS ⿣ "OZB'PSHFS ⿣ #POE'PSHFS 4PVSDF41:Y'BNJMZIUUQTTQZGBNJMZOFUUWTFSJFT
  14. /FPK(SBQI%BUBCBTF ⿣ (SBQI.PEFM ⿣ (SBQI /PEFT 3FMBUJPOTIJQ  ⿣ $PNQPOFOUT

    ⿣ /PEFT ⿣ -BCFMT ⿣ 3FMBUJPOTIJQT ⿣ 1SPQFSUJFT
  15. 3%#WT/FPK ⿣ 3%# ⿣ #FGPSFMPBEJOHEBUB $3&"5&5"#-&JT OFDFTTBSZ ⿣ +0*/PQFSBUJPOTBSFQFSGPSNFEXIFO RVFSZJOHVTJOH42-

    ⿣ $PMVNOTSFRVJSFTPNFWBMVF JODMVEJOH OVMM  ⿣ /FPK 8IJUFCPBSE'SJFOEMZ  ⿣ $3&"5&5"#-&JTOPUSFRVJSFECFGPSF MPBEJOHEBUB ⿣ 3FMBUJPOTIJQTBSFTUPSFEEJSFDUMZ
  16. $PNQPOFOUT ⿣ /PEFT ⿣ #SBLFUT ⿣  ⿣ .VMUJQMFMBCFMTDBOCFBUUBDIFEUPB OPEF

    ⿣ 1FSTPO  ⿣ 1FSTPO4QZ    $3&"5& 1FSTPO\OBNF`-PJE'PSHFS`^ <."33*&%> 1FSTPO\OBNF`:PS'PSHFS`^
  17. 3FMBUJPOTIJQTPS&EHF ⿣ 3FMBUJPOTIJQTPS&EHF ⿣ #SBDLFUT 4RVBSFCSBDLFUT ⿣ <."33*&%> ⿣ 3FMBUJPOIBTEJSFDUJPO

    ⿣ <."33*&%>    $3&"5& 1FSTPO\OBNF`-PJE'PSHFS`^ <."33*&%> 1FSTPO\OBNF`:PS'PSHFS`^
  18. 1SPQFSUJFT ⿣ 1SPQFSUJFT ⿣ 1SPQFSUJFTDBOCFBEEFEGPSCPUIOPEFT BOESFMBUJPOTIJQT ⿣ $VSMZCSBDLF ⿣ \OP

    OBNF`"#$`^      $3&"5& 1FSTPO\OBNF`-PJE'PSHFS`^ <."33*&%> 1FSTPO\OBNF`:PS'PSHFS`^
  19. PQFO$ZQIFS ⿣ PQFO$ZQIFS ⿣ IUUQTPQFODZQIFSPSH ⿣ 0DU  ⿣ $ZQIFSJNQMFNFOUBUJPOT

    ⿣ "HFOT(SBQI ⿣ "NB[PO/FQUVOF ⿣ $"14$ZQIFSGPS"QBDIF4QBSL ⿣ $ZQIFSGPS(SFNMJO ⿣ ,BUBOB(SBQI ⿣ .FNHSBQI 4PVSDFPQFO$ZQIFS IUUQTPQFODZQIFSPSH
  20. PQFO$ZQIFS ⿣ PQFO$ZQIFS*NQMFNFOUFST.FFUJOH ⿣ (FSNBOZ P$*.  ⿣ 'JSTU'FCSVBSZ ⿣

    -POEPO P$*.  ⿣ 4FDPOE.BZ ⿣ 'SBODF P$*.  ⿣ 5IJSE/PWFNCFS ⿣ %FONBSL P$*.  ⿣ 'PVSUI.BZ ⿣ (FSNBOZ P$*.  ⿣ 'JGUI.BSDI
  21. (2-㱠(SBQI2- ⿣ (2-   ⿣ 2VFSZMBOHVBHFMJLF$ZQIFS ⿣ (SBQI2- 

     ⿣ 2VFSZ-BOHVBHFGPS"1* ⿣ "1* ⿣ 3&45 ⿣ (SBQI2- 4PVSDF(SBQI2- IUUQTHSBQIRMPSH
  22. (SBQI2- ⿣ (SBQI2- ⿣ &WFOUT ⿣ (SBQI2-$POG  ⿣ IUUQTHSBQIRMPSHDPOG

    ⿣ (3"1)2-46..*5 ⿣ IUUQTTVNNJUHSBQIRMDPN ⿣  0DUPCFS  ⿣ 4BO%JFHP ⿣  0DUPCFS ⿣ %PXOUPXO/FX:PSL$JUZ
  23. (SBQI2-"2VFSZ-BOHVBHFGPS"1*T ⿣ 2VFSZ-BOHVBHFGPS"1* ⿣ 40"1 "QS  ⿣ 4JNQMF0CKFDU"DDFTT1SPUPDPM ⿣

    IUUQTXXXXPSH53TPBQ ⿣ 3&45 ⿣ 3&QSFTFOUBUJPOBM4UBUF5SBOTGFS ⿣ 0QFO"1* ⿣ UIFNPTUXJEFMZBDDFQUFEGPSNBU ⿣ (SBQI2- +VOF  ⿣ IUUQTHSBQIRMPSH 4PVSDF(SBQI2-PSH IUUQTMBOETDBQFHSBQIRMPSHDBSENPEF
  24. (SBQI2- ⿣ 'BDFCPPL ⿣ .PCJMFBQQTCFDBNFNPSFDPNQMFY ⿣ 1PPSQFSGPSNBODF ⿣ 'SFRVFOUMZDSBTIFE ⿣

    (SBQI2- ⿣  3FCVJME'BDFCPPL`TOBUJWF NPCJMFBQQMJDBUJPOT ⿣ XBTQVCMJDMZSFMFBTFEJO 4PVSDF(SBQI2-PSH IUUQTTQFDHSBQIRMPSH+VMZɹ
  25. 3&45WT(SBQI2- ⿣ 3&45 ⿣ 1045NPWJFT ⿣ (&5NPWJFT ⿣ (&5NPWJFT\JE^ ⿣

    1"5$)NPWJFT\JE^ ⿣ %&-&5&NPWJFT\JE^ ⿣ (SBQI2- ⿣ 1045HSBQIRM 4PVSDF(SBQI2-PSH IUUQTMBOETDBQFHSBQIRMPSHDBSENPEF
  26. (SBQI2VFSZ-BOHVBHF ⿣ 2VFSZ-BOHVBHFGPS(SBQI ⿣ (2- 8$   ⿣ $ZQIFS

    /FPK 4"1ʜ  ⿣ 1(2- 0SBDMF  ⿣ ($03& -%#$  ⿣ (42- 5JHFS(SBQI  ⿣ 41"32- "NB[PO/FQUVOF  ⿣ (SBQI2- /FPK  ⿣ (SFNMJO "[VSF$PTNPT%# +BOVT(SBQI  "NB[PO/FQUVOF 4PVSDFIUUQTHRMUPEBZ
  27. PQFO$ZQIFS*NQMFNFOUFST(SPVQ ⿣ .FFUJOH ⿣ (FSNBOZ ⿣ 'JSTUPQFO$ZQIFS*NQMFNFOUFST.FFUJOH'FCSVBSZ ⿣ -POEPO ⿣

    4FDPOEPQFO$ZQIFS*NQMFNFOUFST.FFUJOH.BZ ⿣ 'SBODF ⿣ 5IJSEPQFO$ZQIFS*NQMFNFOUFST.FFUJOH/PWFNCFS ⿣ %FONBSL ⿣ 'PVSUIPQFO$ZQIFS*NQMFNFOUFST.FFUJOH.BZ ⿣ (FSNBOZ ⿣ 'JGUIPQFO$ZQIFS*NQMFNFOUFST.FFUJOH.BSDI
  28. 42-1(2BOE(2- ⿣ 42-1(2 ⿣ 42-JODMVEFT 1SPQFSUZ(SBQI2VFSZ ⿣ 0SBDMF%BUBCBTFD ⿣ (2-

    ⿣ *OUFSOBUJPOBM4UBOEBSE ⿣ XJMMSFMFBTF 4PVSDFPQFO$ZQIFSIUUQTXXXHRMTUBOEBSETPSHIPNF
  29. 1PTTJCMF5JNFMJOFGPSB(2-4UBOEBSE ⿣ r%BUBCBTF-BOHVBHF (2-QSPKFDUBQQSPWFEUIJTJTUIFTUBSU ⿣ r$%#BMMPUTUBSUFE ⿣ r$%#BMMPUFOEFEBOE DPNNFOUSFTPMVUJPOTUBSUFE ⿣

    r%*4 %SBGU*OUFSOBUJPOBM 4UBOEBSE #BMMPUTUBSUT ⿣ r%*4CBMMPUFOET ⿣ r*OUFSOBUJPOBM4UBOEBSE 4PVSDF(2-4UBOEBSE IUUQTXXXHRMTUBOEBSETPSHXIBUJTBHRMTUBOEBSE
  30. -%#$ ⿣ -JOLFE%BUB#FODINBSL$PVODJM ⿣ -%#$ ⿣ 6OJUFE,JOHEPN ⿣ /POQSP fi

    UPSHBOJ[BUJPO ⿣ %F fi OFTUBOEBSEHSBQICFODINBSLT ⿣ .FNCFST ⿣ *OEVTUSZBOE"DBEFNJB ⿣ 0SHBOJ[BUJPOTBOE*OEJWJEVBMT 4PVSDF-%#$ IUUQTMECDPVODJMPSHCFODINBSLTPWFSWJFX
  31. 42- ⿣ /FX1BSU ⿣ 1SPQFSUZ(SBQI2VFSJFT 42-1(2  GVUVSF  ⿣

    /FXGFBUVSFT ⿣ +40/EBUBUZQF 5  ⿣ &OIBODFE+40/EBUBUZQF 5  ⿣ 4USJOHCBTFE+40/ 5  ⿣ )FYJOUFHFSMJUFSBMTJO42-+40/QBUI MBOHVBHF 5  ⿣ 42-+40/TJNQMJ fi FEBDDFTTPS 5r5  ⿣ 42-+40/JUFNNFUIPET 5r5  ⿣ +40/DPNQBSJTPO 5r5 4PVSDF1FUFS&JTFOUSBVU IUUQQFUFSFJTFOUSBVUPSHCMPHQPTUHSFTRMBOETRM
  32. 0SBDMFD 42-1(2 1(2- ⿣ 42-1(2 ⿣ RVFSZXJUI1(9 ⿣ 1(2- ⿣

    EJSFDUMZRVFSZXJUIPVU1(9 ⿣ HSBQIBMHPSJUINTOFFET1(9 4PVSDF0SBDMF IUUQTEPDTPSBDMFDPNFOEBUBCBTFPSBDMFQSPQFSUZHSBQITQHEHJOUSPEVDUJPOQSPQFSUZHSBQITIUNM
  33. 1(9 ⿣ 1BSBMMFM(SBQI"OBMZUJ9 ⿣ *ONFNPSZ(SBQI4FSWFS ⿣ 1(9JTBUPPMLJUGPSHSBQIBOBMZTJT  ⿣ TVQQPSUJOHCPUIF

    ff i DJFOUHSBQI BMHPSJUINT ⿣ GBTU42-MJLFHSBQIQBUUFSO NBUDIJOHRVFSJFT 4PVSDF0SBDMF IUUQTXXXZPVUVCFDPNXBUDI W%":N:B%#&
  34. 4&-&$5."5$) 4PVSDF0SBDMF IUUQTEPDTPSBDMFDPNFOEBUBCBTFPSBDMFQSPQFSUZHSBQITQHEHTRMHSBQI@UBCMFRVFSJFTIUNM 4&-&$5 '30.(3"1)@5"#-& TUVEFOUT@HSBQI ."5$)  B*4QFSTPO <F*4GSJFOET>

    C*4QFSTPO8)&3&COBNF"MJDF  8)&3&BOBNF.BSZ $0-6./4 BOBNF"4QFSTPO@B COBNF"4QFSTPO@C   1&340/@"1&340/@#  .BSZ"MJDF
  35. 4&-&$5."5$) 4PVSDF0SBDMF IUUQTEPDTPSBDMFDPNFOEBUBCBTFPSBDMFQSPQFSUZHSBQITQHEHTRMHSBQI@UBCMFRVFSJFTIUNM 4&-&$5 '30.(3"1)@5"#-& TUVEFOUT@HSBQI ."5$)  B*4QFSTPO <*4GSJFOET>

    C*4QFSTPO <*4GSJFOET>  D*4QFSTPO <*4GSJFOET> B  $0-6./4 BOBNF"4QFSTPO@B COBNF"4QFSTPO@C DOBNF"4QFSTPO@D    1&340/@"1&340/@#1&340/@$  #PC.BSZ+PIO +PIO#PC.BSZ .BSZ+PIO#PC
  36. BMFOHUIPGVQUPUISFFFEHFT \ ^ 4PVSDF0SBDMF IUUQTEPDTPSBDMFDPNFOEBUBCBTFPSBDMFQSPQFSUZHSBQITQHEHTRMHSBQI@UBCMFRVFSJFTIUNM 4&-&$5 '30.(3"1)@5"#-& TUVEFOUT@HSBQI ."5$) V*4VOJWFSTJUZ

    <F>\ ^ V*4VOJWFSTJUZ  8)&3&VOBNF"#$"/%VOBNF9:; $0-6./4 +40/@"33":"(( $"4&8)&/FTVCKFDU*4/05/6--5)&/FTVCKFDU &-4&$"45 FGSJFOETIJQ@JE"47"3$)"3  &/% "4QBUI  1"5)  <"SUT  .BUI> <.VTJD  .BUI>
  37. "QBDIF"(& PQFO$ZQIFS ⿣ IUUQTBHFBQBDIFPSH ⿣ (SBQI%BUBCBTF1MVHJOGPS 1PTUHSF42- ⿣ JOTQJSFECZ"HFOT(SBQI ⿣

    5PQ-FWFM1SPKFDUPGUIF"QBDIF 4PGUXBSF'PVOEBUJPOTJODF.BZ  ⿣ 8JMMCFPO.BSJB%#BOE.Z42- 4PVSDF"QBDIF"(& IUUQTBHFBQBDIFPSH
  38. %BUBCBTFT 1SPEVDU   0SBDMFD 42-1(2 42-1(2 XJUI1(9 1PTUHSF42- 

    .Z42-  1(9 %#(SBQI (SFNMJO UPCFEJTDPOUJOVFE 42-4FSWFS 5SBOTBDU42- 4RMJUF  (2-FOHJOF "1*MJCSBSZ %VDL%# 42-1(2 "QBDIF"(& PQFO$ZQIFS JOTQJSFECZ"HFOT(SBQI 1( "NB[PO/FQUVOF PQFO$ZQIFS (2- /FPK $ZQIFS (2- DIBS@MFOHUI DIBSBDUFS@MFOHUI 5JHBS(SBQI (42- 42-1(2 (2-