SAM*_*SAM 5 google-app-engine google-cloud-datastore
数据存储文档非常明确,如果包含"单调递增值"(如当前的unix时间),则存在"热点"问题,但是没有提到一个好的替代方案,也没有解决是否存储完全相同的问题(而不是增加值)会创建"热点":
"不要使用单调递增的值(例如NOW()时间戳)来索引属性.维护这样的索引可能会导致热点影响具有高读写速率的应用程序的云数据存储延迟." https://cloud.google.com/datastore/docs/best-practices
我想存储每个特定实体插入数据存储区的时间,如果不可能的话,只存储日期也可以.
这似乎更有可能导致"热点",因为24小时的每个新实体都会被添加到同一个索引(这是我的理解).
也许还有更多关于索引如何工作的事情(我很难找到关于它们究竟是如何工作的很好的解释)并且一遍又一遍地使用相同的值索引是好的,但增值不是.
如果有人对此问题有答案,或者有关数据存储索引如何工作的更好文档,我将不胜感激.
小智 3
您的应用程序实际上计划查询日期吗?如果不是,请考虑不对该属性建立索引。如果您只需要不经常读取该属性,请考虑编写映射缩减而不是索引。
该建议是根据 BigTable 平板电脑的工作方式给出的,如下所述: https: //ikaisays.com/2011/01/25/app-engine-datastore-tip-monotonically-increasing-values-are-bad/
据我所知,更重要的是实体的主键不是单调递增的数字。最好有一个字符串键,这样可以更好地分布存储实体。
但作为一个非专家来说,我无法想象,如果合理需要的话,具有单调值的单个属性的索引也会有问题。例如,我知道在 Nomulus 代码库中,我们对按时索引有合理的需求,因为我们想要删除早于特定时间的提交日志。
我认为这些单调索引发生的一件很酷的事情是,当这些片剂分割没有发生时,获取索引中最左边或最右边的元素实际上比获取索引中间的内容具有更好的延迟属性。例如,如果您执行的查询仅获取索引中的第一个结果,那么它实际上比键查找更快。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |