GUID使用的使用

来源:互联网 发布:asp图书管理系统源码 编辑:程序博客网 时间:2024/04/28 18:47

        GUID(Global unique identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

它的生成算法还是比较有意思的,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值。

GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。

一般平台都会提供GUID的生成API。

比如这次数据库就是使用sql server 2005 的。使用GUID,这样就可以方便的向数据库中插入数据,而不需要担心主键重复。

如:

                           create table test(
                                         id varchar(36) primary key,
                            )

                            insert into   test   values (newid())

                            select * from test

                       266A83B2-2177-4468-A24A-2FAD5642AFD0--这个是唯一的因此很方便作为主键。

      

 优缺点:

1.优点

同 IDENTITY 列相比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用程序的后续处理提供了很大方便。

便于数据库移植,其它数据库中并不一定具有 IDENTITY 列,而 Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的 GUID 值存入数据库,它不会对原有数据带来影响。

便于数据库初始化,如果应用程序要加载一些初始数据, IDENTITY 列的处理方式就比较麻烦,而 uniqueidentifier 列则无需任何处理,直接用 T-SQL 加载即可。

便于对某些对象或常量进行永久标识,如类的 ClassID,对象的实例标识,UDDI 中的联系人、服务接口、tModel标识定义等。

比如:如果你的数据库会经常导出导入,以及在多个数据库之间切换那么用 guid 不用考虑自动递增列产生的重复问题 。

2) 缺点

GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的,所以使用时要注意场合,最好不要尝试用它来作为你的电子邮件地址 J

GUID 的值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着如果在数据库中使用 uniqueidentifier 键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。

 

 

 

          

原创粉丝点击