更新时间:2024-08-20 GMT+08:00

账本数据库使用的数据类型

账本数据库使用HASH16数据类型来存储行级hash摘要或表级hash摘要,使用HASH32数据类型来存储全局hash摘要或者历史表校验hash。

表1 账本数据库HASH类型

名称

描述

存储空间

范围

HASH16

以无符号64位整数存储。

8字节

0 ~ +18446744073709551615

HASH32

以包含16个无符号整型元素数的组存储。

16字节

16个元素的无符号整型数组能够包含的取值范围。

HASH16数据类型用来在账本数据库中存储行级或表级hash摘要。在获得长度为16个字符的十六进制字符串的hash序列后,系统将调用hash16in函数将该序列转换为一个无符号64位整数存储进HASH16类型变量中。示例如下:

十六进制字符串:e697da2eaa3a775b   对应的无符号64位整数:16615989244166043483
十六进制字符串:ffffffffffffffff   对应的无符号64位整数:18446744073709551615

示例:

gaussdb=# CREATE TABLE hash16test(id int, data hash16);
gaussdb=# INSERT INTO hash16test VALUES (1, 'e697da2eaa3a775b');
gaussdb=# SELECT * FROM hash16test;
 id |               data
----+----------------------------------
  1 | e697da2eaa3a775b
(1 row)
gaussdb=# DROP TABLE hash16test;

HASH32数据类型用来在账本数据库中存储全局hash摘要或者历史表校验hash。在获得长度为32个字符的十六进制字符串的hash序列后,系统将调用hash32in函数将该序列转换到一个包含16个无符号整型元素的数组中。示例如下:

十六进制字符串:685847ed1fe38e18f6b0e2b18c00edee 
对应的HASH32数组:[104,88,71,237,31,227,142,24,246,176,226,177,140,0,237,238]

示例:

gaussdb=# CREATE TABLE hash32test(id int, data hash32);
gaussdb=# INSERT INTO hash32test VALUES (1, '685847ed1fe38e18f6b0e2b18c00edee');
gaussdb=# SELECT * FROM hash32test;
 id |               data
----+----------------------------------
  1 | 685847ed1fe38e18f6b0e2b18c00edee
(1 row)
gaussdb=# DROP TABLE hash32test;