38 using namespace Data_Namespace;
40 namespace File_Namespace {
57 std::shared_ptr<ForeignStorageInterface>
fsi,
58 std::string base_path =
".",
59 const size_t num_reader_threads = 0,
68 const size_t numBytes = 0)
override {
69 return getFileMgr(key)->createBuffer(key, pageSize, numBytes);
73 return getFileMgr(key)->isBufferOnDevice(key);
81 return getFileMgr(key)->deleteBuffer(key, purge);
84 void deleteBuffersWithPrefix(
const ChunkKey& keyPrefix,
85 const bool purge =
true)
override;
89 return getFileMgr(key)->getBuffer(key, numBytes);
94 const size_t numBytes)
override {
95 return getFileMgr(key)->fetchBuffer(key, destBuffer, numBytes);
106 const size_t numBytes = 0)
override {
107 return getFileMgr(key)->putBuffer(key, d, numBytes);
112 LOG(
FATAL) <<
"Operation not supported";
118 inline MgrType
getMgrType()
override {
return GLOBAL_FILE_MGR; };
120 inline std::string
printSlabs()
override {
return "Not Implemented"; }
129 const ChunkKey& keyPrefix)
override {
130 return getFileMgr(keyPrefix)->getChunkMetadataVecForKeyPrefix(chunkMetadataVec,
138 void checkpoint()
override;
139 void checkpoint(
const int32_t db_id,
const int32_t tb_id)
override;
147 size_t getNumChunks()
override;
149 void compactDataFiles(
const int32_t db_id,
const int32_t tb_id);
151 static constexpr int32_t db_version_{2};
154 AbstractBufferMgr* findFileMgrUnlocked(
const int32_t db_id,
const int32_t tb_id);
155 void deleteFileMgr(
const int32_t db_id,
const int32_t tb_id);
160 return findFileMgrUnlocked(db_id, tb_id);
162 void setFileMgrParams(
const int32_t db_id,
165 AbstractBufferMgr* getFileMgr(
const int32_t db_id,
const int32_t tb_id);
167 return getFileMgr(key[0], key[1]);
174 void writeFileMgrData(
FileMgr* fileMgr = 0);
179 void removeTableRelatedDS(
const int32_t db_id,
const int32_t tb_id)
override;
180 void setTableEpoch(
const int32_t db_id,
const int32_t tb_id,
const int32_t start_epoch);
181 size_t getTableEpoch(
const int32_t db_id,
const int32_t tb_id);
182 void resetTableEpochFloor(
const int32_t db_id,
const int32_t tb_id);
183 StorageStats getStorageStats(
const int32_t db_id,
const int32_t tb_id);
186 std::shared_ptr<FileMgr> getSharedFileMgr(
const int db_id,
const int table_id);
189 void setFileMgr(
const int db_id,
const int table_id, std::shared_ptr<FileMgr> file_mgr);
190 void closeFileMgr(
const int32_t db_id,
191 const int32_t tb_id);
194 std::shared_ptr<ForeignStorageInterface>
fsi_;
197 bool existsDiffBetweenFileMgrParamsAndFileMgr(
AbstractBuffer * putBuffer(const ChunkKey &key, AbstractBuffer *d, const size_t numBytes=0) override
Puts the contents of d into the Chunk with the given key.
std::vector< int > ChunkKey
std::string getBasePath() const
int32_t epoch_
number of threads used when loading data
std::shared_ptr< ForeignStorageInterface > fsi_
bool isBufferOnDevice(const ChunkKey &key) override
AbstractBuffer * createBuffer(const ChunkKey &key, size_t pageSize=0, const size_t numBytes=0) override
Creates a chunk with the specified key and page size.
std::map< TablePair, std::shared_ptr< FileMgr > > ownedFileMgrs_
void setDBConvert(bool val)
bool isAllocationCapped() override
AbstractBuffer * alloc(const size_t numBytes) override
This file includes the class specification for the FILE manager (FileMgr), and related data structure...
bool getDBConvert() const
AbstractBufferMgr * getFileMgr(const ChunkKey &key)
#define DEFAULT_METADATA_PAGE_SIZE
std::string getStringMgrType() override
std::shared_lock< T > shared_lock
std::map< TablePair, AbstractBufferMgr * > allFileMgrs_
size_t getAllocated() override
void init(LogOptions const &log_opts)
const size_t metadata_page_size_
used to set FileMgr page_size_
~GlobalFileMgr() override
An AbstractBuffer is a unit of data management for a data manager.
size_t getMetadataPageSize() const
void getChunkMetadataVecForKeyPrefix(ChunkMetadataVector &chunkMetadataVec, const ChunkKey &keyPrefix) override
std::string printSlabs() override
#define DEFAULT_PAGE_SIZE
void deleteBuffer(const ChunkKey &key, const bool purge=true) override
Deletes the chunk with the specified key.
MgrType getMgrType() override
size_t getMaxSize() override
size_t getPageSize() const
AbstractBuffer * getBuffer(const ChunkKey &key, const size_t numBytes=0) override
Returns the a pointer to the chunk with the specified key.
void free(AbstractBuffer *buffer) override
size_t num_reader_threads_
The OS file system path containing the files.
std::map< TablePair, int32_t > max_rollback_epochs_per_table_
AbstractBufferMgr * findFileMgr(const int32_t db_id, const int32_t tb_id)
std::map< TablePair, StorageStats > lazy_initialized_stats_
void fetchBuffer(const ChunkKey &key, AbstractBuffer *destBuffer, const size_t numBytes) override
std::shared_timed_mutex shared_mutex
size_t getNumReaderThreads()
Returns number of threads defined by parameter num-reader-threads which should be used during initial...
int32_t max_rollback_epochs
size_t getInUseSize() override
heavyai::shared_mutex fileMgrs_mutex_
bool dbConvert_
used to set FileMgr metadta_page_size_