【问题标题】:Possible to make partition key added on server side Azure Table Storage可以在服务器端 Azure 表存储上添加分区键
【发布时间】:2013-12-20 08:51:30
【问题描述】:

我注意到 Windows Azure 诊断使用 UTC 刻度主键作为一种便于按时间范围访问条目的方法。我想为我的桌子实现一个类似的系统。

但是一个主要问题是,将进行上传的系统不一定会将其时间同步到毫秒(更不用说 ping 时间差异),因此在本地设置分区密钥然后上传效果不佳(我有各种各样的比赛条件问题)。理想情况下,我想保证任何时候创建一个表条目,它的分区键肯定大于或等于表中已经存在的任何分区键(因为时间就是这样工作的)。

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

注意:我意识到创建条目时已经添加了时间戳,但表没有按此时间戳索引。

【问题讨论】:

  • 这种事情在 Azure 表存储中是不可能的——还没有像服务器端脚本这样的东西。但是,“主键”的概念也并不真正适用。您可能需要查看节点之间某种程度的时间同步——这在分布式系统中很常见。
  • 抱歉,主键打错了 - 我的意思是分区键。

标签: azure azure-table-storage azure-storage


【解决方案1】:

我建议为此目的使用twitter / snowflake 解决方案。我有非常相似的要求,这种方法对我来说非常有效。

我使用了Flake ID Generator。它是基于twitter / snowflake 的.net 实现。

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

我希望这会有所帮助。

【讨论】:

  • 正是我想要的!
猜你喜欢
  • 2013-09-17
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多