...
Because WORM object will never be modified again, so it be serialized, which is called “flattened” in this design document, into contiguous buffer and migrate to DT-blob (unpinned from DRAM). After migrating to DT-blob, the memory occupied by the object can be freed. In the future, before serving read of it, the entire object can be brought back to DRAM by one SSD read from DT-blob.
The flattened object has similar format as “pool map” of DAOS(diagram on the left side), as show in the diagram on the right side, each component in the buffer includes the offset of its first child, it also records total number of children. While serving read request, keys and values can be found by linear search in the flattened buffer.
...
NB: because DAOS should provide fast search and read but flattened object can only support linear search, so DAOS can still keep indexes for large object even it is WORM, because DAOS should provide fast search and read. This is OK because metadata overhead of large object is negligible comparing with data.