Overview

Data storage, in its various forms, is one of the most basic concepts in computer science. From volatile memory, used by every single modern computing device to operate, to non-volatile memory, used for long term data storage, memory is one of the most important parts of any computer.

As such, any programmer will tell you that writing code consists, in large part, of considering the correct ways to store data, thus allowing for efficient manipulation of it. Such methods of organized data storage are usually referred to as data structures. One of those structures, which countless algorithms rely on, is the hash table.

When it comes to actually storing data in a computer's memory, every programming language will provide many useful options. For instance, every major language will already have some implementation for a hash table, such that using it in one's own code requires but a few lines of code at most.

Nevertheless, as technology advances, applications require more and more storage space to cope with increasing dataset sizes. This presents a problem, because processing and storing such large data is infeasible for single computer systems. As such, the concept of distributed systems emerges, which aim to pool the processing and storage capacity of multiple systems to achieve this.

Despite the obvious advantages of this approach, attempting this creates a new set of challenges. How can multiple systems work together to efficiently handle data, such that storage, processing and retrieval are all performed quickly and seamlessly, and there is an actual advantage to this over the single system variant?

An answer to (some of) those questions is given by the Chord protocol. Chord is an algorithm for a peer-to-peer, distributed hash table. It describes the method by which data should be stored and retrieved in a system consisting of multiple computers (nodes). It is called a DHT (distributed hash table) because it stores data in key-value pairs, similar to how a regular hash table would do this in a single computer's memory.

E-Chord is an implementation of this protocol. It performs the regular operations described by the protocol, while augmenting it with some additional features.