Tkrzw
|
On-memory database manager implementation with LRU deletion. More...
#include <tkrzw_dbm_cache.h>
Classes | |
class | Iterator |
Iterator for each record. More... | |
Public Member Functions | |
CacheDBM (int64_t cap_rec_num=-1, int64_t cap_mem_size=-1) | |
Default constructor. More... | |
CacheDBM (std::unique_ptr< File > file, int64_t cap_rec_num=-1, int64_t cap_mem_size=-1) | |
Constructor with a file object. More... | |
virtual | ~CacheDBM () |
Destructor. More... | |
CacheDBM (const CacheDBM &rhs)=delete | |
Copy and assignment are disabled. More... | |
CacheDBM & | operator= (const CacheDBM &rhs)=delete |
Status | Open (const std::string &path, bool writable, int32_t options=File::OPEN_DEFAULT) override |
Opens a database file. More... | |
Status | Close () override |
Closes the database file. More... | |
Status | Process (std::string_view key, RecordProcessor *proc, bool writable) override |
Processes a record with a processor. More... | |
Status | ProcessEach (RecordProcessor *proc, bool writable) override |
Processes each and every record in the database with a processor. More... | |
Status | Count (int64_t *count) override |
Gets the number of records. More... | |
Status | GetFileSize (int64_t *size) override |
Gets the current file size of the database. More... | |
Status | GetFilePath (std::string *path) override |
Gets the path of the database file. More... | |
Status | Clear () override |
Removes all records. More... | |
Status | Rebuild () override |
Rebuilds the entire database. More... | |
Status | RebuildAdvanced (int64_t cap_rec_num=-1, int64_t cap_mem_size=-1) |
Rebuilds the entire database, in an advanced way. More... | |
Status | ShouldBeRebuilt (bool *tobe) override |
Checks whether the database should be rebuilt. More... | |
Status | Synchronize (bool hard, FileProcessor *proc=nullptr) override |
Synchronizes the content of the database to the file system. More... | |
std::vector< std::pair< std::string, std::string > > | Inspect () override |
Inspects the database. More... | |
bool | IsOpen () const override |
Checks whether the database is open. More... | |
bool | IsWritable () const override |
Checks whether the database is writable. More... | |
bool | IsHealthy () const override |
Checks whether the database condition is healthy. More... | |
bool | IsOrdered () const override |
Checks whether ordered operations are supported. More... | |
std::unique_ptr< DBM::Iterator > | MakeIterator () override |
Makes an iterator for each record. More... | |
std::unique_ptr< DBM > | MakeDBM () const override |
Makes a new DBM object of the same concrete class. More... | |
int64_t | GetEffectiveDataSize () |
Gets the effective data size. More... | |
int64_t | GetMemoryUsage () |
Gets the current memory usage. More... | |
![]() | |
virtual | ~DBM ()=default |
Destructor. More... | |
virtual Status | Get (std::string_view key, std::string *value=nullptr) |
Gets the value of a record of a key. More... | |
virtual std::string | GetSimple (std::string_view key, std::string_view default_value="") |
Gets the value of a record of a key, in a simple way. More... | |
virtual std::map< std::string, std::string > | GetMulti (const std::initializer_list< std::string > &keys) |
Gets the values of multiple records of keys. More... | |
virtual std::map< std::string, std::string > | GetMulti (const std::vector< std::string > &keys) |
Gets the values of multiple records of keys, with a vector. More... | |
virtual Status | Set (std::string_view key, std::string_view value, bool overwrite=true) |
Sets a record of a key and a value. More... | |
virtual Status | SetMulti (const std::initializer_list< std::pair< std::string, std::string >> &records, bool overwrite=true) |
Sets multiple records. More... | |
virtual Status | SetMulti (const std::map< std::string, std::string > &records, bool overwrite=true) |
Sets multiple records, with a map of strings. More... | |
virtual Status | Remove (std::string_view key) |
Removes a record of a key. More... | |
virtual Status | Append (std::string_view key, std::string_view value, std::string_view delim="") |
Appends data at the end of a record of a key. More... | |
virtual Status | CompareExchange (std::string_view key, std::string_view expected, std::string_view desired, std::string *actual=nullptr) |
Compares the value of a record and exchanges if the condition meets. More... | |
virtual Status | Increment (std::string_view key, int64_t increment=1, int64_t *current=nullptr, int64_t initial=0) |
Increments the numeric value of a record. More... | |
int64_t | IncrementSimple (std::string_view key, int64_t increment=1, int64_t initial=0) |
Increments the numeric value of a record, in a simple way. More... | |
virtual int64_t | CountSimple () |
Gets the number of records, in a simple way. More... | |
virtual int64_t | GetFileSizeSimple () |
Gets the current file size of the database, in a simple way. More... | |
virtual std::string | GetFilePathSimple () |
Gets the path of the database file, in a simple way. More... | |
virtual bool | ShouldBeRebuiltSimple () |
Checks whether the database should be rebuilt, in a simple way. More... | |
virtual Status | CopyFile (const std::string &dest_path) |
Copies the content of the database file to another file. More... | |
virtual Status | Export (DBM *dbm) |
Exports all records to another database. More... | |
Static Public Attributes | |
static constexpr int64_t | DEFAULT_CAP_REC_NUM = 1048576 |
The default value of the maximum number of records. More... | |
On-memory database manager implementation with LRU deletion.
All operations are thread-safe; Multiple threads can access the same database concurrently.
tkrzw::CacheDBM::CacheDBM | ( | int64_t | cap_rec_num = -1 , |
int64_t | cap_mem_size = -1 |
||
) |
Default constructor.
cap_rec_num | The maximum number of records. -1 means that the default value 1048576 is set. |
cap_mem_size | The total memory size to use. -1 means unlimited. |
If the number of records or the total memory size exceeds the capacity LRU (least resente used) records are removed implicitly.
tkrzw::CacheDBM::CacheDBM | ( | std::unique_ptr< File > | file, |
int64_t | cap_rec_num = -1 , |
||
int64_t | cap_mem_size = -1 |
||
) |
Constructor with a file object.
file | The file object to handle the data. The ownership is taken. |
cap_rec_num | The maximum number of records. -1 means that the default value 1048576 is set. As the number of hash buckets is set by the maximum number of records, setting too large value is not good for space efficiency. |
cap_mem_size | The total memory size to use. -1 means unlimited. |
If the number of records or the total memory size exceeds the capacity LRU (least resente used) records are removed implicitly.
|
virtual |
Destructor.
|
explicitdelete |
Copy and assignment are disabled.
|
overridevirtual |
Opens a database file.
path | A path of the file. |
writable | If true, the file is writable. If false, it is read-only. |
options | Bit-sum options for opening the file. |
As this database is an on-memory database, you can set records and retrieve them without opening a file. If you open a file, records are loaded from the file.
Implements tkrzw::DBM.
|
overridevirtual |
Closes the database file.
If a file is opened as writable, records are saved in the file.
Implements tkrzw::DBM.
|
overridevirtual |
Processes a record with a processor.
key | The key of the record. |
proc | The pointer to the processor object. |
writable | True if the processor can edit the record. |
If the specified record exists, the ProcessFull of the processor is called. Otherwise, the ProcessEmpty of the processor is called.
Implements tkrzw::DBM.
|
overridevirtual |
Processes each and every record in the database with a processor.
proc | The pointer to the processor object. |
writable | True if the processor can edit the record. |
The ProcessFull of the processor is called repeatedly for each record. The ProcessEmpty of the processor is called once before the iteration and once after the iteration.
Implements tkrzw::DBM.
|
overridevirtual |
Gets the number of records.
count | The pointer to an integer object to contain the result count. |
Implements tkrzw::DBM.
|
overridevirtual |
Gets the current file size of the database.
size | The pointer to an integer object to contain the result size. |
Implements tkrzw::DBM.
|
overridevirtual |
Gets the path of the database file.
path | The pointer to a string object to contain the result path. |
Implements tkrzw::DBM.
|
overridevirtual |
|
overridevirtual |
Rebuilds the entire database.
The number of buckets is calculated implicitly.
Implements tkrzw::DBM.
Status tkrzw::CacheDBM::RebuildAdvanced | ( | int64_t | cap_rec_num = -1 , |
int64_t | cap_mem_size = -1 |
||
) |
Rebuilds the entire database, in an advanced way.
cap_rec_num | The maximum number of records. -1 means that the current setting is kept. |
cap_mem_size | The total memory size to use. -1 means that the current setting is kept. |
|
overridevirtual |
Checks whether the database should be rebuilt.
tobe | The pointer to a boolean object to contain the result decision. |
There's no need for the database to be rebuilt.
Implements tkrzw::DBM.
|
overridevirtual |
Synchronizes the content of the database to the file system.
hard | True to do physical synchronization with the hardware or false to do only logical synchronization with the file system. |
proc | The pointer to the file processor object, whose Process method is called while the content of the file is synchronized. If it is nullptr, it is ignored. |
If a file is opened as writable, records are saved in the file.
Implements tkrzw::DBM.
|
overridevirtual |
Inspects the database.
Implements tkrzw::DBM.
|
overridevirtual |
Checks whether the database is open.
Implements tkrzw::DBM.
|
overridevirtual |
Checks whether the database is writable.
Implements tkrzw::DBM.
|
overridevirtual |
Checks whether the database condition is healthy.
Implements tkrzw::DBM.
|
overridevirtual |
Checks whether ordered operations are supported.
Implements tkrzw::DBM.
|
overridevirtual |
|
overridevirtual |
Makes a new DBM object of the same concrete class.
Implements tkrzw::DBM.
int64_t tkrzw::CacheDBM::GetEffectiveDataSize | ( | ) |
Gets the effective data size.
The effective data size means the total size of the keys and the values.
int64_t tkrzw::CacheDBM::GetMemoryUsage | ( | ) |
Gets the current memory usage.
The memory usage is estimated by the effective data size and the nuber of records.
|
static |
The default value of the maximum number of records.