fantaxy025025 发表于 2013-1-14 23:25:56

DB_ID_UUID_开题(一)

数据库的主键,按照道理来讲,应该是逻辑独立的,即其唯一作用是标识一行的唯一性。
不过有人偏偏要加入逻辑意义,那就看实际需求了。
 
这个ID是很重要的,设计不好,会出现update的很多异常。所以纵观很多数据库厂商,都有自己的ID生成方式和管理。
MySQL:auto increment
Oracle:sequence
Informix:serial
(本人仅仅熟悉这3个数据库)
 
这已经很好使用了,本来想着够用了吧,应该不会有问题了吧。但问题还是存在。
 
1. 如果是多个数据库服务器集群呢,如何让ID保持统一
2. 安全问题,完全暴露了系统的工作方式。
    比如公司的订单,或者costomerID,如果让别人窥探并利用,恐怕要有损失。这也是本人最近刚碰到问题。
3. 夸数据库问题
   虽然说夸数据库或者更换数据库并不频繁,但总会有需求。比如本人曾经碰到的例子,电信公司不同省市所用的数据库不一样,如果用数据库内嵌的ID工作方式,更换数据库的时候就会碰到问题了。
   虽说有Spring、Hibernate等工具,但使用不当,切换数据库也是个不小的工作。
 
针对上面的问题,解决方法有几个。
1. 自己模仿ID序列的生成方式,自己管理ID
    好处是:随便夸数据库,反正是自己的。
    坏处是:管理成本(深有体会啊~);数据库集群问题;
2. 加密的ID
    这样可以解决重要ID暴露的问题。
    但也会带来加密解密的问题,比如加密解密本身的问题,加密解密的成本开销等。
3. UUID也许不错==>>
    待研究~~
 
页: [1]
查看完整版本: DB_ID_UUID_开题(一)