go/zodb/btree: Expose access to BTree/Bucket entries as public API
Traditionally BTrees in ZODB/py expose point query and iteration APIs. However they don't allow a BTree to be scanned through concurrently. For example in wendelin.core each ZBlk1 consists of a IOBTree with 512 chunks https://lab.nexedi.com/nexedi/wendelin.core/blob/v0.12-6-g318efce/bigfile/file_zodb.py#L267 and loading those chunks from ZODB one-by-one serially is very slow. Expose a way to retrieve all children of a B⁺ tree node. This way loading them all could be started in parallel thus significantly reducing overall latency if a range or whole BTree needs to be fetched.
Showing