Data Storage
StreamingFast Firehose data storage
Last updated
StreamingFast Firehose data storage
Last updated
Data and the locations where it is stored are important facets of Firehose deployment and operation.
Key Firehose data storage topics include , , , , and .
Firehose Stores are abstractions sitting on top of Object Storage.
Stores utilize the Firehose to provide support for local file systems, , , , and other Amazon S3 API compatible object storage solutions such as or .
For production deployments outside of cloud providers, StreamingFast recommends as the distributed storage instead of its compatible Amazon S3 API system.
Merged blocks files are also referred to as 100-blocks files
, and merged bundles. These terms are all used interchangeably within Firehose.
Up to one hundred blocks can be contained within a single 100-blocks file.
The 100-blocks files can include multiple versions such as a fork block or a given block number, ensuring continuity through the previous block link.
Nearly all components in Firehose rely on or utilize 100-blocks files. The bstream library consumes 100-blocks files for example.
Protocol-specific decoded block objects, like Ethereum, are what circulate amongst all processes that work with executed block data in Firehose.
Important: One-block files contain only one bstream.Block
as a serialized protocol buffer.
One-block files are consumed by the Merger
component, bundled in executed __ 100-blocks files. The one-block files are then stored to dstore
storage and consumed by most of the other Firehose processes.
Firehose primarily utilizes for serialization.
Merged blocks are binary files that use the packing format to store a series of , serialized as .
Firehose uses components that have been set with a special flag to work in catch-up mode to create merged blocks.
In Firehose configurations, merged blocks will be created by the component. The component will provide the Merger component with one-block files.
The component will also collate all of the one-block files into a single bundle of blocks.
In configurations, one-block files are transient and ensure the component gathers all visible forks from any components.