Azure DB顺序编号

时间:2014-09-01 11:47:53

标签: azure sql-server-2012 azure-sql-database

我目前在Azure中设计数据库时遇到一些问题,直到下列内容:

  1. SQL2012自动增量键可以/将定期跳过1000,与SQL 2012的新“功能”相关,如(link)所述。已在Connect (link)

  2. 中的“按设计”关闭此功能
  3. 建议使用启动标志来避免此行为(无法使用Azure),或者使用序列来生成递增数字。

  4. 但是,Azure DB中不支持SEQUENCE。它实际上是在Connect (link)

  5. 上作为活动问题和“无法修复”问题之间的交替

    所以,我的问题是如何在插入Azure数据库表时实际将字段自动递增1,同时避免大的间隙。

    我确实考虑过使用Trigger,然后使用它来查找现有的Max值。看起来不干净。我还认为它会导致并发问题。

    我很高兴在这里有一个代理键,但没有序列我想知道在插入时实际生成代理的值的推荐路线是什么。

    任何建议表示赞赏。

    编辑:请注意我使用较旧的“Web / Business”类型的DB而不是新的层;我不知道这是否会对任何答案产生影响。

1 个答案:

答案 0 :(得分:0)

您的反馈被标记为原因的原因是因为自动增加1成为在数据库层大规模解决的非常难的问题。如果你" shard"你的数据库(拆分它以应对负载)每个分片如何知道要递增到哪个数字?这应该从数据库中提取出来并构建到您的应用程序逻辑中。

在不知道增加数字的背景要求的情况下,很难建议正确的解决方案。它是唯一性还是序列?如果序列确实如此,只要数字是(a)唯一且(b)每次插入增加,它每次都不是1真的很重要吗?你能否将这个序列的设置设为离线过程?即 - 通过批处理使用插入日期/时间来分配序列号?

如果它的唯一性使用GUID或类似的。