You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue will research and discuss if BSC can be migrated to a transactional database, and have persistent memory to solve abnormal scenarios such as panic, force quit, and power shutdown, etc.
If BSC crashes in between writes, the database may be left in an inconsistent state. Especially for FastNode(only snap state), it is even more unacceptable. Usually the error of bad block will be displayed.
Many other similar data inconsistencies have been found, and the only solution is resync.
Transactional Database
Here are some discussions, ethereum/go-ethereum#22143, ethereum/go-ethereum#15717. At the same time, I noticed that prysm has used BoltDB as the underlying storage. An important reason is that boltDB provides the strongest guarantees against data loss.
Erigon uses MDBX as its database, it also supports transactions too.
What needs to be further investigated is, which alternative database is better, how is the performance, especially the higher TPS of BSC than Eth, and how high is the migration cost?
Here are some alternative Databases: LMDB, BoltDB, BadgerDB, MDBX, etc.
Persistent Memory
If BSC supports persistent memory, there is no need to worry about memory loss, especially in more common scenarios such as force quit and panic.
In particular, caches such as snap journals in BSC are relatively important data that need to be guaranteed persistently. Is it possible to introduce a WAL mechanism to ensure the validity of important memory data?
Or can put important cache data into Redis? Further research is needed, and migration costs, performance, and other issues also need to be considered.
Welcome to comment here~
The text was updated successfully, but these errors were encountered:
This issue will research and discuss if BSC can be migrated to a transactional database, and have persistent memory to solve abnormal scenarios such as panic, force quit, and power shutdown, etc.
If BSC crashes in between writes, the database may be left in an inconsistent state. Especially for
FastNode
(only snap state), it is even more unacceptable. Usually the error ofbad block
will be displayed.Many other similar data inconsistencies have been found, and the only solution is
resync
.Transactional Database
Here are some discussions, ethereum/go-ethereum#22143, ethereum/go-ethereum#15717. At the same time, I noticed that
prysm
has used BoltDB as the underlying storage. An important reason is that boltDB provides the strongest guarantees against data loss.Erigon uses MDBX as its database, it also supports transactions too.
What needs to be further investigated is, which alternative database is better, how is the performance, especially the higher TPS of BSC than Eth, and how high is the migration cost?
Here are some alternative Databases: LMDB, BoltDB, BadgerDB, MDBX, etc.
Persistent Memory
If BSC supports persistent memory, there is no need to worry about memory loss, especially in more common scenarios such as force quit and panic.
In particular, caches such as snap journals in BSC are relatively important data that need to be guaranteed persistently. Is it possible to introduce a WAL mechanism to ensure the validity of important memory data?
Or can put important cache data into
Redis
? Further research is needed, and migration costs, performance, and other issues also need to be considered.Welcome to comment here~
The text was updated successfully, but these errors were encountered: