Condensation is a novel data system – a hybrid between a database system, a file system, and the e-mail system. It offers functions to store and share data, and excels at data synchronization.
Data synchronization is essential in today's world. Sharing documents with friends, or editing them on different devices are just special forms of synchronization. And so are backup, data replication, and media streaming.
- Web apps to edit, store, and share documents
- Android / iPhone / Windows Phone apps with automatic storage and synchronization
- Social-network-like systems, or apps with a social component
- On-demand audio / video streaming
- Data replication or distribution systems
- Collaborative editing
- Distributed database systems
- Secure data sharing systems
- Backup systems
Condensation relies on conflict-free merge functions to synchronize data. Originating in semilattice theory, such functions can merge different versions of some data without user intervention. Synchronization always succeeds without conflicts, and retains transactions.
Data is stored as hash trees of immutable objects. Change detection – the basis of efficient synchronization – requires logarithmic time only, and is therefore much faster than traditional file or database systems. Data sets with millions of entries can be compared and merged swiftly. When merging trees from different devices, only changes are transmitted.
Condensation is distributed. Data can be synchronized across devices whenever they are connected. As opposed to cloud services, no central server is needed.
The actual data can be stored on anything from a raw disk partition to a cloud storage service, and accessed via POSIX file system calls, HTTP, SQL, and other protocols.
The Condensation library is trimmed to the essential functionality, and adds less than 10'000 lines of security-relevant code to your project.
Condensation libraries are available for:
- Perl/C, Linux
- Java, Android
Libraries for other platforms are under development.
Thomas Lochmatter, firstname.lastname@example.org