# 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) ### Bolt sudo apt-get install libssl-dev ## 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 # -DNDEBUG=ON # -DCMAKE_BUILD_TYPE:STRING=debug # -DCMAKE_BUILD_TYPE:STRING=release 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