Sure thing. Let us know how it works out. :) On Thu, Feb 7, 2019 at 4:43 PM Andrea Balzoni <andrea.balz...@keypartner.it> wrote:
> Thanks a lot for your input, i'll surely try what you suggested and add a > constraint to my schema :) > > Thankd again for taking your time to answer > > Il giorno gio 7 feb 2019, 22:04 Eve Freeman <eve.fre...@gmail.com> ha > scritto: > >> Something like (these are totally untested, sorry for bugs)--also, this >> label AllCategories should probably be more what your entities actually are: >> >> create constraint on (allCategories:AllCategories) assert >> allCategories.id is unique; >> >> UNWIND $nodes AS n >> MERGE (node:AllCategories {id: n.id}) >> SET node += n >> RETURN node >> >> If you want to retain category as a label, you could add it in a second >> part with something like: >> UNWIND $nodes AS n >> MERGE (node:AllCategories {id: n.id}) >> SET node += n >> call apoc.create.addLabels([ id(node) ], [ n.category ]) yield node >> RETURN node >> >> On Thu, Feb 7, 2019 at 3:52 PM Andrea Balzoni < >> andrea.balz...@keypartner.it> wrote: >> >>> Ids are supposed to be globally unique, regardless of their label >>> (again, i'm not sure this is the best approach, but i thought it was the >>> one that made more sense), i'm not sure what kind of info i could provide >>> so feel free to ask... >>> >>> Il giorno gio 7 feb 2019, 21:24 Eve Freeman <eve.fre...@gmail.com> ha >>> scritto: >>> >>>> Whoops, "if so" should be "if not". >>>> >>>> On Thu, Feb 7, 2019 at 3:22 PM Eve Freeman <eve.fre...@gmail.com> >>>> wrote: >>>> >>>>> Are the ids unique to each label? If so, maybe you can merge on one >>>>> "inclusive" label and then add an additional category label, and then you >>>>> can have just one constraint. No idea what you're doing here, so giving my >>>>> best guess. >>>>> >>>>> On Thu, Feb 7, 2019 at 2:40 PM Andrea Balzoni < >>>>> andrea.balz...@keypartner.it> wrote: >>>>> >>>>>> That sounds like a lot of constraints or am i wrong? >>>>>> >>>>>> Il giorno gio 7 feb 2019, 20:19 Eve Freeman <eve.fre...@gmail.com> >>>>>> ha scritto: >>>>>> >>>>>>> Yes. You would need to add a constraint for each label + id >>>>>>> combination. >>>>>>> >>>>>>> On Thu, Feb 7, 2019 at 1:57 PM Andrea Balzoni < >>>>>>> andrea.balz...@keypartner.it> wrote: >>>>>>> >>>>>>>> Sadly the ids i'm trying to add are not going to be necessarily >>>>>>>> unique, hence why i'm using merge. I think i grasped what a constrant >>>>>>>> is, >>>>>>>> but i cant say the same about indexes. So you are telling me that >>>>>>>> adding a >>>>>>>> constraint on ids would make the query faster? Sorry about questions >>>>>>>> that >>>>>>>> might sound stupid, but i'm fairly new to neo4j... >>>>>>>> >>>>>>>> Il giorno gio 7 feb 2019, 18:59 Eve Freeman <eve.fre...@gmail.com> >>>>>>>> ha scritto: >>>>>>>> >>>>>>>>> One other note--if you know these are unique ids, you can avoid >>>>>>>>> using merge, and just use create, which will be quicker still. >>>>>>>>> >>>>>>>>> On Thu, Feb 7, 2019 at 12:54 PM Eve Freeman <eve.fre...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Well, what a merge will do is check whether something exists >>>>>>>>>> before it creates it, "match or create". The match step will get >>>>>>>>>> linearly >>>>>>>>>> slower as it has to scan larger and larger lists of nodes on a >>>>>>>>>> label. If >>>>>>>>>> you add an index (at minimum), or unique constraint/node key >>>>>>>>>> (preferred, >>>>>>>>>> especially if you require uniqueness and will eventually have >>>>>>>>>> concurrent >>>>>>>>>> requests of this nature), it will be able to do the match step much >>>>>>>>>> quicker. >>>>>>>>>> >>>>>>>>>> On Thu, Feb 7, 2019 at 12:50 PM Andrea Balzoni < >>>>>>>>>> andrea.balz...@keypartner.it> wrote: >>>>>>>>>> >>>>>>>>>>> Honestly i heard of those, but i'm not using any. I'm quite new >>>>>>>>>>> to it, so i wasnt sure what their purpose is. >>>>>>>>>>> >>>>>>>>>>> Il giorno gio 7 feb 2019, 18:43 Eve Freeman < >>>>>>>>>>> eve.fre...@gmail.com> ha scritto: >>>>>>>>>>> >>>>>>>>>>>> What's your schema? Do you have a unique constraint or index on >>>>>>>>>>>> the labels + id you're merging on? >>>>>>>>>>>> >>>>>>>>>>>> Eve >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Feb 7, 2019 at 12:23 PM <andrea.balz...@keypartner.it> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hello everyone, i'm trying to MERGE thousands of nodes using >>>>>>>>>>>>> UNWIND and apoc procedures (for a dynamic label creation) using >>>>>>>>>>>>> Java Driver >>>>>>>>>>>>> as follows: >>>>>>>>>>>>> >>>>>>>>>>>>> String query = >>>>>>>>>>>>> "UNWIND $nodes AS n " + >>>>>>>>>>>>> "CALL apoc.merge.node([n.category], {id: n.id}, >>>>>>>>>>>>> n) YIELD node RETURN node"; >>>>>>>>>>>>> session.run( query, params ); >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> My database contains something like 150k nodes divided by 16 >>>>>>>>>>>>> labels and 130k relationships of the same type. It worked fine so >>>>>>>>>>>>> far, it >>>>>>>>>>>>> never failed to deliver, but now that i'm trying to create >>>>>>>>>>>>> something like >>>>>>>>>>>>> 4k new nodes and 5k new relationships at once it took more than >>>>>>>>>>>>> 30 minutes. >>>>>>>>>>>>> I feel like it should be way faster than this. >>>>>>>>>>>>> >>>>>>>>>>>>> Am i doing anything wrong? Is it really supposed to be this >>>>>>>>>>>>> slow? Is there anything i can do to make this process smoother >>>>>>>>>>>>> and to >>>>>>>>>>>>> improve performances? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks in advance >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>>> Google Groups "Neo4j" group. >>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>>> it, send an email to neo4j+unsubscr...@googlegroups.com. >>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>> Google Groups "Neo4j" group. >>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>> it, send an email to neo4j+unsubscr...@googlegroups.com. >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>> Google Groups "Neo4j" group. >>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>> it, send an email to neo4j+unsubscr...@googlegroups.com. >>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>> >>>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "Neo4j" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to neo4j+unsubscr...@googlegroups.com. >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Neo4j" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to neo4j+unsubscr...@googlegroups.com. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Neo4j" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to neo4j+unsubscr...@googlegroups.com. >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Neo4j" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to neo4j+unsubscr...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Neo4j" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to neo4j+unsubscr...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Neo4j" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to neo4j+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Neo4j" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to neo4j+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to neo4j+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.