DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

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.[03]

Country of Origin
GB
Start Year
2016 [12]
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 System
Linux
License
Proprietary

Database Entry

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.[03]

History[01]


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

Checkpoints[04]


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.)

Concurrency Control[05]


Memgraph features full ACID-compliant transactions and strong consistency.

Data Model[01]


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."

Foreign Keys[06]


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

Indexes[07]


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

Isolation Levels[01]


Memgraph’s implementation of MVCC provides snapshot isolation level.

Logging[04]


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

Parallel Execution[01]


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.

Query Compilation


Query Execution[08]


The execution of the query proceeds iteratively (generating one entry of the result set at a time), with data flowing from the bottom-most logical operator(s) (the start of the pipeline) to the top-most logical operator(s) (the end of the pipeline).

Query Interface[09][10]


Memgraph supports the openCypher query language developed by Neo4j. It is a declarative language for querying graph databases. openCypher is an open-source project to standardize Cypher as the query language for graph processing.

Storage Architecture[04]


Although Memgraph is an in-memory database by default, it offers an option to store a certain amount of data on disk. The user can pass a list of properties they wish to keep stored on disk via the command line. It is recommended to use this feature on large, cold properties, i.e., properties that are rarely accessed. The user cannot change the storage location of a property while Memgraph is running. The user can, however, reload their database from snapshot and provide a different list of properties to store on disk.

Storage Model[04]


Since Memgraph is a graph DBMS, data is stored in the form of graph elements: nodes and edges. Each graph element can contain various types of data.

Stored Procedures[11]


Although the openCypher initiative stems from the Neo4j's Cypher query language, Memgraph's openCypher implementation does not support certain Cypher constructs, such as stored procedures.

Views


Citations

12 sources
  1. Memgraph memgraph.com
  2. Memgraph documentation memgraph.com
  3. Frequently asked questions memgraph.com
  4. Storage memory usage memgraph.com
  5. Memgraph database memgraph.com
  6. Comparing relational to graph database - Getting Started neo4j.com
  7. Indexes memgraph.com
  8. EXPLAIN clause memgraph.com
  9. Getting started with Memgraph memgraph.com
  10. openCypher · openCypher opencypher.org
  11. Differences in Cypher implementation memgraph.com
  12. https://www.crunchbase.com/organization/memgraph#section-overview crunchbase.com
Revision #12