使用GUID作为数据表主键的好处
使用GUID作为数据表主键的好处 使用GUID作为数据表主键的好处
数据表主健通常采用以下三种方式:
1. 自动递增值。
2. 唯一名称。这个是使用自己定义的算法来生成一个唯一序列号。
3. GUID(全局唯一标识符)。
GUID与自动递增值及唯一名称比较GUID在客户端生成,由GUID的特性决定,通过GUID生成的值可能出现重复的机会几乎等于零,因此保证在插入表的时候主键值唯一。
可以方便处理分布式数据的提交,比如:分店数据向总店提交――直接将该部分数据插入即可。
支持离线数据处理。对本地数据包进行新增记录时即可将该数据表的关键字段值赋值,其处理方法是与在线新增时是一致的。
自动递增值 在数据库服务器端生成,由于该值是由数据库系统内部处理的,亦保证其唯一性,但由于其是在数据库服务器端生成,因此必须将该值返回客户端,客户端通过该值过行其它操作。比如一张单据(主从表)是使用自动递增值,当插入单据抬头后,必须将单据抬头的关键字段值返回,再插入单据明细(单据明细是通过单据抬头关键字段进行关联的)。
不能很好处理分布式数据的提交,比如:分店数据向总店提交――提交数据时必须重新生成该数据表的关键字段值,以保证该字段值唯一。
要支持离线数据处理需要进行额外的处理,对本地数据包进行保存记录(保存到本地)时需要插入一个假设唯一值,在提交离线数据回数据服务器时再重新生成真正的唯一值,并重新进行相关的处理。
唯一名称 在客户端生成或在服务端生成,相对于自动递增值不同的地方就是自己维护生成唯一值的算法及所保存的临时值,容易造成出错或其它问题。如果是在客户端生成唯一值的话,还必须保证所生成的值是唯一的。
不能很好处理分布式数据的提交,比如:分店数据向总店提交――提交数据时必须重新生成(或预先处理)该数据表的关键字段值,以保证该字段值唯一
要支持离线数据处理需要进行额外的处理,对本地数据包进行保存记录(保存到本地)时需要插入一个假设唯一值,在提交离线数据回数据服务器时再重新生成真正的唯一值,并重新进行相关的处理。
实例说明下面以一个新增单据保存比较GUID与自动递增值/唯一名称的差别
动作
GUID
自动递增值/唯一名称
单据抬头
新增
单据抬头关键字段值:获取并填写
单据抬头关键字段值:无
保存
直接保存
首先获取并填写关键字段值,然后再进行保存
返回
直接返回
返回时必须将关键字段值返回
单据明细
新增
关联单据抬头字段值:直接填写
单据明细关键字段值:获取并填写
关联单据抬头字段值:无
单据明细关键字段值:无
保存
直接保存
获取单据抬头关键字段值并填写到单据明细的关联单据抬头字段中;
然后获取并填写单据明细关键字段值;
再进行保存
综合以上所述,用GUID作为数据表的关键字段值是可以减轻关键字段相关的操作的,并且是最直接实用的方法。
以下是java中利用GUID生成主键的代码:
//生成UUID主键import java.util.UUID;
public class Test {
public static void main(String[] args) {
for(int i=0;i<1000;i++){
UUID uuid = UUID.randomUUID();
System.out.println (uuid.toString().replaceAll("-",""));
}
}
}
分享到:
相关推荐
GUID生成器 GUID生成小程序 快速生成GUID,自动复制到剪贴板。
GUID生成工具源码 guid生成工具,有源码的。 .NET C# GUID自动生成
Guid生成器是使用C#代码编写的,所以要想使用必须先安装dot.net环境。
GUID生成程序,生成后可用来做数据库的主键,非常好用!!!
模仿VS自带的GUID生成器,可生产GUID编码,点击即可复制到粘贴板
Guid和Int类型主键效率的比较
用hibernate方式配置生成mysql guid数据,32位的,在eclipse下直接导入,运行即可
Guid生成器(工具),随机生成guid,想随机获取一个GUID?再也不用写代码生成了。
用来生成随机GUID和顺序GUID,需要源码与我联系
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。生成算法用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
GUID 生成器。支持多种格式 。 汇编写com组件的时候经常需要它来帮助生成GUID的。
guid生成工具,依赖.net 2.0 工具介绍: http://blog.csdn.net/jiftlixu/article/details/8254584
在ASP里面创建GUID全球惟一码,在ASP里面创建GUID全球惟一码,在ASP里面创建GUID全球惟一码,在ASP里面创建GUID全球惟一码。 如:2D5FDE03-4256-4FF7-B674-B0E31DD305EC
DELPHI 开发分层,常用TDataSetProvider 联ADO TADODataSet。在开发主从表时用TGUID做主键时。出现了问题。 问题就在ADODB单元的GetFilterStr函数。 GetFilterStr.txt 内是我修改过的函数
全球唯一ID GUID生成器
数据库中使用自增量字段与Guid字段主键的性能对比
GUID 的优点带来的便利远超出其缺点带来的影响,随着诸如 WebService 等系统互联与整合技术的不断发展,其唯一标识的特性使得其应用越来越广,在您的应用程序中也应考虑使用它了。
易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar
此程序仅针对win7用户而且.net framework4 的用户使用,各位如果想用,可以把.net framework 更新到4 版本
Guid生成器(随机生成工具) 随机生成GUID并复制到剪切板,方便文件命名。