optimizing cypher queries in neo4j

71
2SWLPL]LQJ &\SKHU 4XHULHV LQ 1HRM :HV )UHHPDQ #ZHIUHHPD 0DUN 1HHGKDP #PDUNKQHHGKDP

Upload: mark-needham

Post on 10-May-2015

529 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Optimizing cypher queries in neo4j

2SWLPL]LQJ�&\SKHU�4XHULHV�LQ�1HR�M

:HV�)UHHPDQ��#ZHIUHHPD�0DUN�1HHGKDP��#PDUNKQHHGKDP�

Page 2: Optimizing cypher queries in neo4j

7RGD\V�VFKHGXOH

Ɣ %ULHI�RYHUYLHZ�RI�F\SKHU�V\QWD[Ɣ *UDSK�JOREDO�YV�*UDSK�ORFDO�TXHULHVƔ /DEHOV�DQG�LQGH[HVƔ 2SWLPL]DWLRQ�SDWWHUQVƔ 3URILOLQJ�F\SKHU�TXHULHVƔ $SSO\LQJ�RSWLPL]DWLRQ�SDWWHUQV

Page 3: Optimizing cypher queries in neo4j

&\SKHU�6\QWD[

Ɣ 6WDWHPHQW�SDUWVż 2SWLRQDO��4XHU\LQJ�SDUW��0$7&+_:+(5(�ż 2SWLRQDO��8SGDWLQJ�SDUW��&5($7(_0(5*(�ż 2SWLRQDO��5HWXUQLQJ�SDUW��:,7+_5(7851�

Ɣ 3DUWV�FDQ�EH�FKDLQHG�WRJHWKHU

Page 4: Optimizing cypher queries in neo4j

&\SKHU�6\QWD[���5HIUHVKHU

0$7&+��Q�/DEHO��>U�/,1.('@�!�P�:+(5(�Q�SURS� ������5(7851�Q��U��P

Page 5: Optimizing cypher queries in neo4j

6WDUWLQJ�SRLQWV

Ɣ *UDSK�VFDQ��JOREDO��SRWHQWLDOO\�VORZ�Ɣ /DEHO�VFDQ��XVXDOO\�UHVHUYHG�IRU�DJJUHJDWLRQ�

TXHULHV��QRW�LGHDO�Ɣ /DEHO�SURSHUW\�LQGH[�ORRNXS��ORFDO��JRRG��

Page 6: Optimizing cypher queries in neo4j

,QWURGXFLQJ�WKH�IRRWEDOO�GDWDVHW

Page 7: Optimizing cypher queries in neo4j

7KH�����JOREDO�VFDQ2�Q�

Q� ���RI�QRGHV

67$57�SO� �QRGH� ��0$7&+��SO��>�SOD\HG@�!�VWDWV��:+(5(�SO�QDPH� ��:D\QH�5RRQH\��5(7851�VWDWV

���PV�Z����N�QRGHV�����N�UHOV

Page 8: Optimizing cypher queries in neo4j

7KH�����JOREDO�VFDQ

0$7&+��SO��>�SOD\HG@�!�VWDWV��:+(5(�SO�QDPH� ��:D\QH�5RRQH\��5(7851�VWDWV

���PV�Z����N�QRGHV�����N�UHOV

2�Q�Q� ���RI�QRGHV

Page 9: Optimizing cypher queries in neo4j

:K\�LV�LW�D�JOREDO�VFDQ"

Ɣ &\SKHU�LV�D�SDWWHUQ�PDWFKLQJ�ODQJXDJHƔ ,W�GRHVQW�GLVFULPLQDWH�XQOHVV�\RX�WHOO�LW�WR

ż ,W�PXVW�WU\�WR�VWDUW�DW�DOO�QRGHV�WR�ILQG�WKLV�SDWWHUQ��DV�VSHFLILHG

Page 10: Optimizing cypher queries in neo4j

,QWURGXFH�D�ODEHO

/DEHO�\RXU�VWDUWLQJ�SRLQWV

&5($7(��SOD\HU�3OD\HU��^QDPH���:D\QH�5RRQH\�`��

Page 11: Optimizing cypher queries in neo4j

2�N�N� ���RI�QRGHV�ZLWK�WKDW�ODEHO/DEHO�VFDQ

0$7&+��SO�3OD\HU��>�SOD\HG@�!�VWDWV��:+(5(�SO�QDPH� ��:D\QH�5RRQH\��5(7851�VWDWV

��PV�Z����N�QRGHV�����N�UHOV��a�����3OD\HU�QRGHV�

Page 12: Optimizing cypher queries in neo4j

,QGH[HV�GRQW�FRPH�IRU�IUHH

&5($7(�,1'(;�21��3OD\HU�QDPH�

25

&5($7(�&21675$,17�21�SO�3OD\HU$66(57�SO�QDPH�,6�81,48(

Page 13: Optimizing cypher queries in neo4j

2�ORJ�N�N� ���RI�QRGHV�ZLWK�WKDW�ODEHO,QGH[�ORRNXS

0$7&+��SO�3OD\HU��>�SOD\HG@�!�VWDWV��:+(5(�SO�QDPH� ��:D\QH�5RRQH\��5(7851�VWDWV

�PV�Z����N�QRGHV�����N�UHOV��a�����3OD\HU�QRGHV�

Page 14: Optimizing cypher queries in neo4j

2SWLPL]DWLRQ�3DWWHUQV

Ɣ $YRLG�FDUWHVLDQ�SURGXFWVƔ $YRLG�SDWWHUQV�LQ�WKH�:+(5(�FODXVHƔ 6WDUW�0$7&+�SDWWHUQV�DW�WKH�ORZHVW�FDUGLQDOLW\�

DQG�H[SDQG�RXWZDUGƔ 6HSDUDWH�0$7&+�SDWWHUQV�ZLWK�PLQLPDO�

H[SDQVLRQ�DW�HDFK�VWDJH

Page 15: Optimizing cypher queries in neo4j

,QWURGXFLQJ�WKH�PRYLH�GDWD�VHW

Page 16: Optimizing cypher queries in neo4j

$QWL�SDWWHUQ��&DUWHVLDQ�3URGXFWV

0$7&+��P�0RYLH����S�3HUVRQ�

Page 17: Optimizing cypher queries in neo4j

6XEWOH�&DUWHVLDQ�3URGXFWV

0$7&+��S�3HUVRQ��>�.12:6@�!�F�:+(5(�S�QDPH �7RP�+DQNV�:,7+�F0$7&+��N�.H\ZRUG�5(7851�F��N

Page 18: Optimizing cypher queries in neo4j

&RXQWLQJ�&DUWHVLDQ�3URGXFWV

0$7&+��SO�3OD\HU���W�7HDP���J�*DPH�5(7851�&2817�',67,1&7�SO����������&2817�',67,1&7�W���������&2817�',67,1&7�J�

������PV�Z��a����SOD\HUV��a���WHDPV��a�����JDPHV

Page 19: Optimizing cypher queries in neo4j

0$7&+��SO�3OD\HU�:,7+�&2817�SO��DV�SOD\HUV0$7&+��W�7HDP�:,7+�&2817�W��DV�WHDPV��SOD\HUV0$7&+��J�*DPH�5(7851�&2817�J��DV�JDPHV��WHDPV��SOD\HUV

�PV�Z��a����SOD\HUV��a���WHDPV��a�����JDPHV

%HWWHU�&RXQWLQJ

Page 20: Optimizing cypher queries in neo4j

'LUHFWLRQV�RQ�SDWWHUQV

0$7&+��S�3HUVRQ��>�$&7('B,1@��P�:+(5(�S�QDPH� ��7RP�+DQNV�5(7851�P

Page 21: Optimizing cypher queries in neo4j

3DUDPHWHUL]H�\RXU�TXHULHV

0$7&+��S�3HUVRQ��>�$&7('B,1@��P�:+(5(�S�QDPH� �^QDPH`5(7851�P

Page 22: Optimizing cypher queries in neo4j

)DVW�SUHGLFDWHV�ILUVW

%DG�0$7&+��W�7HDP��>�SOD\HGBLQ@�!�J�:+(5(�127��W��>�KRPHBWHDP@�!�J���$1'�J�DZD\BJRDOV�!�J�KRPHBJRDOV�5(7851�W��&2817�J�

Page 23: Optimizing cypher queries in neo4j

%HWWHU�0$7&+��W�7HDP��>�SOD\HGBLQ@�!�J�:+(5(�J�DZD\BJRDOV�!�J�KRPHBJRDOV��$1'�127��W��>�KRPHBWHDP@�!��5(7851�W��&2817�J�

)DVW�SUHGLFDWHV�ILUVW

Page 24: Optimizing cypher queries in neo4j

3DWWHUQV�LQ�:+(5(�FODXVHV

Ɣ .HHS�WKHP�LQ�WKH�0$7&+�Ɣ 7KH�RQO\�SDWWHUQ�WKDW�QHHGV�WR�EH�LQ�D�:+(5(�

FODXVH�LV�D�127�

Page 25: Optimizing cypher queries in neo4j

0(5*(�DQG�&21675$,17V

Ɣ 0(5*(�LV�0$7&+�RU�&5($7(Ɣ 0(5*(�FDQ�WDNH�DGYDQWDJH�RI�XQLTXH�

FRQVWUDLQWV�DQG�LQGH[HV

Page 26: Optimizing cypher queries in neo4j

0(5*(��ZLWKRXW�LQGH[�0(5*(��J�*DPH�

^GDWH��������������WLPH���������KRPHBJRDOV������DZD\BJRDOV������PDWFKBLG�����������DWWHQGDQFH��������`�

5(7851�J

����PV�Z��a����JDPHV

Page 27: Optimizing cypher queries in neo4j

$GGLQJ�DQ�LQGH[

&5($7(�,1'(;�21��*DPH�PDWFKBLG�

Page 28: Optimizing cypher queries in neo4j

0(5*(��ZLWK�LQGH[�0(5*(��J�*DPH�

^GDWH��������������WLPH���������KRPHBJRDOV������DZD\BJRDOV������PDWFKBLG�����������DWWHQGDQFH��������`�

5(7851�J

��PV�Z��a����JDPHV

Page 29: Optimizing cypher queries in neo4j

$OWHUQDWLYH�0(5*(�DSSURDFK0(5*(��J�*DPH�^�PDWFKBLG���������`�21�&5($7(6(7�J�GDWH� �����������6(7�J�WLPH� �����6(7�J�KRPHBJRDOV� ��6(7�J�DZD\BJRDOV� ��6(7�J�DWWHQGDQFH� �������5(7851�J

Page 30: Optimizing cypher queries in neo4j

3URILOLQJ�TXHULHV

Ɣ 8VH�WKH�352),/(�NH\ZRUG�LQ�IURQW�RI�WKH�TXHU\ż IURP�ZHEDGPLQ�RU�VKHOO���ZRQW�ZRUN�LQ�EURZVHU

Ɣ /RRN�IRU�GEBKLWV�DQG�URZVƔ ,JQRUH�HYHU\WKLQJ�HOVH��IRU�QRZ��

Page 31: Optimizing cypher queries in neo4j

5HYLHZLQJ�WKH�IRRWEDOO�GDWDVHW

Page 32: Optimizing cypher queries in neo4j

)RRWEDOO�2SWLPL]DWLRQ0$7&+��JDPH���>�FRQWDLQVBPDWFK@��VHDVRQ�6HDVRQ���������WHDP���>�DZD\BWHDP@��JDPH���������VWDWV��>�LQ@�!�JDPH����������WHDP���>�IRU@��VWDWV���>�SOD\HG@��SOD\HU�:+(5(�VHDVRQ�QDPH� ������������5(7851�SOD\HU�QDPH���������&2//(&7�',67,1&7�WHDP�QDPH����������680�VWDWV�JRDOV��DV�JRDOV25'(5�%<�JRDOV�'(6&/,0,7���

�����PV�Z��a����SOD\HUV��a���WHDPV��a����JDPHV

Page 33: Optimizing cypher queries in neo4j

)RRWEDOO�2SWLPL]DWLRQ !�&ROXPQ)LOWHU�V\P.H\V >�SOD\HU�QDPH������,17(51$/B$**5(*$7(H��E���E�D�����GGG��IH��H������F���D������,17(51$/B$**5(*$7(���FIFG����G����D���FD��IE����I�G����@��UHWXUQ,WHP1DPHV >�SOD\HU�QDPH����&2//(&7�',67,1&7�WHDP�QDPH�����JRDOV�@��BURZV ����BGEBKLWV ��

!�7RS�RUGHU%\ >�6RUW,WHP�&DFKHG���,17(51$/B$**5(*$7(���FIFG����G����D���FD��IE����I�G����RI�W\SH�1XPEHU��IDOVH��@��OLPLW �/LWHUDO�������BURZV ����BGEBKLWV ��

!���(DJHU$JJUHJDWLRQ�NH\V >�&DFKHG�SOD\HU�QDPH�RI�W\SH�$Q\��@��DJJUHJDWHV >����,17(51$/B$**5(*$7(H��E���E�D�����GGG��IH��H������F���D�'LVWLQFW�&ROOHFW�3URSHUW\�WHDP�QDPH������3URSHUW\�WHDP�QDPH�������������,17(51$/B$**5(*$7(���FIFG����G����D���FD��IE����I�G����6XP�3URSHUW\�VWDWV�JRDOV��������@��BURZV �����BGEBKLWV ������

!�����([WUDFW�V\P.H\V >�VWDWV������811$0('��������811$0('�������VHDVRQ������811$0('������SOD\HU����WHDP������811$0('���������811$0('������JDPH�@��H[SU.H\V >�SOD\HU�QDPH�@��BURZV ������BGEBKLWV �����

!�������3DWWHUQ0DWFK�J ��SOD\HU��>��811$0('���@��VWDWV����BURZV ������BGEBKLWV ��

!���������)LOWHU�SUHG �3URSHUW\�VHDVRQ�QDPH����� �/LWHUDO��������������BURZV ������BGEBKLWV ������

!�����������7UDYHUVDO0DWFKHU�WUDLO ��VHDVRQ��>��811$0('���FRQWDLQVBPDWFK�:+(5(�WUXH�$1'�WUXH@�!�JDPH���>��811$0('���LQ�:+(5(�WUXH�$1'�WUXH@��VWDWV��>��811$0('����IRU�:+(5(�WUXH�$1'�WUXH@�!�WHDP���>��

811$0('���DZD\BWHDP�:+(5(�WUXH�$1'�WUXH@��JDPH����BURZV �������BGEBKLWV ��������

Page 34: Optimizing cypher queries in neo4j

%UHDN�RXW�WKH�PDWFK�VWDWHPHQWV0$7&+��JDPH���>�FRQWDLQVBPDWFK@��VHDVRQ�6HDVRQ�0$7&+��WHDP���>�DZD\BWHDP@��JDPH�0$7&+��VWDWV��>�LQ@�!�JDPH�0$7&+��WHDP���>�IRU@��VWDWV���>�SOD\HG@��SOD\HU�:+(5(�VHDVRQ�QDPH� ������������5(7851�SOD\HU�QDPH���������&2//(&7�',67,1&7�WHDP�QDPH����������680�VWDWV�JRDOV��DV�JRDOV25'(5�%<�JRDOV�'(6&/,0,7���

����PV�Z��a����SOD\HUV��a���WHDPV��a����JDPHV

Page 35: Optimizing cypher queries in neo4j

6WDUW�VPDOO

Ɣ 6PDOOHVW�FDUGLQDOLW\�ODEHO�ILUVWƔ 6PDOOHVW�LQWHUPHGLDWH�UHVXOW�VHW�ILUVW

Page 36: Optimizing cypher queries in neo4j

([SORULQJ�FDUGLQDOLWLHV0$7&+��JDPH���>�FRQWDLQVBPDWFK@��VHDVRQ�6HDVRQ�5(7851�&2817�',67,1&7�JDPH���&2817�',67,1&7�VHDVRQ������JDPHV����VHDVRQV

0$7&+��WHDP���>�DZD\BWHDP@��JDPH�*DPH�5(7851�&2817�',67,1&7�WHDP���&2817�',67,1&7�JDPH����WHDPV�������JDPHV

Page 37: Optimizing cypher queries in neo4j

([SORULQJ�FDUGLQDOLWLHV0$7&+��VWDWV��>�LQ@�!�JDPH�*DPH�5(7851�&2817�',67,1&7�VWDWV���&2817�',67,1&7�JDPH�������VWDWV�������JDPHV

0$7&+��VWDWV���>�SOD\HG@��SOD\HU�3OD\HU�5(7851�&2817�',67,1&7�VWDWV���&2817�',67,1&7�SOD\HU�������VWDWV������SOD\HUV

Page 38: Optimizing cypher queries in neo4j

/RRN�IRU�WHDPV�ILUVW0$7&+��WHDP���>�DZD\BWHDP@��JDPH�*DPH�0$7&+��JDPH���>�FRQWDLQVBPDWFK@��VHDVRQ�:+(5(�VHDVRQ�QDPH� ������������0$7&+��VWDWV��>�LQ@�!�JDPH�0$7&+��WHDP���>�IRU@��VWDWV���>�SOD\HG@��SOD\HU�5(7851�SOD\HU�QDPH���������&2//(&7�',67,1&7�WHDP�QDPH����������680�VWDWV�JRDOV��DV�JRDOV25'(5�%<�JRDOV�'(6&/,0,7���

����PV�Z��a����SOD\HUV��a���WHDPV��a����JDPHV

Page 39: Optimizing cypher queries in neo4j

!�&ROXPQ)LOWHU�V\P.H\V >�SOD\HU�QDPH������,17(51$/B$**5(*$7(EE��I��E�D��G���E�������E�F�HF��F���������,17(51$/B$**5(*$7(���DI����H�EG����I�DED���FD�D�H���F��@��UHWXUQ,WHP1DPHV >�SOD\HU�QDPH����&2//(&7�',67,1&7�WHDP�QDPH�����JRDOV�@��BURZV ����BGEBKLWV ��

!�7RS�RUGHU%\ >�6RUW,WHP�&DFKHG���,17(51$/B$**5(*$7(���DI����H�EG����I�DED���FD�D�H���F��RI�W\SH�1XPEHU��IDOVH��@��OLPLW �/LWHUDO�������BURZV ����BGEBKLWV ��

!���(DJHU$JJUHJDWLRQ�NH\V >�&DFKHG�SOD\HU�QDPH�RI�W\SH�$Q\��@��DJJUHJDWHV >����,17(51$/B$**5(*$7(EE��I��E�D��G���E�������E�F�HF��F����'LVWLQFW�&ROOHFW�3URSHUW\�WHDP�QDPH������3URSHUW\�WHDP�QDPH�������������,17(51$/B$**5(*$7(���DI����H�EG����I�DED���FD�D�H���F��6XP�3URSHUW\�VWDWV�JRDOV��������@��BURZV �����BGEBKLWV ������

!�����([WUDFW�V\P.H\V >�VWDWV������811$0('��������811$0('�������VHDVRQ������811$0('�������SOD\HU����WHDP������811$0('���������811$0('������JDPH�@��H[SU.H\V >�SOD\HU�QDPH�@��BURZV ������BGEBKLWV �����

!�������3DWWHUQ0DWFK�J ��VWDWV��>��811$0('���@��WHDP���SOD\HU��>��811$0('���@��VWDWV����BURZV ������BGEBKLWV ��

!���������3DWWHUQ0DWFK�J ��VWDWV��>��811$0('���@��JDPH����BURZV �������BGEBKLWV ��

!�����������)LOWHU�SUHG �3URSHUW\�VHDVRQ�QDPH����� �/LWHUDO��������������BURZV �����BGEBKLWV ����

!�������������3DWWHUQ0DWFK�J ��VHDVRQ��>��811$0('��@��JDPH����BURZV �����BGEBKLWV �����

!���������������7UDYHUVDO0DWFKHU�WUDLO ��JDPH��>��811$0('���DZD\BWHDP�:+(5(�WUXH�$1'�WUXH@�!�WHDP����

BURZV ������BGEBKLWV �����

/RRN�IRU�WHDPV�ILUVW

Page 40: Optimizing cypher queries in neo4j

)LOWHU�JDPHV�D�ELW�HDUOLHU0$7&+��JDPH���>�FRQWDLQVBPDWFK@��VHDVRQ�6HDVRQ�

:+(5(�VHDVRQ�QDPH� ������������0$7&+��WHDP���>�DZD\BWHDP@��JDPH�0$7&+��VWDWV��>�LQ@�!�JDPH�0$7&+��WHDP���>�IRU@��VWDWV���>�SOD\HG@��SOD\HU�5(7851�SOD\HU�QDPH���������&2//(&7�',67,1&7�WHDP�QDPH����������680�VWDWV�JRDOV��DV�JRDOV25'(5�%<�JRDOV�'(6&/,0,7���

����PV�Z��a����SOD\HUV��a���WHDPV��a����JDPHV

Page 41: Optimizing cypher queries in neo4j

)LOWHU�RXW�VWDWV�ZLWK�QR�JRDOV0$7&+��JDPH���>�FRQWDLQVBPDWFK@��VHDVRQ�6HDVRQ�:+(5(�VHDVRQ�QDPH� ������������0$7&+��WHDP���>�DZD\BWHDP@��JDPH�0$7&+��VWDWV��>�LQ@�!�JDPH�:+(5(�VWDWV�JRDOV�!��0$7&+��WHDP���>�IRU@��VWDWV���>�SOD\HG@��SOD\HU�5(7851�SOD\HU�QDPH���������&2//(&7�',67,1&7�WHDP�QDPH����������680�VWDWV�JRDOV��DV�JRDOV25'(5�%<�JRDOV�'(6&/,0,7���

���PV�Z��a����SOD\HUV��a���WHDPV��a����JDPHV

Page 42: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��^WLWOH`�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 43: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 44: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�

0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 45: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�

0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 46: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�

0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 47: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�

0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 48: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�

0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 49: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�

0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 50: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV��PRYLH���FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV�UHODWHG��JHQUHV���GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 51: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV���PRYLH��FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 52: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV���PRYLH��FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG��DFWRUV���JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 53: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`�0$7&+��JHQUH���>�+$6B*(15(@��PRYLH�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�PRYLH�0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�0$7&+��DFWRU��>�$&7('B,1@�!�DFWRUPRYLHV�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG��DV�ZHLJKW����FRXQW�',67,1&7�DFWRUPRYLHV��DV�DFWRUPRYLHVZHLJKW��PRYLH��FROOHFW�',67,1&7�JHQUH�QDPH��DV��JHQUHV��FROOHFW�',67,1&7�GLUHFWRU�QDPH��DV�GLUHFWRUV��DFWRU��FROOHFW�',67,1&7�ZULWHU�QDPH���DV�ZULWHUV25'(5�%<�ZHLJKW�'(6&��DFWRUPRYLHVZHLJKW�'(6&:,7+�FROOHFW�',67,1&7�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV���PRYLH��FROOHFW�',67,1&7�^UHODWHG��^WLWOH��UHODWHG�WLWOH`��ZHLJKW��ZHLJKW`��DV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�.H\ZRUG���>�+$6B.(<:25'@��PRYLHV�:,7+�NH\ZRUG�QDPH�DV�NH\ZRUG��FRXQW�PRYLHV��DV�NH\ZRUGBZHLJKW��PRYLH��UHODWHG���DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV25'(5�%<�NH\ZRUGBZHLJKW5(7851�FROOHFW�',67,1&7�NH\ZRUG���PRYLH��DFWRUV��UHODWHG��JHQUHV��GLUHFWRUV��ZULWHUV

Page 54: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW������URZ�SHU�DFWRU25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH��JHQUHV���GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV�UHODWHG���PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 55: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW������URZ�SHU�DFWRU25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH��JHQUHV���GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV�UHODWHG���PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 56: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&������URZ�SHU�DFWRU:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH��JHQUHV���GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV�UHODWHG���PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 57: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&������URZ�SHU�DFWRU:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH��JHQUHV���GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV�UHODWHG���PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 58: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&������URZ�SHU�DFWRU:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH��JHQUHV���GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV�UHODWHG���PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 59: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&������URZ�SHU�DFWRU:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH���JHQUHV��GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV�UHODWHG���PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 60: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&������URZ�SHU�DFWRU:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH���JHQUHV��GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV

��[�IDVWHU

Page 61: Optimizing cypher queries in neo4j

0RYLH�TXHU\�RSWLPL]DWLRQ0$7&+��PRYLH�0RYLH�^WLWOH��7KH�0DWUL[�`���>�$&7('B,1@��DFWRU�:,7+�PRYLH��DFWRU��OHQJWK��DFWRU��>�$&7('B,1@�!����DV�DFWRUPRYLHVZHLJKW25'(5�%<�DFWRUPRYLHVZHLJKW�'(6&������URZ�SHU�DFWRU:,7+�PRYLH��FROOHFW�^QDPH��DFWRU�QDPH��ZHLJKW��DFWRUPRYLHVZHLJKW`��DV�DFWRUV������URZ�0$7&+��PRYLH��>�+$6B*(15(@�!�JHQUH�:,7+�PRYLH��DFWRUV��FROOHFW�JHQUH��DV�JHQUHV������URZ�0$7&+��GLUHFWRU��>�',5(&7('@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��FROOHFW�GLUHFWRU�QDPH��DV�GLUHFWRUV������URZ0$7&+��ZULWHU��>�:5,7(5B2)@�!�PRYLH�:,7+�PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��FROOHFW�ZULWHU�QDPH��DV�ZULWHUV������URZ�0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG���>�+$6B.(<:25'@��PRYLHV�0RYLH�:,7+�',67,1&7�PRYLHV�DV�UHODWHG��FRXQW�',67,1&7�NH\ZRUG�QDPH��DV�NH\ZRUGV��PRYLH���JHQUHV��GLUHFWRUV��DFWRUV��ZULWHUV������URZ�SHU�UHODWHG�PRYLH25'(5�%<�NH\ZRUGV�'(6&:,7+�FROOHFW�',67,1&7�^�UHODWHG��^�WLWOH��UHODWHG�WLWOH�`��ZHLJKW��NH\ZRUGV�`��DV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV��ZULWHUV������URZ0$7&+��PRYLH��>�+$6B.(<:25'@�!�NH\ZRUG�5(7851�FROOHFW�NH\ZRUG�QDPH��DV�NH\ZRUGV��UHODWHG��PRYLH��DFWRUV��JHQUHV��GLUHFWRUV���ZULWHUV������URZ

��[�IDVWHU

Page 62: Optimizing cypher queries in neo4j

'HVLJQ�IRU�4XHU\DELOLW\

0RGHO

Page 63: Optimizing cypher queries in neo4j

'HVLJQ�IRU�4XHU\DELOLW\

4XHU\

Page 64: Optimizing cypher queries in neo4j

'HVLJQ�IRU�4XHU\DELOLW\

0RGHO

Page 65: Optimizing cypher queries in neo4j

0DNLQJ�WKH�LPSOLFLW�H[SOLFLW

Ɣ :KHQ�\RX�KDYH�LPSOLFLW�UHODWLRQVKLSV�LQ�WKH�JUDSK�\RX�FDQ�VRPHWLPHV�JHW�EHWWHU�TXHU\�SHUIRUPDQFH�E\�PRGHOLQJ�WKH�UHODWLRQVKLS�H[SOLFLWO\

Page 66: Optimizing cypher queries in neo4j

0DNLQJ�WKH�LPSOLFLW�H[SOLFLW

Page 67: Optimizing cypher queries in neo4j

5HIDFWRU�SURSHUW\�WR�QRGH

%DG�0$7&+��J�*DPH�:+(5(���J�GDWH�!��������������$1'�J�GDWH�������������5(7851�J

Page 68: Optimizing cypher queries in neo4j

*RRG�0$7&+��V�6HDVRQ��>�FRQWDLQV@�!�J�:+(5(�VHDVRQ�QDPH� ������������5(7851�J

5HIDFWRU�SURSHUW\�WR�QRGH

Page 69: Optimizing cypher queries in neo4j

&RQFOXVLRQ

Ɣ $YRLG�WKH�JOREDO�VFDQƔ $GG�LQGH[HV���XQLTXH�FRQVWUDLQWVƔ 6SOLW�XS�0$7&+�VWDWHPHQWVƔ 0HDVXUH��PHDVXUH��PHDVXUH��WZHDN��UHSHDWƔ 6RRQ�&\SKHU�ZLOO�GR�D�ORW�RI�WKLV�IRU�\RX�

Page 70: Optimizing cypher queries in neo4j

%RQXV�WLS

Ɣ 8VH�WUDQVDFWLRQV�WUDQVDFWLRQDO�F\SKHU�HQGSRLQW

Page 71: Optimizing cypher queries in neo4j

4��$

Ɣ ,I�\RX�KDYH�WKHP�VHQG�WKHP�LQ