App Engine数据存储 - 一致性和每秒写入1次限制 - 谁将在下面的工作中发挥作用

时间:2013-05-04 14:15:51

标签: google-app-engine google-cloud-datastore eventual-consistency

我正试图围绕GAE数据存储中的可能性一致性和每秒写入原则。我有一个场景和两个问题:

#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进行了两次写入(user.put和comment.put)吗?有一个简单的方法吗?
  2. 如果我删除parent = user(user_id),则这两个实体将不再属于同一个EntityGroup。这是否意味着从函数返回的注释列表可能不包含最后添加的注释?
  3. 我做错了什么?
  4. 我知道我的实体引用部分是错误的。这个问题无关紧要(或者是吗?)

1 个答案:

答案 0 :(得分:1)

  1. 这似乎是一个软限制。在实践中,我看到最多允许5次写入/秒。

  2. 是的,现在也发生了,因为您没有使用ancestor query

  3. 没有,除非在第2点中提到。