2 ms·
The comment in part I that b-trees are not appropriate because Git does not do “live updating” of the packfiles also felt a bit misplaced to me. Writing small o
by ruuda 4y ago
The comment in part I that b-trees are not appropriate because Git does not do “live updating” of the packfiles also felt a bit misplaced to me. Writing small objects and then aggregating them into larger ones when we get too many of them, especially with geometric repacks, that sounds a lot like LSM trees, which underpin LevelDB and descendants, which in turn are used as the storage engine in many newer relational databases. It's not b-trees, sure, but there is something that updates with every commit, and you want to balance fast lookups, disk usage, and write amplification. In that sense Git's use case does not sound so special to me at all.
- cryptonector 4y agoAnd the things to do to amortize b-tree write magnification, are well known, so b-tree magnification alone is not an excuse not to use b-trees.