Azure 表分区策略

标签 azure nosql scalability azure-table-storage

我正在尝试提出一种基于日期时间的分区键策略,该策略不会导致最佳实践指南中经常描述的仅追加写入瓶颈。

基本上,如果您按 YYYY-MM-DD 之类的方式进行分区,则特定日期的所有写入最终都会位于同一分区,这会降低写入性能。

理想情况下,分区键甚至应该将写入分布在尽可能多的分区上。

为了实现这一目标,同时仍然基于 DateTime 值,我需要想出一种方法来分配日期线值存储桶的数量,其中存储桶的数量是每个时间间隔的预定数量 - 比如说每天 50 个。日期线到存储桶的分配应尽可能随机 - 但对于给定值始终相同。原因是我需要能够在给定原始日期时间值的情况下始终获得正确的分区。换句话说,这就像一个哈希。

最后,也是最重要的一点,我需要分区键在某个聚合级别上是连续的。因此,虽然给定间隔(例如 1 天)的 DateTime 值将随机分布在 X 个分区键上,但该天的所有分区键都将位于可查询范围之间。这将允许我查询所有行的聚合间隔,然后按日期时间值对它们进行排序以获得正确的顺序。

想法?这一定是一个众所周知的问题,并且已经解决了。

最佳答案

如何使用日期时间戳的毫秒部分 mod 50。这将为您提供全天的随机分布,值本身将是连续的,并且您可以在给定原始时间戳的情况下轻松计算出 PartitionKey ?

关于Azure 表分区策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667360/

相关文章:

azure - 转移资源时保留RBAC权限

nosql - Cassandra 准备好迎接黄金时段了吗?

java - Cassandra CQL 驱动程序实现

oracle - Oracle Forms 的可扩展性

html - body 顶部的宽度 100% 需要滚动

powershell - 在 Azure 中运行 PowerShell 脚本作为任务计划程序,无需创建任何虚拟机

c# - 在 Azure 的 IIS 中使用 net.tcp 绑定(bind)托管 WCF 服务

node.js - 如何访问Azure虚拟机上的AngularJS应用程序?

mongodb - Azure 表与 Azure 上的 MongoDB

Tomcat 最大并发文件上传数