Memgraph is a streaming graph application platform that helps you wrangle your streaming data, build sophisticated models that you can query in real-time, and develop graph applications.

Overview


Build modern, graph-based applications on top of your streaming data in minutes.

license license license

build

📋 Description

Memgraph is a streaming graph application platform that helps you wrangle your streaming data, build sophisticated models that you can query in real-time, and develop graph applications.

Memgraph directly connects to your streaming infrastructure. You can ingest data from sources like Kafka, SQL, or plain CSV files. Memgraph provides a standard interface to query your data with Cypher, a widely-used and declarative query language that is easy to write, understand and optimize for performance. This is achieved by using the property graph data model, which stores data in terms of objects, their attributes, and the relationships that connect them. This is a natural and effective way to model many real-world problems without relying on complex SQL schemas.

Memgraph is implemented in C/C++ and leverages an in-memory first architecture to ensure that you’re getting the best possible performance consistently and without surprises. It’s also ACID-compliant and highly available.

Features

  • Run Python, Rust, and C/C++ code natively, check out the MAGE graph algorithm library
  • Native support for machine learning
  • Streaming support
  • Replication
  • Authentication and authorization
  • ACID compliance

📑 Documentation

The Memgraph documentation is available at memgraph.com/docs.

:shipit: Installation

Memgraph can be installed on Linux Debian/Ubuntu/CentOS natively, or on any other operating system through a Docker container.

You can find the installation instructions on the main documentation.

Configuration

Command line options that Memgraph accepts are available in the reference guide.

🏆 Contributions

For bugs, feature requests, or any other code-related info, reach out to us using GitHub issues. We'd love to hear your ideas and talk about them before any code is written, that way we can brainstorm the general use cases and create better software!

📜 Licence

Memgraph Community is available under the BSL license.
Memgraph Enterprise is available under the MEL license.

Back to top

