Re: [Neo4j] unique indexes
Or you can use the write locks on nodes to enforce just that. Just grab a write lock prior to reading/writing to it (writing will grab a write lock automatically of course). There's no exposed way of grabbing write locks manually, but removing a non-existent property is a temporary solution. It even solves the indexing problem if you do the index checks/inserts after you've grabbed a write lock on a certain node/relationship that will act as the synchronizer (that way it'll would also work in HA). 2011/6/10 yougotroo...@gmail.com Right, I can leverage that. I could have a ConncurrentSkipListSetLong or something with the nodes unique Id in it. If I add() the nodes unique Id to the Set and it returns true, I know I can safely add children. If it returns false then I know another thread beat me to it, and I can requeue the thread On , Rick Bullotta rick.bullo...@thingworx.com wrote: Not sure it applies, but also remember that the node id itself is essentially a unique key across the entire set of nodes. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of yougotroo...@gmail.com Sent: Friday, June 10, 2011 3:10 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes The only way I know of is to synchronize writes to the DB. This shouldn't be a problem for me actually, even with a cluster, since what I really need is for each node with a particular relationship to have a unique name property, like how good parents would ensure their children all have unique names. I could use terracottta and a concurrent data structure to ensure there is only one thread writing to a particular node at any given time, then I'd be guaranteed that checking for existence would work. -Matt On , Michael Hunger michael.hun...@neotechnology.com wrote: Another idea is a merge after the fact, so either in a nightly batch or during a get operation duplicates are discovered they are merged. Cheers Michael Am 10.06.2011 um 18:55 schrieb Rick Bullotta: Good point. Same would apply to relationship-based indexing, I suppose. In our use case, all of the entities that must be unique are maintained in a domain model that is managed by an in-memory hash, so we can enforce it prior to persistence. I suppose that one brute force way would be to synchronize/pipeline writes that required a unique index so that the situation of uncommitted changes on another transaction could not occur. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Alexander Smirnov Sent: Friday, June 10, 2011 12:48 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt
Re: [Neo4j] unique indexes
Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/- Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/- Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- _ entia non sunt multiplicanda praeter necessitatem, (entities should not be multiplied beyond necessity.) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
Good point. Same would apply to relationship-based indexing, I suppose. In our use case, all of the entities that must be unique are maintained in a domain model that is managed by an in-memory hash, so we can enforce it prior to persistence. I suppose that one brute force way would be to synchronize/pipeline writes that required a unique index so that the situation of uncommitted changes on another transaction could not occur. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Alexander Smirnov Sent: Friday, June 10, 2011 12:48 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- _ entia non sunt multiplicanda praeter necessitatem, (entities should not be multiplied beyond necessity.) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
Another idea is a merge after the fact, so either in a nightly batch or during a get operation duplicates are discovered they are merged. Cheers Michael Am 10.06.2011 um 18:55 schrieb Rick Bullotta: Good point. Same would apply to relationship-based indexing, I suppose. In our use case, all of the entities that must be unique are maintained in a domain model that is managed by an in-memory hash, so we can enforce it prior to persistence. I suppose that one brute force way would be to synchronize/pipeline writes that required a unique index so that the situation of uncommitted changes on another transaction could not occur. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Alexander Smirnov Sent: Friday, June 10, 2011 12:48 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/- Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- _ entia non sunt multiplicanda praeter necessitatem, (entities should not be multiplied beyond necessity.) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
The only way I know of is to synchronize writes to the DB. This shouldn't be a problem for me actually, even with a cluster, since what I really need is for each node with a particular relationship to have a unique name property, like how good parents would ensure their children all have unique names. I could use terracottta and a concurrent data structure to ensure there is only one thread writing to a particular node at any given time, then I'd be guaranteed that checking for existence would work. -Matt On , Michael Hunger michael.hun...@neotechnology.com wrote: Another idea is a merge after the fact, so either in a nightly batch or during a get operation duplicates are discovered they are merged. Cheers Michael Am 10.06.2011 um 18:55 schrieb Rick Bullotta: Good point. Same would apply to relationship-based indexing, I suppose. In our use case, all of the entities that must be unique are maintained in a domain model that is managed by an in-memory hash, so we can enforce it prior to persistence. I suppose that one brute force way would be to synchronize/pipeline writes that required a unique index so that the situation of uncommitted changes on another transaction could not occur. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Alexander Smirnov Sent: Friday, June 10, 2011 12:48 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- _ entia non sunt multiplicanda praeter necessitatem, (entities should not be multiplied beyond necessity.) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
Re: [Neo4j] unique indexes
Not sure it applies, but also remember that the node id itself is essentially a unique key across the entire set of nodes. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of yougotroo...@gmail.com Sent: Friday, June 10, 2011 3:10 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes The only way I know of is to synchronize writes to the DB. This shouldn't be a problem for me actually, even with a cluster, since what I really need is for each node with a particular relationship to have a unique name property, like how good parents would ensure their children all have unique names. I could use terracottta and a concurrent data structure to ensure there is only one thread writing to a particular node at any given time, then I'd be guaranteed that checking for existence would work. -Matt On , Michael Hunger michael.hun...@neotechnology.com wrote: Another idea is a merge after the fact, so either in a nightly batch or during a get operation duplicates are discovered they are merged. Cheers Michael Am 10.06.2011 um 18:55 schrieb Rick Bullotta: Good point. Same would apply to relationship-based indexing, I suppose. In our use case, all of the entities that must be unique are maintained in a domain model that is managed by an in-memory hash, so we can enforce it prior to persistence. I suppose that one brute force way would be to synchronize/pipeline writes that required a unique index so that the situation of uncommitted changes on another transaction could not occur. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Alexander Smirnov Sent: Friday, June 10, 2011 12:48 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user -- _ entia non sunt multiplicanda praeter necessitatem, (entities should not be multiplied beyond necessity.) ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https
Re: [Neo4j] unique indexes
Right, I can leverage that. I could have a ConncurrentSkipListSetLong or something with the nodes unique Id in it. If I add() the nodes unique Id to the Set and it returns true, I know I can safely add children. If it returns false then I know another thread beat me to it, and I can requeue the thread On , Rick Bullotta rick.bullo...@thingworx.com wrote: Not sure it applies, but also remember that the node id itself is essentially a unique key across the entire set of nodes. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of yougotroo...@gmail.com Sent: Friday, June 10, 2011 3:10 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes The only way I know of is to synchronize writes to the DB. This shouldn't be a problem for me actually, even with a cluster, since what I really need is for each node with a particular relationship to have a unique name property, like how good parents would ensure their children all have unique names. I could use terracottta and a concurrent data structure to ensure there is only one thread writing to a particular node at any given time, then I'd be guaranteed that checking for existence would work. -Matt On , Michael Hunger michael.hun...@neotechnology.com wrote: Another idea is a merge after the fact, so either in a nightly batch or during a get operation duplicates are discovered they are merged. Cheers Michael Am 10.06.2011 um 18:55 schrieb Rick Bullotta: Good point. Same would apply to relationship-based indexing, I suppose. In our use case, all of the entities that must be unique are maintained in a domain model that is managed by an in-memory hash, so we can enforce it prior to persistence. I suppose that one brute force way would be to synchronize/pipeline writes that required a unique index so that the situation of uncommitted changes on another transaction could not occur. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Alexander Smirnov Sent: Friday, June 10, 2011 12:48 PM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes Check befor update could not help there, because Neo4j does not show uncommited changes to other transactions, so it's possible to store the same value in concurrent transactions. I also tried to figure out how to avoid duplicated values in database. Seems that it needed some locks on database objects. Can someone provide an example how to lock database objects properly ? On Fri, Jun 10, 2011 at 8:01 AM, Rick Bullotta rick.bullo...@thingworx.com wrote: If you need to, you could check the existence of a match prior to every attempted add/insert/update. -Original Message- From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On Behalf Of Matt C Sent: Friday, June 10, 2011 10:25 AM To: Neo4j user discussions Subject: Re: [Neo4j] unique indexes An index that would enforce every value added to it be unique. I don't even see support for that in Lucene, so, nevermind. Just something I'm used to SQL handling for me. On Fri, Jun 10, 2011 at 1:05 AM, Peter Neubauer peter.neuba...@neotechnology.com wrote: Matt, what do you mean by unique indexes? Cheers, /peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Öresund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Fri, Jun 10, 2011 at 7:30 AM, Matt C yougotroo...@gmail.com wrote: Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user
[Neo4j] unique indexes
Sorry if this is covered somewhere, I couldn't find it in the docs. I was wondering if its possible to create unique indexes with the LuceneIndexProvider? -Matt ___ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user