master
jdl 2022-07-26 17:17:15 +02:00
parent dce352161b
commit 145a4f3049
1 changed files with 4 additions and 45 deletions

View File

@ -5,48 +5,7 @@ An in-process, in-memory database for Go.
## TO DO
* MDB Tests
*
## Structure
### Files
```
wal/<id>/data
wal/<id>/length
wal/<id>/archived
max-committed-id
write-lock
commit-lock
```
`<day-ts>` is the unix timestamp / 86400. Therefore a new segment will be
created every day. The data file is append-only, and the length is written
atomically.
`write-lock` is used by `flock` to ensure there's only one
writer. `commit-lock` is used by the commit routine. This routine will commit
data to the database and update `max-committed-id` atomically.
### Code
```
retry/
wal/
segment/
storage/
```
## WAL File Format
The WAL file consists of an 8 byte minimum ID followed by a stream of entries
of the form
```
(4) Data length
(Data length) Data
(8) ID.
```
This allows us to quickly get the min and max IDs from the file, and iterate
though the segment from the beginning.
* map index
* btree index
* btree iterator
* WAL shipping