Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 谷歌数据存储-索引没有热点的日期创建字段_Sorting_Google App Engine_Indexing_Google Cloud Datastore_Nosql - Fatal编程技术网

Sorting 谷歌数据存储-索引没有热点的日期创建字段

Sorting 谷歌数据存储-索引没有热点的日期创建字段,sorting,google-app-engine,indexing,google-cloud-datastore,nosql,Sorting,Google App Engine,Indexing,Google Cloud Datastore,Nosql,我正在使用谷歌数据存储,需要查询它来检索一些实体。这些实体将需要按从新到旧排序。我的第一个想法是创建一个包含时间戳的date_属性。然后,我将索引这个字段并在这个字段上排序。这种方法的问题是它会导致数据库中出现热点() 不要使用单调递增的值(例如NOW()时间戳)索引属性。维护这样的索引可能会导致热点,影响高读写速率应用程序的云数据存储延迟 显然,按日期对数据进行排序是对数据库执行的最常见的排序。如果我不能索引时间戳,有没有其他方法可以完成从最新到最旧的排序,而没有热点?正如您所注意到的,索引单

我正在使用谷歌数据存储,需要查询它来检索一些实体。这些实体将需要按从新到旧排序。我的第一个想法是创建一个包含时间戳的date_属性。然后,我将索引这个字段并在这个字段上排序。这种方法的问题是它会导致数据库中出现热点()

不要使用单调递增的值(例如NOW()时间戳)索引属性。维护这样的索引可能会导致热点,影响高读写速率应用程序的云数据存储延迟


显然,按日期对数据进行排序是对数据库执行的最常见的排序。如果我不能索引时间戳,有没有其他方法可以完成从最新到最旧的排序,而没有热点?

正如您所注意到的,索引单调变化的值不会扩展,并且可能导致热点。这是否会对您造成潜在影响取决于您的具体使用情况

一般来说,此模式的热点是每秒500次写入。如果你知道你肯定会保持这种状态,你可能不需要担心


如果您确实需要每秒超过500次写入,但有一个上限,您可以尝试分片方法。基本上,如果每秒写入的上限是x,那么n=上限(x/500),其中n是碎片的数量。当您写入时间戳时,在开始处加上random(1,n)。这将创建n个随机密钥范围,每个密钥范围每秒最多可执行500次写入。当您查询数据时,您需要发出n个查询,并对结果流进行一些客户端合并。

正如您所注意的,索引单调更改的值不会扩展,并且可能导致热点。这是否会对您造成潜在影响取决于您的具体使用情况

一般来说,此模式的热点是每秒500次写入。如果你知道你肯定会保持这种状态,你可能不需要担心


如果您确实需要每秒超过500次写入,但有一个上限,您可以尝试分片方法。基本上,如果每秒写入的上限是x,那么n=上限(x/500),其中n是碎片的数量。当您写入时间戳时,在开始处加上random(1,n)。这将创建n个随机密钥范围,每个密钥范围每秒最多可执行500次写入。查询数据时,需要发出n个查询,并对结果流进行客户端合并。

此数字的来源是什么?此数字的来源是什么?