Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Kruno Tomola Fabro 530be96b36 .FIX T68
.FIX T67
.FIX T65

Modifed astar main for benchmark.
Experimented with map of best visited and confirmed:
-it is faster by 25%
-observed that it founds best resoult
-loses some non best resoults

Added convinent method at() to get property from RecordAccessor.
Method requires  value_ref() method on property object.
2016-08-15 13:21:38 +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 .FIX T68 2016-08-15 13:21:38 +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 .FIX T68 2016-08-15 13:21:38 +01:00
release tests/manual/query_engine.cpp work in compiler in progress 2016-07-11 02:39:33 +01:00
src .FIX T68 2016-08-15 13:21:38 +01:00
tests Database interface refactor. 2016-08-15 00:09:58 +01:00
.arcconfig added arcconfig 2015-09-22 01:05:54 +02:00
.clang-format merge with edges, from and to are moved to the EdgeRecord, they are not copied along with properties inside the MVCC, TODO: graph interface, Accessor and Stores 2016-08-11 15:13:19 +01:00
.gitignore All files for the Release are now isolated 2016-08-10 09:39:02 +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 Database interface refactor. 2016-08-15 00:09:58 +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 All files for the Release are now isolated 2016-08-10 09:39:02 +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)

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