我注意到Windows Azure诊断程序使用UTC ticks主键作为一种方法,可以按时间范围轻松访问条目。我想为我的桌子实现一个类似的系统。
然而,一个主要问题是,将要进行上传的系统不一定会将时间同步到毫秒(更不用说ping时间差异),因此在本地设置分区键然后上传效果不佳(我有各种各样的竞争条件)。理想情况下,我想保证在任何表条目生成时,其分区键肯定大于或等于表中已有的任何分区键(因为这是时间的工作方式)。
我能想到确保这种保证的唯一方法是将“timestamp”分区键设置为服务器端。有没有办法让这种情况发生,例如通过服务器端脚本?
注意:我意识到在创建条目时已经添加了时间戳,但是这个时间戳没有为表编制索引。
答案 0 :(得分:2)
我建议使用twitter / snowflake解决方案。我有非常相似的要求,这种方法对我来说很有效。
我使用了Flake ID Generator。它是基于twitter / snowflake的.net实现。
生成器可以独立部署到不同的Azure实例(或作为独立服务工作) - 我在每个Azure服务实例上独立生成ID。生成的64位ID可以直接排序并且始终是唯一的(即使同时来自不同的实例)。您还可以访问其源代码,以便在需要时也可以添加自定义项。
我希望这会有所帮助。