Memgraph

Memgraph is a native fully distributed in-memory graph database built to handle real-time use-cases at enterprise scale. It supports strongly-consistent ACID transactions, and uses the standardized openCypher query language. The company has also developed various algorithms that are shipped with the database, such as breadth first search and weighted shortest path. Memgraph is available on-premises or in-cloud, and it is offered in either a single node or distributed version.

History

Memgraph is a graph database start-up that was founded in 2016 by Dominik Tomicevic and Marko Budiselic.

Foreign Keys

Not Supported

Unlike in other DBMSs, relationships are of equal importance in the graph data model as the data itself. Thus foreign keys are not required to infer connections between entities.

Logging

Logical Logging

Memgraph uses write-ahead logging (WAL). (Unsure about logging scheme for now.)

Parallel Execution

Intra-Operator (Horizontal)

Memgraph features a distributed query planning and execution engine. Each plan is divided into two: a plan that will be executed on the machine where the query is received and a plan that will be executed on the other machines. Nodes are allowed to exchange data during the execution process.

Concurrency Control

Multi-version Concurrency Control (MVCC)

Memgraph features full ACID-compliant transactions and strong consistency.

Isolation Levels

Snapshot Isolation

Memgraph’s implementation of MVCC provides snapshot isolation level.

Data Model

Graph

Memgraph's underlying data model is the property graph model. A property graph consists of nodes and relationships (or vertices and edges). Nodes can hold any number of properties (key-value pairs) and can be assigned labels that represent their roles within a particular domain. For example, a node with a label "person" could have properties such as "name" or "age." Relationships are directed connections between two nodes and contain properties (just like nodes) as well as a single edge type. For example, a relationship in a graph of people can have the edge type "friend of," and a property "since."

Indexes

Skip List

The central part of Memgraph's index data structure is a highly-concurrent skip list.

Checkpoints

Consistent

Snapshots are taken periodically during the entire runtime of Memgraph. When a snapshot is triggered, the whole data storage is written to disk. (Unsure about the kind of checkpoint for now.)

Memgraph Logo
Website

https://memgraph.com

Tech Docs

https://docs.memgraph.com

Developer

Dominik Tomicevic and Marko Budiselic

Country of Origin

GB

Start Year

2016

Project Type

Commercial

Written in

C, C++

Supported languages

C, C#, C++, Elixir, Go, Haskell, Java, JavaScript, PHP, Python, Ruby, Scala

Compatible With

Neo4j

Operating Systems

Linux

Licenses

Proprietary