Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Versioning

Thilo Planz edited this page Feb 14, 2012 · 2 revisions

Versioning

V7Files is designed to keep the complete version history of its files in its database (you can disable this feature).

This allows comparisons against older versions of the file, provides for auditing trails, and protects against accidental data loss (because deleted or overwritten files can be recovered).

In addition to that (and even when keeping the change history has been disabled), V7Files uses optimistic locking for all update operations, so that concurrent conflicting updates can be detected and prevented.

Contents and meta-data

V7Files uses the Vermongo versioning scheme to maintain the change history of all files' and folders' metadata. This means that the old versions are kept in a separate ("shadow") collection from current documents, so as to not negatively impact query performance. This shadow collection mirrors the original collection's schema and can be fully queried using normal MongoDB tools.

The file contents are stored in deduplicated and compressed form in GridFS.

History is kept per-file, not globally

Unlike, for example, SVN or Git, V7Files keeps track of the change history separately for every file.

Note that the identity of a file remains intact after renaming or moving it, so revisions for that file can be tracked as it moves around.

Clone this wiki locally