|
| PolyDBM () |
| Default constructor. More...
|
|
virtual | ~PolyDBM () |
| Destructor. More...
|
|
| PolyDBM (const PolyDBM &rhs)=delete |
| Copy and assignment are disabled. More...
|
|
PolyDBM & | operator= (const PolyDBM &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 std::map< std::string, std::string > ¶ms={}) override |
| 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 | Get (std::string_view key, std::string *value=nullptr) override |
| Gets the value of a record of a key. More...
|
|
Status | Set (std::string_view key, std::string_view value, bool overwrite=true, std::string *old_value=nullptr) override |
| Sets a record of a key and a value. More...
|
|
Status | Remove (std::string_view key, std::string *old_value=nullptr) override |
| Removes a record of a key. More...
|
|
Status | Append (std::string_view key, std::string_view value, std::string_view delim="") override |
| Appends data at the end of a record of a key. More...
|
|
Status | ProcessMulti (const std::vector< std::pair< std::string_view, DBM::RecordProcessor *>> &key_proc_pairs, bool writable) override |
| Processes multiple records with processors. 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 | GetTimestamp (double *timestamp) override |
| Gets the timestamp in seconds of the last modified time. More...
|
|
Status | Clear () override |
| Removes all records. More...
|
|
Status | Rebuild () override |
| Rebuilds the entire database. More...
|
|
Status | RebuildAdvanced (const std::map< std::string, std::string > ¶ms={}) override |
| 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...
|
|
Status | SynchronizeAdvanced (bool hard, FileProcessor *proc=nullptr, const std::map< std::string, std::string > ¶ms={}) override |
| Synchronizes the content of the database to the file system, in an advanced way. 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...
|
|
UpdateLogger * | GetUpdateLogger () const override |
| Gets the logger to write all update operations. More...
|
|
void | SetUpdateLogger (UpdateLogger *update_logger) override |
| Sets the logger to write all update operations. More...
|
|
DBM * | GetInternalDBM () const |
| Gets the pointer to the internal database object. More...
|
|
virtual | ~ParamDBM ()=default |
| Destructor. 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 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 Status | GetMulti (const std::vector< std::string_view > &keys, std::map< std::string, std::string > *records) |
| Gets the values of multiple records of keys, with a string view vector. More...
|
|
virtual Status | GetMulti (const std::initializer_list< std::string_view > &keys, std::map< std::string, std::string > *records) |
| Gets the values of multiple records of keys, with an initializer list. More...
|
|
virtual Status | GetMulti (const std::vector< std::string > &keys, std::map< std::string, std::string > *records) |
| Gets the values of multiple records of keys, with a string vector. More...
|
|
virtual Status | SetMulti (const std::map< std::string_view, std::string_view > &records, bool overwrite=true) |
| Sets multiple records, with a map of string views. More...
|
|
virtual Status | SetMulti (const std::initializer_list< std::pair< std::string_view, std::string_view >> &records, bool overwrite=true) |
| Sets multiple records, with an initializer list. 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 | RemoveMulti (const std::vector< std::string_view > &keys) |
| Removes records of keys, with a string view vector. More...
|
|
virtual Status | RemoveMulti (const std::initializer_list< std::string_view > &keys) |
| Removes records of keys, with an initializer list. More...
|
|
virtual Status | RemoveMulti (const std::vector< std::string > &keys) |
| Removes records of keys, with a string vector. More...
|
|
virtual Status | AppendMulti (const std::map< std::string_view, std::string_view > &records, std::string_view delim="") |
| Appends data to multiple records, with a map of string views. More...
|
|
virtual Status | AppendMulti (const std::initializer_list< std::pair< std::string_view, std::string_view >> &records, std::string_view delim="") |
| Appends data to multiple records, with an initializer list. More...
|
|
virtual Status | AppendMulti (const std::map< std::string, std::string > &records, std::string_view delim="") |
| Appends data to multiple records, with a map of strings. 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 | ProcessMulti (const std::vector< std::pair< std::string_view, RecordProcessor *>> &key_proc_pairs, bool writable)=0 |
| Processes multiple records with processors. More...
|
|
virtual Status | ProcessMulti (const std::vector< std::pair< std::string_view, RecordLambdaType >> &key_lambda_pairs, bool writable) |
| Processes multiple records with lambda functions. More...
|
|
virtual Status | CompareExchangeMulti (const std::vector< std::pair< std::string_view, std::string_view >> &expected, const std::vector< std::pair< std::string_view, std::string_view >> &desired) |
| Compares the values of records and exchanges if the condition meets. 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 double | GetTimestampSimple () |
| Gets the timestamp of the last modified time, 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, bool sync_hard=false) |
| Copies the content of the database file to another file. More...
|
|
virtual Status | Export (DBM *dest_dbm) |
| Exports all records to another database. More...
|
|
const std::type_info & | GetType () const |
| Gets the type information of the actual class. More...
|
|
Polymorphic database manager adapter.
All operations except for Open and Close are thread-safe; Multiple threads can access the same database concurrently. Every opened database must be closed explicitly to avoid data corruption.
This class is a wrapper of HashDBM, TreeDBM, SkipDBM, TinyDBM, BabyDBM, StdHashDBM, and StdTreeDBM. The open method specifies the actuall class used internally.
Status tkrzw::PolyDBM::OpenAdvanced |
( |
const std::string & |
path, |
|
|
bool |
writable, |
|
|
int32_t |
options = File::OPEN_DEFAULT , |
|
|
const std::map< std::string, std::string > & |
params = {} |
|
) |
| |
|
overridevirtual |
Opens a database file, in an advanced way.
- Parameters
-
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. |
params | Optional parameters. |
- Returns
- The result status.
The extension of the path indicates the type of the database.
The optional parameter "dbm" supercedes the decision of the database type by the extension. The value is the type name: "HashDBM", "TreeDBM", "SkipDBM", "TinyDBM", "BabyDBM", "CacheDBM", "StdHashDBM", "StdTreeDBM".
The optional parameter "file" specifies the internal file implementation class. The default file class is "MemoryMapAtomicFile". The other supported classes are "StdFile", "MemoryMapAtomicFile", "PositionalParallelFile", and "PositionalAtomicFile".
For HashDBM, these optional parameters are supported.
- update_mode (string): How to update the database file: "UPDATE_IN_PLACE" for the in-palce or "UPDATE_APPENDING" for the appending mode.
- record_crc_mode (string): How to add the CRC data to the record: "RECORD_CRC_NONE" to add no CRC to each record, "RECORD_CRC_8" to add CRC-8 to each record, "RECORD_CRC_16" to add CRC-16 to each record, or "RECORD_CRC_32" to add CRC-32 to each record.
- record_comp_mode (string): How to compress the record data: "RECORD_COMP_NONE" to do no compression, "RECORD_COMP_ZLIB" to compress with ZLib, "RECORD_COMP_ZSTD" to compress with ZStd, "RECORD_COMP_LZ4" to compress with LZ4, "RECORD_COMP_LZMA" to compress with LZMA.
- offset_width (int): The width to represent the offset of records.
- align_pow (int): The power to align records.
- num_buckets (int): The number of buckets for hashing.
- restore_mode (string): How to restore the database file: "RESTORE_SYNC" to restore to the last synchronized state, "RESTORE_READ_ONLY" to make the database read-only, or "RESTORE_NOOP" to do nothing. By default, as many records as possible are restored. Appending ":RESTORE_NO_SHORTCUTS" is to not apply shortcuts. Appending ":RESTORE_WITH_HARDSYNC" is do physical synchronization.
- fbp_capacity (int): The capacity of the free block pool.
- min_read_size (int): The minimum reading size to read a record.
- cache_buckets (bool): True to cache the hash buckets on memory.
For TreeDBM, all optional parameters for HashDBM are available. In addition, these optional parameters are supported.
- max_page_size (int): The maximum size of a page.
- max_branches (int): The maximum number of branches each inner node can have.
- max_cached_pages (int): The maximum number of cached pages.
- key_comparator (string): The comparator of record keys: "LexicalKeyComparator" for the lexical order, "LexicalCaseKeyComparator" for the lexical order ignoring case, "DecimalKeyComparator" for the order of the decimal integer numeric expressions, "HexadecimalKeyComparator" for the order of the hexadecimal integer numeric expressions, "RealNumberKeyComparator" for the order of the decimal real number expressions.
For SkipDBM, these optional parameters are supported.
- offset_width (int): The width to represent the offset of records.
- step_unit (int): The step unit of the skip list.
- max_level (int): The maximum level of the skip list.
- restore_mode (string): How to restore the database file: "RESTORE_SYNC" to restore to the last synchronized state, "RESTORE_READ_ONLY" to make the database read-only, or "RESTORE_NOOP" to do nothing. By default, as many records as possible are restored. Appending ":RESTORE_NO_SHORTCUTS" is to not apply shortcuts. Appending ":RESTORE_WITH_HARDSYNC" is do physical synchronization.
- sort_mem_size (int): The memory size used for sorting to build the database in the at-random mode.
- insert_in_order (bool): If true, records are assumed to be inserted in ascending order of the key.
- max_cached_records (int): The maximum number of cached records.
For TinyDBM, these optional parameters are supported.
- num_buckets (int): The number of buckets for hashing.
For BabyDBM, these optional parameters are supported.
- key_comparator (string): The comparator of record keys. The same ones as TreeDBM.
For CacheDBM, these optional parameters are supported.
- cap_rec_num (int): The maximum number of records.
- cap_mem_size (int): The total memory size to use.
All databases support taking update logs into files. It is enabled by setting the prefix of update log files.
- ulog_prefix (str): The prefix of the update log files.
- ulog_max_file_size (num): The maximum file size of each update log file. By default, it is 1GiB.
- ulog_server_id (num): The server ID attached to each log. By default, it is 0.
- ulog_dbm_index (num): The DBM index attached to each log. By default, it is 0.
For the file "PositionalParallelFile" and "PositionalAtomicFile", these optional parameters are supported.
- block_size (int): The block size to which all blocks should be aligned.
- access_options (str): Values separated by colon. "direct" for direct I/O. "sync" for synchrnizing I/O, "padding" for file size alignment by padding, "pagecache" for the mini page cache in the process.
Implements tkrzw::ParamDBM.