On 13/01/2009, at 11:42 AM, James Marca wrote:

You are restricting the use of _id for this "feature" due to your
design decision of using just integer ids.  But I don't think you can
also complain that there is no way to guarantee the uniqueness of an
arbitrary (set of) field(s).  There is, you're just not using it.
Again, I haven't been using couchdb for more than two months, but I'd
guess the developers are not going to see a need to allow for
*another* guaranteed unique field.

Particularly given that the uniqueness of the id field is to do with document identity, rather than uniqueness per-se.

A fundamental issue you have to remember is that Couch is designed to act in a disconnected p2p fashion. Different peers can create and edit documents, and when they replicate you get conflicts that have to be handled without the benefit of any global conflict resolution. This is why considerations of uniqueness are a dead-end. You have to think in terms of document identity, and the ontological mapping of that identity. If identity in your domain is determined by the name you give something, then that should be the id, and if you use writable replicas then you need to handle replication conflicts. So uniqueness in the sense that you are looking for is just not part of Couch's big picture. As soon as the concept of 'lock' appears in your thinking, you know you're on the wrong track.

As others have said, if you want a global state you need to look for something outside of Couch, and that has it's own problems because global state in a distributed manner is dependent on connectivity.

CouchDB is so far from a relation database that even including the word 'database' (DB), with all of it's presumptive extensions, is unfortunate IMO.

Antony Blakey
--------------------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Isn't it enough to see that a garden is beautiful without having to believe that there are fairies at the bottom of it too?
  -- Douglas Adams

Reply via email to