`
gongstring
  • 浏览: 587718 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

通过GUID生成主键,保证主键全球惟一性

    博客分类:
  • Java
阅读更多
使用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("-",""));   
  
    }   
  
  }   
  
}

分享到:
评论

相关推荐

    mysql_guid主键生成方式范例

    本示例主要介绍如何通过Hibernate框架配置,来实现MySQL数据库中GUID主键的自动生成。Hibernate是Java领域广泛使用的对象关系映射(ORM)框架,它允许开发者以面向对象的方式来操作数据库。 首先,我们需要理解GUID...

    Guid和Int类型主键效率的比较

    虽然GUID提供了极高的唯一性保证,但在数据库中使用它作为主键可能会带来一定的性能开销。这是因为GUID的长度较大,占用更多的存储空间,同时在排序和索引时可能需要更多的CPU资源。此外,由于GUID通常是随机生成的...

    数据库主键生成GUID

    数据库主键生成GUID 在数据库设计中,选择合适的主键类型是非常重要的。GUID(Global Unique Identifier,全局唯一标识符)是一种常用的主键类型,它可以提供唯一的标识符,用于标识数据库中的每一条记录。 GUID的...

    GUID生成源码,可做数据库主键

    // 创建带有GUID主键的新记录 rs.CreateInstance(__uuidof(ADODB::Recordset)); rs-&gt;CursorLocation = adUseClient; rs-&gt;Open("SELECT * FROM MyTable WHERE ID = GUID()", conn, adOpenStatic, ...

    Guid生成器(随机生成工具)

    Guid(Globally Unique Identifier)是一种在分布式网络环境中...通过使用Guid,可以确保在各种场景下都能有效地保持数据的唯一性和无冲突性。GuidGen这个程序则简化了这一过程,使得Guid的生成和应用变得更加便捷。

    GUID.zip_guid_guid 生成器

    关于GUID的生成原理,它通常基于时间戳、随机数以及机器特定的信息,通过特定算法计算得出,确保全球范围内的唯一性。尽管在短时间内生成两个完全相同的GUID的概率极其微小,但为了确保绝对的唯一性,开发人员通常会...

    GUID生成器 GUID生成小程序

    GUID生成器 GUID生成小程序 快速生成GUID,自动复制到剪贴板。

    guid生成工具

    guid,全称Globally Unique Identifier,全球唯一标识符,是一种在分布式系统中用来确保唯一性的标识符。在.NET框架中,`Guid`类提供了一种简单的方式来生成和操作这些标识符。.NET 2.0是Microsoft开发的.NET ...

    GUID生成工具源码

    这个方法的内部实现依赖于操作系统提供的服务,保证了在全球范围内的唯一性。在Windows系统中,它通常会基于时间戳、进程ID、线程ID等信息生成GUID,确保这些组合在理论上几乎不可能重复。 C#源码实现一个简单的...

    Guid生成器,可以生成多个

    Guid生成器是使用C#代码编写的,所以要想使用必须先安装dot.net环境。

    GUID生成器,源码

    10. **安全问题**: 尽管GUID的唯一性极高,但不应将其作为保密信息,因为有理论上的可能性通过大量碰撞分析来预测或复现特定的GUID。 以上就是关于GUID生成器的一些核心知识点。在实际开发中,了解和掌握这些内容将...

    Guid号生成器,可以生成32位Guid号

    由于其独特性和随机性,Guid通常用于生成数据库中的主键,或者作为网络服务中请求的唯一标识符。 本“Guid号生成器”程序(guidgen.exe)可以快速生成32位的Guid字符串,无需了解其复杂的生成原理。在实际应用中,...

    GUID 生成器 支持多种格式

    2. 数据库主键:在数据库设计中,GUID常作为主键字段,确保每一行记录的唯一性。 3. 机器标识:在网络设备中,MAC地址就是一个物理层的唯一标识,可以看作是硬件级别的GUID。 4. 临时标识:在处理大量瞬态数据时,...

    Guid生成器(工具)

    它们的设计确保了在全球范围内,每次生成的Guid都是独一无二的,即使在多个系统同时生成的情况下也是如此。 Guid的生成基于多种算法,包括时间戳、随机数和网络地址等,以确保其独特性。在.NET框架中,可以使用`...

    VB.NET Guid生成器

    在VB.NET编程环境中,Guid(全局唯一...通过这些改进,VB.NET Guid生成器将更加实用和高效,能够满足开发人员在各种场景下生成Guid的需求。同时,这也是一次学习VB.NET编程、并发处理和用户体验设计的良好实践机会。

    简单Guid生成器

    标题中的“简单Guid生成器”指的是一个用于生成全局唯一标识符(GUID)的软件工具,主要面向Windows 7用户,并且需要系统已安装.NET Framework 4版本。在.NET框架中,GUID是一个128位的数字,以字符串形式表示,通常...

    GUID生成器

    在描述中提到的“全球唯一ID GUID生成器”,进一步强调了这个工具生成的ID具有全球范围内的唯一性。这意味着无论在何处、何时生成,每个GUID都与其他任何GUID不相同,这对于数据库键、软件组件标识、分布式系统中的...

    Guid随机生成器(工具)-下载

    - 数据库主键:在关系数据库中,Guid常作为主键使用,保证每条记录的唯一性。 - 对象标识:在对象-oriented编程中,每个对象可能有一个Guid作为其唯一标识。 - 网络通信:在网络协议中,Guid用于标识不同的连接和...

    全能GUID生成工具

    用来生成随机GUID和顺序GUID,需要源码与我联系

    在ASP里面创建GUID全球惟一码

    在ASP里面创建GUID全球惟一码,在ASP里面创建GUID全球惟一码,在ASP里面创建GUID全球惟一码,在ASP里面创建GUID全球惟一码。 如:2D5FDE03-4256-4FF7-B674-B0E31DD305EC

Global site tag (gtag.js) - Google Analytics