Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Marko Budiselić c68ed8d94e Add implementation of synchronous replication ()
This implements the initial version of synchronous replication.
Currently, only one replica is supported and that isn't configurable.

To run the main instance use the following command:
```
./memgraph \
    --main \
    --data-directory main-data \
    --storage-properties-on-edges \
    --storage-wal-enabled \
    --storage-snapshot-interval-sec 300
```

To run the replica instance use the following command:
```
./memgraph \
    --replica \
    --data-directory replica-data \
    --storage-properties-on-edges \
    --bolt-port 7688
```

You can then write/read data to Bolt port 7687 (the main instance) and also you
can read the data from the replica instance using Bolt port 7688.

NOTE: The main instance *must* be started without any data and the replica
*must* be started before any data is added to the main instance.

* Add basic synchronous replication test
* Using RWLock for replication stuff

Co-authored-by: Matej Ferencevic <matej.ferencevic@memgraph.io>
Co-authored-by: Antonio Andelic <antonio.andelic@memgraph.io>
2021-01-21 15:49:32 +01:00
.githooks Fix pre-commit hook () 2020-10-23 14:40:58 +02:00
.github/workflows Add upload of Diff binaries () 2020-12-21 16:41:46 +01:00
cmake Migrate LDAP integration to auth module 2019-09-11 17:15:08 +02:00
config Disable SSL by default () 2020-10-20 15:49:10 +02:00
docs Write replication feature spec () 2021-01-21 15:49:32 +01:00
environment Fix CentOS 8 powertools setup () 2021-01-19 10:07:14 +01:00
include Add the NetworkX query module () 2020-10-01 20:51:55 +02:00
libs Migrate code to C++20 () 2020-11-17 11:03:08 +01:00
query_modules Migrate to toolchain-v2 () 2020-11-12 20:18:11 +01:00
release Add upload of Diff binaries () 2020-12-21 16:41:46 +01:00
src Add implementation of synchronous replication () 2021-01-21 15:49:32 +01:00
tests Add implementation of synchronous replication () 2021-01-21 15:49:32 +01:00
tools Migrate to toolchain-v2 () 2020-11-12 20:18:11 +01:00
.clang-format Migrate code to C++20 () 2020-11-17 11:03:08 +01:00
.clang-tidy Migrate to toolchain-v2 () 2020-11-12 20:18:11 +01:00
.gdbinit Add pretty printer to gdb for TypedValue 2017-08-16 11:32:25 +02:00
.gitignore Reimplement counter openCypher function 2019-05-16 11:09:02 +02:00
CHANGELOG.md Add DISCARD fix to the CHANGELOG () 2020-10-23 20:08:47 +02:00
CMakeLists.txt Add upload of Diff binaries () 2020-12-21 16:41:46 +01:00
CODEOWNERS Clean Memgraph repository () 2020-10-21 18:56:15 +02:00
Doxyfile Clean Memgraph repository () 2020-10-21 18:56:15 +02:00
init Clean and upgrade openCypher and stress tests () 2020-11-24 13:09:14 +01:00
README.md Clean Memgraph repository () 2020-10-21 18:56:15 +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.

Development Documentation

Feature Specifications

Each prominent Memgraph feature requires a feature specification. The purpose of the feature specification is to have a base for discussing all aspects of the feature. Elements of feature specifications should be:

  • High-level context.
  • Interface.
  • User stories. Usage from the end-user perspective. In the case of a library, that should be cases on how to use the programming interface. In the case of a shell script, that should be cases on how to use flags.
  • Discussion about concurrency, memory management, error management.
  • Any other essential functional or non-functional requirements.
  • Test and benchmark strategy.
  • Possible future changes/improvements/extensions.
  • Security concerns.
  • Additional and/or optional implementation details.

It's crucial to keep feature spec up-to-date with the implementation. Take a look at the list of feature specifications to learn more about powerful Memgraph features.

User Documentation

Memgraph user documentation is maintained within docs repository. The documentation is also available on GitBook.

Licences