All objects are stored as regular(hierarchical) object initially, because it is too difficult to handle write in flattened format (MVCC, ilog, DTX…). In addition, even for WORM object, application can still submit writes in multiple RPCs, e.g., appends, in this case, it is complex to add new keys and values to flattened buffer. To avoid the complexities, this project will not change the write handling, DAOS still creates trees to index keys and values.
Hierarchical object can be converted to WORM object by flattening service
Application/middleware calls write(obj) with “DONE” flag
Application/middleware calls flatten(obj)
WORM object
Mostly for small object: linear search is inefficient for large object
Multiple WORM objects can be stored in the same SSD extent