I'm looking for a database system with fairly specific specs. I've looked most of the major relational databases and NoSQL products out there and did not find one that even remotely satisfied my requirements.
At this point I'm starting to doubt such a product exists, but thought I would ask the experts before attempting an implementation:
Below are the properties of the software system
that I'm looking for:
Key/value store
Multi-master with writes everywhere, even during partitions (AP)
A full transaction log is available showing what keys were modified, when, and by whom
When reading, the last transaction that touched the record will be supplied to the client, and fed back when the client tries to write
If a record is being written with the client not having the latest transaction for that record, the record does not get updated and a conflict is flagged. (Could happen if client waited too long to write after reading, or if the masters are out of sync due to network latency/partition)
The API lets you ask what keys are currently conflicted, see various versions, and resolve manually
Transactions can be listened to like events
While values in general are blobs, a secondary key facility is provided for some special format of values (say Json)
Primary and Secondary keys can be accessed as alphabetical ranges
Open source
Not looking for anything blazing fast. Any reasonable performance will do
No need for fancy key sharding mechanisms, dataset will fit on a single host
Question:
Which software system (if any) satisfies the above requirements?