Monitor and Manager for In-memory Databases
Description
In-memory databases can offer a considerable performance increase over disc-based approaches, however they have to be synchronised with persistent storage when an instance is stopped or restarted. This becomes even more complicated for database clusters, in which case in addition to repopulating multiple nodes it is important to have a way of monitoring the status of all of them. Appropriate synchronisation mechanisms are typically a part of the system in case of dedicated in-memory databases but are not provided in case of general-purpose databases, such as MongoDB, adapted for in-memory operation.
The goal of this project is to develop an application in C++ capable of monitoring instances of a database and repopulating them when needed. It should meet the following criteria:
- written in C++
- feature both a GUI and a command-line interface
- communicate with cluster nodes over SSH
- not tied to a specific database system
- provide back-ends for, at a minimum, MongoDB and a ramdisk-based file system
- allow persistent operation and unsupervised repopulating
Goals
- meet standard PSE goals
- become familiar with cross-platform C++ GUI libraries
- learn how to develop multi-node cluster applications
- gain knowledge about interfacing with different types of database systems
Requirements
- English
- Linux (should know how to write code under this OS, although the final product should ideally be cross-platform)
- good knowledge of C++
- familiarity with client-server systems and TCP networking
- optionally, basic knowledge of JavaScript and the Node.js ecosystem
Project Supervisor
Marek Szuba (SCC Campus Nord)