AnzoGraph is a massively parallel processing (MPP) product whether you install it on a single node or many nodes in a cluster. This section describes the system architecture and parallel operations.
Though all servers in an AnzoGraph cluster store the system metadata and have the ability to perform leader operations, one server acts as the leader for the cluster. All client applications should connect to this server.
In-Memory Data Storage Architecture
To achieve MPP even on a single-node installation, AnzoGraph compresses the data and then distributes it into memory across a number of slices on each server. At installation, the system sets the number of slices to the number of cores on the server. For example, a server with 32 cores has 32 slices.
Every slice contains several blocks that store the triples.
Leader and Query Processing Architecture
When an application sends a request, the leader node dedicates a thread to process the request. All other threads remain ready for subsequent requests. The leader routes the query through parsing and planning. The planner determines the steps that the query requires, for example, whether a hash join, merge join, or an aggregation step is needed. The planner passes the final query plan to the code generator, which assembles the groups of steps into segments. The code generator then packages all of the segments for the query into a stream. The leader sends the stream to all of the nodes in the cluster and to its own slices. The nodes process the stream in parallel; each node dedicates a thread to process each segment. The nodes then return the results to the leader to send to the application.