我正试图围绕 GAE 数据存储中的可能性一致性和每秒写入 1 原则。我有一个场景和两个问题:
#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
问题:
- 我会在这里得到一个例外,因为我在一秒钟内对同一个 EntityGroup 进行了两次写入(user.put 和 comment.put)?有没有简单的方法解决它?
- 如果我删除 parent=user(user_id),这两个实体将不再属于同一个 EntityGroup。这是否意味着从函数返回的评论列表可能不包含最后添加的评论?
- 我做错了什么吗?
我知道我弄错了实体引用部分。这个问题无关紧要(或者是吗?)