On Oct 20, 2008, at 3:31 PM, Nick Johnson wrote:
If you have 'user' docs and 'email' docs (which may simply contain
nothing
but a reference to the user that owns the email), you can attempt to
insert
both a new user doc and a new email doc in a single bulk write
transaction.
The transaction will fail if either one already exists.
This doesn't really work with my proposed sharding method, however,
since
you can't guarantee both entities will hash to the same shard. You
could
insert one doc then the other, and if the second insert fails, roll
back the
first one, though.
heh - this is my current approach
http://s3.amazonaws.com/drawohara.com.snippets/create_user_with_unique_fields_rb.html
note that doing it in bulk results in non-obvious error codes for the
user - you can't tell them *what* failed - but this approach does let
you do that and makes sure the object is not marked as a user until
it's 'fully baked'. it also allows for cleanup after a kill -9
cheers.
a @ http://codeforpeople.com/
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama