Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
florijan 1953f3563f Refactor GraphDb so ::impl classes inherit GraphDb
Summary:
A slight insanity here... I realized I will need to create
`GraphDbAccessor` instance (which need `&GraphDb`) within some members
of `::impl` classes. Within those classes I can pass `this` to those
members, if `this` is a valid `GraphDb`. Semantically it really is (at
the moment), but heirarchically it wasn't. This diff changes that.
`GraphDb`  is now only an interface. `PublicBase` is the base for all
the public classes, `PrivateBase` for the `::impl` classes. Seems to
work.

Oh yes, another thing to keep in mind when doing this is that I should avoid
calling virtual functions in public classes (the motivation for the double
heirarchy). Before this diff the getters weren't virtual, now they are, so
I should have made all the appropriate changes in code as well.

Buda, was this a task I could have delegated to you or Cula?

Reviewers: teon.banek, dgleich, buda

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1120
2018-01-19 15:40:04 +01:00
cmake Cleanup and reorganize release directory 2018-01-15 10:12:59 +01:00
config Remove executor not run option 2017-12-18 14:36:15 +01:00
customers Refactor GraphDb 2018-01-12 16:47:24 +01:00
docs Remove Union from Upcoming Features 2017-12-22 15:24:05 +01:00
experimental Integrate code coverage with Apollo 2018-01-15 12:20:11 +01:00
libs Integrate code coverage with Apollo 2018-01-15 12:20:11 +01:00
poc Add parallel customers/Otto test 2017-11-23 09:20:53 +01:00
release Cleanup and reorganize release directory 2018-01-15 10:12:59 +01:00
src Refactor GraphDb so ::impl classes inherit GraphDb 2018-01-19 15:40:04 +01:00
tests Add database master test 2018-01-19 14:52:05 +01:00
tools Worker id in snapshot/wal 2018-01-18 11:46:47 +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 Changed macro benchmark summary format 2017-12-28 16:35:45 +01:00
.ycm_extra_conf.py Configure YCM for Cereal 2017-12-06 14:28:34 +01:00
apollo_archives.py Add initial version of Apollo config files 2018-01-10 14:46:10 +01:00
apollo_archives.yaml Add initial version of Apollo config files 2018-01-10 14:46:10 +01:00
apollo_build.yaml Integrate code coverage with Apollo 2018-01-15 12:20:11 +01:00
CHANGELOG.md Worker id in snapshot/wal 2018-01-18 11:46:47 +01:00
CMakeLists.txt Implement simple log file storage for raft 2018-01-15 18:07:45 +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 Implement simple log file storage for raft 2018-01-15 18:07:45 +01: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