ComparisonCondensation vs. database systems

Condensation vs. database systems add graphs from presentation slides

Data is often stored in a database. Usually used on top of file systems, database systems provide a higher level of abstraction as compared to plain files. They take care of data serialization, and keep indices.

In Condensation, a higher abstraction layer is provided by documents.

Immutable vs. mutable

Database systems are mutable data systems, i.e. records and values can be modified in-place. Mutable data is simple and straightforward to use, but more difficult to synchronize, replicate, and distribute.

Condensation is an immutable storage system. Once a piece of data is written, it cannot be modified any more. Any change results in a new version of the data. Old versions are garbage collected when they are not needed any more. This allows for simple synchronization, replication, and distribution.

Conflict-free merging vs. locking

Database systems use locking (in time or space) to execute transactions. On centralized systems, locking requires careful design to work correctly and efficiently. On distributed systems, locking is difficult, and imposes a lot of constraints.

Condensation does not use locking, but allows multiple versions of the data to coexist. Different versions can be merged at any time.

Distributed vs. centralized

Classic database systems are centralized. Even if a database is running on multiple CPUs or servers, it provides a consistent state of the data to all clients. Clients store all their data in the central database.

Condensation is distributed. Every user stores its own data. If the network is down, users may see and edit different versions of some shared data, which will get synchronized as soon as the network is back up.

Client-centric vs. server-centric

In a database system, the bulk of the work is done by the server. Clients merely send queries for execution to the server. As a consequence, the server has access to all data.

In Condensation, the bulk of the work is done by the clients. Any processing step, including indexing, querying, serializing and encrypting the data, is carried out by the client. The server merely stores encrypted pieces of data.


Condensation Database (typical)
Server-client protocol get object, put object, list, add, remove query language (e.g. SQL) or CRUD functions
Mutability immutable mutable
Main data structure object tree table (collection) with tuples (rows, records, documents), relational
Data serialization managed by the client managed by the server
Indices managed by the client managed by the server
Distributed yes, by design no
Transactions inherent, through atomic box additions; executed by the client good support, but complex; executed by the server
Replication (one-way) inherent, efficient easy; limited efficiency
Synchronization (two-way) fairly easy difficult
Versioning inherent, easy difficult