私は、GAEデータストアでの偶発性の一貫性と毎秒1書き込みの原則に頭を悩ませようとしています。シナリオと 2 つの質問があります。
#python like pseudo-code
class User:
user_id = StringProperty
last_update_time = DateTimeProperty
class Comment:
user_id = StringProperty
comment = StringProperty
...
def AddCommentAndReturnAllComments(user_id):
user = db.GqlQuery("SELECT * FROM User where user_id = :1", user_id)
user.last_update_time = datetime.now()
user.put()
comment = Comment(parent=User(user_id))
comment.put()
comments = db.GqlQuery("SELECT * FROM Comment where user_id = :1", user_id)
return comments
質問:
- 1 秒以内に同じ EntityGroup に 2 つの書き込み (user.put と comment.put) を行ったため、ここで例外が発生しますか? それを回避する簡単な方法はありますか?
- parent=user(user_id) を削除すると、2 つのエンティティは同じ EntityGroup に属しなくなります。関数から返されたコメントのリストに、最後に追加されたコメントが含まれていない可能性があるということですか?
- 私は本質的に間違ったことをしていますか?
エンティティ参照部分が間違っていることはわかっています。質問には関係ありません(または関係ありますか?)