我的问题是关于分片计数器以及你是否可能有太多。 请注意以下只是一个简单的示例。
假设您希望在网站上保留不同网页的点击次数。因此,为防止数据存储争用,您决定对每个页面的命中计数器进行分片。现在页面数量增加,因此分片计数器的数量增加。
假设您正在遵循典型的分片示例,每个分片计数器都有自己的类型,允许构建查询,以检索所有条目,即属于该特定分片计数器的所有实体。
我的问题是:
会有大量的计数器(不是每个计数器的分片) )会影响性能,因为会有这么多实体种类?
这是最佳做法吗?我的意思是当你有大量实体类型时,它在数据存储区查看器中看起来很难看,因为每种类型都是网站页面的分片计数器。
如果上述情况不好,那么什么是更好的解决方案?
答案 0 :(得分:1)
如果您按照所谓的“典型分片计数器”示例,您可以看到只有一种计数器类型,但您可以创建不同的字符串键来计算不同的东西。
这样你的数据库中只有一个ShardCounter类型,但是许多实例具有不同的字符串键。
我们有一个类似于您所描述的系统。仅使用一种类型的计数器,我们计算了超过一百种事件类型,总计每天达到大约百万次点击。因此,可以安全地假设它具有相当的可扩展性;)
编辑在Google的文档中添加了反例代码示例:
在最后一个示例中,您将在代码顶部有一个SHARD_KEY_TEMPLATE
变量的计数器。最后一个示例允许使用具有相同分片类的不同计数器
https://cloud.google.com/appengine/articles/sharding_counters?hl=en