优化appengine实体密钥用法

时间:2010-06-25 20:46:10

标签: python google-app-engine google-cloud-datastore

我应该关心Google App Engine数据存储区中实体的位置吗? 我应该使用自定义实体密钥名吗?

例如,我可以使用“$ article_uuid,$ comment_id”作为Comment实体的键名。 它会提高获取文章所有评论的速度吗? 或者使用较短的键更好吗?

以这种方式使用密钥是一种好习惯吗? 我也可以使用“$ article_uuid,$ comment_id”键名而不是索引:

def get_comments(article_uuid, limit=1000):
    key_prefix=db.Key.from_path('Comment', article_uuid)
    q = Comment.gql("where __key__ > :key_prefix and __key__ < :range_end",
        key_prefix=key_prefix, range_end=key_prefix+chr(ord(',')+1))
    return q.fetch(limit)

1 个答案:

答案 0 :(得分:1)

您的key_name计划(ref, see slide 40)会改善您数据的位置 - 因为您的key_name以相应文章的ID为前缀,因此应存储给定文章的评论彼此靠近。

您提出的key_name似乎不会太长。我认为在存储空间或序列化/反序列化时间方面,你会发现它与短键之间存在太大差异。我希望Comment实体的大小将由实体的其余部分支配。