Thats exactly how core has been done for years.
Though we don't consider it acceptable to have 32bit and 64 bit hosts fork with respect to each other, and so prefer to not take risks there!
This cannot be right. The Satoshi Bitcoin client always stored blockchain as the plain flat files. The database engines were used only for indexing into those files. The recent LevelDB-based backend worsened the situation by explicitly storing (also in plain files) the some precomputed data to undo the transaction confirmations in case of a reorganization.
The
proper way to modularize the storage layer
s is to completely encapsulate all data and functions to access blockchain, without the crossing the abstraction layers inside the upper-level code.
I stress that "storage layers" need to be plural. The mempool is also a storage layer and also needs to be properly abstracted. In a
proper,
modular implementation the migration of transactions between those storage layers (for unconfirmed and confirmed transactions) will ideally require setting one field in the transaction attributes, e.g.
bool confirmed;.