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 56 of file RPageStorageFile.hxx.
Public Member Functions | |
RPageSinkFile (const RPageSinkFile &)=delete | |
RPageSinkFile (RPageSinkFile &&)=default | |
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 |
Returns an empty metrics. Page storage implementations usually have their own metrics. | |
RPageSinkFile & | operator= (const RPageSinkFile &)=delete |
RPageSinkFile & | operator= (RPageSinkFile &&)=default |
void | ReleasePage (RPage &page) final |
Every page store needs to be able to free pages it handed out. | |
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. | |
Public Member Functions inherited from ROOT::Experimental::Detail::RPageSink | |
RPageSink (const RPageSink &)=delete | |
RPageSink (RPageSink &&)=default | |
RPageSink (std::string_view ntupleName, const RNTupleWriteOptions &options) | |
virtual | ~RPageSink () |
ColumnHandle_t | AddColumn (DescriptorId_t fieldId, const RColumn &column) final |
Register a new column. | |
void | CommitCluster (NTupleSize_t nEntries) |
Finalize the current cluster and create a new one for the following data. | |
void | CommitDataset () |
Finalize the current cluster and the entrire data set. | |
void | CommitPage (ColumnHandle_t columnHandle, const RPage &page) |
Write a page to the storage. The column must have been added before. | |
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. | |
void | DropColumn (ColumnHandle_t) final |
Unregisters a column. | |
EPageStorageType | GetType () final |
Whether the concrete implementation is a sink or a source. | |
RPageSink & | operator= (const RPageSink &)=delete |
RPageSink & | operator= (RPageSink &&)=default |
Public Member Functions inherited from ROOT::Experimental::Detail::RPageStorage | |
RPageStorage (const RPageStorage &other)=delete | |
RPageStorage (RPageStorage &&other)=default | |
RPageStorage (std::string_view name) | |
virtual | ~RPageStorage () |
RPageStorage & | operator= (const RPageStorage &other)=delete |
RPageStorage & | operator= (RPageStorage &&other)=default |
void | SetTaskScheduler (RTaskScheduler *taskScheduler) |
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 |
Private Attributes | |
std::uint64_t | fClusterMaxOffset = 0 |
Byte offset of the end of the last page of the current cluster. | |
std::uint64_t | fClusterMinOffset = std::uint64_t(-1) |
Byte offset of the first page of the current cluster. | |
RNTupleCompressor | fCompressor |
Helper for zipping keys and header / footer; comprises a 16MB zip buffer. | |
RNTupleMetrics | fMetrics |
std::unique_ptr< RPageAllocatorHeap > | fPageAllocator |
std::unique_ptr< Internal::RNTupleFileWriter > | fWriter |
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. | |
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) | |
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. | |
std::vector< RClusterDescriptor::RColumnRange > | fOpenColumnRanges |
Keeps track of the number of elements in the currently open cluster. Indexed by column id. | |
std::vector< RClusterDescriptor::RPageRange > | fOpenPageRanges |
Keeps track of the written pages in the currently open cluster. Indexed by column id. | |
RNTupleWriteOptions | fOptions |
NTupleSize_t | fPrevClusterNEntries = 0 |
Protected Attributes inherited from ROOT::Experimental::Detail::RPageStorage | |
std::string | fNTupleName |
RTaskScheduler * | fTaskScheduler = nullptr |
#include <ROOT/RPageStorageFile.hxx>
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
std::string_view | path, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 45 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 72 of file RPageStorageFile.cxx.
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
TFile & | file, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 59 of file RPageStorageFile.cxx.
|
delete |
|
default |
|
virtual |
Definition at line 85 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 144 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 155 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 105 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 90 of file RPageStorageFile.cxx.
|
inlinefinalvirtual |
Returns an empty metrics. Page storage implementations usually have their own metrics.
Reimplemented from ROOT::Experimental::Detail::RPageStorage.
Definition at line 92 of file RPageStorageFile.hxx.
|
delete |
|
default |
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 179 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 171 of file RPageStorageFile.cxx.
|
private |
Byte offset of the end of the last page of the current cluster.
Definition at line 68 of file RPageStorageFile.hxx.
|
private |
Byte offset of the first page of the current cluster.
Definition at line 66 of file RPageStorageFile.hxx.
|
private |
Helper for zipping keys and header / footer; comprises a 16MB zip buffer.
Definition at line 70 of file RPageStorageFile.hxx.
|
private |
Definition at line 61 of file RPageStorageFile.hxx.
|
private |
Definition at line 62 of file RPageStorageFile.hxx.
|
private |
Definition at line 64 of file RPageStorageFile.hxx.
|
staticconstexpr |
Definition at line 58 of file RPageStorageFile.hxx.