2015-06-19 16:14:27 +08:00
|
|
|
# memgraph
|
|
|
|
|
|
|
|
Memgraph is an ACID compliant high performance transactional distributed
|
|
|
|
in-memory graph database featuring runtime native query compiling, lock free
|
2015-06-19 16:33:48 +08:00
|
|
|
data structures, multi-version concurrency control and asynchronous IO.
|
2015-07-31 18:30:05 +08:00
|
|
|
|
|
|
|
## 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)
|
2015-08-30 07:12:46 +08:00
|
|
|
* lemon (parser generator)
|
2015-07-31 18:30:05 +08:00
|
|
|
* catch (for compiling tests)
|
|
|
|
|
|
|
|
## build
|
2016-05-25 06:37:14 +08:00
|
|
|
```
|
|
|
|
cd build
|
2016-06-15 06:06:21 +08:00
|
|
|
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DRUNTIME_ASSERT=OFF -DTHROW_EXCEPTION_ON_ERROR=OFF -DNDEBUG=OFF ..
|
2016-05-25 06:37:14 +08:00
|
|
|
make
|
2016-06-05 18:12:25 +08:00
|
|
|
ctest
|
2016-05-25 06:37:14 +08:00
|
|
|
ctest -V
|
2016-06-05 18:12:25 +08:00
|
|
|
ctest -R test_name
|
2016-06-07 05:57:16 +08:00
|
|
|
ctest -R unit
|
|
|
|
ctest -R concurrent
|
|
|
|
ctest -R concurrent --parallel 4
|
2016-05-25 06:37:14 +08:00
|
|
|
```
|
|
|
|
|
2016-06-26 00:26:26 +08:00
|
|
|
# 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
|
|
|
|
|
2016-07-03 08:02:42 +08:00
|
|
|
# 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
|