JasmineGraph is a C/C++ based distributed graph database server. It has been developed following the Acacia graph database server architecture. JasmineGraph can be run on single computer as well as on a compute cluster.
Prerequisites The following build tools, applications, and libraries need to be installed before building JasmineGraph.
- GCC 5.4.0 or above
- Cmake version 3.10.3 or above
- Google Flat Buffers (https://github.com/google/flatbuffers)
- Clone the flatbuffers repository to $ENV{HOME}/software
- Checkout Tag v1.10.0
- Follow https://google.github.io/flatbuffers/flatbuffers_guide_building.html link to build flatbuffers
- Metis (http://glaros.dtc.umn.edu/gkhome/metis/metis/download)
- SdpLog (https://github.com/gabime/spdlog)
- Clone or download the repository from the above link
- Once downloaded specify the include directory in CMakeList.txt.
- Ex : "include_directories("$ENV{HOME}/software/spdlog/include")"
- SQLite3 (https://www.sqlite.org/download.html)
- cppkafka (https://github.com/mfontanini/cppkafka)
- Install librdkafka - Follow the Readme in (https://github.com/edenhill/librdkafka)
- Install boost library - use 'sudo apt-get install libboost-all-dev'
- Once cppkafka is built install it by running 'sudo make install' from the build directory
- Xerces-c-3.2.2 (https://xerces.apache.org/xerces-c/)
- Intallation guide is available at http://xerces.apache.org/xerces-c/build-3.html
- When configuring Xerces skip the use of transcoder ICU by using the flag --disable-transcoder-icu
- Once installed specify the target_link_libraries path to xerces.
- Jsoncpp(https://github.com/open-source-parsers/jsoncpp)
- Install the release https://github.com/open-source-parsers/jsoncpp/releases/tag/1.8.4
- pigz (optional)
- pigz, which stands for Parallel Implementation of GZip, is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data.
- Jasminegraph by default uses pigz for file compression and decompression.
- However if pigz is not found, gzip is used instead.
- Download pigz from (http://zlib.net/pigz/) or (https://github.com/madler/pigz.git).
- Type "make" in pigz directory to build the "pigz" executable.
- Add pigz executable's path to ~/.bashrc file and refresh.
First, this repository should be cloned into one of your computer's local directory. Then change directory to jasminegraph and run ./build.sh to build the JasmineGraph executable.
Jasminegraph can be run by executing the run.sh script. This will start master on your local computer while workers are created in the list of the hosts mentioned in the conf/hosts.txt file.
Please contact [Miyuru Dayarathna](miyurud at yahoo dot co dot uk) for further information. Please let us know about bug reports or any further improvements you wish to have in JasmineGraph.
JasmineGraph is licensed under the Apache License, Version 2.0. Task Scheduler which is integrated in Jasminegraph is using MIT License.
More details of JasmineGraph/Acacia architecture is available from the following list of papers.
- Miyuru Dayarathna, Sathya Bandara, Nandula Jayamaha, Mahen Herath, Achala Madhushan, Sanath Jayasena, Toyotaro Suzumura. 2017. "An X10-Based Distributed Streaming Graph Database Engine.," 2017 IEEE 24th International Conference on High Performance Computing (HiPC), Jaipur, 2017, pp. 243-252.
- Miyuru Dayarathna, Isuru Herath, Yasima Dewmini, Gayan Mettananda, Sameera Nandasiri, Sanath Jayasena, Toyotaro Suzumura. 2016 "Acacia-RDF: An X10-Based Scalable Distributed RDF Graph Database Engine.," 2016 IEEE 9th International Conference on Cloud Computing (CLOUD), San Francisco, CA, 2016, pp. 521-528. doi: 10.1109/CLOUD.2016.0075
- Miyuru Dayarathna and Toyotaro Suzumura. 2014. "Towards scalable distributed graph database engine for hybrid clouds." In Proceedings of the 5th International Workshop on Data-Intensive Computing in the Clouds (DataCloud '14). IEEE Press, Piscataway, NJ, USA, 1-8.