I am experimenting with Google App Engine (High Replication Datastore) I understand that frequent writes to a single entity group can cause contention. Precisely to avoid that happening, my entities are all root entities ie each entity is a seperate entity group.
I begin a transaction
get the entity
if it already exists rollback the transaction
else put the entity and commit the transaction
So I thought I was leveraging app engines's claimed strength of high throughput for non-related entities (ie entities not in the same entity group)
However sometimes on the put, I am getting the dreaded exception 'too much contention on these entities'. Why should there be contention on entities not in the same group?
We are told that for a single entity group we can expect no more than 1 to 10 writes per second.
But I have not seen a figure for what we can expect app engine to handle for writes to seperate entity groups The contention seems to happen for what I consider to be quite low demands (around 100 writes per second)
Am I missing something? As well as having seperate entity groups, are there other rules to conform to in order to get high throughput?
Or are my expectations of at least several hundred writes per second simply too high?