Issues
  • The FOREACH language construct for performing an operation on every list element

    The FOREACH language construct for performing an operation on every list element

    While working on different query examples I was frequently missing the FOREACH construct. Also, noticed that our developer users feel that would be a nice addition.

    enhancement 
    opened by katarinasupe 10
  • [BUG] Memgraph 1.6. and newer doesn't work on M1 Macs

    [BUG] Memgraph 1.6. and newer doesn't work on M1 Macs

    Memgraph version Docker from memgraph/memgraph:latest (It's 2.1.1 at this point)

    Environment Docker Desktop on macOS, with Apple M1 SoC docker run -p 7687:7687 memgraph/memgraph:latest

    Describe the bug Memgraph crashes as soon as I try to connect to it (I tried with Memgraph Lab).

    To Reproduce Steps to reproduce the behavior:

    1. docker run -p 7687:7687 memgraph/memgraph:latest
    2. Connect to Memgraph

    Expected behavior Memgraph in Docker starts normally.

    Logs

    > docker run -p 7687:7687 memgraph/memgraph
    WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
    You are running Memgraph v2.1.1
    To get started with Memgraph, visit https://memgr.ph/start
    qemu: uncaught target signal 6 (Aborted) - core dumped
    

    Logs inside the Docker container

    [email protected]:/usr/lib/memgraph$ cat /var/log/memgraph/memgraph_2021-12-14.log
    [2021-12-14 08:26:34.933] [memgraph_log] [warning] Invalid license key string. To use Enterprise features please set it to a valid string using the following query:
    SET DATABASE SETTING "enterprise.license" TO "your-license-key"
    [2021-12-14 08:26:34.959] [memgraph_log] [warning] No snapshot or WAL file found. For more details, visit https://memgr.ph/durability.
    [2021-12-14 08:26:36.683] [memgraph_log] [warning] Using non-secure Bolt connection (without SSL). For more details, visit https://memgr.ph/ssl.
    [2021-12-14 08:26:47.474] [memgraph_log] [critical]
    Assertion failed in file /memgraph/src/utils/async_timer.cpp at line 144.
    	Expression: 'timer_create(CLOCK_MONOTONIC, &notification_settings, &timer_id_) == 0'
    	Message: 'Couldn't create timer: (22) Invalid argument'
    
    bug 
    opened by dtomicevic 6
  • [master < T168-MAGE] Memgraph magic functions

    [master < T168-MAGE] Memgraph magic functions

    Note: When pulling the latest openCypher grammar from https://opencypher.org/resources/, there might be a conflict with the current functionName resolving. Have it in mind when updating the whole grammar.

    • [x] Add arguments type checking
    • [x] Implement an error checking

    [master < Epic] PR

    opened by jmatak 5
  • [E004-MG < T0422-MG] Add end2end replication tests based on mgclient

    [E004-MG < T0422-MG] Add end2end replication tests based on mgclient

    • [x] Add YAML workloads descriptor.
    • [x] Setup tests Python dependencies.
    • [x] Add test with indexes.
    • [x] Add test with constraints.
    • [x] Remove all old HA tests.
    • [x] Add multi-threaded measurements to the read-write benchmark.
    • [x] Add index performance check (just measure time for now).
    tech debt 
    opened by gitbuda 5
  • Put all logrotate config to a file per offering

    Put all logrotate config to a file per offering

    Not having one logrotate file produced an error during rpmlint. It makes sense to have one logrotate file after Memgraph is installed because it's easier to manage config files. There are two logrotate files in the code, one for Community and one for Enterprise edition. Having logrotate files per offering also makes sense because offerings are affected less often compared to the features.

    infrastructure 
    opened by gitbuda 4
  • [master < T0998-MG] Fix WebSocket test

    [master < T0998-MG] Fix WebSocket test

    [master < Task] PR

    • [ ] ~~Check, and update documentation if necessary~~
    • [ ] ~~Update changelog~~ Bug is unrelated to the user
    • [x] Provide the full content or a guide for the final git message

    What was done?

    • Rename websocket to monitor unit test
    • Refactor unit test
    • Remove logic of logging to the server, and remove thread detach which was highly likely a source of the issue

    Why was this done? Monitoring unit test caused flakiness in CI execution it would hang indefinitely.

    Commit message:

    • Fix websocket unit tests hanging
    • Rename websocket to monitoring unit test
    opened by jbajic 3
  • [master < T0808-MG] Implement foreach clause

    [master < T0808-MG] Implement foreach clause

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Write E2E tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch

    [master < Task] PR

    • [x] Check, and update documentation if necessary
    • [x] Update changelog

    Closes #308

    opened by kostasrim 3
  • [master < T0802-MG] Make temporal types now functions use the query context timestamp

    [master < T0802-MG] Make temporal types now functions use the query context timestamp

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [x] Update changelog
    • [ ] Write E2E tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch

    [master < Task] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    opened by kostasrim 3
  • [master < T0699-MG] New MGP API

    [master < T0699-MG] New MGP API

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [x] Update changelog - memgraph/docs/pull/191
    • [x] Write E2E tests - the existing E2E test are checking some part of the API, and a big part is covered with Python unit tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch

    Though it is technically a task, but I kept the Epic task list because it is a huge change.

    opened by antaljanosbenjamin 3
  • add note how to install python modules and format python code

    add note how to install python modules and format python code

    [master < Epic] PR

    • [x] Check, and update documentation if necessary
    • [x] Update changelog
    • [x] Write E2E tests
    • [x] Compare the benchmarking results between the master branch and the Epic branch

    [master < Task] PR

    • [x] Check, and update documentation if necessary
    • [x] Update changelog
    opened by MasterMedo 3
  • [master < T0702-MG] Improve Merge performance by using indices

    [master < T0702-MG] Improve Merge performance by using indices

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Write E2E tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch

    [master < Task] PR

    • [x] Check, and update documentation if necessary
    • [x] Update changelog
    opened by antonio2368 3
  • T0941 mg implement basic raft version

    T0941 mg implement basic raft version

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Write E2E tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch
    • [ ] Provide the full content or a guide for the final git message

    [master < Task] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Provide the full content or a guide for the final git message
    opened by spacejam 0
  • [master < T0900-DX] Create README file for CSV Import Tools

    [master < T0900-DX] Create README file for CSV Import Tools

    We have decided to move the documentation for CSV Import Tools from the documentation repository to the Memgraph repo.

    I have created README.md file that contains existing documentation.

    Commit message: Create README file for CSV Import Tools

    opened by kgolubic 0
  • [E139-MG < T0994-MG] Implement expression evaluator library

    [E139-MG < T0994-MG] Implement expression evaluator library

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Write E2E tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch
    • [ ] Provide the full content or a guide for the final git message

    [master < Task] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Provide the full content or a guide for the final git message
    opened by kostasrim 0
  • [master < E129-MG] Implement Label-based Authorization

    [master < E129-MG] Implement Label-based Authorization

    [master < Epic] PR

    • [ ] Check, and update documentation if necessary
    • [ ] Update changelog
    • [ ] Write E2E tests
    • [ ] Compare the benchmarking results between the master branch and the Epic branch
    • [ ] Provide the full content or a guide for the final git message
    opened by BorisTasevski 0
  • [master < T0990-MG] Fix handling `ROUTE` Bolt messages

    [master < T0990-MG] Fix handling `ROUTE` Bolt messages

    [master < Task] PR

    • [ ] Check, and update documentation if necessary - NOT NEEDED
    • [X] Update changelog
    • [X] Provide the full content or a guide for the final git message

    Fix handling ROUTE Bolt message

    The fields of ROUTE message were not read from the input buffer, thus the imput buffer got corrupted. Sending a new message to the server would result reading the remaining fields from the buffer, which means reading some values instead of message signature. Because of this unmet expectation, Memgraph closed the connection. With this fix, the fields of the ROUTE message are properly read and ignored.

    opened by antaljanosbenjamin 0
Releases(v2.3.1)
  • v2.3.1(Jun 23, 2022)

    Bug Fixes

    • Fix WebSocket connection with clients that do not use binary protocol header. #403
    • Fix SSL connection shutdown hanging. #395
    • Fix module symbol loading with python modules. #335
    • Fix header on SHOW REPLICATION ROLE query and wrong timout info on SHOW REPLICAS query. #376
    • Adapted compilation flag so that the memory allocator uses JEMALLOC while counting allocated memory. #401
    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Apr 29, 2022)

    Major Features and Improvements

    • Added FOREACH clause. #351
    • Added magic function to Memgraph. #345
    • Added bolt over WebSocket support to Memgraph server. #384

    Bug Fixes

    • Fix shared module loading. #387
    Source code(tar.gz)
    Source code(zip)
  • v2.2.1(Mar 21, 2022)

  • v2.2.0(Feb 18, 2022)

    Major Features and Improvements

    • Added support for compilation on ARM architectures (aarch64) and Docker support for running Memgraph on Apple M1 machines. #340
    • Added monitoring server that forwards certain information from Memgraph to the clients connected to it (e.g. logs) using WebSocket. #337
    • Added CONFIGS and CREDENTIALS options to Kafka streams. #328
    • Added builtin procedures used for handling Python module files. mg.create_module_file, mg.update_module_file, mg.delete_module_file, mg.get_module_file, and mg.get_module_files allow you to do modifications on your Python module files, get their content, and list all the files present in your query module directories directly from Memgraph. #330
    • Built-in procedures mg.procedures and mg.transformations return additional information about the procedures and transformations scripts. path returns an absolute path to the module file containing the procedure, while is_editable returns true if the file can be edited using Memgraph or false otherwise. #310
    • Added SHOW VERSION query that returns the version of the Memgraph server which is being queried. #265

    Bug Fixes

    • The reference count is increased when Py_None is returned from the _mgp module. This fixes a nondeterministic fatal Python error. #320
    • Use correct error when printing warning in rebalance callback of Kafka consumer. #321
    • Fix transaction handling in streams in case of serialization error. Previously, a serialization error caused an exception to be thrown since nested transactions are not supported. After this fix, the transactions are handled correctly in the transaction retry logic. #339
    • Temporal types LocalTime and LocalDateTime instantiations return subsecond precision. Additionally, query modules mg_local_date_time_now() and mg_local_time_now() also return subsecond precision. #333
    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Dec 6, 2021)

    Breaking Changes

    • Loading streams created by versions of Memgraph older than 2.1 is not possible. We suggest you extract the necessary information using the older version of Memgraph and recreate the streams in a newer version (Memgraph 2.1 and newer).

    Major Features and Improvements

    • Added procedures for retrieving configuration information specific for each stream type. mg.pulsar_stream_info will return information about a specific Pulsar stream and mg.kafka_stream_info will return information about a specific Kafka stream. #301
    • SHOW STREAMS now returns default values for batch interval and batch size if they weren't specified. #306

    Bug Fixes

    • Query execution stats, returned after a Cypher query was executed, are now updated with the changes made in write procedures. #304
    • Loading streams created by older versions won't cause Memgraph to crash. #302
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Nov 24, 2021)

    Breaking Changes

    • Loading streams created by older versions cause Memgraph to crash. The only possible workaround involves deleting the existing streams. The streams can be deleted by the DROP STREAM query in the old versions of Memgraph. After upgrading to this version, the streams directory has to be deleted manually from Memgraph's data directory (on Debian-based systems, it is /var/lib/memgraph by default).
    • The query for creating a Kafka stream now requires the KAFKA keyword. The previous form CREATE STREAM ... was changed to CREATE KAFKA STREAM ....

    Major Features and Improvements

    • Now supporting Bolt protocol version 4.3. #226
    • Streams support for retrying conflicting transactions #294
    • Added procedure to configure the starting offset (to consume messages from) of a topic (and its partitions). #282
    • Added BOOTSTRAP_SERVERS option to CREATE KAFKA STREAM. #282
    • Added Bolt notifications in the query summary to inform the user about results or to give useful tips. When a query executes successfuly, sometimes is necessary to give users tips or extra information about the execution. #285
    • Added execution statistics in the query summary to inform user on how many objects were affected. E.g., when you run a query with a CREATE clause, you'll know how many nodes/edges were created by it. #285
    • Added support for connecting to Pulsar as a new stream source. #293

    Bug Fixes

    • Allow duration values to be used as weights in the Weighted Shortest Path query. #278
    • Fix linkage error when mgp_local_time_get_minute is used. #273
    • Fix crash when temporal types are used with ORDER BY clause. #299
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Oct 13, 2021)

    v2.0.1 - Oct 12, 2021

    Major Features and Improvements

    • Updated a startup message with a link to the getting started page. #259
    • Updated certain errors and warning messages in the logs with links to the documentation explaining the problem in more detail. #243
    • Updated mgconsole to v1.1.0. #260

    Bug Fixes

    • Graph updates made in the write procedures are now correctly registered in the triggers. #262
    • Fixed DETACH DELETE interaction with the triggers. Previously, vertices deleted by the DETACH DELETE would not be registered by triggers if only ON () DELETE trigger existed. #266
    Source code(tar.gz)
    Source code(zip)
    memgraph-2.0.1_1-1-centos-7.x86_64.rpm(5.19 MB)
    memgraph-2.0.1_1-1-centos-8.x86_64.rpm(5.20 MB)
    memgraph_2.0.1-1_amd64-debian-10.deb(12.91 MB)
    memgraph_2.0.1-1_amd64-debian-11.deb(12.89 MB)
    memgraph_2.0.1-1_amd64-debian-9.deb(11.68 MB)
    memgraph_2.0.1-1_amd64-ubuntu-1804.deb(12.89 MB)
    memgraph_2.0.1-1_amd64-ubuntu-2004.deb(12.87 MB)
  • v2.0.0(Oct 6, 2021)

    Breaking Changes

    • Changed the timestamp() function to return microseconds instead of milliseconds.
    • Most of the query modules C API functions are changed to return a mgp_error as a more fine-grained way of error reporting. The only exceptions are the functions that free allocated memory (mgp_free and mgp_global_free) and destroy objects (mgp_value_destroy, mgp_list_destory, etc.) which remain the same.
    • The first user created using the CREATE USER query will have all the privileges granted to him. Previously, you could've locked yourself out of Memgraph by creating a user and immediately disconnecting.

    Major Features and Improvements

    • Added support for temporal types, a feature that allows the user to manipulate and store time related data in the graph. For more information take a look at the reference guide
    • Added support for parameters with CREATE clause in the following form: CREATE (n $param).
    • Introduced settings to Memgraph that can be modified during runtime. You can check out more details here.
    • Added writeable procedure support, so procedures can modify the graph by creating and deleting vertices and edges, modifying the labels of vertices or setting the properties of vertices and edges.

    Bug Fixes

    • Fixed planning of queries with MERGE clause. If a previously defined symbol is used as property value inside the MERGE clause, the planner will correctly use the label-property index if present.
    • Unused memory is correctly returned to OS when FREE MEMORY query is used. Before, Memgraph would free up the memory internally and not return it to the OS. Because of that Memgraph could allocate more memory from the OS than it's allowed.
    • Fixed recovery from durability files. Because of a wrong check, Memgraph could crash and leave the durability files in an invalid state making recovery not possible.
    • Fixed usage of execute keyword in queries. Because of the special way we handle the EXECUTE keyword from the CREATE TRIGGER query using that same keyword in other contexts caused Memgraph to crash.
    Source code(tar.gz)
    Source code(zip)
    memgraph-2.0.0_1-1-centos-7.x86_64.rpm(5.18 MB)
    memgraph-2.0.0_1-1-centos-8.x86_64.rpm(5.18 MB)
    memgraph_2.0.0-1_amd64-debian-10.deb(12.88 MB)
    memgraph_2.0.0-1_amd64-debian-9.deb(11.68 MB)
    memgraph_2.0.0-1_amd64-ubuntu-1804.deb(12.88 MB)
    memgraph_2.0.0-1_amd64-ubuntu-2004.deb(12.86 MB)
