Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm working on storing data in a log-structure persistently without the overhead of a transaction log in my spare time (Open Source[1]). Instead, an UberPage which guarantees consistency is atomically swapped during a transaction commit (inspired by ZFS). It should be used for data, which doesn't fit into main memory. Revisions are always appended, whereas almost only changed data plus some metadata is written to a file during commits.

You can easily retain the full version history in a log structure, but you need fast random access (option of parallel "real" access would be best) on a flash drive -- PCIe SSDs for instance.

Basically in order to balance read and write performance only a fraction of each database page (with changed records) needs to be written sequentially in batches to the end of a file.

Each revision is indexed under a RevisionRootPage and these are indexed under the UberPage with keyed tries.

This opens up a lot of opportunities for analysing data and its history.

[1] https://github.com/sirixdb/sirix



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: