diff options
author | Alex Auvolat <alex@adnab.me> | 2020-04-08 23:47:34 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2020-04-08 23:47:34 +0200 |
commit | a450103ed038d0838b1a1336ffd3a011abdd88a4 (patch) | |
tree | d9753bd60dae22d856eda2d0ef1e4a3e2c39aca3 /TODO | |
parent | cc580da0aef95bcb94bd2ce602258d0d18388969 (diff) | |
download | garage-a450103ed038d0838b1a1336ffd3a011abdd88a4.tar.gz garage-a450103ed038d0838b1a1336ffd3a011abdd88a4.zip |
Work & TODO
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -0,0 +1,29 @@ +Object table +------------ + + +Rename version table to object table +In value handle the different versions + +So that the table becomes (bucket, key) -> CRDT(list of versions) + +CRDT merge rule: +- keep one complete version (the one with the highest timestamp) +- keep all incomplete versions with timestamps higher than the complete version + +Cleanup rule: remove incomplete versions after a given delay (say 24h) + + +Block table +----------- + +Table is version_UUID -> BTreeMap<(offset, block hash)> OR Deleted (= CRDT top) + + +Block reference table +--------------------- + +Table is block_Hash + Sort key: version_UUID -> boolean (true when deleted) + +Since the hash key is the same as for the blocks themselves, +we can simply consider the updates to this table as events that increase/decrease a reference counter. |