Owner
Memgraph
Real-time operational graph analytics.
Memgraph
Directed Acyclic Graph Execution Engine (DAGEE) is a C++ library that enables programmers to express computation and data movement, as task graphs that are scheduled concurrently and asynchronously on both CPUs and GPUs.

Directed Acyclic Graph Execution Engine (DAGEE) is a C++ library that enables programmers to express computation and data movement, as tasks in a graph structure, where edges represent task dependencies

null 23 May 11, 2022
Data Structure Studying Group: array, linked list, stack, queue, deque, tree, graph. Summary of these concepts are descripted in the markdown files.

DATA_STRUCTURE STUDY ?? CURRICULUM ✔️ Day1 array linked list ✔️ Day2 circular linked list double linked list polynomial addtion reverse linked list ✔️

Soyeon Kim 3 Jul 22, 2022
A collecton of generic reference counted data structures, tools to create compatible C style classes, and demo applications

The Offbrand library is a collection of reference counted generic data structures written in C for C. The library includes bash scripts to assist in t

Tyler Heck 82 Mar 4, 2022
This is a beginner-friendly project aiming to build a problem-set on different data structures and algorithms in different programming languages.

DSAready Overview This is a beginner-friendly project that aims to create a problem-set for various Data Structures and Algorithms. Being a programmer

