Tkrzw
Classes | Public Member Functions | List of all members
tkrzw::FileIndex Class Referencefinal

File secondary index implementation with TreeDBM. More...

#include <tkrzw_index.h>

Classes

class  Iterator
 Iterator for each record. More...
 

Public Member Functions

Status Open (const std::string &path, bool writable, int32_t options=File::OPEN_DEFAULT, const TreeDBM::TuningParameters &tuning_params=TreeDBM::TuningParameters())
 Opens a database file. More...
 
Status Close ()
 Closes the database file. More...
 
bool Check (std::string_view key, std::string_view value)
 Checks whether a record exists in the index. More...
 
std::vector< std::string > GetValues (std::string_view key, size_t max=0)
 Gets all values of records of a key. More...
 
Status Add (std::string_view key, std::string_view value)
 Adds a record. More...
 
Status Remove (std::string_view key, std::string_view value)
 Removes a record. More...
 
Status Clear ()
 Removes all records. More...
 
size_t Count ()
 Gets the number of records. More...
 
std::unique_ptr< IteratorMakeIterator ()
 Makes an iterator for each record. More...
 

Detailed Description

File secondary index implementation with TreeDBM.

All operations are thread-safe; Multiple threads can access the same database concurrently.

Member Function Documentation

◆ Open()

Status tkrzw::FileIndex::Open ( const std::string &  path,
bool  writable,
int32_t  options = File::OPEN_DEFAULT,
const TreeDBM::TuningParameters tuning_params = TreeDBM::TuningParameters() 
)

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.
tuning_paramsA structure for tuning parameters.
Returns
The result status. If the key comparator of the tuning parameter is nullptr, PairLexicalKeyComparator is set implicitly. Other compatible key comparators are PairLexicalCaseKeyComparator, PairDecimalKeyComparator, PairHexadecimalKeyComparator, and PairRealNumberKeyComparator. The alignment power and the maximum page size are also set implicitly to be suitable for random access.

◆ Close()

Status tkrzw::FileIndex::Close ( )

Closes the database file.

Returns
The result status. Precondition: The database is opened.

◆ Check()

bool tkrzw::FileIndex::Check ( std::string_view  key,
std::string_view  value 
)

Checks whether a record exists in the index.

Parameters
keyThe key of the record.
valueThe value of the record.

◆ GetValues()

std::vector< std::string > tkrzw::FileIndex::GetValues ( std::string_view  key,
size_t  max = 0 
)

Gets all values of records of a key.

Parameters
keyThe key to look for.
maxThe maximum number of values to get. 0 means unlimited.
Returns
All values of the key.

◆ Add()

Status tkrzw::FileIndex::Add ( std::string_view  key,
std::string_view  value 
)

Adds a record.

Parameters
keyThe key of the record. This can be an arbitrary expression to search the index.
valueThe value of the record. This should be a primary value of another database.
Returns
The result status.

◆ Remove()

Status tkrzw::FileIndex::Remove ( std::string_view  key,
std::string_view  value 
)

Removes a record.

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

◆ Clear()

Status tkrzw::FileIndex::Clear ( )

Removes all records.

Returns
The result status.

◆ Count()

size_t tkrzw::FileIndex::Count ( )

Gets the number of records.

Returns
The number of records.

◆ MakeIterator()

std::unique_ptr< FileIndex::Iterator > tkrzw::FileIndex::MakeIterator ( )

Makes an iterator for each record.

Returns
The iterator for each record.