Common functionality of an ntuple storage for both reading and writing.
The RPageStore provides access to a storage container that keeps the bits of pages and clusters comprising an ntuple. Concrete implementations can use a TFile, a raw file, an object store, and so on.
Definition at line 72 of file RPageStorage.hxx.
Classes | |
struct | RColumnHandle |
struct | RSealedPage |
A sealed page contains the bytes of a page as written to storage (packed & compressed). More... | |
struct | RSealedPageGroup |
A range of sealed pages referring to the same column that can be used for vector commit. More... | |
class | RTaskScheduler |
The interface of a task scheduler to schedule page (de)compression tasks. More... | |
Public Types | |
using | ColumnHandle_t = RColumnHandle |
The column handle identifies a column with the current open page storage. | |
using | SealedPageSequence_t = std::deque< RSealedPage > |
Public Member Functions | |
RPageStorage (const RPageStorage &other)=delete | |
RPageStorage (RPageStorage &&other)=default | |
RPageStorage (std::string_view name) | |
virtual | ~RPageStorage () |
virtual ColumnHandle_t | AddColumn (DescriptorId_t fieldId, RColumn &column)=0 |
Register a new column. | |
virtual void | DropColumn (ColumnHandle_t columnHandle)=0 |
Unregisters a column. | |
ColumnId_t | GetColumnId (ColumnHandle_t columnHandle) const |
virtual Detail::RNTupleMetrics & | GetMetrics () |
Returns the default metrics object. | |
const std::string & | GetNTupleName () const |
Returns the NTuple name. | |
virtual EPageStorageType | GetType ()=0 |
Whether the concrete implementation is a sink or a source. | |
RPageStorage & | operator= (const RPageStorage &other)=delete |
RPageStorage & | operator= (RPageStorage &&other)=default |
void | SetTaskScheduler (RTaskScheduler *taskScheduler) |
Static Public Attributes | |
static constexpr std::size_t | kNBytesPageChecksum = sizeof(std::uint64_t) |
The page checksum is a 64bit xxhash3. | |
Protected Member Functions | |
void | WaitForAllTasks () |
Protected Attributes | |
Detail::RNTupleMetrics | fMetrics |
std::string | fNTupleName |
std::unique_ptr< RPageAllocator > | fPageAllocator |
For the time being, we will use the heap allocator for all sources and sinks. This may change in the future. | |
RTaskScheduler * | fTaskScheduler = nullptr |
#include <ROOT/RPageStorage.hxx>
The column handle identifies a column with the current open page storage.
Definition at line 181 of file RPageStorage.hxx.
using ROOT::Experimental::Internal::RPageStorage::SealedPageSequence_t = std::deque<RSealedPage> |
Definition at line 132 of file RPageStorage.hxx.
|
explicit |
Definition at line 43 of file RPageStorage.cxx.
|
delete |
|
default |
|
virtual |
Definition at line 48 of file RPageStorage.cxx.
|
pure virtual |
Register a new column.
When reading, the column must exist in the ntuple on disk corresponding to the meta-data. When writing, every column can only be attached once.
Implemented in ROOT::Experimental::Internal::RPageSinkBuf, ROOT::Experimental::Internal::RPageSourceFriends, ROOT::Experimental::Internal::RPagePersistentSink, ROOT::Experimental::Internal::RPageSource, and ROOT::Experimental::Internal::RPageNullSink.
|
pure virtual |
Unregisters a column.
A page source decreases the reference counter for the corresponding active column. For a page sink, dropping columns is currently a no-op.
Implemented in ROOT::Experimental::Internal::RPageSourceFriends, ROOT::Experimental::Internal::RPageSource, and ROOT::Experimental::Internal::RPageSink.
|
inline |
Definition at line 189 of file RPageStorage.hxx.
|
inlinevirtual |
Returns the default metrics object.
Subclasses might alternatively provide their own metrics object by overriding this.
Reimplemented in ROOT::Experimental::Internal::RPageSourceFriends.
Definition at line 193 of file RPageStorage.hxx.
|
inline |
Returns the NTuple name.
Definition at line 196 of file RPageStorage.hxx.
|
pure virtual |
Whether the concrete implementation is a sink or a source.
Implemented in ROOT::Experimental::Internal::RPageSink, and ROOT::Experimental::Internal::RPageSource.
|
delete |
|
default |
|
inline |
Definition at line 198 of file RPageStorage.hxx.
|
inlineprotected |
Definition at line 154 of file RPageStorage.hxx.
|
protected |
Definition at line 147 of file RPageStorage.hxx.
|
protected |
Definition at line 152 of file RPageStorage.hxx.
|
protected |
For the time being, we will use the heap allocator for all sources and sinks. This may change in the future.
Definition at line 150 of file RPageStorage.hxx.
|
protected |
Definition at line 153 of file RPageStorage.hxx.
|
staticconstexpr |
The page checksum is a 64bit xxhash3.
Definition at line 75 of file RPageStorage.hxx.