16#ifndef ROOT7_RPageStorageDaos
17#define ROOT7_RPageStorageDaos
33namespace Experimental {
38class RPageAllocatorHeap;
77 std::uint32_t
Serialize(
void *buffer)
const;
102 std::atomic<std::uint64_t>
fOid{0};
140 static RPage NewPage(
ColumnId_t columnId,
void *mem, std::size_t elementSize, std::size_t nElements);
141 static void DeletePage(
const RPage& page);
173 void UnzipClusterImpl(
RCluster *cluster) final;
184 void ReleasePage(
RPage &page) final;
189 std::vector<std::unique_ptr<
RCluster>> LoadClusters(std::span<
RCluster::RKey> clusterKeys) final;
192 std::
string GetObjectClass() const;
An in-memory subset of the packed and compressed pages of a cluster.
Manages pages read from a DAOS container.
Storage provider that writes ntuple pages to into a DAOS container.
void ReleasePage(RPage &page) final
Every page store needs to be able to free pages it handed out.
RNTupleLocator CommitSealedPageImpl(DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage) final
std::uint64_t fNBytesCurrentCluster
Tracks the number of bytes committed to the current cluster.
void WriteNTupleFooter(const void *data, size_t nbytes, size_t lenFooter)
void WriteNTupleHeader(const void *data, size_t nbytes, size_t lenHeader)
Internal::RNTupleSerializer::RContext fSerializationContext
Used to keep the column and field IDs issued during header serialization for the footer serialization...
std::string fURI
A URI to a DAOS pool of the form 'daos://pool-uuid:svc_replicas/container-uuid'.
RDaosNTupleAnchor fNTupleAnchor
std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) final
Returns the number of bytes written to storage (excluding metadata)
RNTupleLocator CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page) final
std::atomic< std::uint64_t > fOid
OID for the next committed page; it is automatically incremented in CommitSealedPageImpl()
void CreateImpl(const RNTupleModel &model) final
RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) final
Get a new, empty page for the given column that can be filled with up to nElements.
std::unique_ptr< RDaosContainer > fDaosContainer
Underlying DAOS container.
std::unique_ptr< RPageAllocatorHeap > fPageAllocator
void CommitDatasetImpl() final
Abstract interface to write data into an ntuple.
Storage provider that reads ntuple pages from a DAOS container.
std::unique_ptr< RDaosContainer > fDaosContainer
A container that stores object data (header/footer, pages, etc.)
std::string fURI
A URI to a DAOS pool of the form 'daos://pool-uuid:svc_replicas/container-uuid'.
std::shared_ptr< RPagePool > fPagePool
The page pool might, at some point, be used by multiple page sources.
std::unique_ptr< RPageAllocatorDaos > fPageAllocator
Populated pages might be shared; the memory buffer is managed by the RPageAllocatorDaos.
std::unique_ptr< RClusterPool > fClusterPool
The cluster pool asynchronously preloads the next few clusters.
Abstract interface to read data from an ntuple.
A page is a slice of a column that is mapped into memory.
The serialization context is used for the piecewise serialization of a descriptor.
Meta-data for a set of ntuple clusters.
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
The on-storage meta-data of an ntuple.
The RNTupleModel encapulates the schema of an ntuple.
Common user-tunable settings for reading ntuples.
Common user-tunable settings for storing ntuples.
The class is used as a return type for operations that can fail; wraps a value of type T or an RError...
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
std::int64_t ColumnId_t
Uniquely identifies a physical column within the scope of the current process, used to tag pages.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Entry point for an RNTuple in a DAOS container.
std::uint32_t fNBytesFooter
The size of the compressed ntuple footer.
std::uint32_t fNBytesHeader
The size of the compressed ntuple header.
std::string fObjClass
The object class for user data OIDs, e.g. SX
std::uint32_t fVersion
Allows for evolving the struct in future versions.
RResult< std::uint32_t > Deserialize(const void *buffer, std::uint32_t bufSize)
std::uint32_t fLenHeader
The size of the uncompressed ntuple header.
static std::uint32_t GetSize()
std::uint32_t Serialize(void *buffer) const
bool operator==(const RDaosNTupleAnchor &other) const
std::uint32_t fLenFooter
The size of the uncompressed ntuple footer.
A sealed page contains the bytes of a page as written to storage (packed & compressed).
Generic information about the physical location of data.