1
0
mirror of https://github.com/fumiama/fumidb.git synced 2026-06-05 00:32:44 +08:00
Files
fumidb/api/types.md
2022-05-04 13:48:57 +08:00

2.0 KiB
Raw Permalink Blame History

数据类型

每种数据类型都必须指定大小8位、16位、32位、1024字节等不存在模糊的类型。 所有数字均按照小端字节序存储。

数字

在类型中并没有无符号数,实际使用时如需无符号数,可以进行强制类型转换。

类型列表

类型代号 类型 存储方式
0 int8 下一个哈希相同的数据项的指针(当值可重复时)+int8
1 int16 下一个哈希相同的数据项的指针(当值可重复时)+int16
2 int32 直接存储
3 int64 直接存储
4 float 直接存储
5 double 直接存储

字符串

字符串为变长的可索引的字节数组长度最大不超过uint16(65535字节)。实际上出于性能考虑,实现时限制长度不超过2048字节。

一旦字符串插入表中,其长度就不再可变。如需改变需要删除再添加。

类型列表

类型代号 类型 存储方式
6 string 下一个哈希相同的数据项的指针+uint16长度+该长度的数据(字节数组)

二进制数据块

二进制数据块为变长的不参与索引的字节数组长度最大不超过uint16(65535字节)。实际上出于性能考虑,实现时限制长度不超过2048字节。

一旦二进制数据块插入表中,其长度就不再可变。如需改变需要删除再添加。

类型列表

类型代号 类型 存储方式
7 binary uint16长度+直接存储的数据(字节数组)

类型修饰符

类型修饰符占据类型代号的高2位通过或运算与基础代号结合

对于可空属性,会在其值前添加一字节,指示其是否为空,如果为空则为 true

对于外键修饰符,将会在表头标明其外键连接到的表头指针

类型代号 类型 说明
0x00 null 无修饰:允许重复、可空、非外键
0x10 unique 不允许重复
0x20 nonnull 非空
0x40 foreignkey 外键