mirror of
https://github.com/fumiama/fumidb.git
synced 2026-06-09 04:30:34 +08:00
finish insert row & find row by pk
This commit is contained in:
@@ -31,6 +31,8 @@
|
||||
> 区块长度固定,但是不同索引类型有所不同
|
||||
详见[索引格式](/api/index.md)。
|
||||
### 表项
|
||||
> 实现时为了性能考虑,建表时限制数据栏数小于`128`
|
||||
|
||||
> 区块长度固定,为`8+len(row 1)+len(row 2)+...+len(row N)`字节
|
||||
|
||||
> 由于存在可变长的 string 和 binary,不同区块长度有可能不同
|
||||
|
||||
21
api/types.md
21
api/types.md
@@ -15,27 +15,34 @@
|
||||
| 5 | double | 直接存储 |
|
||||
|
||||
## 字符串
|
||||
> 字符串为变长的可索引的字节数组,长度最大不超过uint16(65535字节)。
|
||||
> 字符串为变长的可索引的字节数组,长度最大不超过uint16(65535字节)。实际上出于性能考虑,实现时限制长度不超过`2048`字节。
|
||||
|
||||
> 一旦字符串插入表中,其长度就不再可变。如需改变需要删除再添加。
|
||||
### 类型列表
|
||||
| 类型代号 | 类型 | 存储方式 |
|
||||
| --- | --- | --- |
|
||||
| 6 | string | 下一个哈希相同的数据项的指针+uint16长度+该长度的数据(字节数组) |
|
||||
|
||||
## 二进制数据块
|
||||
> 二进制数据块为变长的不参与索引的字节数组,长度最大不超过uint32。
|
||||
> 二进制数据块为变长的不参与索引的字节数组,长度最大不超过uint16(65535字节)。实际上出于性能考虑,实现时限制长度不超过`2048`字节。
|
||||
|
||||
> 一旦二进制数据块插入表中,其长度就不再可变。如需改变需要删除再添加。
|
||||
### 类型列表
|
||||
| 类型代号 | 类型 | 存储方式 |
|
||||
| --- | --- | --- |
|
||||
| 7 | binary | uint32长度+直接存储的数据(字节数组) |
|
||||
| 7 | binary | uint16长度+直接存储的数据(字节数组) |
|
||||
|
||||
## 类型修饰符
|
||||
> 类型修饰符占据类型代号的高2位,通过或运算与基础代号结合
|
||||
|
||||
> 对于可空属性,会在其值前添加一字节,指示其是否为空,如果为空则为 true
|
||||
|
||||
> 对于外键修饰符,将会在表头标明其外键连接到的表头指针
|
||||
|
||||
| 类型代号 | 类型 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| 0x00 | null | 无修饰:允许重复、可空、非外键 |
|
||||
| 0x40 | unique | 不允许重复 |
|
||||
| 0x80 | nonnull | 非空 |
|
||||
| 0xc0 | foreignkey | 外键 |
|
||||
| 0x10 | unique | 不允许重复 |
|
||||
| 0x20 | nonnull | 非空 |
|
||||
| 0x40 | foreignkey | 外键 |
|
||||
|
||||
特别地,对于外键修饰符,将会在表头标明其外键连接到的表头指针。
|
||||
Reference in New Issue
Block a user