I guess we must consider what can go in an immutable storage and what must not.
I guess we must consider what can go in an immutable storage and what must not.
To achieve "client does not need to trust the database engine", it would need to be possible for the client to independently walk the history of the database and verify that neither its mutations nor its order has been tampered with. For that, the actual data needs to somehow be taken into account in the signature, commit hash, whatever.
So when you logically delete data, how are you _not_ breaking that hash chain? The original data that produced a signature/hash is no longer available, and therefore not verifiable anymore. This means that the relevant commit cannot be trusted, and therefore neither can anything that comes before it.
Or are you just trusting that any 'redacted' commit is valid without actually verifying its hash? In that case you'd be compromising the trustless nature, because the database engine could autonomously decide to redact a commit.
Generally HW is the main factor with performance, then quality of coding and functionality that exists. For example in MS SQL BulkInsert is fastest ie importing from a txt/csv file then batch inserts then single record inserts.
Now the next factor is how many records need to be inserted?
Companies like Experian have been using a custom ISAM (dbase/clipper type) database where Mon-Sat users can read the data and all data is updated on Sunday.
It was the only way to serve a country wide levels of users with 90's HW.
It also meant the speed gains were found by doing stuff in RAM then writing out data in a serial manner to disk.
Things havent changed that much in 30 years, RDBMS systems are just another layer between HW and the end users app!