2.0 KiB
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