Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Kruno Tomola Fabro 61eccc28ce Created EdgeRecord as class and changed in edge vector for map.
EdgeRecord now contains from,to fields as immutables.
Vertex in place of in vector of edges has in RbHashMultimap of edges.
Astar exepriment now uses real filters based on before mentioned map.
2016-08-09 20:29:03 +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 Created EdgeRecord as class and changed in edge vector for map. 2016-08-09 20:29:03 +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 Created EdgeRecord as class and changed in edge vector for map. 2016-08-09 20:29:03 +01:00
release tests/manual/query_engine.cpp work in compiler in progress 2016-07-11 02:39:33 +01:00
src Created EdgeRecord as class and changed in edge vector for map. 2016-08-09 20:29:03 +01:00
tests Commit before branching to chane EdgeModel and EdgeRecord. 2016-08-09 16:44:39 +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