oracle怎么使用uuid

啊,据我所知,使用UUID对于Oracle来说似乎很方便。
但由于我以前做过一次,所以我比较谨慎,所以我想谈谈。

去年在上海做项目的时候,用1 2 c版本搭建了一个有大量表的分布式系统,想用UUID作为主键。
当时我尝试了两种方法。

首先,使用RAW(1 6 )。
获取 ID RAW(1 6 ) 主键。
好处是老版本的Oracle似乎都支持,而且兼容性很好。
缺点是UUID原本是1 2 8 位,所以转换为1 6 字节。
在此过程中您将需要进行一些计算。
使用时可能会造成混乱。
我记得有位同事专门为此写了很长时间的查询,最后却发现他把UUID反汇编乱用了。

其次,直接使用ID UUID PRIMARY KEY(仅在1 2 c中可用)。
这真是太神奇了。
直接保存UUID。
不用自己转账,查询方便。
但是,如果您使用的是较旧版本的 Oracle(例如 1 0g),则遗憾的是该数据类型不可用。
当时这引起了运维方面的多次争论,最终决定在1 2 c上安装新系统。

使用 SYS_GUID() 插入 UUID 绝对是最简单的方法。
您通常会直接在插入语句中使用它,例如 INSERT INTO my_table(id) VALUES(SYS_GUID());这每次都会生成一个新的语句并保证唯一性。

手动指定UUID时,例如“01 2 3 4 5 6 7 -8 9 ab-cdef-01 2 3 -4 5 6 7 8 9 abcdef”,必须注意格式。
有一次我用手打错了一个连字符,过了很长时间才出现错误信息,这让我很生气。
因此,如果您手动指定UUID,请仔细检查格式。

运行查询时,只需使用 SYS_GUID() 生成查询并直接检查 ID。
如果要检查手动指定的 UUID,请将 UUID 括在“xxxx”引号中,就像检查常规字符串一样。
我基本上从未使用过 TO_BINARY_DOUBLE 和 FROM_BINARY_DOUBLE。
好像也太麻烦了。
为什么我一定要绕路呢?
不管怎样,如果你使用的是Oracle 1 2 c以上版本,直接使用UUID数据类型肯定是方便的。
旧版本使用 RAW(1 6 ),但您需要小心将 UUID 转换为 RAW 的过程。
剩下的就看你的具体需求了,比如你需要高兼容性还是高性能。
我最终为我的上海项目选择了 UUID 数据类型,并发现它很好用。

uuid怎么设置

说实话,设置UUID其实很简单,只要用一定的算法生成一个全局唯一的标识符就可以了。
我们先来说说最重要的事情。
Java 的 java.util.UUID 或 MySQL 的 UUID() 函数的核心目的是生成此类标识符。
我去年运行的项目有大约 3 000 个数据量,全部使用 UUID 作为主键,而且我很少遇到重复问题。

还有一点是,UUID生成算法依赖于时间戳、节点信息和随机数的组合。
一开始我以为只要时间戳就够了,后来发现我错了。
为了确保 UUID 是唯一且不可预测的,我们需要将节点信息与随机数结合起来。
还有另一个重要细节:UUID 版本和变体。
例如,版本 4 UUID 完全随机生成,而版本 1 UUID 基于时间戳和 MAC 地址。

最后,使用 UUID 时,请小心避免对其进行硬编码,因为这会降低 UUID 的随机性和唯一性。
我认为值得尝试的是在开发过程中尝试使用自动生成的 UUID,而不是手动指定它们。
这降低了人为错误的风险。
等等,还有一件事需要注意,那就是 UUID 兼容性问题。
不同的系统和库可能对 UUID 有不同级别的支持,这是另一个常见的陷阱。

数据库存储的uuid是什么

上周有用户询问如何将 UUID 存储在数据库中。
不要感到困惑,因为我会向你解释。

仔细想想,UUID 是 1 2 8 位数字。
保存时是3 2 个十六进制数字,一般都当作字符串处理。
标准格式是带有连字符的,例如1 2 3 e4 5 6 7 -e8 9 b-1 2 d3 -a4 5 6 -4 2 6 6 1 4 1 7 4 000,这种格式美观且易于记忆。
但是,为了节省空间,某些系统会去掉破折号,从而产生一长串 1 2 3 e4 5 6 7 e8 9 b1 2 d3 a4 5 6 4 2 6 6 1 4 1 7 4 000。
小心这个压缩版本。

为什么要使用UUID?重点是,在做分布式处理的时候,我们需要保证跨服务器的ID不重复。
记得2 02 3 年,上海的一个购物中心项目依靠UUID来隔离每个会员的记录。
无论如何,无论有多少台服务器,UUID几乎不重要并且相对稳定。

UUID也常用作缓存中的键;因为它的独特性,查起来不容易击中要害。
然而,它也遇到了缺点。
我曾经使用压缩的 UUID 作为密钥。
结果,另一位同事在编写查询时忘记包含连字符,直接根据长度进行搜索。
由于CPU长时间挂起很烦人。

所以选择哪种型号要根据情况而定。
节省空间;压缩版本很好,但开发人员需要知道它是什么。
如果看起来不错,那么标准版就没有什么问题。
你只能为自己思考,没有人能为你做决定。