Coder Social home page Coder Social logo

miyurud / jasminegraph Goto Github PK

View Code? Open in Web Editor NEW
18.0 2.0 24.0 5.7 MB

Distributed Graph Database Server

License: Apache License 2.0

CMake 3.10% C++ 89.21% C 0.11% Shell 1.55% Python 5.81% Dockerfile 0.15% Forth 0.06%
graph graph-theory graph-algorigthms databases data-management high-performance-computing graphdb graphdatabase graph-database

jasminegraph's Introduction

Build License GitHub last commit

JasmineGraph

1. Introduction

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.

2. Building and Running JasmineGraph on Docker

JasmineGraph can be run inside a docker image. After cloning the project, build the image as follows:

docker build -t jasminegraph .

Run the image by providing the appropriate volume mount paths and parameters:

docker run -v "/var/run/docker.sock:/var/run/docker.sock:rw" -v "/root/.ssh:/home/user/.ssh" -v "/tmp:/tmp" -v "/var/tmp/jasminegraph-localstore:/var/tmp/jasminegraph-localstore" -v "/var/tmp/jasminegraph-aggregate:/var/tmp/jasminegraph-aggregate" -v "/home/user/Documents/jasminegraph/metadb:/home/ubuntu/software/jasminegraph/metadb" -v "/home/user/Documents/MSc/jasminegraph/performancedb:/home/ubuntu/software/jasminegraph/performancedb" -p 7777:7777 -p 7778:7778 jasminegraph --MODE 1 --MASTERIP <docker0 interface ip> --WORKERS 4 --WORKERIP <docker0 interface ip> --ENABLE_NMON false

Run JasmineGraph in Kubernetes environment by providing appropriate parameters:

./start-k8s.sh --META_DB_PATH "$(pwd)/metadb" \
    --PERFORMANCE_DB_PATH "$(pwd)/performancedb" \
    --DATA_PATH "$(pwd)/data" \
    --LOG_PATH "$(pwd)/logs" \
    --AGGREGATE_PATH "$(pwd)/aggregate" \
    --NO_OF_WORKERS 2 \
    --ENABLE_NMON false \
    --MAX_COUNT 4

Note: NO_OF_WORKERS, MAX_COUNT, and ENABLE_NMON are optional arguments, and it defaults to 2, 4 and false respectively.

Remove all resources created by JasmineGraph in Kubernetes environment:

./start-k8s.sh clean

3. Contact Information

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.

Open Source License

JasmineGraph is licensed under the Apache License, Version 2.0. Task Scheduler which is integrated in JasmineGraph is using MIT License.

References

More details of JasmineGraph's approach for managment and mining of large graph data is available from the following list of papers.

jasminegraph's People

Contributors

anuradhask avatar arunasenanayake avatar ashok12011234 avatar chalindukodikara avatar chandima301 avatar chinthakarukshan avatar damithasenevirathne avatar dinikasen avatar ishad-m-i-m avatar isurumaduranga avatar jesmingraphadmin avatar kandeeban15 avatar kasundharmadasa avatar limetreeestate avatar miyuru-macrometa avatar miyurud avatar sakeerthan avatar sandaruwan1229 avatar shalika-madhushanki avatar thevindu-w avatar tmkasun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jasminegraph's Issues

Create an Exception class for JasmineGraph

Better create an Exception class for JasmineGraph. We can use the name JasmineGraphException. We can create a top level package called exception and within that host the JasmineGraphException class.

Fix output[0][0]

There can be situations where output[0][0] is null. Need to check such occurences and fix them all.

Refactor file storage

Currently, the partitioned graph data of JasmineGraph gets stored in org.jasminegraph.server.instance.datafolder and we have set its value by default to /var/tmp/jasminegraph-localstore. Instead of that we need to change the folder name to /var/tmp/jasminegraph-datastore. Furthermore, need to change this single folder to hold all the data of JasmineGraph.

Fix Segfault for Merge Command

Segfault happens when run merge command for certain types of graphs. Merge command is intended for only use with attribute graphs. Hence there should be appropriate checking and show proper error message.

Relate log lines with frontend service session ID

If we take any of the log lines such as follows,

frontend_logger.info("Calculating Page Rank");

Those should carry their corresponding frontend (FE) service session ID as well. This will enable us to differentiate between different sessions. Another example for such log line is as follows.

frontend_logger.info("PageRank Time Taken : " + to_string(msDuration) + " milliseconds");

If we do not keep track of in which FE service session this log line was made, it will become difficult to track between different FE service sessions.

Unify the merge command with the train command in the frontend

There is no point of having a separate merge command in the frontend. We should merge it with the train command. Furthermore, merging currently conducted as the merging of two pandas data frames. Rather than this, first the local store and corresponding central store needs to be merged using C++ and then should construct the Pandas data frame using the data in the merged data store.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.