Wrapper sink that coalesces cluster column page writes.
Definition at line 38 of file RPageSinkBuf.hxx.
Classes | |
class | RColumnBuf |
A buffered column. More... | |
struct | RCounters |
I/O performance counters that get registered in fMetrics. More... | |
Public Member Functions | |
RPageSinkBuf (const RPageSinkBuf &)=delete | |
RPageSinkBuf (RPageSinkBuf &&)=default | |
RPageSinkBuf (std::unique_ptr< RPageSink > inner) | |
virtual | ~RPageSinkBuf ()=default |
RNTupleMetrics & | GetMetrics () final |
Returns the default metrics object. Subclasses might alternatively provide their own metrics object by overriding this. | |
RPageSinkBuf & | operator= (const RPageSinkBuf &)=delete |
RPageSinkBuf & | operator= (RPageSinkBuf &&)=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. | |
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 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 Attributes | |
std::vector< RColumnBuf > | fBufferedColumns |
Vector of buffered column pages. Indexed by column id. | |
std::unique_ptr< RCounters > | fCounters |
std::unique_ptr< RNTupleModel > | fInnerModel |
The buffered page sink maintains a copy of the RNTupleModel for the inner sink. | |
std::unique_ptr< RPageSink > | fInnerSink |
The inner sink, responsible for actually performing I/O. | |
RNTupleMetrics | fMetrics |
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/RPageSinkBuf.hxx>
|
explicit |
Definition at line 22 of file RPageSinkBuf.cxx.
|
delete |
|
default |
|
virtualdefault |
|
finalprotectedvirtual |
Returns the number of bytes written to storage (excluding metadata)
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 86 of file RPageSinkBuf.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 106 of file RPageSinkBuf.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 42 of file RPageSinkBuf.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 76 of file RPageSinkBuf.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 34 of file RPageSinkBuf.cxx.
|
inlinefinalvirtual |
Returns the default metrics object. Subclasses might alternatively provide their own metrics object by overriding this.
Reimplemented from ROOT::Experimental::Detail::RPageSink.
Definition at line 128 of file RPageSinkBuf.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 117 of file RPageSinkBuf.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 112 of file RPageSinkBuf.cxx.
|
private |
Vector of buffered column pages. Indexed by column id.
Definition at line 108 of file RPageSinkBuf.hxx.
|
private |
Definition at line 100 of file RPageSinkBuf.hxx.
|
private |
The buffered page sink maintains a copy of the RNTupleModel for the inner sink.
For the unbuffered case, the RNTupleModel is instead managed by a RNTupleWriter.
Definition at line 106 of file RPageSinkBuf.hxx.
|
private |
The inner sink, responsible for actually performing I/O.
Definition at line 103 of file RPageSinkBuf.hxx.
|
private |
Definition at line 101 of file RPageSinkBuf.hxx.