绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
SinoDB数据库guid解决方案
2022-04-21 14:29:24

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作为主键。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

专业的官方救援小分队
创建时间:2019-11-07 09:33:49
我是一个官方吐槽小栈我们是技术栈的搬砖IT民工。 我知道你们在使用小栈的过程中会遇到很多问题: 迭代功能太鸡肋? 界面太low? 编辑器难用到爆? ··· 需求尽管提,槽点尽管说,技术救援小分队在线为您灭火,致力于提供专业的解答,提供迅疾的反馈。 悄悄的说,毛线不懂的运营喵、产品狗他们不在,我们一起吐槽!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 山中老狐狸
    栈主
  • 栈栈
    嘉宾
  • gaokeke123
    嘉宾
  • Ys
    嘉宾

小栈成员

查看更多
  • gyu
  • aabbcc1832611
  • 飘絮絮絮丶
  • h313895741
戳我,来吐槽~