我目前正在开展一个项目,该项目需要使用 SQL Azure 数据库来存储即将推出的应用程序的数据。该项目的目标之一是能够利用 SQL Azure 中的联合(分片)。该项目的另一个既定目标是如果客户选择此方案,则能够在本地硬件上运行此应用程序。
我面临的“障碍”之一是联邦缺乏对 IDENTITY 的支持。
虽然我理解为什么Azure 不支持 IDENTITY,但我似乎有一个心理障碍,即接受使用 GUID 作为聚集索引是一个好主意。
我已经在上面的第一个链接中执行了示例测试,并确认在将记录插入到具有 guid 作为聚集索引的表中与将相同数量的记录插入到具有用作聚集索引的 int 标识字段。
但是,由于我还需要支持本地安装,我认为可以肯定地说,当使用 guid 作为聚集索引而不是使用 int 标识时,本地性能会受到影响。
除了与性能相关的问题外,我还担心使用 16 字节宽的 guid 作为聚集索引与使用 4 字节宽的整数作为聚集索引。当然,磁盘空间相对便宜,但这仍然会很快增加(而且可能是不必要的)。
我意识到我最终将不得不在需要支持这两个既定项目目标的基础上做出权衡,但我希望做出我能做出的最明智的决定。
除了使用中间层 id 生成器之外,还有哪些替代方法可以在 Azure 上使用 Guid 作为聚集索引(和 \ 或主键)同时仍然使用联邦?
或者,我是否担心使用 Guid 作为离基的聚集索引(我承认他们很可能是这样)?如果是这样,为什么?