Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Kruno Tomola Fabro 3fffa17b0d Started adding remove methods.
Discovered bugs in HashMultiMap and after fixing it add method is now little slower but
find method is medium faster. So it turned out good.
2016-08-10 20:02:54 +01:00
build The folder structure was changed, all source code is now within the src dir. 2016-05-08 11:33:07 +02:00
docker delete accessor from version list + build flow update + memgraph docker file + TODO: debug cypher grammar 2016-06-25 17:26:26 +01:00
include Started adding remove methods. 2016-08-10 20:02:54 +01:00
libs delete accessor from version list + build flow update + memgraph docker file + TODO: debug cypher grammar 2016-06-25 17:26:26 +01:00
poc Started adding remove methods. 2016-08-10 20:02:54 +01:00
release tests/manual/query_engine.cpp work in compiler in progress 2016-07-11 02:39:33 +01:00
src Started adding remove methods. 2016-08-10 20:02:54 +01:00
tests Started adding remove methods. 2016-08-10 20:02:54 +01:00
.arcconfig added arcconfig 2015-09-22 01:05:54 +02:00
.clang-format Added support for multiset. 2016-08-02 13:23:39 +01:00
.gitignore Reformated code acording to format rules in .clang-format. 2016-07-31 13:56:13 +01:00
build.sh The folder structure was changed, all source code is now within the src dir. 2016-05-08 11:33:07 +02:00
CMakeLists.txt fmt wrapper + proof of concept folder 2016-08-08 09:32:34 +01:00
Makefile lemon and lexertl are removed from src folder, cmake custom target is created to better automate process of testing, cypher return list is now list of expressions 2016-05-28 21:24:48 +02:00
README.md fmt wrapper + proof of concept folder 2016-08-08 09:32:34 +01: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.5 or Gcc 4.8 (good c++11 support, especially lock free atomics)
  • boost 1.55 (or something, probably works with almost anything)
  • lexertl (2015-07-14)
  • lemon (parser generator)
  • catch (for compiling tests)

build

cd build
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DRUNTIME_ASSERT=OFF -DTHROW_EXCEPTION_ON_ERROR=OFF -DNDEBUG=OFF ..

# Flags:
#   -DCMAKE_C_COMPILER=clang
#   -DCMAKE_CXX_COMPILER=clang++
#   -DRUNTIME_ASSERT=OFF
#   -DTHROW_EXCEPTION_ON_ERROR=OFF
#   -DCMAKE_BUILD_TYPE:STRING=Debug
#   -DNDEBUG=ON

make
ctest
ctest -V
ctest -R test_name
ctest -R unit
ctest -R concurrent
ctest -R concurrent --parallel 4

custom test build example

clang++ -std=c++1y -o concurrent_skiplist ../tests/concurrent/skiplist.cpp -pg -I../src/ -I../libs/fmt -Lfmt-prefix/src/fmt-build/fmt -lfmt -lpthread

TODO

  • implement basic subset of queries:

    • create node
    • create edge
    • find node
    • find edge
    • update node
    • update edge
    • delete node
    • delete edge
  • implement index

    • label index
    • type index
    • property index
  • from header only approach to .hpp + .cpp

    • query engine has to be statically linked with the rest of the code
  • unit test of queries that are manually implemented

    • src/query_engine/main_queries.cpp -> tests/unit/manual_queries
  • unit test of query_engine

  • console with history