16#ifndef ROOT7_RPageStorageRaw
17#define ROOT7_RPageStorageRaw
34namespace Experimental {
37class RPageAllocatorHeap;
55 std::unique_ptr<std::array<char, kMaxPageSize>>
fZipBuffer;
60 void Write(
const void *buffer, std::size_t nbytes);
109 std::unique_ptr<ROOT::Internal::RRawFile>
fFile;
122 void Read(
void *buffer, std::size_t nbytes, std::uint64_t offset);
A collection of Counter objects with a name, a unit, and a description.
A non thread-safe integral performance counter.
An either thread-safe or non thread safe counter for CPU ticks.
Manages pages read from a raw file.
static RPage NewPage(ColumnId_t columnId, void *mem, std::size_t elementSize, std::size_t nElements)
static void DeletePage(const RPage &page)
Storage provider that write ntuple pages into a raw binary file.
RClusterDescriptor::RLocator DoCommitCluster(NTupleSize_t nEntries) final
RNTupleMetrics & GetMetrics() final
Page storage implementations usually have their own metrics.
static constexpr std::size_t kMaxPageSize
Cannot process pages larger than 1MB.
RClusterDescriptor::RLocator DoCommitPage(ColumnHandle_t columnHandle, const RPage &page) final
void DoCommitDataset() final
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.
static constexpr std::size_t kDefaultElementsPerPage
void DoCreate(const RNTupleModel &model) final
void Write(const void *buffer, std::size_t nbytes)
std::unique_ptr< RPageAllocatorHeap > fPageAllocator
void ReleasePage(RPage &page) final
Every page store needs to be able to free pages it handed out.
std::unique_ptr< std::array< char, kMaxPageSize > > fZipBuffer
Abstract interface to write data into an ntuple.
Storage provider that reads ntuple pages from a raw file.
RNTuplePlainCounter * fCtrNPages
RNTupleDescriptor DoAttach() final
RNTupleTickCounter< RNTuplePlainCounter > * fCtrTimeCpuRead
RPageSourceRaw(std::string_view ntupleName, const RNTupleReadOptions &options)
void Read(void *buffer, std::size_t nbytes, std::uint64_t offset)
std::shared_ptr< RPagePool > fPagePool
void ReleasePage(RPage &page) final
Every page store needs to be able to free pages it handed out.
RNTuplePlainCounter * fCtrSzRead
std::unique_ptr< ROOT::Internal::RRawFile > fFile
RNTupleMetrics & GetMetrics() final
Page storage implementations usually have their own metrics.
RPage PopulatePage(ColumnHandle_t columnHandle, NTupleSize_t globalIndex) final
Allocates and fills a page that contains the index-th element.
RPage PopulatePageFromCluster(ColumnHandle_t columnHandle, const RClusterDescriptor &clusterDescriptor, ClusterSize_t::ValueType clusterIndex)
RNTuplePlainCounter * fCtrTimeWallUnzip
RNTuplePlainCounter * fCtrTimeWallRead
static constexpr std::size_t kMaxPageSize
Cannot process pages larger than 1MB.
RNTuplePlainCounter * fCtrSzUnzip
RNTuplePlainCounter * fCtrNRead
RNTupleTickCounter< RNTuplePlainCounter > * fCtrTimeCpuUnzip
std::unique_ptr< std::array< unsigned char, kMaxPageSize > > fUnzipBuffer
std::unique_ptr< RPageSource > Clone() const final
Open the same storage multiple time, e.g. for reading in multiple threads.
std::unique_ptr< RPageAllocatorFile > fPageAllocator
Abstract interface to read data from an ntuple.
A page is a slice of a column that is mapped into memory.
Meta-data for a set of ntuple clusters.
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
The on-storage meta-data of an ntuple.
The RNTupleModel encapulates the schema of an ntuple.
Common user-tunable settings for reading ntuples.
Common user-tunable settings for storing ntuples.
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.
Generic information about the physical location of data.