因为是分布式应用,需要考虑不同机器上产生的主键也不能相同,主键占用的字段长度越小越好,大家有什么好的建议?

解决方案 »

  1.   

    单独建一个表,来记录maxid。这样可以避免主键重复。
      

  2.   

    单独建一个表,来记录maxid。这样可以避免主键重复。
      

  3.   

    to tomuno(tomuno):Java的核心类库中没有产生GUID的类吧?
    有没有现成的产生guid的源代码?
      

  4.   

    jdk1.5有 java.util.UUID.randomUUID().toString();或者使用别人写好的现成代码:RandomGUID from http://www.javaexchange.com/aboutRandomGUID.html
      

  5.   

    guid必须用char(32)来存储吗?有没有可能占用字节更少一些?
      

  6.   

    要是数字很长, 而且没有意义. 如果需要查询, 不是要出人命?产生主键只要在后台统一产生. 建个表存一下就好. 可以是年月日+多位顺序号, 长度看极限情况 yyyymmddXXXXXX
      

  7.   

    主键最好与业务无关,用 UUID 最好,保证全球唯一 :)
    以现在的计算机存储,字段长度应该不是问题吧
      

  8.   

    单独建一个表,存储每个表的key起始值,当前最大值
    然后每个表对应写个bean,里面写个方法取ID
      

  9.   

    我觉得用GUID做主键的方式很好,不需要跟服务器交互就可以高效的产生主键,而且实现起来也简单。就是怕主键太长了会影响到将来数据的检索效率(存储空间倒是没什么问题,现在的存储器越来越廉价了),尤其是数据量很大的情况,毕竟我们的系统中主要以查询为主。