Closed jchris closed 2 weeks ago
in this approach, result.removals can be used to mark slabs for compaction
eg old compaction slabs that correspond to not-recently-modified data will stick below the chunk size, and we only need to recompact them when one of their cids gets touched by a removal.
if we want to implement a max car size, we can do splitting here, and save more than one car per transaction.
The hard part is if your split compaction file count is bigger than your autoCompact threshold you need a different approach.
The too bad part is this alone doesn't make the compaction process streaming. In theory could write out files as the compactor goes and flush memory.
I think this can be implemented as a mimimal diff by changing the car log format from current:
[cid3, cid2, cid1, cid0]
where cid0 is a compactor output with the full data set.
If instead of one file, sometimes the writer outputs multiple files, we can capture that info like:
[[cid3], [cid2a, cid2b], [cid1], [cid0a, cid0b, cid0c]]
this will minimize semantic blast radius
WeChat Mini Programs have a 1 MB block size limit with a 10MB total storage limit. also relevant for this feature
from Grimoire:
When considering integration with WeChat Mini Programs, it's crucial to be aware of their storage constraints, specifically the 1MB limit for each key-value pair and a total storage limit of 10MB. Adjusting the chunk size for the encrypted blockstore to comply with these limits will be essential for seamless functionality within WeChat's environment. For detailed guidelines on WeChat's storage limitations, please refer to the official WeChat Mini Program Documentation.
closed by #119 thank @valorant-dhruv
load testing partykit storage I've found a maximum size, which means we need to have the encrypted blockstore split blocks larger than a threshold in some configurations.