我想在 Google App Engine 中的我的数据库模型上拥有一个属性,但我不确定哪个类别效果最好。我需要它是类似于 SO 上的标签的标签云。文本属性最好还是我应该使用字符串属性并使其重复=真。
第二个对我来说似乎最好,然后我可以用逗号作为分隔符将标签分开。我的目标是能够搜索这些标签并计算每种标签的总数。
这似乎是一个合理的解决方案?
我想在 Google App Engine 中的我的数据库模型上拥有一个属性,但我不确定哪个类别效果最好。我需要它是类似于 SO 上的标签的标签云。文本属性最好还是我应该使用字符串属性并使其重复=真。
第二个对我来说似乎最好,然后我可以用逗号作为分隔符将标签分开。我的目标是能够搜索这些标签并计算每种标签的总数。
这似乎是一个合理的解决方案?
这可能很有趣,具体取决于您想要做什么。
在 Google App Engine 上开发高效的应用程序时,您需要注意实体的更新频率。虽然 App Engine 的数据存储区可扩展以支持大量实体,但请务必注意,您只能期望每秒更新任何单个实体或实体组大约 5 次。这是一个估计值,实体的实际更新率取决于实体的几个属性,包括它有多少属性、有多大以及需要更新多少索引。虽然单个实体或实体组对其更新速度有限制,但 App Engine 擅长处理分布在不同实体中的许多并行请求,我们可以通过使用分片来利用这一点。
问题是,如果您有一个实体希望更新速度超过每秒 5 次,该怎么办?例如,您可能会计算投票中的投票数、评论数,甚至是您网站的访问者数。
所以你会创建一个标签,如:
increment(tag)
如果它不存在,它也恰好创建它。
数数
get_count(tag)
但是,是的,您可以创建一个重复的属性,它本质上是一个列表,然后存储并加载它并计算其中的值。这取决于您将拥有多少,因为数据存储对模型大小有限制,如果您将其存储在单个列表中的单个模型中,它最终会太大。
所以也许每个标签一个模型,都是一种类型?当您遇到 5/sec 的问题时,上述内容会派上用场。
重复的字符串属性是您的最佳选择。