4.1.1 Design of the Graph Server (PGX)

The design of the graph server (PGX) is based on a Server-Client usage model. See Usage Modes of the Graph Server (PGX) for more details on the different graph server (PGX) execution modes.

The following figure shows the graph server (PGX) design:

Figure 4-1 Graph Server (PGX) Design

Description of Figure 4-1 follows
Description of "Figure 4-1 Graph Server (PGX) Design"

The core concepts of the graph server (PGX) design are as follows:

  • Multiple graph clients can connect to the graph server at the same time.
  • Each client request is processed by the graph server asynchronously. The client requests are queued up first and processed later, when resources are available. The client can poll the server to check if a request has been finished.
  • Internally, the server maintains its own engine (thread pools) for running parallel graph algorithms and queries. The engine tries to process each analytics request concurrently with as many threads as possible.

Isolation Between Concurrent Clients

The graph server (PGX) supports data isolation between concurrent clients. Each client has its own private workspace, called session. Sessions are isolated from each other. Each client can load a graph instance into its own session, independently from other clients.

If multiple clients load the same graph instance the graph server can share one graph instance between multiple clients under the hood. Each client can add additional vertex or edge properties to a loaded graph in its own session. Such properties are transient properties, private to each session and not visible to another session as shown in the following figure:

Figure 4-2 Session and Transient Properties

Description of Figure 4-2 follows
Description of "Figure 4-2 Session and Transient Properties"

Similarly, if a client creates a mutated version of the loaded graph, the graph server will create a private graph instance for that client.