Tkrzw
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
tkrzw::SkipDBM Class Referencefinal

File database manager implementation based on skip list. More...

#include <tkrzw_dbm_skip.h>

Classes

class  Iterator
 Iterator for each record. More...
 
struct  TuningParameters
 Tuning parameters for the database. More...
 

Public Types

typedef std::vector< std::string >(* ReducerType) (const std::string &, const std::vector< std::string > &)
 Interface of a function to reduce records of the same key in the at-random build mode. More...
 

Public Member Functions

 SkipDBM ()
 Default constructor. More...
 
 SkipDBM (std::unique_ptr< File > file)
 Constructor with a file object. More...
 
virtual ~SkipDBM ()
 Destructor. More...
 
 SkipDBM (const SkipDBM &rhs)=delete
 Copy and assignment are disabled. More...
 
SkipDBMoperator= (const SkipDBM &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 Set (std::string_view key, std::string_view value, bool overwrite=true) override
 Sets a record of a key and a value. More...
 
Status Remove (std::string_view key) override
 Removes a record of a key. More...
 
Status GetByIndex (int64_t index, std::string *key=nullptr, std::string *value=nullptr)
 Gets the key and the value of the record of an index. 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...
 
Status SynchronizeAdvanced (bool hard, FileProcessor *proc=nullptr, ReducerType reducer=nullptr)
 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::IteratorMakeIterator () override
 Makes an iterator for each record. More...
 
std::unique_ptr< DBMMakeDBM () const override
 Makes a new DBM object of the same concrete class. More...
 
const FileGetInternalFile () 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...
 
Status Revert ()
 Reverts all updates. More...
 
bool IsUpdated ()
 Checks whether the database has been updated after being opened. More...
 
Status MergeSkipDatabase (const std::string &src_path)
 Merges the contents of another skip database file. More...
 
- Public Member Functions inherited from tkrzw::DBM
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 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 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 Member Functions

static std::vector< std::string > ReduceRemove (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by removing REMOVING_VALUE and past values. More...
 
static std::vector< std::string > ReduceToFirst (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by keeping the first value only. More...
 
static std::vector< std::string > ReduceToSecond (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by keeping the second or first value only. More...
 
static std::vector< std::string > ReduceToLast (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by keeping the last value only. More...
 
static std::vector< std::string > ReduceConcat (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by concatenating all values. More...
 
static std::vector< std::string > ReduceConcatWithNull (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by concatenating all values with null code. More...
 
static std::vector< std::string > ReduceConcatWithTab (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by concatenating all values with tab. More...
 
static std::vector< std::string > ReduceConcatWithLine (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by concatenating all values with linefeed. More...
 
static std::vector< std::string > ReduceToTotal (const std::string &key, const std::vector< std::string > &values)
 Reduces the values of records of the same key by totaling numeric expressions. More...
 
static Status RestoreDatabase (const std::string &old_file_path, const std::string &new_file_path)
 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_STEP_UNIT = 4
 The default value of the step unit. More...
 
static constexpr int32_t DEFAULT_MAX_LEVEL = 14
 The default value of the maximum level. More...
 
static constexpr int64_t DEFAULT_SORT_MEM_SIZE = 256LL << 20
 The default value of the memory size used for sorting. More...
 
static constexpr int32_t DEFAULT_MAX_CACHED_RECORDS = 65536
 The default value of the maximum cached records. More...
 
static constexpr int32_t OPAQUE_METADATA_SIZE = 64
 The size of the opaque metadata. More...
 
static const std::string REMOVING_VALUE
 The special removing value. More...
 

Detailed Description

File database manager implementation based on skip list.

All operations are thread-safe; Multiple threads can access the same database concurrently. Every opened database must be closed explicitly to avoid data corruption.

Member Typedef Documentation

◆ ReducerType

typedef std::vector<std::string>(* tkrzw::SkipDBM::ReducerType) (const std::string &, const std::vector< std::string > &)

Interface of a function to reduce records of the same key in the at-random build mode.

The first parameter is the key. The second parameter is a vecgtor of record values. The return value is a vector of new values which are stored in the database.

Constructor & Destructor Documentation

◆ SkipDBM() [1/3]

tkrzw::SkipDBM::SkipDBM ( )

Default constructor.

MemoryMapParallelFile is used to handle the data.

◆ SkipDBM() [2/3]

tkrzw::SkipDBM::SkipDBM ( std::unique_ptr< File file)

Constructor with a file object.

Parameters
fileThe file object to handle the data. The ownership is taken.

◆ ~SkipDBM()

virtual tkrzw::SkipDBM::~SkipDBM ( )
virtual

Destructor.

◆ SkipDBM() [3/3]

tkrzw::SkipDBM::SkipDBM ( const SkipDBM rhs)
explicitdelete

Copy and assignment are disabled.

Member Function Documentation

◆ Open()

Status tkrzw::SkipDBM::Open ( const std::string &  path,
bool  writable,
int32_t  options = File::OPEN_DEFAULT 
)
overridevirtual

Opens a database file.

Parameters
pathA path of the file.
writableIf true, the file is writable. If false, it is read-only.
optionsBit-sum options for opening the file.
Returns
The result status.

Precondition: The database is not opened.

Implements tkrzw::DBM.

◆ OpenAdvanced()

Status tkrzw::SkipDBM::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.

Parameters
pathA path of the file.
writableIf true, the file is writable. If false, it is read-only.
optionsBit-sum options for opening the file.
tuning_paramsA structure for tuning parameters.
Returns
The result status.

Precondition: The database is not opened.

◆ Close()

Status tkrzw::SkipDBM::Close ( )
overridevirtual

Closes the database file.

Returns
The result status.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ Process()

Status tkrzw::SkipDBM::Process ( std::string_view  key,
RecordProcessor proc,
bool  writable 
)
overridevirtual

Processes a record with a processor.

Parameters
keyThe key of the record.
procThe pointer to the processor object.
writableTrue if the processor can edit the record.
Returns
The result status.

Precondition: The database is opened. The writable parameter should be consistent to the open mode.

If the specified record exists, the ProcessFull of the processor is called. Otherwise, the ProcessEmpty of the processor is called. Inserted records are not visible until the database is synchronized. The database allows duplication of keys. Duplication can be solved by the reducer applied when the database is synchronized. Removing records is implemented as inserting a special value REMOVING_VALUE, which is handled when the database is synchronized.

Implements tkrzw::DBM.

◆ Set()

Status tkrzw::SkipDBM::Set ( std::string_view  key,
std::string_view  value,
bool  overwrite = true 
)
overridevirtual

Sets a record of a key and a value.

Parameters
keyThe key of the record.
valueThe value of the record.
overwriteWhether to overwrite the existing value if there's a record with the same key. If true, the existing value is ovewritten by the new value. If false, the operation is given up and an error status is returned.
Returns
The result status.

Precondition: The database is opened as writable.

Reimplemented from tkrzw::DBM.

◆ Remove()

Status tkrzw::SkipDBM::Remove ( std::string_view  key)
overridevirtual

Removes a record of a key.

Parameters
keyThe key of the record.
Returns
The result status.

Even if there's no matching record, this doesn't report failure.

Precondition: The database is opened as writable.

Reimplemented from tkrzw::DBM.

◆ GetByIndex()

Status tkrzw::SkipDBM::GetByIndex ( int64_t  index,
std::string *  key = nullptr,
std::string *  value = nullptr 
)

Gets the key and the value of the record of an index.

Parameters
indexThe index of the record to retrieve.
keyThe pointer to a string object to contain the record key. If it is nullptr, the key data is ignored.
valueThe pointer to a string object to contain the record value. If it is nullptr, the value data is ignored.
Returns
The result status.

◆ ProcessEach()

Status tkrzw::SkipDBM::ProcessEach ( RecordProcessor proc,
bool  writable 
)
overridevirtual

Processes each and every record in the database with a processor.

Parameters
procThe pointer to the processor object.
writableTrue if the processor can edit the record.
Returns
The result status.

Precondition: The database is opened. The writable parameter should be consistent to the open mode.

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.

◆ Count()

Status tkrzw::SkipDBM::Count ( int64_t *  count)
overridevirtual

Gets the number of records.

Parameters
countThe pointer to an integer object to contain the result count.
Returns
The result status.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ GetFileSize()

Status tkrzw::SkipDBM::GetFileSize ( int64_t *  size)
overridevirtual

Gets the current file size of the database.

Parameters
sizeThe pointer to an integer object to contain the result size.
Returns
The result status.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ GetFilePath()

Status tkrzw::SkipDBM::GetFilePath ( std::string *  path)
overridevirtual

Gets the path of the database file.

Parameters
pathThe pointer to a string object to contain the result path.
Returns
The result status.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ Clear()

Status tkrzw::SkipDBM::Clear ( )
overridevirtual

Removes all records.

Returns
The result status.

Precondition: The database is opened as writable.

Implements tkrzw::DBM.

◆ Rebuild()

Status tkrzw::SkipDBM::Rebuild ( )
overridevirtual

Rebuilds the entire database.

Returns
The result status.

Precondition: The database is opened as writable.

Rebuilding a database is useful to optimize the size of the file. All tuning parameters are succeeded or calculated implicitly.

Implements tkrzw::DBM.

◆ RebuildAdvanced()

Status tkrzw::SkipDBM::RebuildAdvanced ( const TuningParameters tuning_params = TuningParameters())

Rebuilds the entire database, in an advanced way.

Parameters
tuning_paramsA structure for tuning parameters. The default value of each parameter means that the current setting is succeeded or calculated implicitly.
Returns
The result status.

Precondition: The database is opened as writable.

Rebuilding a database is useful to optimize the size of the file.

◆ ShouldBeRebuilt()

Status tkrzw::SkipDBM::ShouldBeRebuilt ( bool *  tobe)
overridevirtual

Checks whether the database should be rebuilt.

Parameters
tobeThe pointer to a boolean object to contain the result decision.
Returns
The result status.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ Synchronize()

Status tkrzw::SkipDBM::Synchronize ( bool  hard,
FileProcessor proc = nullptr 
)
overridevirtual

Synchronizes the content of the database to the file system.

Parameters
hardTrue to do physical synchronization with the hardware or false to do only logical synchronization with the file system.
procThe 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.
Returns
The result status.

Precondition: The database is opened as writable.

All inserted records are written in the database file and they become visible. This operation rebuilds the entire database by merging the existing records and inserted records. No reducer is applied to records so that all records with duplicated keys are kept intact.

Implements tkrzw::DBM.

◆ SynchronizeAdvanced()

Status tkrzw::SkipDBM::SynchronizeAdvanced ( bool  hard,
FileProcessor proc = nullptr,
ReducerType  reducer = nullptr 
)

Synchronizes the content of the database to the file system.

Parameters
hardTrue to do physical synchronization with the hardware or false to do only logical synchronization with the file system.
procThe 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.
Returns
The result status.
Parameters
reducerA reducer applied before stroing records. If it is nullptr, no reducer is applied and all records are kept intact.
Returns
The result status.

Precondition: The database is opened as writable.

All inserted records are written in the database file and they become visible. This operation rebuilds the entire database by merging the existing records and inserted records. Records of the same key given to the reducer are ordered in a way that the old value comes earlier than the new value. Thus, if you want to keep the old value, ReduceToFirst should be set. If you want to replace the old value with the new value, ReduceToLast should be set.

◆ Inspect()

std::vector<std::pair<std::string, std::string> > tkrzw::SkipDBM::Inspect ( )
overridevirtual

Inspects the database.

Returns
A vector of pairs of a property name and its value.

Implements tkrzw::DBM.

◆ IsOpen()

bool tkrzw::SkipDBM::IsOpen ( ) const
overridevirtual

Checks whether the database is open.

Returns
True if the database is open, or false if not.

Implements tkrzw::DBM.

◆ IsWritable()

bool tkrzw::SkipDBM::IsWritable ( ) const
overridevirtual

Checks whether the database is writable.

Returns
True if the database is writable, or false if not.

Implements tkrzw::DBM.

◆ IsHealthy()

bool tkrzw::SkipDBM::IsHealthy ( ) const
overridevirtual

Checks whether the database condition is healthy.

Returns
True if the database condition is healthy, or false if not.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ IsOrdered()

bool tkrzw::SkipDBM::IsOrdered ( ) const
overridevirtual

Checks whether ordered operations are supported.

Returns
Always true. Ordered operations are supported.

Implements tkrzw::DBM.

◆ MakeIterator()

std::unique_ptr<DBM::Iterator> tkrzw::SkipDBM::MakeIterator ( )
overridevirtual

Makes an iterator for each record.

Returns
The iterator for each record.

Precondition: The database is opened.

Implements tkrzw::DBM.

◆ MakeDBM()

std::unique_ptr<DBM> tkrzw::SkipDBM::MakeDBM ( ) const
overridevirtual

Makes a new DBM object of the same concrete class.

Returns
The new file object.

Implements tkrzw::DBM.

◆ GetInternalFile()

const File* tkrzw::SkipDBM::GetInternalFile ( ) const

Gets the pointer to the internal file object.

Returns
The pointer to the internal file object.

Accessing the internal file viorates encapsulation policy. This should be used only for testing and debugging.

◆ GetEffectiveDataSize()

int64_t tkrzw::SkipDBM::GetEffectiveDataSize ( )

Gets the effective data size.

Returns
The effective data size, or -1 on failure.

Precondition: The database is opened.

The effective data size means the total size of the keys and the values.

◆ GetModificationTime()

double tkrzw::SkipDBM::GetModificationTime ( )

Gets the last modification time of the database.

Returns
The last modification time of the UNIX epoch, or -1 on failure.

Precondition: The database is opened.

◆ GetDatabaseType()

int32_t tkrzw::SkipDBM::GetDatabaseType ( )

Gets the database type.

Returns
The database type, or -1 on failure.

Precondition: The database is opened.

◆ SetDatabaseType()

Status tkrzw::SkipDBM::SetDatabaseType ( uint32_t  db_type)

Sets the database type.

Parameters
db_typeThe database type.
Returns
The result status.

Precondition: The database is opened as writable.

This data is just for applications and not used by the database implementation.

◆ GetOpaqueMetadata()

std::string tkrzw::SkipDBM::GetOpaqueMetadata ( )

Gets the opaque metadata.

Returns
The opaque metadata, or an empty string on failure.

Precondition: The database is opened.

◆ SetOpaqueMetadata()

Status tkrzw::SkipDBM::SetOpaqueMetadata ( const std::string &  opaque)

Sets the opaque metadata.

Parameters
opaqueThe opaque metadata, of which leading 64 bytes are stored in the file.
Returns
The result status.

Precondition: The database is opened as writable.

This data is just for applications and not used by the database implementation.

◆ Revert()

Status tkrzw::SkipDBM::Revert ( )

Reverts all updates.

Precondition: The database is opened as writable and not finished.

All inserted records are discarded and the contents are returned to the state when the database was synchronized at the last time.

◆ IsUpdated()

bool tkrzw::SkipDBM::IsUpdated ( )

Checks whether the database has been updated after being opened.

Returns
True if the database has been updated after being opened.

Precondition: The database is opened.

◆ MergeSkipDatabase()

Status tkrzw::SkipDBM::MergeSkipDatabase ( const std::string &  src_path)

Merges the contents of another skip database file.

Parameters
src_pathA path to the source database file.
Returns
The result status.

Precondition: The database is opened as writable.

Merged records are shown after the database is synchronized. Among records of the same key, synchronized existing records come first, added records come second, and unsynchronized existing records come last.

◆ ReduceRemove()

static std::vector<std::string> tkrzw::SkipDBM::ReduceRemove ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by removing REMOVING_VALUE and past values.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vector containing surviving values.

◆ ReduceToFirst()

static std::vector<std::string> tkrzw::SkipDBM::ReduceToFirst ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by keeping the first value only.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vector containing the first value.

◆ ReduceToSecond()

static std::vector<std::string> tkrzw::SkipDBM::ReduceToSecond ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by keeping the second or first value only.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vector containing the first value.

◆ ReduceToLast()

static std::vector<std::string> tkrzw::SkipDBM::ReduceToLast ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by keeping the last value only.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vector containing the last value.

◆ ReduceConcat()

static std::vector<std::string> tkrzw::SkipDBM::ReduceConcat ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by concatenating all values.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vectro containing the concatenated values.

◆ ReduceConcatWithNull()

static std::vector<std::string> tkrzw::SkipDBM::ReduceConcatWithNull ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by concatenating all values with null code.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vectro containing the concatenated values.

◆ ReduceConcatWithTab()

static std::vector<std::string> tkrzw::SkipDBM::ReduceConcatWithTab ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by concatenating all values with tab.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vectro containing the concatenated values.

◆ ReduceConcatWithLine()

static std::vector<std::string> tkrzw::SkipDBM::ReduceConcatWithLine ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by concatenating all values with linefeed.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vectro containing the concatenated values.

◆ ReduceToTotal()

static std::vector<std::string> tkrzw::SkipDBM::ReduceToTotal ( const std::string &  key,
const std::vector< std::string > &  values 
)
static

Reduces the values of records of the same key by totaling numeric expressions.

Parameters
keyThe common key of the records.
valuesThe values of the records of the same key.
Returns
A vector containing the total numeric expression.

◆ RestoreDatabase()

static Status tkrzw::SkipDBM::RestoreDatabase ( const std::string &  old_file_path,
const std::string &  new_file_path 
)
static

Restores a broken database as a new healthy database.

Parameters
old_file_pathThe path of the broken database.
new_file_pathThe path of the new database to be created.
Returns
The result status.

Member Data Documentation

◆ DEFAULT_OFFSET_WIDTH

constexpr int32_t tkrzw::SkipDBM::DEFAULT_OFFSET_WIDTH = 4
static

The default value of the offset width.

◆ DEFAULT_STEP_UNIT

constexpr int32_t tkrzw::SkipDBM::DEFAULT_STEP_UNIT = 4
static

The default value of the step unit.

◆ DEFAULT_MAX_LEVEL

constexpr int32_t tkrzw::SkipDBM::DEFAULT_MAX_LEVEL = 14
static

The default value of the maximum level.

◆ DEFAULT_SORT_MEM_SIZE

constexpr int64_t tkrzw::SkipDBM::DEFAULT_SORT_MEM_SIZE = 256LL << 20
static

The default value of the memory size used for sorting.

◆ DEFAULT_MAX_CACHED_RECORDS

constexpr int32_t tkrzw::SkipDBM::DEFAULT_MAX_CACHED_RECORDS = 65536
static

The default value of the maximum cached records.

◆ OPAQUE_METADATA_SIZE

constexpr int32_t tkrzw::SkipDBM::OPAQUE_METADATA_SIZE = 64
static

The size of the opaque metadata.

◆ REMOVING_VALUE

const std::string tkrzw::SkipDBM::REMOVING_VALUE
static

The special removing value.