哪个GAE数据库属性适合标记属性?

时间:2012-11-05 22:34:12

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

我想在Google App Engine中拥有我的数据库模型的属性,我不确定哪个类别效果最好。我需要它是一个类似于SO上的标签的标签云。 text属性是最好的还是我应该使用字符串属性并使其重复= True。

第二个似乎对我来说最好,然后我可以用逗号分隔标记作为分隔符。我的目标是能够搜索这些标签并计算每种标签的总数。

这看起来像是一个合理的解决方案吗?

2 个答案:

答案 0 :(得分:1)

这可能会引起您的兴趣,具体取决于您想要做什么。

GAE Sharding Counters

  

在Google App Engine上开发高效的应用程序时,您需要注意实体更新的频率。虽然App Engine的数据存储区可以扩展以支持大量实体,但请务必注意,您只能期望每秒更新任何单个实体或实体组大约五次。这是一个估计,实体的实际更新速率取决于实体的几个属性,包括它有多少属性,有多大,以及需要更新多少索引。虽然单个实体或实体组对其更新速度有限制,但App Engine擅长处理分布在不同实体上的许多并行请求,我们可以通过使用分片来利用这一点。

     

问题是,如果您有一个想要更新的实体,该怎么办?   比一秒快五倍?例如,你可以算一下   投票中的投票数,评论数,甚至是数字   您网站的访问者。

所以你要创建一个像:

这样的标签
increment(tag)

如果它不存在,也会创建它。

要计算

get_count(tag)

但是,是的,您可以创建一个重复属性,它本质上是一个列表并存储并加载它并计算其中的值。这取决于您将拥有多少,因为数据存储区对模型大小有限制,如果将它存储在单个列表中的单个模型中,它最终会过大。

所以也许每个标签有一个模型,所有单一类型?当你遇到5 /秒的问题时,上面会派上用场。

答案 1 :(得分:1)

重复的字符串属性是您的最佳选择。