The MongoDB storage leverages MongoDB for sharding and clustering. The repository tree is kept in one MongoDB database where each node is a separate document.
It has several particularities:
For each update (commit) of the content, a new revision is created. A revision is basically a string that consists of three elements:
- A timestamp derived from the system time of the machine it was generated on
- A counter to distinguish revisions created with the same timestamp
- The cluster node id where the revision was created
Branches are supported, which allows client to stage multiple changes and make them visible with a single merge call.
MongoDB storage adds data to a document with every modification. However, it only deletes data if a cleanup is explicitly triggered. Old data is moved when a certain threshold is met. Previous documents only contain immutable data, which means they only contain committed and merged revisions.
Data about active and inactive cluster nodes is kept in the database in order to facilitate cluster operations.
A typical AEM cluster setup with MongoDB storage: