Git Product home page Git Product logo

railwaydb's Introduction

Railway Adaptive Storage for Interaction Graphs

=======

This repository contains an adaptive disk layout called the railway layout for optimizing disk block storage for interaction graphs. The key idea is to divide blocks into one or more sub-blocks, where each sub-block contains a subset of the attributes, but the entire graph structure is replicated within each sub-block. This improves query I/O, at the cost of increased storage overhead. We introduce optimal ILP formulations for partitioning disk blocks into sub-blocks with overlapping and non-overlapping attributes. Additionally, we present greedy heuristic approaches that can scale better compared to the ILP alternatives, yet achieve close to optimal query I/O. To demonstrate the benefits of the railway layout, we provide an extensive experimental study comparing our approach to a few baseline alternatives.

  1. The partitioning algorithm depends on the Gurobi optimizer library. This is available for free under an academic license. Follow the instructions at: http://www.gurobi.com to install Gurobi.

  2. First fetch and build boost using libc++

  3. We expect this libc++ boost to be installed at '/opt/local/libcpp-software'

    mkdir tmp
    cd tmp
    http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.tar.gz
    tar -zxvf boost_1_57_0.tar.gz
    cd boost_1_57_0
    ./bootstrap.sh --prefix=/opt/local/libcpp-software
    sudo ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" --layout=tagged  install
    cd ../../
    rm -fr tmp
    

  4. Second, build the dependent libraries included in the 'ext' directory. These are the 'leveldb' and the 'libspatialindex' libraries

  5. Enter into the external software dir

    
    cd ext/src
    

  6. Build leveldb

    cd leveldb
    CC=clang CXX=clang++ CXXFLAGS="-std=c++11 -stdlib=libc++" make -j 4
    cd ..
    

  7. Build libspatialindex

    cd libspatialindex
    CC=clang CXX=clang++  CXXFLAGS="-std=c++11 -stdlib=libc++" ./configure --prefix $(cd ../..; pwd)
    make -j 4
    make install
    cd ..
    

  8. Build gtest

    cd gtest
    CC=clang CXX=clang++  CXXFLAGS="-std=c++11 -stdlib=libc++" ./configure --prefix $(cd ../..; pwd)
    make
    cp -fr include/gtest ../../include
    cp lib/.libs/libgtest* ../../lib/
    

  9. Go back to the top level

    cd ../..
    

  10. Third, build libintergdb

    cd libintergdb
    make -j 4
    cd ..
    

  11. Last, run a test application

    cd test/SimpleTest
    make
    ./bin/SimpleTest
    

railwaydb's People

Contributors

bgedik avatar robertsoule avatar

Stargazers

Servio Palacios avatar  avatar  avatar

Watchers

 avatar Michele Lanza avatar James Cloos avatar  avatar Daniel Rivera avatar Servio Palacios avatar

Forkers

xiaomailong

railwaydb's Issues

Crash on storage overhead of 0 for twitter dataset tests

While running the experimental setup for different amounts of query templates, I also experimented with the storage overhead. Setting it to 0 resulted in a crashed that was caused by an invalid partitioning coming from the Non-Overlapping heuristic. This is invalid behaviour, as a this simply indicates that the only valid partitioning is a single partition.

I tested this with different experimental setups and the issue seems to be based on a randomized input, since it is inconsistent in its behaviour. The Heuristic itself will also return without issue, propagating the error elsewhere, causing different error messages to be shown.

To reproduce:

  1. Enable the VsTimeDeltaBFS (or any other experimental setup) in code/simulation/src/intergdb/simulationMain.ccp .
  2. Set the storage overhead constant to 0.0. This constant is declared locally in the VsTimeDeltaBFS::process() method implementation. (Or process method of your setup of choice.)
  3. Run the simulation a few times. I got 'lucky' almost every run.

test case crashes

$ bin/test

Process 32682 stopped

  • thread #1: tid = 0xf6572a, 0x0000000100001529 testnov_ex3_verify(partitioning=<unavailable>) + 41 at Main.cpp:119, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x10) frame #0: 0x0000000100001529 testnov_ex3_verify(partitioning=) + 41 at Main.cpp:119
    116 throw runtime_error("nov_ex3_verify: partition size is not equal to 2");
    117 auto const & attributes = part->getAttributes();
    118 Attribute const * smallAttribute, * largeAttribute;
    -> 119 if ((_attributes.begin())->getIndex()==(_attributes.end())->getIndex()) {
    120 throw runtime_error("nov_ex3_verify: attributes in partition has same index");
    121 } else if ((_attributes.begin())->getIndex()>(_attributes.end())->getIndex()) {
    122 largeAttribute = (*attributes.begin());

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.