A lot of sync engines and CRDT tools has database-like API. It is very convenient for many users.
But I want to tell about different approach we used in Logux, where the core part of API is a log, not a state. It allows us to create a framework where you can build very different sync engines for different cases.