forked from nspcc-dev/neofs-node
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[nspcc-dev#1483] metabase: Add VERSION.md
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
- Loading branch information
1 parent
754f584
commit 31e2444
Showing
1 changed file
with
87 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# Metabase versioning | ||
|
||
This file describes changes between the metabase versions. | ||
|
||
## Version 0 | ||
|
||
- Container ID is encoded as base58 string | ||
- Object ID is encoded as base58 string | ||
- Address is encoded as container ID + "/" + object ID | ||
|
||
### Primary buckets | ||
- Graveyard bucket | ||
- Name: `_Graveyard` | ||
- Key: object address | ||
- Value: tombstone address | ||
- Garbage bucket | ||
- Name: `_Garbage` | ||
- Key: object address | ||
- Value: dummy value | ||
- Bucket containing IDs of objects that are candidates for moving | ||
to another shard. | ||
- Name: `_ToMoveIt` | ||
- Key: object address | ||
- Value: dummy value | ||
- Container volume bucket | ||
- Name: `_ContainerSize` | ||
- Key: container ID | ||
- Value: container size in bytes as little-endian uint64 | ||
- Bucket for storing locked objects information | ||
- Name: `_Locked` | ||
- Key: container ID | ||
- Value: bucket mapping objects locked to the list of corresponding LOCK objects | ||
- Bucket containing auxilliary information. All keys are custom and are not connected to the container | ||
- Name: `_i` | ||
- Keys and values | ||
- `id` -> shard id as bytes | ||
- `version` -> metabase version as little-endian uint64 | ||
|
||
### Unique index buckets | ||
- Buckets containing objects of REGULAR type | ||
- Name: container ID | ||
- Key: object ID | ||
- Value: marshalled object | ||
- Buckets containing objects of LOCK type | ||
- Name: container ID + `_LOCKER` | ||
- Key: object ID | ||
- Value: marshalled object | ||
- Buckets containing objects of STORAGEGROUP type | ||
- Name: container ID + `_SG` | ||
- Key: object ID | ||
- Value: marshaled object | ||
- Buckets containing objects of TOMBSTONE type | ||
- Name: container ID + `_TS` | ||
- Key: object ID | ||
- Value: marshaled object | ||
- Buckets mapping objects to the blobovniczas they are stored in | ||
- Name: container ID + `_small` | ||
- Key: object ID | ||
- Value: blobovnicza ID | ||
- Buckets for mapping parent object to the split info | ||
- Name: container ID + `_root` | ||
- Key: object ID | ||
- Value: split info | ||
|
||
### FKBT index buckets | ||
- Buckets mapping owner to object IDs | ||
- Name: containerID + `_ownerid` | ||
- Key: owner ID as base58 string | ||
- Value: bucket containing object IDs as keys | ||
- Buckets containing objects attributes indexes | ||
- Name: containerID + `_attr_` + attribute key | ||
- Key: attribute value | ||
- Value: bucket containing object IDs as keys | ||
|
||
### List index buckets | ||
- Buckets mapping payload hash to a list of object IDs | ||
- Name: container ID + `_payloadhash` | ||
- Key: payload hash | ||
- Value: list of object IDs | ||
- Buckets mapping parent ID to a list of children IDs | ||
- Name: container ID + `_parent` | ||
- Key: parent ID | ||
- Value: list of children object IDs | ||
- Buckets mapping split ID to a list of object IDs | ||
- Name: container ID + `_splitid` | ||
- Key: split ID | ||
- Value: list of object IDs |