【发布时间】:2013-07-14 02:12:24
【问题描述】:
我正在尝试提出一个基于 DateTime 的分区键策略,该策略不会导致最佳实践指南中经常描述的 Append-Only 写入瓶颈。
基本上,如果您按 YYYY-MM-DD 之类的方式进行分区,那么您在特定日期的所有写入都将在同一个分区结束,这会降低写入性能。
理想情况下,分区键甚至应该将写入分配到尽可能多的分区。
要实现这一点,同时仍然基于 DateTime 值的密钥,我需要想出一种方法来分配日期线值的桶,其中桶的数量是每个时间间隔的预定数量 - 比如每天 50 .将日期线分配给存储桶应尽可能随机 - 但对于给定值始终相同。这样做的原因是我需要能够在给定原始 DateTime 值的情况下始终获得正确的分区。换句话说,这就像一个哈希。
最后,也是至关重要的,我需要分区键在某个聚合级别上是连续的。因此,虽然给定时间间隔(例如 1 天)的 DateTime 值将随机分布在 X 个分区键中,但该天的所有分区键都将位于可查询范围之间。这将允许我查询我的聚合间隔的所有行,然后按 DateTime 值对它们进行排序以获得正确的顺序。
想法?这一定是一个众所周知的问题,已经解决了。
【问题讨论】:
-
没遇到过这样的问题。但是您提出的解决方案听起来很合理。只是好奇,您不能将日期时间值保留为行键吗?这会一直产生唯一的行并使搜索速度最快?
-
行键必须是不同的值,因为日期/时间在此上下文中不是唯一的。
标签: azure nosql scalability azure-table-storage