Distributed Graph Store

Wendy Chen
CPSC 426 Distributed Systems, Fall 2016

Abstract

In CPSC 426, I built a graph store service that handles various graph requests. Four iterations of the graph service were built over the semester, starting with a simple service that was extended to add guarantees such as durability, failure-atomicity, and scalibilty. Such features were only guaranteed independently of one another in each iteration. The first graph service was a local, in-memory store for an undirected graph. The graph was hosted on an http server, which clients could send http requests to. In the second iteration, the graph was made durable by storing it on a persistent disk. A log of transactions was also stored on the disk to provide failure atomicity. In the third iteration, the local in-memory graph was replicated across a chain of nodes to provide scalibility for read requests. Remote procedure calls were used for inter-node communication. In the fourth iteration, the local in-memory graph was partitioned to improve scalibility as well. A simple modulos function was used to determine which partitions to store each node on.

Links:

Home: Demo video and Abstract

First iteration: Local in-memory graph

Second iteration: Durable on-disk graph

Third iteration: Chain-replicated graph

Fourth iteration: Partitioned graph

Source code: Each graph is stored under its appropriate branch (lab1, lab2, lab3, lab4)