2022-06-16 14:10:14 +00:00
|
|
|
# Metabase versioning
|
|
|
|
|
|
|
|
This file describes changes between the metabase versions.
|
|
|
|
|
2024-08-20 12:39:44 +00:00
|
|
|
Warning: database schema below is outdated and incomplete, see source code.
|
|
|
|
|
2022-07-06 14:09:50 +00:00
|
|
|
## Current
|
2022-06-16 14:10:14 +00:00
|
|
|
|
|
|
|
### Primary buckets
|
|
|
|
- Graveyard bucket
|
|
|
|
- Name: `_Graveyard`
|
2023-03-02 10:56:11 +00:00
|
|
|
- Key: object address
|
2022-06-16 14:10:14 +00:00
|
|
|
- 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
|
2023-03-02 10:56:11 +00:00
|
|
|
- Name: `_Locked`
|
2022-06-16 14:10:14 +00:00
|
|
|
- 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
|
2022-08-25 15:58:18 +00:00
|
|
|
- `phy_counter` -> shard's physical object counter as little-endian uint64
|
2022-09-09 11:33:38 +00:00
|
|
|
- `logic_counter` -> shard's logical object counter as little-endian uint64
|
2022-06-16 14:10:14 +00:00
|
|
|
|
|
|
|
### 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
|
2022-07-06 14:09:50 +00:00
|
|
|
- Buckets mapping objects to the storage ID they are stored in
|
2022-06-16 14:10:14 +00:00
|
|
|
- Name: container ID + `_small`
|
|
|
|
- Key: object ID
|
2022-07-06 14:09:50 +00:00
|
|
|
- Value: storage ID
|
2022-06-16 14:10:14 +00:00
|
|
|
- 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
|
2022-07-06 14:09:50 +00:00
|
|
|
|
2022-09-08 11:54:21 +00:00
|
|
|
# History
|
|
|
|
|
2024-08-20 12:39:44 +00:00
|
|
|
## Version 3
|
|
|
|
|
|
|
|
- Payload hash, owner ID and FKBT buckets deleted
|
|
|
|
- Expiration epoch to object ID and object ID to expiration epoch added
|
|
|
|
|
2022-09-08 11:54:21 +00:00
|
|
|
## Version 2
|
|
|
|
|
|
|
|
- Container ID is encoded as 32-byte slice
|
|
|
|
- Object ID is encoded as 32-byte slice
|
|
|
|
- Object ID is encoded as 64-byte slice, container ID + object ID
|
|
|
|
- Bucket naming scheme is changed:
|
|
|
|
- container ID + suffix -> 1-byte prefix + container ID
|
2022-07-06 14:09:50 +00:00
|
|
|
|
|
|
|
## 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
|
2023-03-02 10:56:11 +00:00
|
|
|
- Address is encoded as container ID + "/" + object ID
|