  In a classic transactional distributed database management system (DBMS),
write transactions invariably synchronize with a coordinator before final
commitment. While enforcing serializability, this model has long been
criticized for not satisfying the applications' availability requirements. When
entering the era of Internet of Things (IoT), this problem has become more
severe, as an increasing number of applications call for the capability of
hybrid transactional and analytical processing (HTAP), where aggregation
constraints need to be enforced as part of transactions. Current systems work
around this by creating escrows, allowing occasional overshoots of constraints,
which are handled via compensating application logic.
  The WiSer DBMS targets consistency with availability, by splitting the
database commit into two steps. First, a PROMISE step that corresponds to what
humans are used to as commitment, and runs without talking to a coordinator.
Second, a SERIALIZE step, that fixes transactions' positions in the
serializable order, via a consensus procedure. We achieve this split via a
novel data representation that embeds read-sets into transaction deltas, and
serialization sequence numbers into table rows. WiSer does no sharding (all
nodes can run transactions that modify the entire database), and yet enforces
aggregation constraints. Both readwrite conflicts and aggregation constraint
violations are resolved lazily in the serialized data. WiSer also covers node
joins and departures as database tables, thus simplifying correctness and
failure handling. We present the design of WiSer as well as experiments
suggesting this approach has promise.
