24 const std::string& data_dir,
25 const size_t num_reader_threads,
35 const size_t num_reader_threads,
37 : AbstractBufferMgr(0)
39 std::make_unique<File_Namespace::GlobalFileMgr>(0,
42 , disk_cache_config_(disk_cache_config) {
45 ? std::make_unique<foreign_storage::ForeignStorageCache>(disk_cache_config)
49 ? std::make_unique<foreign_storage::CachingForeignStorageMgr>(
disk_cache_.get())
50 : std::make_unique<foreign_storage::ForeignStorageMgr>();
54 const size_t page_size,
55 const size_t initial_size) {
57 chunk_key, page_size, initial_size);
67 ->deleteBuffersWithPrefix(chunk_key_prefix, purge);
71 const size_t num_bytes) {
77 const size_t num_bytes) {
82 buffer->
copyTo(destination_buffer, num_bytes);
85 mgr->fetchBuffer(chunk_key, destination_buffer, num_bytes);
89 disk_cache_->cacheChunk(chunk_key, destination_buffer);
94 mgr->fetchBuffer(chunk_key, destination_buffer, num_bytes);
99 const size_t num_bytes) {
101 chunk_key, source_buffer, num_bytes);
113 if (
disk_cache_->hasCachedMetadataForKeyPrefix(keyPrefix)) {
114 disk_cache_->getCachedMetadataVecForKeyPrefix(chunk_metadata, keyPrefix);
175 return PERSISTENT_STORAGE_MGR;
179 return ToString(PERSISTENT_STORAGE_MGR);
191 const ChunkKey table_key{db_id, table_id};
213 auto table = catalog->getMetadataForTableImpl(table_id,
false);
size_t getInUseSize() override
std::string getStringMgrType() override
std::vector< int > ChunkKey
size_t getAllocated() override
bool isEnabledForMutableTables() const
AbstractBuffer * alloc(const size_t num_bytes) override
PersistentStorageMgr(const std::string &data_dir, const size_t num_reader_threads, const DiskCacheConfig &disk_cache_config)
static Data_Namespace::AbstractBufferMgr * lookupBufferManager(const int db_id, const int table_id)
void deleteBuffer(const ChunkKey &chunk_key, const bool purge) override
File_Namespace::GlobalFileMgr * getGlobalFileMgr() const
ChunkKey get_table_key(const ChunkKey &key)
foreign_storage::ForeignStorageMgr * getForeignStorageMgr() const
void checkpoint() override
This file contains the class specification and related data structures for Catalog.
size_t getMaxSize() override
foreign_storage::ForeignStorageCache * getDiskCache() const
static SysCatalog & instance()
AbstractBuffer * createBuffer(const ChunkKey &chunk_key, const size_t page_size, const size_t initial_size) override
bool isEnabledForFSI() const
bool isForeignStorage(const ChunkKey &chunk_key) const
#define CHUNK_KEY_TABLE_IDX
void getChunkMetadataVecForKeyPrefix(ChunkMetadataVector &chunk_metadata, const ChunkKey &chunk_key_prefix) override
bool has_table_prefix(const ChunkKey &key)
An AbstractBuffer is a unit of data management for a data manager.
void deleteBuffersWithPrefix(const ChunkKey &chunk_key_prefix, const bool purge) override
bool isChunkPrefixCacheable(const ChunkKey &chunk_prefix) const
MgrType getMgrType() override
std::shared_ptr< Catalog > getCatalog(const std::string &dbName)
size_t getNumChunks() override
std::unique_ptr< foreign_storage::ForeignStorageCache > disk_cache_
static PersistentStorageMgr * createPersistentStorageMgr(const std::string &data_dir, const size_t num_reader_threads, const DiskCacheConfig &disk_cache_config)
DiskCacheConfig disk_cache_config_
void copyTo(AbstractBuffer *destination_buffer, const size_t num_bytes=0)
AbstractBuffer * getBuffer(const ChunkKey &chunk_key, const size_t num_bytes) override
void removeTableRelatedDS(const int db_id, const int table_id) override
std::unique_ptr< File_Namespace::GlobalFileMgr > global_file_mgr_
AbstractBufferMgr * getStorageMgrForTableKey(const ChunkKey &table_key) const
AbstractBuffer * putBuffer(const ChunkKey &chunk_key, AbstractBuffer *source_buffer, const size_t num_bytes) override
void fetchBuffer(const ChunkKey &chunk_key, AbstractBuffer *destination_buffer, const size_t num_bytes) override
bool isBufferOnDevice(const ChunkKey &chunk_key) override
static constexpr char const * FOREIGN_TABLE
std::unique_ptr< foreign_storage::ForeignStorageMgr > foreign_storage_mgr_
bool isAllocationCapped() override
void clearSlabs() override
std::string printSlabs() override
void free(AbstractBuffer *buffer) override