aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2020-04-08 23:47:34 +0200
committerAlex Auvolat <alex@adnab.me>2020-04-08 23:47:34 +0200
commita450103ed038d0838b1a1336ffd3a011abdd88a4 (patch)
treed9753bd60dae22d856eda2d0ef1e4a3e2c39aca3 /TODO
parentcc580da0aef95bcb94bd2ce602258d0d18388969 (diff)
downloadgarage-a450103ed038d0838b1a1336ffd3a011abdd88a4.tar.gz
garage-a450103ed038d0838b1a1336ffd3a011abdd88a4.zip
Work & TODO
Diffstat (limited to 'TODO')
-rw-r--r--TODO29
1 files changed, 29 insertions, 0 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 00000000..f850d5e9
--- /dev/null
+++ b/TODO
@@ -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.