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 57 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 () |
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) 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. | |
std::uint64_t | 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 | CommitSealedPage (DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage) |
Write a preprocessed page to storage. | |
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. | |
virtual RNTupleMetrics & | GetMetrics () override |
Returns the default metrics object. Subclasses might alternatively provide their own metrics object by overriding this. | |
EPageStorageType | GetType () final |
Whether the concrete implementation is a sink or a source. | |
const RNTupleWriteOptions & | GetWriteOptions () const |
Returns the sink's write options. | |
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 () |
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 | |
std::uint64_t | CommitClusterImpl (NTupleSize_t nEntries) final |
Returns the number of bytes written to storage (excluding metadata) | |
void | CommitDatasetImpl () final |
RNTupleLocator | CommitPageImpl (ColumnHandle_t columnHandle, const RPage &page) final |
RNTupleLocator | CommitSealedPageImpl (DescriptorId_t columnId, const RPageStorage::RSealedPage &sealedPage) final |
void | CreateImpl (const RNTupleModel &model) final |
Protected Member Functions inherited from ROOT::Experimental::Detail::RPageSink | |
void | EnableDefaultMetrics (const std::string &prefix) |
Enables the default set of metrics provided by RPageSink. | |
RSealedPage | SealPage (const RPage &page, const RColumnElementBase &element, int compressionSetting) |
Helper for streaming a page. | |
Private Member Functions | |
RPageSinkFile (std::string_view ntupleName, const RNTupleWriteOptions &options) | |
RNTupleLocator | WriteSealedPage (const RPageStorage::RSealedPage &sealedPage, std::size_t bytesPacked) |
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. | |
std::uint64_t | fNBytesCurrentCluster = 0 |
Number of bytes committed to storage in the current cluster. | |
std::unique_ptr< RPageAllocatorHeap > | fPageAllocator |
Internal::RNTupleSerializer::RContext | fSerializationContext |
Used to keep the column and field IDs issued during header serialization for the footer serialization. | |
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) | |
Static Protected Member Functions inherited from ROOT::Experimental::Detail::RPageSink | |
static RSealedPage | SealPage (const RPage &page, const RColumnElementBase &element, int compressionSetting, void *buf) |
Seal a page using the provided buffer. | |
Protected Attributes inherited from ROOT::Experimental::Detail::RPageSink | |
std::unique_ptr< RNTupleCompressor > | fCompressor |
Helper to zip pages and header/footer; includes a 16MB (kMAXZIPBUF) zip buffer. | |
std::unique_ptr< RCounters > | fCounters |
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. | |
RNTupleMetrics | fMetrics |
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. | |
std::unique_ptr< RNTupleWriteOptions > | fOptions |
NTupleSize_t | fPrevClusterNEntries = 0 |
Protected Attributes inherited from ROOT::Experimental::Detail::RPageStorage | |
std::string | fNTupleName |
RTaskScheduler * | fTaskScheduler = nullptr |
#include <ROOT/RPageStorageFile.hxx>
|
private |
Definition at line 46 of file RPageStorageFile.cxx.
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
std::string_view | path, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 58 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 75 of file RPageStorageFile.cxx.
ROOT::Experimental::Detail::RPageSinkFile::RPageSinkFile | ( | std::string_view | ntupleName, |
TFile & | file, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 67 of file RPageStorageFile.cxx.
|
delete |
|
default |
|
virtual |
Definition at line 84 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Returns the number of bytes written to storage (excluding metadata)
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 154 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 162 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 127 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 142 of file RPageStorageFile.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 89 of file RPageStorageFile.cxx.
|
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 209 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 201 of file RPageStorageFile.cxx.
|
inlineprivate |
Definition at line 105 of file RPageStorageFile.cxx.
|
private |
Byte offset of the end of the last page of the current cluster.
Definition at line 65 of file RPageStorageFile.hxx.
|
private |
Byte offset of the first page of the current cluster.
Definition at line 63 of file RPageStorageFile.hxx.
|
private |
Number of bytes committed to storage in the current cluster.
Definition at line 67 of file RPageStorageFile.hxx.
|
private |
Definition at line 59 of file RPageStorageFile.hxx.
|
private |
Used to keep the column and field IDs issued during header serialization for the footer serialization.
Definition at line 69 of file RPageStorageFile.hxx.
|
private |
Definition at line 61 of file RPageStorageFile.hxx.