Just to make it absolutely clear, are you saying when creating the initial
node I do:
CREATE (headNode:HEAD {list:"mylist"})-[:LINK]->(headNode)
But when inserting I do:
MERGE (headNode:HEAD {list:"mylist"})
WITH headNode //had to add this line,
cause I got an error WITHout it :)
MATCH (headNode)-[old:LINK]->after
DELETE old
CREATE headNode-[:LINK]->(newNode:LINKNODE { number : {nodeNumber}
})-[:LINK]->after
Sorry for the re-clarification (I'm feeling a little dense here). The
reason I am asking is that it doesn't work, so I must have mis-understood
you somewhere.
On Mon, Feb 10, 2014 at 10:30 PM, Michael Hunger <
[email protected]> wrote:
> Only with unique constraints, merge takes a global lock on the label +
> property.
>
> Michael
>
> Am 10.02.2014 um 12:17 schrieb Aran Mulholland <[email protected]>:
>
> Why do you need the unique constraint?
>
>
> On Mon, Feb 10, 2014 at 9:52 PM, Michael Hunger <
> [email protected]> wrote:
>
>> I think you have to change it to use merge which takes a schema index
>> lock.
>>
>> ie.
>>
>> create constraint on (h:HEAD) assert h.list is unique;
>>
>> MERGE (headNode:HEAD {list:"mylist"})
>>
>> MATCH (headNode)-[old:LINK]->after
>>
>> DELETE old
>> CREATE headNode-[:LINK]->(newNode:LINKNODE { number : {nodeNumber}
>> })-[:LINK]->after
>>
>>
>>
>> HTH
>>
>> Michael
>>
>> Am 10.02.2014 um 11:30 schrieb Aran Mulholland <[email protected]
>> >:
>>
>> I've got some real headaches inserting into linked lists.
>>
>> If I create a node as such:
>>
>> CREATE (headNode:HEAD)-[:LINK]->(headNode)
>>
>> then insert like so
>>
>> MATCH (headNode:HEAD)-[old:LINK]->after
>> DELETE old
>> CREATE headNode-[:LINK]->(newNode:LINKNODE { number : {nodeNumber}
>> })-[:LINK]->after
>>
>> then everything is fine and dandy. But when I try to run the insertion
>> code in parallel, then I get some real issues. I either get an error like
>> "Relationship 325457 not found" or I get two or more lists coming off the
>> headNode. The first error I can deal with as I can rerun the query, the
>> second is totally unacceptable as my other queries get very messed up
>> results.
>>
>> I am writing for a twitter like service and am using the linked lists so
>> I can have a news feed. There is a high possibility that the list will need
>> to be added to by more than one user at once, and this chance will grow the
>> more users the system has.
>>
>> What I want to be able to do is put a lock around the insertion so that
>> this does not happen.
>>
>> How can I better craft my queries so that parallel insertion via cypher
>> over REST is sustainable?
>>
>> --
>> 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 [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>> --
>> 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 [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
> --
> 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 [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
> --
> 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 [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
--
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.