gpt4 book ai didi

google-app-engine - 如何使用数据存储存储日期?

转载 作者:太空宇宙 更新时间:2023-11-03 15:25:41 25 4
gpt4 key购买 nike

数据存储文档非常清楚,如果您包含“单调递增的值”(如当前的 unix 时间),“热点”就会出现问题,但是没有提到一个好的替代方案,也没有解决是否存储完全相同(而不是增加值)会产生“热点”:

“不要为具有单调递增值(例如 NOW() 时间戳)的属性编制索引。维护这样的索引可能会导致热点,从而影响具有高读写速率的应用程序的 Cloud Datastore 延迟。” https://cloud.google.com/datastore/docs/best-practices

我想存储每个特定实体插入数据存储区的时间,如果这不可能,那么只存储日期也可以。

虽然这似乎更有可能导致“热点”,因为 24 小时内的每个新实体都会被添加到同一索引(无论如何这是我的理解)。

也许索引的工作方式还有更多问题(我很难找到关于它们究竟如何工作的很好的解释)并且一遍又一遍地使用相同的值索引很好,但增加值就不行了。

如果有人能回答这个问题,或者有更好的关于数据存储索引如何工作的文档,我将不胜感激。

最佳答案

您的应用程序是否真的计划查询日期?如果不是,请考虑简单地不索引该属性。如果您只需要不经常读取该属性,请考虑编写 mapreduce 而不是索引。

该建议是根据 BigTable 平板电脑的工作方式给出的,此处对其进行了描述:https://ikaisays.com/2011/01/25/app-engine-datastore-tip-monotonically-increasing-values-are-bad/

据我所知,让实体的主键不是单调递增的数字更为重要。最好有一个字符串键,这样实体可以更好地分布存储。

但是作为一个非专家来说,我无法想象具有单调值的单个属性的索引会产生同样的问题,如果它是合法需要的话。例如,我知道对于 Nomulus 代码库,我们有对时间索引的合法需求,因为我们想删除早于特定时间的提交日志。

我认为这些单调索引发生的一件很酷的事情是,当这些 tablet 拆分没有发生时,获取索引中最左边或最右边的元素实际上比获取索引中间的元素具有更好的延迟属性。例如,如果您执行仅获取索引中第一个结果的查询,它实际上可以比键查找更快。

关于google-app-engine - 如何使用数据存储存储日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41690158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com