ACID properties

I tried to make Vlermv match my expectations of how reading and writing files should work, so it is reasonably trustworthy when it comes to writing individual files. Here’s how it fares in terms of database guarantees.

Atomicity
Writes are made to a temporary file that gets renamed.
Consistency
There isn’t anything special to handle race conditions, so if two threads are writing to the same file, the later one will win.
Isolation
Vlermv has isolation within files/documents/values but not across. You may implement your own multi-file transactions.
Durability
All data are saved to disk right away.

If you require consistency across files or transactions or if you require correctness in the updating of data within files, it is important that you be aware of the above properties of vlermv. If you cannot keep this in mind or require much stronger guarantees, you will probably be better served by a different software.

Locks

Consistency and isolation could be improved with locks, which could be implemented inside of the vlermv module. This hasn’t been an issue for me because I have been able to design my directory structure such that the race condition scenarios never occur.

However they are implemented, locks would make vlermv at least somewhat slower; if I implement some form of transactions in vlermv, I will probably make them something that you can turn on or off.

If you really need this, I suggest that you wrap vlermv in something that uses lock files to ensure isolated transactions.