Storage provider that write ntuple pages into a ROOT TFile.
Definition at line 64 of file RPageStorageRoot.hxx.
Public Member Functions | |
RPageSinkRoot (std::string_view ntupleName, std::string_view path, const RNTupleWriteOptions &options) | |
virtual | ~RPageSinkRoot () |
RNTupleMetrics & | GetMetrics () final |
Page storage implementations usually have their own metrics. More... | |
void | ReleasePage (RPage &page) final |
Every page store needs to be able to free pages it handed out. More... | |
RPage | ReservePage (ColumnHandle_t columnHandle, std::size_t nElements=0) final |
Get a new, empty page for the given column that can be filled with up to nElements. More... | |
Public Member Functions inherited from ROOT::Experimental::Detail::RPageSink | |
RPageSink (std::string_view ntupleName, const RNTupleWriteOptions &options) | |
virtual | ~RPageSink () |
ColumnHandle_t | AddColumn (DescriptorId_t fieldId, const RColumn &column) final |
Register a new column. More... | |
void | CommitCluster (NTupleSize_t nEntries) |
Finalize the current cluster and create a new one for the following data. More... | |
void | CommitDataset () |
Finalize the current cluster and the entrire data set. More... | |
void | CommitPage (ColumnHandle_t columnHandle, const RPage &page) |
Write a page to the storage. The column must have been added before. More... | |
void | Create (RNTupleModel &model) |
Physically creates the storage container to hold the ntuple (e.g., a keys a TFile or an S3 bucket) To do so, Create() calls DoCreate() after updating the descriptor. More... | |
EPageStorageType | GetType () final |
Whether the concrete implementation is a sink or a source. More... | |
virtual RPage | ReservePage (ColumnHandle_t columnHandle, std::size_t nElements=0)=0 |
Get a new, empty page for the given column that can be filled with up to nElements. More... | |
Public Member Functions inherited from ROOT::Experimental::Detail::RPageStorage | |
RPageStorage (const RPageStorage &other)=delete | |
RPageStorage (std::string_view name) | |
virtual | ~RPageStorage () |
virtual ColumnHandle_t | AddColumn (DescriptorId_t fieldId, const RColumn &column)=0 |
Register a new column. More... | |
virtual RNTupleMetrics & | GetMetrics ()=0 |
Page storage implementations usually have their own metrics. More... | |
virtual EPageStorageType | GetType ()=0 |
Whether the concrete implementation is a sink or a source. More... | |
RPageStorage & | operator= (const RPageStorage &other)=delete |
virtual void | ReleasePage (RPage &page)=0 |
Every page store needs to be able to free pages it handed out. More... | |
Protected Member Functions | |
RClusterDescriptor::RLocator | DoCommitCluster (NTupleSize_t nEntries) final |
void | DoCommitDataset () final |
RClusterDescriptor::RLocator | DoCommitPage (ColumnHandle_t columnHandle, const RPage &page) final |
void | DoCreate (const RNTupleModel &model) final |
virtual RClusterDescriptor::RLocator | DoCommitCluster (NTupleSize_t nEntries)=0 |
virtual void | DoCommitDataset ()=0 |
virtual RClusterDescriptor::RLocator | DoCommitPage (ColumnHandle_t columnHandle, const RPage &page)=0 |
virtual void | DoCreate (const RNTupleModel &model)=0 |
Private Attributes | |
TDirectory * | fDirectory = nullptr |
std::unique_ptr< TFile > | fFile |
Currently, an ntuple is stored as a directory in a TFile. More... | |
DescriptorId_t | fLastPageIdx = 0 |
Instead of a physical file offset, pages in root are identified by an index which becomes part of the key. More... | |
RNTupleMetrics | fMetrics |
std::unique_ptr< RPageAllocatorHeap > | fPageAllocator |
Static Private Attributes | |
static constexpr std::size_t | kDefaultElementsPerPage = 10000 |
Additional Inherited Members | |
Public Types inherited from ROOT::Experimental::Detail::RPageStorage | |
using | ColumnHandle_t = RColumnHandle |
The column handle identifies a column with the current open page storage. More... | |
Static Public Member Functions inherited from ROOT::Experimental::Detail::RPageSink | |
static std::unique_ptr< RPageSink > | Create (std::string_view ntupleName, std::string_view location, const RNTupleWriteOptions &options=RNTupleWriteOptions()) |
Guess the concrete derived page source from the file name (location) More... | |
Protected Attributes inherited from ROOT::Experimental::Detail::RPageSink | |
RNTupleDescriptorBuilder | fDescriptorBuilder |
DescriptorId_t | fLastClusterId = 0 |
DescriptorId_t | fLastColumnId = 0 |
DescriptorId_t | fLastFieldId = 0 |
Building the ntuple descriptor while writing is done in the same way for all the storage sink implementations. More... | |
std::vector< RClusterDescriptor::RColumnRange > | fOpenColumnRanges |
Keeps track of the number of elements in the currently open cluster. Indexed by column id. More... | |
std::vector< RClusterDescriptor::RPageRange > | fOpenPageRanges |
Keeps track of the written pages in the currently open cluster. Indexed by column id. More... | |
const RNTupleWriteOptions | fOptions |
NTupleSize_t | fPrevClusterNEntries = 0 |
Protected Attributes inherited from ROOT::Experimental::Detail::RPageStorage | |
std::string | fNTupleName |
#include <ROOT/RPageStorageRoot.hxx>
ROOT::Experimental::Detail::RPageSinkRoot::RPageSinkRoot | ( | std::string_view | ntupleName, |
std::string_view | path, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 40 of file RPageStorageRoot.cxx.
|
virtual |
Definition at line 52 of file RPageStorageRoot.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 102 of file RPageStorageRoot.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 108 of file RPageStorageRoot.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 72 of file RPageStorageRoot.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 58 of file RPageStorageRoot.cxx.
|
inlinefinalvirtual |
Page storage implementations usually have their own metrics.
Implements ROOT::Experimental::Detail::RPageStorage.
Definition at line 91 of file RPageStorageRoot.hxx.
Every page store needs to be able to free pages it handed out.
But Sinks and sources have different means of allocating pages.
Implements ROOT::Experimental::Detail::RPageStorage.
Definition at line 131 of file RPageStorageRoot.cxx.
|
finalvirtual |
Get a new, empty page for the given column that can be filled with up to nElements.
If nElements is zero, the page sink picks an appropriate size.
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 123 of file RPageStorageRoot.cxx.
|
private |
Definition at line 73 of file RPageStorageRoot.hxx.
|
private |
Currently, an ntuple is stored as a directory in a TFile.
Definition at line 72 of file RPageStorageRoot.hxx.
|
private |
Instead of a physical file offset, pages in root are identified by an index which becomes part of the key.
Definition at line 76 of file RPageStorageRoot.hxx.
|
private |
Definition at line 68 of file RPageStorageRoot.hxx.
|
private |
Definition at line 69 of file RPageStorageRoot.hxx.
|
staticconstexprprivate |
Definition at line 66 of file RPageStorageRoot.hxx.