RavenFS refers to the Raven DB File System.
As a summary from the introduction chapter at the official RavenDB documentation, RavenFS provides:
- A distributed architecture to store large volumes of binary data, with the possibility of employing synchronized nodes,
- Association of files with metadata, which helps searching for files by their attributes, such as name, size, of date of last modification, along with any custom metadata. This enables RavenFS to index files by their attributes, just like RavenDB does,
- A .NET Client API for convenient data manipulation and retrieval,
- Management Studio as a graphical user interface for management purposes,
In RavenFS, a file is handled differently than it would normally be in a regular file system. The concept of directories only exists as a part of the path, that is, the name of any file is actually a full path, such as /user-photos/user123/primary.png
. Because this property is indexed, it is possible to search for files in a specified 'location'. Also, as noted here, this implies that a file move is actually a rename operation.
RavenFS also uses a mechanism to save storage space. This is implied by the way file contents are stored. In RavenFS, the entirety of a file is a sequence of bytes, and, consequently, a sequence of pages. When RavenFS finds that a page of some file is the exact same byte sequence as some other already existing page then it will not create a duplicate but instead use that page's address as the successor of the previous page of the file. This is explained in the official documentation under the 'Pages' section.