The write once store provides a transaction based updateable persistent store that maintains all previous states.
Similarly to the read-write store, the design aim of the write-once store is to provide a lightweight but scalable file-based persistence mechanism. It can be used effectively to store either a small number of small objects or many millions of objects of various sizes totalling many terrabytes of storage. It is most suited to applications where previous states should be readily accessible.
This novel store offers functionality that may radically alter the design of systems able to take advantage of its facilities.
As in the Read-Write Store the first four bytes are significant, but since there is no reallocation required everything is much simpler. The store header indicates where the next free allocation can be made and where the root data can be found. This indirection is necessary to handle transaction rollback and to cope with system failures.
The store appends all data updates to the end of the file. The addresses are returned as 32 bit values, but the physical address is expanded by the minimum allocation block - by default 64 bytes, but this is configurable when the store is first created. So a default store will allocate a minimum of 64 bytes and can address 64 * 2000MB = 128GB. If the minimum allocation block was configured to be 512 bytes, then the store could access 512 * 2000MB = 1TB. But, it would of course store smaller data elements less efficiently.