SinoDB数据库guid解决方案

该文介绍了在SinoDB数据库系统中如何生成和使用GUID。通过创建智能大对象dbspace、配置数据库参数、引入guid1.jar包、定义系统函数sys_guid,最后进行测试,可以实现GUID的生成。然而,由于GUID的随机性可能导致数据插入速度慢和磁盘活动增加,因此在用作主键时需要谨慎考虑其性能影响。
摘要由CSDN通过智能技术生成

 GUID, 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier)。GUID是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节(128位)的二进制值,用于指示产品的唯一性。世界上的任何两台计算机都不会生成重复的 GUID 值。

       GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:fda437b5-6edd-42dc-9bbd-c09d10460ad0 即为有效的 GUID 值。

       GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。

SinoDB利用用户自定义例程(UDR)实现guid的步骤如下:

1、创建智能大对象dbspace:

touch /home/informix/dbs/sbdbs1

chmod 660 /home/informix/dbs/sbdbs1

onspaces -c -S sbdbs1 -p /home/informix/dbs/sbdbs1 -o 0 -s 1024000

---备注:1024000为所创建的智能大对象dbspace大小,可按实际情况指定

2、配置$INFORMIXDIR/etc/$ONCONFIG文件中的 以下参数,修改参数后要重启数据库:

VPCLASS      jvp,num=1

SBSPACENAME  sbdbs1

3、向技术支持工程师获取guid1.jar包拷贝到$INFORMIXDIR/extend目录下;

4、在需要生成guid的数据库中执行以下语句:

--数据库安装在linux环境,执行以下语句,红色字体部分以guid1.jar文件所在路径为准

execute procedure install_jar('file:$INFORMIXDIR/extend/guid1.jar','guid1',0);  

--数据库安装在windows环境,执行以下语句,红色字体部分以guid1.jar文件所在路径为准

 execute procedure install_jar("file:C:\Program Files\Sinoregal SinoDB Software Bundle\extend\guid1.jar", "guid1",0);

create function sys_guid() returns char(36)

external name 'guid1:UUIDGenerator.getGuid()'

language java;

5、生成guid测试:

create table tguid(aa char(50),bb int);

insert into tguid (aa,bb) values (sys_guid(),1);

select * from tguid;

       以上,就是在SinoDB中生成GUID的具体步骤。需要注意的是,如果采用GUID作为主键,由于它是随机产生的,所以在进行数据插入时,会涉及到数据的移动,导致数据插入很缓慢,还会涉及大量不必要的磁盘活动。由此带来空间的浪费、存储的碎片化会最终会引起读写效率的严重下降,所以要慎重选择随机GUID作为主键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值