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, DescriptorId_t physicalColumnId) |
| 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, DescriptorId_t physicalColumnId, 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 490 of file RPageStorageDaos.cxx.
|
overridedefault |
|
finalprotectedvirtual |
LoadStructureImpl() has been called before AttachImpl() is called
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 505 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 660 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 540 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 withSetColumnAvailable(). That includes the ones from thecolumnsthat 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 667 of file RPageStorageDaos.cxx.
|
finalprivatevirtual |
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 590 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 545 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.