Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Matija Santl 5e6cf0724a Implement StateDelta apply method for Raft
Summary:
TransactionReplicator replicates transactions on follower machines in
HA memgraph. Our DB accessor API doesn't provide us with the functionality to
begin transactions with non-increasing ids. This is why the
`TransactionReplicator` uses a internal map that maps tx ids from the leader
node to transactions on the follower node (whose id doesn't have to match the
leaders tx id).

If the leader has the following transaction timeline:

```
    L
tx1
 |
 |   tx2
 |    |
 |    |
 |    |
 |    |
 |    |
 |   tx2
 |
 |
 |
 |
tx1
```

`tx2` will commit first and will be replicated. When applying `tx2` on follower
nodes, they will start a new transaction with tx id `1`.  When `tx1` starts
replicating, followers will start a new transaction with tx id `2`. And this is
wehre `TransactionReplicator` kicks in.

Reviewers: ipaljak

Reviewed By: ipaljak

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1775
2018-12-14 14:26:40 +01:00
cmake Serialize StateDelta for HA 2018-11-12 13:36:11 +01:00
config Implement full durability mode 2018-08-29 16:05:07 +02:00
customers Implement manage script for card fraud demo 2018-02-12 13:29:12 +01:00
docs Wire raft into memgraph pt.1. 2018-12-10 17:08:36 +01:00
experimental Integrate code coverage with Apollo 2018-01-15 12:20:11 +01:00
libs Initial implementation of authentication 2018-07-27 13:08:17 +02:00
poc Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
release Movie tutorial database added 2018-10-29 11:02:41 +01:00
src Implement StateDelta apply method for Raft 2018-12-14 14:26:40 +01:00
tests Implement StateDelta apply method for Raft 2018-12-14 14:26:40 +01:00
tools Make analyze_rpc_calls script work with new TypeInfo 2018-11-27 15:02:53 +01:00
.arcconfig arcconfig: Default to master for diff and land 2017-11-07 18:41:51 +01:00
.clang-format Edges data structure now supports multiple edge filtering (implicit OR) 2017-09-26 13:46:18 +02:00
.gdbinit Add pretty printer to gdb for TypedValue 2017-08-16 11:32:25 +02:00
.gitignore Convert symbol.hpp to LCP 2018-11-22 09:52:18 +01:00
.ycm_extra_conf.py Add kafka library and integrate it into memgraph 2018-07-06 15:52:23 +02:00
apollo_archives.py Refactor Apollo build projects 2018-03-27 13:47:18 +02:00
apollo_archives.yaml Polish Bolt client and mg_client 2018-10-19 13:55:51 +02:00
apollo_build.yaml Remove user technical docs from daily build 2018-10-10 16:28:15 +02:00
CHANGELOG.md Add changelog for version 0.14 2018-10-29 10:32:23 +01:00
CMakeLists.txt Add changelog for version 0.14 2018-10-29 10:32:23 +01:00
Doxyfile Add initial version of Apollo config files 2018-01-10 14:46:10 +01:00
Doxylogo.png Doxygen setup 2016-12-20 15:49:52 +01:00
init Fix the creation of a symlink in Quicklisp's local-projects directory 2018-10-18 14:58:53 +02:00
README.md Migrate command line args to gflgs in tests 2017-07-06 13:54:12 +02:00

memgraph

Memgraph is an ACID compliant high performance transactional distributed in-memory graph database featuring runtime native query compiling, lock free data structures, multi-version concurrency control and asynchronous IO.

dependencies

Memgraph can be compiled using any modern c++ compiler. It mostly relies on the standard template library, however, some things do require external libraries.

Some code contains linux-specific libraries and the build is only supported on a 64 bit linux kernel.

  • linux
  • clang 3.8 (good c++11 support, especially lock free atomics)
  • antlr (compiler frontend)
  • cppitertools
  • fmt format
  • google benchmark
  • google test
  • glog
  • gflags