六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 326|回复: 0

DB_ID_UUID_开题(一)

[复制链接]

升级  66.67%

118

主题

118

主题

118

主题

举人

Rank: 3Rank: 3

积分
400
 楼主| 发表于 2013-1-14 23:25:56 | 显示全部楼层 |阅读模式
数据库的主键,按照道理来讲,应该是逻辑独立的,即其唯一作用是标识一行的唯一性。
不过有人偏偏要加入逻辑意义,那就看实际需求了。
 
这个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也许不错==>>
    待研究~~
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表