wip
parent
dce352161b
commit
145a4f3049
49
README.md
49
README.md
|
@ -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
|
||||
|
|
Reference in New Issue