73f8bb3e5f
Allow to extend blobstor with more storage sub-systems. Currently objects stored in the FSTree have empty byte slice descriptor and object from blobovnicza tree have the same id as earlier. Each such change in the identifier formation should be accompanied with metabase version increase. Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
2.8 KiB
2.8 KiB
Metabase versioning
This file describes changes between the metabase versions.
Current
Primary buckets
- Graveyard bucket
- Name:
_Graveyard
- Key: object address
- Value: tombstone address
- Name:
- Garbage bucket
- Name:
_Garbage
- Key: object address
- Value: dummy value
- Name:
- Bucket containing IDs of objects that are candidates for moving
to another shard.
- Name:
_ToMoveIt
- Key: object address
- Value: dummy value
- Name:
- Container volume bucket
- Name:
_ContainerSize
- Key: container ID
- Value: container size in bytes as little-endian uint64
- Name:
- Bucket for storing locked objects information
- Name:
_Locked
- Key: container ID
- Value: bucket mapping objects locked to the list of corresponding LOCK objects
- Name:
- Bucket containing auxilliary information. All keys are custom and are not connected to the container
- Name:
_i
- Keys and values
id
-> shard id as bytesversion
-> metabase version as little-endian uint64
- Name:
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
- Name: container ID +
- Buckets containing objects of STORAGEGROUP type
- Name: container ID +
_SG
- Key: object ID
- Value: marshaled object
- Name: container ID +
- Buckets containing objects of TOMBSTONE type
- Name: container ID +
_TS
- Key: object ID
- Value: marshaled object
- Name: container ID +
- Buckets mapping objects to the storage ID they are stored in
- Name: container ID +
_small
- Key: object ID
- Value: storage ID
- Name: container ID +
- Buckets for mapping parent object to the split info
- Name: container ID +
_root
- Key: object ID
- Value: split info
- Name: container ID +
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
- Name: containerID +
- Buckets containing objects attributes indexes
- Name: containerID +
_attr_
+ attribute key - Key: attribute value
- Value: bucket containing object IDs as keys
- Name: containerID +
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
- Name: container ID +
- Buckets mapping parent ID to a list of children IDs
- Name: container ID +
_parent
- Key: parent ID
- Value: list of children object IDs
- Name: container ID +
- Buckets mapping split ID to a list of object IDs
- Name: container ID +
_splitid
- Key: split ID
- Value: list of object IDs
- Name: container ID +
History
Version 1
- Metabase now stores generic storage id instead of blobovnicza ID.
Version 0
- Container ID is encoded as base58 string
- Object ID is encoded as base58 string
- Address is encoded as container ID + "/" + object ID