CBFS® Storage

Virtual file system engine that can be embedded into your software

cbfsstorage

CBFS Storage is a secure vault for the information your applications create, process, or archive.

  • Better Than a Database
    Unlike databases, CBFS Storage offers a container with a hierarchical structure, versioning of data, and on-the-fly encryption and compression. At the same time, CBFS Storage lets you add tags of various types to each data stream (file) and use SQL-like query language to search data by tags.
  • Fast and Easy File Compression
    Similar to ZIP files, CBFS Storage compresses the data and stores everything in one container. But unlike ZIP format, CBFS Storage was designed for easy rewriting of files in the container. Write and delete operations are fast and don't require rewriting of the whole container file.
  • Virtual File System That Behaves Like a Physical Disk
    As a virtual file system, CBFS Storage stores files in the container. Much like a disk, the CBFS Storage container can have a drive letter (on Windows) or be mounted to a folder on existing disk (Windows, Linux, MacOS, BSD), thus providing seamless integration into the disk subsystem of the OS. The user won't know that he's working with something that is not a physical storage.

Deal with Multiple Files

Current applications tend to minimize the number of files used because file systems with large cluster size make this impractical and hard to manage. CBFS Storage solves this problem by supporting page sizes starting from 512 bytes. Keeping all data in one file lowers fragmentation on physical drive and speeds up file operation. The single file can be easily copied/moved, deleted, etc. thus simplifying maintenance (including data recovery). Game developers, for example, find CBFS Storage especially useful. Modern games include myriads of files, which must be accessed with the fastest possible speed.

Make Data Integrity Real with Journaling and Protecting Structure

CBFS Storage helps maintain data integrity in two ways: journaling and hiding internal structure.

CBFS Storage has optional journaling support. When data is written, information about the operation is written to special log file. If the file write operation is interrupted, CBFS Storage will restore integrity of the storage file.

Users can be a danger to internal data of the application. One might accidentally delete the necessary file and this will lead to the necessity to re-install the whole application (or its part). To avoid such a situation, CBFS Storage hides the internal structure of the data from user.

Increase Data Access Speed

If your application uses many files (with data, code, or multimedia), it performs many requests to underlying file system. All such requests take time due to specifics of file system driver implementation. CBFS Storage reduces the time needed to access the data because the CBFS Storage engine works in user mode and much fewer calls to file system driver are involved.

Create Compound Documents

It is possible your application’s document format consists of several independent parts or requires some embedded data. Examples are music files (which include actual music, song lyrics, and information about songs) or text documents with embedded images. The structure of CBFS Storage lets you keep all such data in one file so the user can copy the document as one file. You can even keep revisions of the document in the same file. With the usual approach, adding revisions would require changing the document format. With CBFS Storage you just save another file into storage.

Provide Unbreakable Data Security

Most data formats of modern applications, such as Microsoft Office, do not provide enough security for their creators. Passwords used by such data formats can be found out easily using special tools. If you need real security and don't want to deal with encryption yourself, you can make use of per-stream and whole-storage encryption built into CBFS Storage.

Details

  • Transparent strong encryption on both per-stream basis and encryption of the whole storage. Encryption is done using AES and SHA (HMAC) algorithms with a 256-bit key and can be applied even to single stream within a file. The key is derived from the password by adding a salt to prevent attacks. User-defined encryption is supported.
  • Transparent compression on per-stream basis. Encryption and compression can be applied to a stream at the same time. By default, ZLib is used and you can plug in your own compression if needed.
  • Journaling support (optional). This feature guarantees, that if write operation was interrupted, data integrity is not compromised.
  • Asynchronous notifications
  • Single-file container for your data
  • Whole-storage encryption of your data
  • Per-file encryption of files in container
  • Per-file compression of files in container
  • Custom encryption and compression via callbacks
  • Tags, Storage metadata, and custom attributes
  • Alternate streams
  • Custom backend storage for container (via callbacks)
  • SQL-like search engine
  • Source-code is available (as a separate option during license purchase)
  • Support for stream size of up to 128 Terabytes gives you virtually unlimited possibilities for storing large amounts of data on physical media.
  • Maximum storage size of 256 Terabytes. Please contact us if this is not enough for your task.
  • Support for multiple alternate data streams for files. Streams can be found in NTFS and macOS file systems. They let you keep additional information of data revisions within the same file.
  • Support for Symbolic Links.
  • Page (cluster) sizes from 256b to 64Kb are supported.
  • Very long file names and hierarchies of any depth are supported.
  • File and directory names are stored in Unicode (UTF-16).
  • Support for fixed-sized and resizable storages.
  • Support for both standard and application-defined file attributes.
  • Custom tags can be read and written. Tags are small chunks of information (not larger than the page size), associated with the directory, file, or individual stream. Tags can be identified by numeric ID or by name.
  • Storage metadata lets you save the information about the storage itself.
  • Support for all file/directory operations including wildcard-based search (searching for file names that match certain mask).
  • Check-and-repair and compact operations are supported for data recovery and performance improvement.
  • Possibility to keep the storage not only on physical disk drive, but in memory, database, or anywhere else you want.
  • Possibility to work with as many storages at the same time as you need (limited by system resources).
  • Thread-safety. This means that you can perform several operations on different files in storage in different threads and storage correctly handles all operations.

Windows

  • Windows XP, Vista, 7, 8, 8.1, 10
  • Windows Server 2008, 2008 R2, 2012, 2012 R2

Microsoft .NET Framework

  • 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.6x

Mobile

  • Android 2.2+
  • iOS 5.1.1+

Linux/Unix

  • Kernel version 2.6.x+
  • FreeBSD

.NET API

  • Visual Studio 2008, 2010, 2012, 2013, 2015
  • Delphi Prism

C++ API

  • Visual Studio 2008, 2010, 2012, 2013, 2015
  • XCode on macOS
  • gcc on all supported platforms

ActiveX API (OS Edition)

  • Visual Studio 2008, 2010, 2012, 2013, 2015

DLL

  • Any development tool that supports import of exported DLL functions

Download a Free Trial

CBFS Storage downloads are coming soon.

Request a Quote

Please tell us about your project and interests and we will respond as quickly as we can.

Request a Quote