Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
2016-08-02 17:05:15 +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 CRU operations are fully supported, D (delete) is missing 2016-08-02 15:41:53 +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
release tests/manual/query_engine.cpp work in compiler in progress 2016-07-11 02:39:33 +01:00
src Merge branch 'dev' of https://phabricator.tomicevic.com/diffusion/MG/memgraph into dev 2016-08-02 17:05:15 +01:00
Testing/Temporary Implemented ConncurentMap and updated it's users. 2016-07-30 21:20:21 +01:00
tests Merge branch 'dev' of https://phabricator.tomicevic.com/diffusion/MG/memgraph into dev 2016-08-02 17:05:15 +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 Cypher CRUD support is becomes bigger and bigger. Implemented: create relationship, match relationship and update relationship 2016-07-31 18:58:12 +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 basic queries are manually implemented inside src/query_engine/main_queries 2016-07-03 01:02:42 +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 ..
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