`
fantaxy025025
  • 浏览: 1279095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

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也许不错==>>

    待研究~~

 

分享到:
评论

相关推荐

    uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid

    标题“uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid”表明这是一个关于使用C语言实现UUID生成的资源包。这个压缩包可能包含了一个C语言编写的程序或库,可以用来在Windows平台上(通过VC6编译器)生成...

    LENOVO_VBKE_SN_SLP_UUID_TOOL_V480S专用

    LENOVO_VBKE_SN_SLP_UUID_TOOL_V480S专用

    UUID.rar_UUID C_uuid_uuid 加密_uuid.c_wince UUID

    - UUID是一种128位的数字,通常以16进制表示,分为5个部分:时间戳、节点ID、时钟序列、变异性位和版本号。 - UUID的设计目标是确保全局唯一,即使在分布式环境中,不同系统生成的UUID也应互不冲突。 - UUID有多...

    uuid.zip_c_there9gy_uuid

    - 生成UUID通常涉及调用`uuid_generate()`函数,然后使用`uuid_unparse()`将其转换为字符串格式。 - 针对不同版本的UUID,可能需要实现不同的生成逻辑,比如V1需要获取当前时间戳和硬件地址,V4则需要大量随机数。...

    NW705+_G升级文件.uuid,磊科NW705+_G升级文件.uuid

    NW705+_G升级文件

    uuid工具工具

    java图形化操作,点击生成全球唯一的uuid

    获取机器中的UUID-SMBIOS TYPE1

    此工具可以协助大家读取系统中的UUID,即SMBIOS TYPE1部分的信息.

    深入解析C++编程中__alignof 与__uuidof运算符的使用

    本文将深入解析两个在C++中不常用但非常重要的运算符:`__alignof`和`__uuidof`,它们分别涉及数据对齐和UUID(通用唯一标识符)的处理。 首先,我们来看`__alignof`运算符。`__alignof`是C++11引入的,用来获取...

    uuid-1.6.2-43.el8.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Data-UUID-0.14.tar.gz_Data::uuid_uuid

    print "Generated UUID: $uuid_str\n"; my $uuid_bin = $ug->create_bytes(); # 生成二进制形式的UUID ``` 五、UUID在实际应用中的场景 1. 数据库主键:UUID作为数据库记录的主键,能保证每个记录的唯一性,尤其...

    UUID.rar_UUID C_uuid

    UUID由五个部分组成,包括时间戳、随机数、节点ID以及版本号,确保了生成的每一个UUID几乎不可能与已存在的UUID重复。 GUIDGEN.EXE同样是Windows提供的一个图形化界面工具,用于生成GUID。与UUIDGEN不同,GUIDGEN...

    uuid-nginx-module:创建一个新的唯一 UUID 值

    uuid_random $uuid_random ; uuid_time $uuid_time ; uuid_time_safe $uuid_time_safe ; set $not_empty_var "not empty" ; uuid $not_empty_var ; uuid_random $not_empty_var ; uuid_time $not_empty_var ; uuid_...

    UUID完全解析.txt

    2. **节点ID**:为了进一步提高唯一性,UUID还可能包含节点ID(通常是MAC地址),这样即使在同一时刻生成的UUID也能保证不同。 3. **版本和变体**:UUID有多个版本和变体,不同的版本采用不同的算法来生成。例如,...

    udf.rar_linux udf_udf_uuid

    而UUID(Universally Unique Identifier)则是一个全局唯一的128位数字标识,确保在全局范围内不会重复,对于系统管理和自动化过程特别有用。 压缩包中的"udf.c"文件很可能是实现这些功能的核心代码。它可能包含了...

    CREATE_DB_AND_TABLE_add_edit_del-pw.rar_CREATE_DB_AND_TABLE_Tabl

    cmd->CommandText = "CREATE TABLE Employees (ID AUTOINCREMENT PRIMARY KEY, Name VARCHAR(50), Position VARCHAR(50))"; cmd->Execute(NULL, NULL, adCmdText); ``` 插入记录: ```cpp cmd->CommandText = ...

    zoomclone_js_nodejs_webRTC_socketio_ejs_uuid

    zoomclone_js_nodejs_webRTC_socketio_ejs_uuid

    OLED_ROSC_UUID.zip

    3. **固件更新**:如果"OLED_ROSC_UUID"是一个.bin或.hex文件,那么它可能是一个固件更新,用于改善SYD8801芯片的性能或修复已知问题。 4. **驱动程序**:如果是.dll或.sys文件,这可能是一个驱动程序,允许操作系统...

    获得本机号码 运营商 手机标识 uuid device_id

    最后,**device_id**是另一种用来标识移动设备的标识符,与UUID类似,但它更可能保持不变,即使设备经历了重置或系统升级。device_id通常是设备制造商提供的一个特定的硬件ID,用于区分不同的设备。它在应用授权、...

    uuid.rar_uuid

    可能包含了如`uuid_generate()`用于生成新的UUID,`uuid_parse()`解析字符串形式的UUID,以及`uuid_compare()`比较两个UUID是否相同等函数。这些函数的实现通常基于RFC 4122,这是一个定义UUID生成和格式的标准。 ...

Global site tag (gtag.js) - Google Analytics