Open-source graph database, built for real-time streaming data, compatible with Neo4j.
cyphergraphgraph-algorithmsgraph-analysisgraph-databasekafkakafka-streamsnosqlopencypherstream-processingstreaming-data
Summary: - Removed BreadthFirstAtom, using EdgeAtom only with a Type enum. - Both variable expansions (breadth and depth first) now have mandatory inner node and edge Identifiers. - Both variable expansions use inline property filtering and support inline lambdas. - BFS and variable expansion now have the same planning process. - Planner modified in the following ways: - Variable expansions support inline property filtering (two filters added to all_filters, one for inline, one for post-expand). - Asserting against existing_edge since we don't support that anymore. - Edge and node symbols bound after variable expansion to disallow post-expand filters to get inlined. - Some things simplified due to different handling. - BreadthFirstExpand logical operator merged into ExpandVariable. Two Cursor classes remain and are dynamically chosen from. As part of planned planner refactor we should ensure that a filter is applied only once. The current implementation is very suboptimal for property filtering in variable expansions. @buda: we will start refactoring this these days. This current planner logic is too dense and complex. It is becoming technical debt. Most of the time I spent working on this has been spent figuring the planning out, and I still needed Teon's help at times. Implementing the correct and optimal version of query execution (avoiding multiple potentially expensive filterings) was out of reach also due to tech debt. Reviewers: buda, teon.banek Reviewed By: teon.banek Subscribers: pullbot, buda Differential Revision: https://phabricator.memgraph.io/D852 |
||
---|---|---|
cmake | ||
config | ||
docs | ||
experimental | ||
libs | ||
poc | ||
release | ||
src | ||
tests | ||
tools | ||
.arcconfig | ||
.clang-format | ||
.gdbinit | ||
.gitignore | ||
.ycm_extra_conf.py | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
coverage | ||
Doxyfile | ||
Doxylogo.png | ||
format | ||
init | ||
install_neo | ||
llvm-gcov | ||
README.md |
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.8 (good c++11 support, especially lock free atomics)
- antlr (compiler frontend)
- cppitertools
- fmt format
- google benchmark
- google test
- glog
- gflags