  The value of graph-based big data can be unlocked by exploring the topology
and metrics of the networks they represent, and the computational approaches to
this exploration take on many forms. The use-case of performing global
computations over a graph, it is first ingested into a graph processing system
from one of many digital representations. Extracting information from graphs
involves processing all their elements globally, and can be done with
single-machine systems (with varying approaches to hardware usage), distributed
systems (either homogeneous or heterogeneous groups of machines) and systems
dedicated to high-performance computing (HPC).
  We provide an overview of different aspects of the graph processing landscape
and describe classes of systems based on a set of dimensions we detail. The
dimensions we detail encompass paradigms to express graph processing, different
types of systems to use, coordination and communication models in distributed
graph processing, partitioning techniques and different definitions related to
the potential for a graph to be updated. This survey is aimed at both the
experienced software engineer or researcher as well as the newcomer looking for
an understanding of the landscape of solutions (and their limitations) for
graph processing.