Riddhi Jain 12 Jun 12, 2022
lightweight, compile-time and rust-like wrapper around the primitive numerical c++ data types

prim_wrapper header-only, fast, compile-time, rust-like wrapper around the primitive numerical c++ data types dependencies gcem - provides math functi

null 1 Oct 22, 2021
COBS framing with implicit run-length-encoding, optimized for data containing statistically a bit more 0 and FF bytes in a row, as data often carry 16, 32 or 64 bit numbers with small values.

TCOBS Table of Contents About The project TCOBS Specification TCOBS code Getting Started 4.1. Prerequisites 4.2. Installation 4.3. Usage in Go 4.3.1.

Thomas Höhenleitner 10 Aug 6, 2022
High performance build system for Windows, OSX and Linux. Supporting caching, network distribution and more.

FASTBuild FASTBuild is a build system for Windows, OSX and Linux, supporting distributed compilation and object caching. It is used by many game devel

FASTBuild 940 Aug 8, 2022
Open-source graph editor, with built-it step-by-step Dijkstra's Algorithm.

Visual Dijkstra - Simple visual graph editor, with built-in step-by-step Dijkstra's algorithm Visual Dijkstra is a free and open-source tool, designed

Samuele Girgenti 30 Jul 30, 2022
Chia Plot Graph

