pub struct SpreadPrefixKeyMapper;
Expand description
A DatabaseKeyMapper
tailored for databases which cannot tolerate long common prefixes
among keys (for performance reasons). In other words, it spreads the keys “evenly” (i.e.
pseudo-randomly) across the key space. For context: our use-case for this is the Jellyfish
Merkle Tree.
This implementation is the actual, protocol-enforced one, to be used in public Radix networks.
This implementation achieves the prefix-spreading by adding a hash prefix (shortened hash for performance reasons, but still hard to crack) to:
- the ReNode part of DB Partition key
- the Map key and Sorted key flavors of SubstateKey
Trait Implementations§
source§impl DatabaseKeyMapper for SpreadPrefixKeyMapper
impl DatabaseKeyMapper for SpreadPrefixKeyMapper
source§fn to_db_node_key(node_id: &NodeId) -> DbNodeKey
fn to_db_node_key(node_id: &NodeId) -> DbNodeKey
Converts the given Node ID to the database Node key.
source§fn from_db_node_key(db_node_key: &DbNodeKey) -> NodeId
fn from_db_node_key(db_node_key: &DbNodeKey) -> NodeId
Converts the database Node key back to ReNode ID.
source§fn to_db_partition_num(partition_num: PartitionNumber) -> DbPartitionNum
fn to_db_partition_num(partition_num: PartitionNumber) -> DbPartitionNum
Converts the given Partition number to the database Partition number.
source§fn from_db_partition_num(db_partition_num: DbPartitionNum) -> PartitionNumber
fn from_db_partition_num(db_partition_num: DbPartitionNum) -> PartitionNumber
Converts the database Partition number back to a Partition number.
fn field_to_db_sort_key(fields_key: &FieldKey) -> DbSortKey
fn field_from_db_sort_key(db_sort_key: &DbSortKey) -> FieldKey
fn map_to_db_sort_key(map_key: &MapKey) -> DbSortKey
fn map_from_db_sort_key(db_sort_key: &DbSortKey) -> MapKey
fn sorted_to_db_sort_key(sorted_key: &SortedKey) -> DbSortKey
fn sorted_from_db_sort_key(db_sort_key: &DbSortKey) -> SortedKey
source§fn to_db_partition_key(
node_id: &NodeId,
partition_num: PartitionNumber
) -> DbPartitionKey
fn to_db_partition_key( node_id: &NodeId, partition_num: PartitionNumber ) -> DbPartitionKey
Converts the given Node ID and Partition number to the database partition’s key.
source§fn from_db_partition_key(
partition_key: &DbPartitionKey
) -> (NodeId, PartitionNumber)
fn from_db_partition_key( partition_key: &DbPartitionKey ) -> (NodeId, PartitionNumber)
Converts database partition’s key back to ReNode ID and Partition number.
source§fn to_db_sort_key(key: &SubstateKey) -> DbSortKey
fn to_db_sort_key(key: &SubstateKey) -> DbSortKey
Converts the given
SubstateKey
to the database’s sort key.
This is a convenience method, which simply unwraps the SubstateKey
and maps any specific
type found inside (see *_to_db_sort_key()
family).source§fn from_db_sort_key<K: SubstateKeyContent + 'static>(
db_sort_key: &DbSortKey
) -> SubstateKey
fn from_db_sort_key<K: SubstateKeyContent + 'static>( db_sort_key: &DbSortKey ) -> SubstateKey
Converts the given database’s sort key to a
SubstateKey
.
This is a convenience method, which simply wraps the type-specific result of an appropriate
*_from_db_sort_key()
method into a SubstateKey
.Auto Trait Implementations§
impl Freeze for SpreadPrefixKeyMapper
impl RefUnwindSafe for SpreadPrefixKeyMapper
impl Send for SpreadPrefixKeyMapper
impl Sync for SpreadPrefixKeyMapper
impl Unpin for SpreadPrefixKeyMapper
impl UnwindSafe for SpreadPrefixKeyMapper
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more