I found Martin Kleppmans book - Designing Data-Intensive Applications (http://martin.kleppmann.com/) to be a great primer.
An absolutely _fantastic_ book. It was also one of the scariest books I've read recently. Made me realize just how much I don't know (and don't know that I don't know!) about the failure modes of distributed systems.
This is a must read book even if you're not building a database :)
Can you develop a file format plus API that is ACID compliant in C?
Careful with that word ("ACID"), it's ridiculously easy to get screwed by the filesystem arbitrarily lying about things like the order of system calls: https://queue.acm.org/detail.cfm?id=2801719
The file system does not lie, it just does not provide guarantees of ordering.