Chia Plot Graph Monitor for Chia Plotting Introduction The chiaplotgraph tool will graph Chia Plotting activity in a linux terminal. Use a 24-bit colo

Bram Stolk 59 Mar 11, 2022
The problem consists in determining all shortest paths between pairs of nodes in a given graph.

All-Pairs-Shortest-Path-Problem-Parallel-Computing The problem consists in determining all shortest paths between pairs of nodes in a given graph. Exe

Ana Sofia N. 1 Dec 27, 2021
Tuplex is a parallel big data processing framework that runs data science pipelines written in Python at the speed of compiled code

Tuplex is a parallel big data processing framework that runs data science pipelines written in Python at the speed of compiled code. Tuplex has similar Python APIs to Apache Spark or Dask, but rather than invoking the Python interpreter, Tuplex generates optimized LLVM bytecode for the given pipeline and input data set.

Tuplex 781 Aug 1, 2022
A simple and easy-to-use library to build pipelines in C

A simple and easy-to-use library to build pipelines in C

Ray 11 Feb 22, 2022
This repository provides implementation of an incremental k-d tree for robotic applications.

ikd-Tree ikd-Tree is an incremental k-d tree designed for robotic applications. The ikd-Tree incrementally updates a k-d tree with new coming points o

HKU-Mars-Lab 308 Aug 6, 2022
Build a tree-sitter dynamic module

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I should clarify that this module is NOT a standalone tree-sitter module. It is supo

Yuan Fu 4 May 22, 2022
an obfuscator based on LLVM which can obfuscate the program execution trajectory

Othread Obfuscator Othread is an obfuscation tool based on LLVM, which can perfectly realize the obfuscation of C/C++ code under the Windows platform

null 17 Aug 2, 2022
simple hash table linear probing method can expand/reduce

hash table a simple c hash table implementation based on https://benhoyt.com/writings/hash-table-in-c/ project can store different data types (data al

Fabio Murer 1 Oct 3, 2021
This repo is full with code from random c++ projects. Anyone can contribute

Randomcplusplus Learn c++ This repo is for random c++ code that can be used for any project Learn how to code in c++ by using and reading peoples exam

Thomas Kerby 2 Jan 30, 2022