Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Regular object of DAOS is stored in hierarchical format, it can support multi-version and arbitrary overwrites, DAOS has to keep tree indexes for these objects to support high efficient key and value insert and lookup. It means that DAOS has to do multi-allocation for even a very small object every I/O (object, tree node, key, tree node, value…), giving if these allocations are very small enough, most of them will stay in the MD-blob forever: it is impossible for DAOS to migrate all small pieces to DT-blob because write amplification is unacceptable. It is worth noting that everything in MD-blob will be pinned in DRAM forever. This is hard to change because

WORM object

Because data model of DAOS can support snapshot, overwritesoverwrite, distributed transaction, MVCC, MVCC…, so it is hard to change the metadata format. However, for workloads like AI/ML, the dataset will never be changed again after data ingestion. for ingestion will not not modified by AI/ML, It means that keeping indexes and logs for objects is not always necessary, especially for those objects are relatively small. The terminology to describe this kind of AI/ML datasets is Write-Once-Read-Many (WORM).

Because WORM object will never be modified again after completion of write, so it can be serialized, which is called “flattened” 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.

Flattened format

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.

...

Info

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.