4

是否有机会在这样构造的 Azure 表中重复 RowKey?

string.Format("{0:d19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks)

这是同样的问题:

在我们为 Ticks 获得新值之前,我的 webrole 会创建两条记录吗?

我想按时间倒序返回实体。该表预计不会不断添加新实体,但希望会有很多插入事务。

解决方案

好的,感谢 Mark Seeman,这是我遇到的解决方案:

string.Format("{0:d19}+{1}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks, Guid.NewGuid().ToString("N"))

使用 Guid,我确定不会重复行键。

4

1 回答 1

4

随着并发写入的数量接近无穷大,获得多个相同行键的概率为1 :)

说真的,一个 Tick 是 100 纳秒。现代处理器以每个 Tick 有数百个 CPU 周期的速度运行,因此会发生相同的 Ticks

事实上,我昨天只是和我的一位客户交谈。他有那个确切的问题,并且不得不解决它以确保唯一性。

考虑引入一个真正独特的组件(例如 GUID)作为(可排序的)组合的一部分。

于 2011-01-21T13:22:02.707 回答