我正在尝试连接两个数据库中的数据,这两个数据库都是由不同的 UI 应用程序自动创建的。一方面,所有密钥都采用这种格式“D8FC23D7-97D6-42F5-A52F-1CE93087B3A4”。
有什么理由这样做吗?我还看到了在 GIS 数据库中看起来相似的键。我不知道这些是否应该是一些计算的密钥,也许是为了检测我正在尝试做的事情,或者只是出于其他目的随机。
PS 我正在使用 SQL Server。据我所知,这不是 SQL Server 自动生成的。
我正在尝试连接两个数据库中的数据,这两个数据库都是由不同的 UI 应用程序自动创建的。一方面,所有密钥都采用这种格式“D8FC23D7-97D6-42F5-A52F-1CE93087B3A4”。
有什么理由这样做吗?我还看到了在 GIS 数据库中看起来相似的键。我不知道这些是否应该是一些计算的密钥,也许是为了检测我正在尝试做的事情,或者只是出于其他目的随机。
PS 我正在使用 SQL Server。据我所知,这不是 SQL Server 自动生成的。
这是一个 GUID,也称为 UUID,一个通用的唯一标识符(例如,维基百科或rfc4122)。guid 背后的想法是应用程序可以生成全局唯一的标识符,而无需中央单元进行任何编排(参见下面 rfc4122 的动机)。
各种系统、数据库和编程语言都提供了生成 UUID 的功能(例如SELECT NEWID()
在 sql server 中);好处是使用 UUID 生成器,应用程序可以以自给自足的方式生成全局标识的单元。
UUID 可以用作数据库键,但在大多数情况下,您会发现更轻量级和更合适的键。
使用 UUID 的主要原因之一是不需要集中
权限来管理它们(尽管一种格式使用
IEEE 802 节点标识符,其他格式则不使用)。因此,
按需生成可以完全自动化,并用于各种
目的。此处描述的 UUID 生成算法支持非常高的分配率,如有必要,每台机器每秒高达 1000 万次
,因此它们甚至可以用作事务 ID。
UUID 具有固定大小(128 位),与其他替代方案相比相当小。这非常适合各种排序、
排序和散列、存储在数据库中、简单
的分配以及总体上易于编程。由于 UUID 是唯一且持久的,因此它们是出色的统一资源名称。无需注册过程即可生成新 UUID 的独特能力使 UUID 成为 铸造成本最低
的 URN 之一。