MckoiDDB Network Documentation
This document covers the network level architecture of MckoiDDB and the individual software elements needed to set up and administer a functioning networked storage system in MckoiDDB.
Overview
MckoiDDB is a distributed storage system, which means MckoiDDB will manage the storage resources available in a network of computers and provide a standard API (the MckoiDDB Client API) for accessing data across the networked resources. Distributed storage systems aim to address the following important issues in data management and processing;
- Resource Scaling - Distributed storage systems must be able to easily adapt to a changing network topology. Adding and removing machine resources should be a simple process and storage resources available to clients must scale cleanly on live changes to the network.
- Fault Tolerance - Machine faults are expected in a large network of machines, and machine faults must cause minimal disruption.
- Load Balancing - Data access patterns must be considered in distributed systems. Scalable throughput can only be achieved by spreading high load data over multiple machines.
- Batch Processing (massive parallel processing) - Distributed storage solutions often go hand in hand with parallel processing capabilities that use the compute resources of the network to perform tasks on the stored data.
To manage the resources available in a network and provide access to the data store by MckoiDDB clients, an application service is installed on each machine in the network and a simple administration interface is provided to manage the network. This documentation is split into a section that describes the unit of storage in MckoiDDB, a section on the roles assignable to machines in a MckoiDDB network installation, and a section on the details of the administration interface.
The unit of storage in MckoiDDB
All MckoiDDB data structures are contained in a unit of storage called a 'Block'. Blocks are simply structured data objects that can store data and structural metadata elements of information in a database. MckoiDDB stores each Block as a file in the file system of a device in the network. A Block is usually copied multiple times (typically three times) over different devices for fault tolerance and load balancing reasons.
The diagram below demonstrates a set of four blocks stored over a distributed network of five devices, each block replicated three times;
![]() |
When the MckoiDDB application service is installed on a machine, a resource directory in the local file system must be assigned. The resource directory is used to contain the Block files for that network device. Each Block file is named by its unique numerical value.
{Reasons why we store blocks like this - gives a client multiple options for places where to fetch some piece of data so distributes load, and provides fault tolerance if a device dies, but means updates must be replicated over multiple devices. }
The MckoiDDB machine roles
Each machine in a MckoiDDB network runs a service application that performs a role of the distributed system. There are three roles that can be assigned to a machine installation, described below;
- Block Server Role - A Block Server is a container of data in the distributed system. The majority of machines in a MckoiDDB network will be assigned the role of a block server service. A block server acts as a container of data in the storage resources of the distributed system.
- Manager Server Role - A Manager Server maintains block location knowledge and machine status information in the network. The manager server resolves queries such as 'on which block server will I find block n '. Additionally, a manager server maintains current status information about machines in the network and is notified of any failures. Status information is provided for access to clients.
- Root Server Role - A Root Server maintains historical state information about states of structured database information (meta-data). The Root Server resolves queries such as 'what is the current snapshot state of database n ', or 'what was the snapshot state of database n last week.' A Root Server is necessary for transactional operations and queries. Every update to the state of a database must be moderated through a root server to ensure consistency.
An operational MckoiDDB distributed network must have three or more Block Servers, one Manager Server and one Root Server. It is currently not possible to assign multiple Manager and Root server roles, however the Manager and Root server roles have been designed so that the data they manage is easily cached, and the most frequently used functions are very simple operations. This enables high throughput of the operations on the machines assigned these roles. A future goal of MckoiDDB is to provide replication of the Root and Manager server roles to address fault tolerant requirements. It is recommended the machines assigned to the Manager and Root server roles are high quality server machines with a large amount of RAM.
The administrator tool allows a machine to be assigned multiple roles (for example, a machine can be assigned as both a Block Server and Root Server), but for matters of fail safety it is recommended each physical device is assigned a single role only.
Setting up a MckoiDDB installation
The first step to setting up a MckoiDDB installation is to install and run the application service on each machine in the network you wish to be part of the distributed system.
(TODO: The command line service installation)
If you do not have a network, you may wish to run a test installation on your local machine.
(TODO: The command line test installation)
Once the application services are running on the machines in your network, you must next run the administration service. The administration tool provides a simple web based interface for managing the resources of the network. The administration service should be run on any machine that has access to the network. To start the administration tool, use the following command;
(TODO: The command line admin start fun)
Once the tool is running you can point your web browser to the address and port of the administration server.
The following is a walk-through of using the administration tool to setup a simple test network which has eight instances of the MckoiDDB service running on ports 3000 through 3007 of a machine with an IP address of 192.168.1.102.
Step 1: Specify the machines in the network
On first going to the administration page you should see a screen similar to the following;
![]() |
The page asks you to enter the location of all machines in the network that you wish to be part of the distributed network and are running the MckoiDDB service. This information is necessary for telling the administration tool what machines it must administer. Once the location of all the services have been entered, click the 'Add Servers' button and the machines being added are confirmed.
Step 2: Assign roles to the machines
Once all the machines are in the administration tool, click on the 'Network Status' link. The Network Status page displays the current status of all machines in the network and allows the administrator to assign a role to a machine. The first time going to this screen will look as follows;
![]() |
Note that the administration tool notifies that there are problems with the role assignments - there are no Block Servers assigned, and no Manager or Root Server. In this walk through, we will assign the MckoiDDB services on port 3000 through 3006 as Block Servers, and the MckoiDDB service on port 3007 as both a Manager and Root server. To make these assignments, the Block Servers are highlighted and the Manager and Root Server is selected from the pull-down options, as show in the following screenshot;
![]() |
Before making the changes, the administration tool will display the operations needed to make the assignments to the network, and allow the administrator to confirm the changes. The following screenshot shows the page after 'Save Changes' is clicked;
![]() |
If the changes look correct, click 'Make These Changes', otherwise the administrator can go to the previous page and set the assignments again.
After the changes are made the administration tool returns to the Network Status page. The following screenshot shows the completed role assignments.
![]() |
(Describe adding/removing machines from the network)
(Describe the network layer which deals with message passing, data distribution policies, and client API services).






