Snap! Database — a diverse database system for the Snap! CMSThe Snap! C++ Content Management System makes use of a distributed database system called Prinbee.

The Prinbee system automatically duplicates the data saved in it, allowing for distribution of the data as well as automatic backup. It works within one data center, separate clusters, and large computers for backing up the data.

The database supports a JavaScript like language (see the as2js project) used for two main purposes:

  1. Verify that the data is valid for the column
  2. Generate a key used by indexes to sort rows as required by your application

The system is spread between any number of computers. Communication happens between your application and a local proxy which saves the data in journals and sends it over the network to the actual database nodes. The nodes also make use of journals along their tables.

We could have look into using different systems such as Postgres and Redis, but then we would end up with so many different systems that it becomes complicated to manage everything. Instead we want to have one system that is capable of managing all the data in any number of clusters. When you need more space, all you need to do is create new nodes, install the software, and specify the IP address of the new node in an existing node or vice versa to insert the node in the cluster. The rest is automatic.

Coverage Test Results

Access full page here.

The library has a test suite that covers 100% of the code, making it a little more certain that it does not include too many bugs. We try to run the tests each time we create a new version to ensure that it works as expected.



Snap! Websites
An Open Source CMS System in C++

Contact Us Directly