60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
|
# FSHTBKVS
|
||
|
|
||
|
The FSHTBKVS (Filesystem Hash Table Based Key Value Store) was developed
|
||
|
to be an easy to deploy key value store with fast lookup times even for (very)
|
||
|
large data sets and without third party dependencies.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
### Basic
|
||
|
```python
|
||
|
from FSHTBKVS import FSHTBKVS
|
||
|
|
||
|
# create/open a kvs
|
||
|
kvs = FSHTBKVS(
|
||
|
'/home/fshtbkvs/data', # path where the kvs will be created/is located
|
||
|
'Test_KVS' # name of the kvs
|
||
|
)
|
||
|
|
||
|
kvs.write('this could be a key', 'this could be a value') # adds/updates a value
|
||
|
kvs.read('this could be a key') # returns the value for a given key
|
||
|
kvs.delete('this could be a key') # deletes a value
|
||
|
```
|
||
|
|
||
|
### Advanced
|
||
|
```python
|
||
|
kvs.export_kvs(file='/tmp/kvs_export.fshtbkvs') # exports the whole kvs into a .fshtbkvs file
|
||
|
kvs.import_kvs(file='/tmp/kvs_export.fshtbkvs') # imports a .fshtbkvs file
|
||
|
|
||
|
kvs.wipe_kvs() # deletes all entries
|
||
|
```
|
||
|
|
||
|
### Miscellaneous
|
||
|
```python
|
||
|
kvs.get_entries() # returns the number of entries
|
||
|
kvs.get_kvs_name() # returns the name of the kvs
|
||
|
kvs.get_max_depth() # returns the depth of the kvs
|
||
|
kvs.get_size_of_kvs() # returns the size of the kvs in megabytes (as float)
|
||
|
|
||
|
kvs.maintain_kvs() # recreates missing/broken .json files and counts all entries
|
||
|
```
|
||
|
|
||
|
## Information
|
||
|
When creating a KVS, the optional parameter 'max_depth' can be used.
|
||
|
It specifies how many levels of the hash table will be created.
|
||
|
The default value is 4, which results in 65,536 .json files. This seems to be
|
||
|
a sweet spot for most (hobby) projects. If you expect a very large amount of data,
|
||
|
the value should rather be set higher to keep the access times low. Naturally,
|
||
|
the higher the selected value, the more difficult it is to handle the KVS
|
||
|
(with regard to the file system).
|
||
|
|
||
|
| max_depth | # of .json files created |
|
||
|
|--------------|-------------------------:|
|
||
|
| 1 | 16 |
|
||
|
| 2 | 256 |
|
||
|
| 3 | 4,096 |
|
||
|
| **4** | **65,536** |
|
||
|
| 5 | 1,048,576 |
|
||
|
| 6 | 16,777,216 |
|
||
|
| 7 | 268,435,456 |
|