Storage provider that write ntuple pages into a file.
The written file can be either in ROOT format or in RNTuple bare format.
Definition at line 54 of file RPageStorageFile.hxx.
Public Member Functions | |
RPageSinkFile (std::string_view ntupleName, std::string_view path, const RNTupleWriteOptions &options) | |
RPageSinkFile (std::string_view ntupleName, std::string_view path, const RNTupleWriteOptions &options, std::unique_ptr< TFile > &file) | |
RPageSinkFile (std::string_view ntupleName, TFile &file, const RNTupleWriteOptions &options) | |
virtual | ~RPageSinkFile () |
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... | |
![]() | |
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 CreateImpl() 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... | |
![]() | |
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... | |
Static Public Attributes | |
static constexpr std::size_t | kDefaultElementsPerPage = 10000 |
Protected Member Functions | |
RClusterDescriptor::RLocator | CommitClusterImpl (NTupleSize_t nEntries) final |
void | CommitDatasetImpl () final |
RClusterDescriptor::RLocator | CommitPageImpl (ColumnHandle_t columnHandle, const RPage &page) final |
void | CreateImpl (const RNTupleModel &model) final |
virtual RClusterDescriptor::RLocator | CommitClusterImpl (NTupleSize_t nEntries)=0 |
virtual void | CommitDatasetImpl ()=0 |
virtual RClusterDescriptor::RLocator | CommitPageImpl (ColumnHandle_t columnHandle, const RPage &page)=0 |
virtual void | CreateImpl (const RNTupleModel &model)=0 |
Private Attributes | |
std::uint64_t | fClusterMaxOffset = 0 |
Byte offset of the end of the last page of the current cluster. More... | |
std::uint64_t | fClusterMinOffset = std::uint64_t(-1) |
Byte offset of the first page of the current cluster. More... | |
RNTupleCompressor | fCompressor |
Helper for zipping keys and header / footer; comprises a 16MB zip buffer. More... | |
RNTupleMetrics | fMetrics |
std::unique_ptr< RPageAllocatorHeap > | fPageAllocator |
std::unique_ptr< Internal::RNTupleFileWriter > | fWriter |
Additional Inherited Members | |
![]() | |
using | ColumnHandle_t = RColumnHandle |
The column handle identifies a column with the current open page storage. More... | |
![]() | |
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... | |
![]() | |
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 |
![]() | |
std::string | fNTupleName |
#include <ROOT/RPageStorageFile.hxx>
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
std::string_view | path, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 37 of file RPageStorageFile.cxx.
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
std::string_view | path, | ||
const RNTupleWriteOptions & | options, | ||
std::unique_ptr< TFile > & | file | ||
) |
Definition at line 64 of file RPageStorageFile.cxx.
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
TFile & | file, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 51 of file RPageStorageFile.cxx.
|
virtual |
Definition at line 77 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 136 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 147 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 97 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 82 of file RPageStorageFile.cxx.
|
inlinefinalvirtual |
Page storage implementations usually have their own metrics.
Implements ROOT::Experimental::Detail::RPageStorage.
Definition at line 86 of file RPageStorageFile.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 171 of file RPageStorageFile.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 163 of file RPageStorageFile.cxx.
|
private |
Byte offset of the end of the last page of the current cluster.
Definition at line 66 of file RPageStorageFile.hxx.
|
private |
Byte offset of the first page of the current cluster.
Definition at line 64 of file RPageStorageFile.hxx.
|
private |
Helper for zipping keys and header / footer; comprises a 16MB zip buffer.
Definition at line 68 of file RPageStorageFile.hxx.
|
private |
Definition at line 59 of file RPageStorageFile.hxx.
|
private |
Definition at line 60 of file RPageStorageFile.hxx.
|
private |
Definition at line 62 of file RPageStorageFile.hxx.
|
staticconstexpr |
Definition at line 56 of file RPageStorageFile.hxx.