Storage provider that reads ntuple pages from a DAOS container.
Definition at line 149 of file RPageStorageDaos.hxx.
Public Member Functions | |
RPageSourceDaos (std::string_view ntupleName, std::string_view uri, const RNTupleReadOptions &options) | |
~RPageSourceDaos () override | |
std::string | GetObjectClass () const |
Return the object class used for user data OIDs in this ntuple. | |
std::vector< std::unique_ptr< RCluster > > | LoadClusters (std::span< RCluster::RKey > clusterKeys) final |
Populates all the pages of the given cluster ids and columns; it is possible that some columns do not contain any pages. | |
void | LoadSealedPage (DescriptorId_t physicalColumnId, RClusterIndex clusterIndex, RSealedPage &sealedPage) final |
Read the packed and compressed bytes of a page into the memory buffer provided by sealedPage . | |
Public Member Functions inherited from ROOT::Experimental::Internal::RPageSource | |
RPageSource (const RPageSource &)=delete | |
RPageSource (RPageSource &&)=delete | |
RPageSource (std::string_view ntupleName, const RNTupleReadOptions &fOptions) | |
~RPageSource () override | |
ColumnHandle_t | AddColumn (DescriptorId_t fieldId, RColumn &column) override |
Register a new column. | |
void | Attach () |
Open the physical storage container and deserialize header and footer. | |
std::unique_ptr< RPageSource > | Clone () const |
Open the same storage multiple time, e.g. | |
void | DropColumn (ColumnHandle_t columnHandle) override |
Unregisters a column. | |
REntryRange | GetEntryRange () const |
NTupleSize_t | GetNElements (ColumnHandle_t columnHandle) |
NTupleSize_t | GetNEntries () |
const RNTupleReadOptions & | GetReadOptions () const |
const RSharedDescriptorGuard | GetSharedDescriptorGuard () const |
Takes the read lock for the descriptor. | |
EPageStorageType | GetType () final |
Whether the concrete implementation is a sink or a source. | |
virtual RPageRef | LoadPage (ColumnHandle_t columnHandle, NTupleSize_t globalIndex) |
Allocates and fills a page that contains the index-th element. | |
virtual RPageRef | LoadPage (ColumnHandle_t columnHandle, RClusterIndex clusterIndex) |
Another version of LoadPage that allows to specify cluster-relative indexes. | |
void | LoadStructure () |
Loads header and footer without decompressing or deserializing them. | |
RPageSource & | operator= (const RPageSource &)=delete |
RPageSource & | operator= (RPageSource &&)=delete |
void | SetEntryRange (const REntryRange &range) |
Promise to only read from the given entry range. | |
RResult< RPage > | UnsealPage (const RSealedPage &sealedPage, const RColumnElementBase &element) |
void | UnzipCluster (RCluster *cluster) |
Parallel decompression and unpacking of the pages in the given cluster. | |
Public Member Functions inherited from ROOT::Experimental::Internal::RPageStorage | |
RPageStorage (const RPageStorage &other)=delete | |
RPageStorage (RPageStorage &&other)=default | |
RPageStorage (std::string_view name) | |
virtual | ~RPageStorage () |
ColumnId_t | GetColumnId (ColumnHandle_t columnHandle) const |
virtual Detail::RNTupleMetrics & | GetMetrics () |
Returns the default metrics object. | |
const std::string & | GetNTupleName () const |
Returns the NTuple name. | |
RPageStorage & | operator= (const RPageStorage &other)=delete |
RPageStorage & | operator= (RPageStorage &&other)=default |
void | SetTaskScheduler (RTaskScheduler *taskScheduler) |
Protected Member Functions | |
RNTupleDescriptor | AttachImpl () final |
LoadStructureImpl() has been called before AttachImpl() is called | |
std::unique_ptr< RPageSource > | CloneImpl () const final |
The cloned page source creates a new connection to the pool/container. | |
void | LoadStructureImpl () final |
Protected Member Functions inherited from ROOT::Experimental::Internal::RPageSource | |
void | EnableDefaultMetrics (const std::string &prefix) |
Enables the default set of metrics provided by RPageSource. | |
RExclDescriptorGuard | GetExclDescriptorGuard () |
Note that the underlying lock is not recursive. See GetSharedDescriptorGuard() for further information. | |
void | PrepareLoadCluster (const RCluster::RKey &clusterKey, ROnDiskPageMap &pageZeroMap, std::function< void(DescriptorId_t, NTupleSize_t, const RClusterDescriptor::RPageRange::RPageInfo &)> perPageFunc) |
Prepare a page range read for the column set in clusterKey . | |
virtual void | UnzipClusterImpl (RCluster *cluster) |
Protected Member Functions inherited from ROOT::Experimental::Internal::RPageStorage | |
void | WaitForAllTasks () |
Private Member Functions | |
RPageRef | LoadPageImpl (ColumnHandle_t columnHandle, const RClusterInfo &clusterInfo, ClusterSize_t::ValueType idxInCluster) final |
Private Attributes | |
std::unique_ptr< RClusterPool > | fClusterPool |
The cluster pool asynchronously preloads the next few clusters. | |
RCluster * | fCurrentCluster = nullptr |
The last cluster from which a page got loaded. Points into fClusterPool->fPool. | |
std::unique_ptr< RDaosContainer > | fDaosContainer |
A container that stores object data (header/footer, pages, etc.) | |
RNTupleDescriptorBuilder | fDescriptorBuilder |
ntuple_index_t | fNTupleIndex {0} |
std::string | fURI |
A URI to a DAOS pool of the form 'daos://pool-label/container-label'. | |
Additional Inherited Members | |
Public Types inherited from ROOT::Experimental::Internal::RPageStorage | |
using | ColumnHandle_t = RColumnHandle |
The column handle identifies a column with the current open page storage. | |
using | SealedPageSequence_t = std::deque< RSealedPage > |
Static Public Member Functions inherited from ROOT::Experimental::Internal::RPageSource | |
static std::unique_ptr< RPageSource > | Create (std::string_view ntupleName, std::string_view location, const RNTupleReadOptions &options=RNTupleReadOptions()) |
Guess the concrete derived page source from the file name (location) | |
static RResult< RPage > | UnsealPage (const RSealedPage &sealedPage, const RColumnElementBase &element, RPageAllocator &pageAlloc) |
Helper for unstreaming a page. | |
Static Public Attributes inherited from ROOT::Experimental::Internal::RPageStorage | |
static constexpr std::size_t | kNBytesPageChecksum = sizeof(std::uint64_t) |
The page checksum is a 64bit xxhash3. | |
Protected Attributes inherited from ROOT::Experimental::Internal::RPageSource | |
RActivePhysicalColumns | fActivePhysicalColumns |
The active columns are implicitly defined by the model fields or views. | |
std::unique_ptr< RCounters > | fCounters |
RNTupleReadOptions | fOptions |
RPagePool | fPagePool |
Pages that are unzipped with IMT are staged into the page pool. | |
Protected Attributes inherited from ROOT::Experimental::Internal::RPageStorage | |
Detail::RNTupleMetrics | fMetrics |
std::string | fNTupleName |
std::unique_ptr< RPageAllocator > | fPageAllocator |
For the time being, we will use the heap allocator for all sources and sinks. This may change in the future. | |
RTaskScheduler * | fTaskScheduler = nullptr |
#include <ROOT/RPageStorageDaos.hxx>
ROOT::Experimental::Internal::RPageSourceDaos::RPageSourceDaos | ( | std::string_view | ntupleName, |
std::string_view | uri, | ||
const RNTupleReadOptions & | options | ||
) |
Definition at line 492 of file RPageStorageDaos.cxx.
|
overridedefault |
|
finalprotectedvirtual |
LoadStructureImpl()
has been called before AttachImpl()
is called
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 507 of file RPageStorageDaos.cxx.
|
finalprotectedvirtual |
The cloned page source creates a new connection to the pool/container.
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 664 of file RPageStorageDaos.cxx.
std::string ROOT::Experimental::Internal::RPageSourceDaos::GetObjectClass | ( | ) | const |
Return the object class used for user data OIDs in this ntuple.
Definition at line 542 of file RPageStorageDaos.cxx.
|
finalvirtual |
Populates all the pages of the given cluster ids and columns; it is possible that some columns do not contain any pages.
The page source may load more columns than the minimal necessary set from columns
. To indicate which columns have been loaded, LoadClusters()
must mark them with
SetColumnAvailable(). That includes the ones from the
columnsthat don't have pages; otherwise subsequent requests for the cluster would assume an incomplete cluster and trigger loading again.
LoadClusters()` is typically called from the I/O thread of a cluster pool, i.e. the method runs concurrently to other methods of the page source.
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 671 of file RPageStorageDaos.cxx.
|
finalprivatevirtual |
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 592 of file RPageStorageDaos.cxx.
|
finalvirtual |
Read the packed and compressed bytes of a page into the memory buffer provided by sealedPage
.
The sealed page can be used subsequently in a call to RPageSink::CommitSealedPage
. The fSize
and fNElements
member of the sealedPage parameters are always set. If sealedPage.fBuffer
is nullptr
, no data will be copied but the returned size information can be used by the caller to allocate a large enough buffer and call LoadSealedPage
again.
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 547 of file RPageStorageDaos.cxx.
|
inlinefinalprotectedvirtual |
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 168 of file RPageStorageDaos.hxx.
|
private |
The cluster pool asynchronously preloads the next few clusters.
Definition at line 160 of file RPageStorageDaos.hxx.
|
private |
The last cluster from which a page got loaded. Points into fClusterPool->fPool.
Definition at line 154 of file RPageStorageDaos.hxx.
|
private |
A container that stores object data (header/footer, pages, etc.)
Definition at line 156 of file RPageStorageDaos.hxx.
|
private |
Definition at line 162 of file RPageStorageDaos.hxx.
|
private |
Definition at line 151 of file RPageStorageDaos.hxx.
|
private |
A URI to a DAOS pool of the form 'daos://pool-label/container-label'.
Definition at line 158 of file RPageStorageDaos.hxx.