Tkrzw
|
File database manager implementation based on B+ tree. More...
#include <tkrzw_dbm_tree.h>
Classes | |
class | Iterator |
Iterator for each record. More... | |
struct | TuningParameters |
Tuning parameters for the database. More... | |
Public Member Functions | |
TreeDBM () | |
Default constructor. More... | |
TreeDBM (std::unique_ptr< File > file) | |
Constructor with a file object. More... | |
virtual | ~TreeDBM () |
Destructor. More... | |
TreeDBM (const TreeDBM &rhs)=delete | |
Copy and assignment are disabled. More... | |
TreeDBM & | operator= (const TreeDBM &rhs)=delete |
Status | Open (const std::string &path, bool writable, int32_t options=File::OPEN_DEFAULT) override |
Opens a database file. More... | |
Status | OpenAdvanced (const std::string &path, bool writable, int32_t options=File::OPEN_DEFAULT, const TuningParameters &tuning_params=TuningParameters()) |
Opens a database file, in an advanced way. 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 (const TuningParameters &tuning_params=TuningParameters()) |
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... | |
const File * | GetInternalFile () const |
Gets the pointer to the internal file object. More... | |
int64_t | GetEffectiveDataSize () |
Gets the effective data size. More... | |
double | GetModificationTime () |
Gets the last modification time of the database. More... | |
int32_t | GetDatabaseType () |
Gets the database type. More... | |
Status | SetDatabaseType (uint32_t db_type) |
Sets the database type. More... | |
std::string | GetOpaqueMetadata () |
Gets the opaque metadata. More... | |
Status | SetOpaqueMetadata (const std::string &opaque) |
Sets the opaque metadata. More... | |
KeyComparator | GetKeyComparator () const |
Gets the comparator of record keys. More... | |
![]() | |
virtual | ~DBM ()=default |
Destructor. More... | |
virtual Status | Process (std::string_view key, RecordLambdaType rec_lambda, bool writable) |
Processes a record with a lambda function. 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, std::string *old_value=nullptr) |
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, std::string *old_value=nullptr) |
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 Status | ProcessEach (RecordLambdaType rec_lambda, bool writable) |
Processes each and every record in the database with a lambda function. 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 | CopyFileData (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 Member Functions | |
static Status | RestoreDatabase (const std::string &old_file_path, const std::string &new_file_path, int64_t end_offset) |
Restores a broken database as a new healthy database. More... | |
Static Public Attributes | |
static constexpr int32_t | DEFAULT_OFFSET_WIDTH = 4 |
The default value of the offset width. More... | |
static constexpr int32_t | DEFAULT_ALIGN_POW = 10 |
The default value of the alignment power. More... | |
static constexpr int64_t | DEFAULT_NUM_BUCKETS = 131101 |
The default value of the number of buckets. More... | |
static constexpr int32_t | DEFAULT_FBP_CAPACITY = 2048 |
The default value of the capacity of the free block pool. More... | |
static constexpr int32_t | DEFAULT_MAX_PAGE_SIZE = 8130 |
The default value of the max page size. More... | |
static constexpr int32_t | DEFAULT_MAX_BRANCHES = 256 |
The default value of the max branches. More... | |
static constexpr int32_t | DEFAULT_MAX_CACHED_PAGES = 10000 |
The default value of the maximum number of cached pages. More... | |
static constexpr int32_t | OPAQUE_METADATA_SIZE = 10 |
The size of the opaque metadata. More... | |
Additional Inherited Members | |
![]() | |
typedef std::function< std::string_view(std::string_view, std::string_view)> | RecordLambdaType |
Lambda function type to process a record. More... | |
File database manager implementation based on B+ tree.
All operations are thread-safe; Multiple threads can access the same database concurrently. Every opened database must be closed explicitly to avoid data corruption.
tkrzw::TreeDBM::TreeDBM | ( | ) |
Default constructor.
MemoryMapParallelFile is used to handle the data.
tkrzw::TreeDBM::TreeDBM | ( | std::unique_ptr< File > | file | ) |
Constructor with a file object.
file | The file object to handle the data. The ownership is taken. |
|
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 of File::OpenOption enums for opening the file. |
Implements tkrzw::DBM.
Status tkrzw::TreeDBM::OpenAdvanced | ( | const std::string & | path, |
bool | writable, | ||
int32_t | options = File::OPEN_DEFAULT , |
||
const TuningParameters & | tuning_params = TuningParameters() |
||
) |
Opens a database file, in an advanced way.
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. |
tuning_params | A structure for tuning parameters. |
|
overridevirtual |
Closes the database 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. |
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. |
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 |
Removes all records.
Implements tkrzw::DBM.
|
overridevirtual |
Rebuilds the entire database.
Implements tkrzw::DBM.
Status tkrzw::TreeDBM::RebuildAdvanced | ( | const TuningParameters & | tuning_params = TuningParameters() | ) |
Rebuilds the entire database, in an advanced way.
tuning_params | A structure for tuning parameters. The default value of each parameter means that the current setting is succeeded or calculated implicitly. |
|
overridevirtual |
Checks whether the database should be rebuilt.
tobe | The pointer to a boolean object to contain the result decision. |
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. |
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 |
Makes an iterator for each record.
Implements tkrzw::DBM.
|
overridevirtual |
Makes a new DBM object of the same concrete class.
Implements tkrzw::DBM.
const File* tkrzw::TreeDBM::GetInternalFile | ( | ) | const |
Gets the pointer to the internal file object.
int64_t tkrzw::TreeDBM::GetEffectiveDataSize | ( | ) |
Gets the effective data size.
double tkrzw::TreeDBM::GetModificationTime | ( | ) |
Gets the last modification time of the database.
int32_t tkrzw::TreeDBM::GetDatabaseType | ( | ) |
Gets the database type.
Status tkrzw::TreeDBM::SetDatabaseType | ( | uint32_t | db_type | ) |
Sets the database type.
db_type | The database type. |
std::string tkrzw::TreeDBM::GetOpaqueMetadata | ( | ) |
Gets the opaque metadata.
Status tkrzw::TreeDBM::SetOpaqueMetadata | ( | const std::string & | opaque | ) |
Sets the opaque metadata.
opaque | The opaque metadata, of which leading 16 bytes are stored in the file. |
KeyComparator tkrzw::TreeDBM::GetKeyComparator | ( | ) | const |
Gets the comparator of record keys.
|
static |
Restores a broken database as a new healthy database.
old_file_path | The path of the broken database. |
new_file_path | The path of the new database to be created. |
end_offset | The exclusive end offset of records to read. Negative means unlimited. 0 means the size when the database is synched or closed properly. |
|
staticconstexpr |
The default value of the offset width.
|
staticconstexpr |
The default value of the alignment power.
|
staticconstexpr |
The default value of the number of buckets.
|
staticconstexpr |
The default value of the capacity of the free block pool.
|
staticconstexpr |
The default value of the max page size.
|
staticconstexpr |
The default value of the max branches.
|
staticconstexpr |
The default value of the maximum number of cached pages.
|
staticconstexpr |
The size of the opaque metadata.