[Date Prev][Date Next]
Re: (ITS#8475) Feature request: MDB low durability transactions
- To: openldap-its@OpenLDAP.org
- Subject: Re: (ITS#8475) Feature request: MDB low durability transactions
- From: firstname.lastname@example.org
- Date: Sun, 07 Aug 2016 21:44:52 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
> Thanks for the replies, Hallvard and Howard!
> I was mistaken in thinking that NOMETASYNC didn't guarantee integrity.
> However, my proposal would allow fsync to be omitted entirely.
> I think my approach with three roots is better than a WAL because it
> keeps the read and write paths simpler and more uniform. It also doesn't
> force periodic fsyncs when the log wraps, or consume unbounded space. In
> fact it's very similar to the basic design of MDB.
> You're right that you'd actually need to record the page's checksum in
> the parent, rather than in the page itself. I guess this would hurt the
> branching factor.
And then it's turtles all the way down.
What you're suggesting won't work. Trust me when I say we have spent far more
time thinking about this question than you have.
The only way to guarantee integrity is with ordered writes. All SCSI devices
support this feature, but e.g. the Linux kernel does not (and neither does
SATA, and no idea about PCIe SSDs...).
Lacking a portable mechanism for ordered writes, you have two choices for
preserving integrity - append-only operation (which forces ordered writes
anyway) or at least one synchronous write somewhere.
Whenever you decide to reuse existing pages rather than operating as
append-only, you create the possibility of overwriting some required data
before it was safe to do so. Your 3-root checksum scheme *might* let you
detect that the DB is corrupted, but it *won't* let you recover to a clean
state. Given that writes occur in unpredictable order, without fsyncs there is
no way you can guarantee that anything sane is on the disk.
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/