frostfs-node/pkg/local_object_storage/metabase
Leonard Lyubich 77e80f517f [#142] metabase: Store header value index in a tree leaf
In the previous implementation of the metabase, the unique value of the
header was assigned a bucket, the elements of which were leaves with a
key-address and an empty value. This approach was relatively efficient in
terms of write speed. However, a large number of buckets led to a rapid
increase in the database volume (~4GB for 100K objects with unique
attributes). An approach is presented with storing indexes on the value of
headers in the leaves of the tree, where the keys are the unique values ​​of
the header, and the values ​​are a serialized list of addresses (gob
encoding is temporarily used for serialization).

The new approach gave a good result in saving space (~350MB), however, it
significantly reduced the write speed with an increase in the number of
objects (~ 80x after 100K objects).

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2020-11-03 18:42:32 +03:00
..
db.go [#137] metabase: Implement Path method 2020-11-03 18:42:32 +03:00
db_test.go [#137] metabase: Add unit test for a nonexistent attribute 2020-11-03 18:42:32 +03:00
delete.go [#128] metabase: Implement Delete method 2020-10-29 17:34:41 +03:00
delete_test.go [#137] metabase: Implement and useful test funcs for work with DB 2020-11-03 18:42:32 +03:00
get.go [#128] metabase: Implement Delete method 2020-10-29 17:34:41 +03:00
get_test.go [#137] metabase: Implement and useful test funcs for work with DB 2020-11-03 18:42:32 +03:00
put.go [#142] metabase: Store header value index in a tree leaf 2020-11-03 18:42:32 +03:00
put_test.go [#137] metabase: Implement and useful test funcs for work with DB 2020-11-03 18:42:32 +03:00
select.go [#142] metabase: Store header value index in a tree leaf 2020-11-03 18:42:32 +03:00
select_test.go [#137] metabase: Implement and useful test funcs for work with DB 2020-11-03 18:42:32 +03:00