1
0
mirror of https://github.com/fumiama/fumidb.git synced 2026-06-05 00:32:44 +08:00
This commit is contained in:
源文雨
2022-04-25 23:29:39 +08:00
parent 5bdac9ba46
commit 1b2da23ffb
5 changed files with 208 additions and 0 deletions

40
api/types.md Normal file
View File

@@ -0,0 +1,40 @@
# 数据类型
> 每种数据类型都必须指定大小8位、16位、32位、1024字节等不存在模糊的类型。
> 所有数字均按照小端字节序存储。
## 数字
> 在类型中并没有无符号数,实际使用时如需无符号数,可以进行强制类型转换。
### 类型列表
| 类型代号 | 类型 | 存储方式 |
| --- | --- | --- |
| 0 | int8 | 直接存储 |
| 1 | int16 | 直接存储 |
| 2 | int32 | 直接存储 |
| 3 | int64 | 直接存储 |
| 4 | float | 直接存储 |
| 5 | double | 直接存储 |
## 字符串
> 字符串为定长的带索引的字节数组长度最大不超过uint32(65535字节)。
### 类型列表
| 类型代号 | 类型 | 存储方式 |
| --- | --- | --- |
| 6 | string | 下一个哈希相同的数据项的指针(uint64)+该长度的数据(字节数组) |
## 二进制数据块
> 二进制数据块为定长不超过uint64的不参与索引的字节数组。
### 类型列表
| 类型代号 | 类型 | 存储方式 |
| --- | --- | --- |
| 7 | binary | 直接存储数据(字节数组) |
## 类型修饰符
> 类型修饰符占据类型代号的高2位通过或运算与基础代号结合
| 类型代号 | 类型 | 说明 |
| --- | --- | --- |
| 0x00 | null | 无修饰:允许重复、可空、非外键 |
| 0x40 | unique | 不允许重复 |
| 0x80 | nonnull | 非空 |
| 0xc0 | foreignkey | 外键 |
特别地,对于外键修饰符,将会在表头标明其外键连接到的表头指针。