Condensation is strictly separated in a mutable and an immutable part:
- An account with its mutable boxes defines the state of a user. Account data rarely exceeds 10 kiB of storage space. Such a compact state representation is easy to manage and synchronize.
The actual data is stored as large hash table with immutable objects. Such hash tables are highly scalable, as their entries can be partitioned, cached, and mirrored.
Note that objects are inherently immutable. If an existing object is modified, its hash changes, making it a different object.
Similarly, object trees are inherently immutable. If any object of the tree is modified, the hashes of all ancestors (including the object itself) up to the root change, making it a different tree.
This separation is a very fundamental architectural choice of Condensation. Features such as efficient versioning, fast transactional synchronization, and deduplication are directly related to that.