1

2つのプロセスが同じエンティティを同時に変更するが、異なるのプロパティのみを変更する場合、DatastoreService.putを呼び出すと、他のプロセスの変更を上書きする可能性がありますか?GAE Datastore同時実行に関する質問

プロセスA:

 
    theSameEntity.setProperty ("foo", "abc"); 
    DatastoreService.put (theSameEntity); 

プロセスB:

 
    theSameEntity.setProperty ("bar", 123); 
    DatastoreService.put (theSameEntity); 

答えて

3

はい、それは全体のエンティティがデータストアに送信されているので、彼らは、互いの変更を上書きします可能性があります( serialized using protocol buffers)を各書き込み(差分だけでなく)で実行します。

これを避けるには、transactionsを使用する必要があります。

1

はい、私はこれを観察しました(ただし、私の場合、同時リクエストは同じプロパティを変更しました)。

トランザクションが保証するデータストアをロックしないため、トランザクションの操作で同じデータが表示されるため、トランザクションは役に立ちません。誰かがこれに対する解決策を見つけたかどうかを知りたい。

関連する問題