Noms doesn't manage its own storage - it relies on an underlying key/value store that must provide strongly consistent reads for at least one key. In other words, we delegate most of the hard part to somebody else.
With that all said...
Currently our intent is that:
- Transactions that read and write from a single dataset have strong serializability
- Transactions that read from multiple datasets and write to a single dataset have snapshot isolation
- Transactions that write to multiple datasets aren't possible
In the future, we will probably allow additional configuration, such that, e.g., one could choose snapshot isolation within a dataset for additional concurrency, or strong serializability for transactions that span datasets.