serialization

package
v2.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2021 License: Apache-2.0 Imports: 4 Imported by: 0

README

设计思路

因为我们在底层上分了4、5个不同的数据库,而每个数据库又有可能是KV或者SQL类型的数据库,所以如果我们每次传入的都是pb.Block对象的话,就可能在每个数据库中都要去做Block、Tx的序列化,这样重复的序列化导致性能下降,所以我们需要设计一个BlockWithSerializedInfo,传入的是这个对象,而这个对象中如果要序列化的话,只序列化一次,另一个数据库中要使用时就不用重复的序列化了。

BlockWithSerializedInfo对象的设计

构造的时候基于BlockWithRWSet,然后对外的公共属性就行Block和[]RWSet,剩下的都应该通过方法来提供。实际情况中,就算每个数据库都使用同样的KV数据库,其逻辑上其实并没有出现需要重复序列化的情景,所以这个设计算是一个为未来扩展而做的设计,当前看来并没有什么优势。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeserializeBlock

func DeserializeBlock(serializedBlock []byte) (*storePb.BlockWithRWSet, error)

DeserializeBlock returns a deserialized block for given serialized bytes

Types

type BlockWithSerializedInfo

type BlockWithSerializedInfo struct {
	Block                    *commonPb.Block
	Meta                     *storePb.SerializedBlock //Block without Txs
	SerializedMeta           []byte
	Txs                      []*commonPb.Transaction
	SerializedTxs            [][]byte
	TxRWSets                 []*commonPb.TxRWSet
	SerializedTxRWSets       [][]byte
	ContractEvents           []*commonPb.ContractEvent
	SerializedContractEvents [][]byte
}

BlockWithSerializedInfo contains block,txs and corresponding serialized data

func SerializeBlock

func SerializeBlock(blockWithRWSet *storePb.BlockWithRWSet) ([]byte, *BlockWithSerializedInfo, error)

SerializeBlock serialized a BlockWithRWSet and return serialized data which combined as a BlockWithSerializedInfo

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL