16#ifndef ROOT7_RPageStorageRoot
17#define ROOT7_RPageStorageRoot
29#include <unordered_map>
32namespace Experimental {
Maps the ntuple meta-data to and from TFile.
static constexpr const char * kKeyClusterFooter
static constexpr const char * kKeyPagePayload
static constexpr const char * kKeySeparator
std::vector< RFieldDescriptor > fRootFields
std::unordered_map< std::int32_t, std::unique_ptr< RColumnModel > > fId2ColumnModel
std::unordered_map< std::int32_t, std::int32_t > fColumn2Pointee
static constexpr const char * kKeyNTupleFooter
std::unordered_map< std::string, std::int32_t > fColumnName2Id
static constexpr const char * kKeyNTupleHeader
std::vector< RColumnIndex > fColumnIndex
Storage provider that write ntuple pages into a ROOT TFile.
void CommitDataset() final
Finalize the current cluster and the entrire data set.
ROOT::Experimental::Internal::RClusterFooter fCurrentCluster
Updated on CommitPage and written and reset on CommitCluster.
void CommitPage(ColumnHandle_t columnHandle, const RPage &page) final
Write a page to the storage. The column must have been added before.
RPageSinkRoot(std::string_view ntupleName, RSettings settings)
ROOT::Experimental::Internal::RNTupleFooter fNTupleFooter
void CommitCluster(NTupleSize_t nEntries) final
Finalize the current cluster and create a new one for the following data.
void Create(RNTupleModel *model) final
Physically creates the storage container to hold the tree (e.g., a directory in a TFile or a S3 bucke...
NTupleSize_t fPrevClusterNEntries
ROOT::Experimental::Internal::RNTupleHeader fNTupleHeader
static constexpr std::size_t kPageSize
TDirectory * fDirectory
Currently, an ntuple is stored as a directory in a TFile.
ColumnHandle_t AddColumn(RColumn *column) final
Register a new column.
Abstract interface to write data into a tree.
Storage provider that reads ntuple pages from a ROOT TFile.
RNTupleDescriptor fDescriptor
TDirectory * fDirectory
Currently, an ntuple is stored as a directory in a TFile.
Abstract interface to read data from a tree.
A page is a fixed size slice of a column that is mapped into memory.
Represents the on-disk (on storage) information about an ntuple.
The RNTupleModel encapulates the schema of an ntuple.
Describe directory structure in memory.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
basic_string_view< char > string_view
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
std::int64_t ColumnId_t
Uniquely identifies a physical column within the scope of the current process, used to tag pages.
Namespace for new ROOT classes and functions.
std::vector< NTupleSize_t > fPointeeClusterOffset
std::vector< NTupleSize_t > fPageInCluster
std::vector< NTupleSize_t > fSelfClusterOffset
std::vector< NTupleSize_t > fRangeStarts
std::vector< NTupleSize_t > fClusterId
RFieldDescriptor(const std::string &f, const std::string &t)
std::string fOffsetColumn
std::vector< NTupleSize_t > fRangeStarts