2013-12-19 27 views
2

我注意到Windows Azure诊断使用UTC ticks主键作为一种使时间范围访问条目变得容易的方法。我想为我的桌子实施一个类似的系统。可能会在服务器端添加分区密钥Azure表存储

然而,一个主要的问题是,将要进行上传的系统不一定将他们的时间同步到毫秒(更不用说ping时间差异),所以在本地设置分区密钥然后上传并不能很好地工作(我有各种竞赛条件问题)。理想情况下,我希望保证在任何时候创建表条目时,其分区键肯定会大于或等于表中已有的任何分区键(因为这是时间的工作原理)。

我能想到的确保这种保证的唯一方法是让“时间戳”分区键集服务器端。有没有办法让这种情况发生,比如通过服务器端脚本?

注意:我意识到时间戳记已添加用于进行输入时,但表格不由此时间戳记索引。

+2

这种事情在Azure Table Storage中不太可行 - 没有任何东西像服务器端脚本。但是,“主键”的概念也不适用。您可能必须查看节点之间的某种程度的时间同步 - 这在分布式系统中很常见。 –

+0

对不起,主键是一个错字 - 我的意思是分区键。 –

回答

2

我建议使用twitter/snowflake解决方案。我有非常相似的要求,这种方法对我来说非常合适。我使用Flake ID Generator。它是基于twitter/snowflake的.net实现。

生成器可以独立部署到不同的Azure实例(或作为独立服务工作) - 我在每个Azure服务实例上独立生成ids。生成的64位ID可直接排序并始终唯一(即使同时来自不同实例)。您还可以访问其源代码,以便您还可以根据需要添加自定义设置。

我希望这会有所帮助。

+0

正是我在找的! –

相关问题