Giter VIP home page Giter VIP logo

hyrise's Introduction

Build Status Coverage Status

Welcome to Hyrise

This is the repository for the current Hyrise version, which has been rewritten from scratch. The new code base is easier to setup, to understand, and to contribute to. As of now, not all features of the old version are supported yet - we are working on that.

Papers that were published before October 2017 were based on the previous version of Hyrise, which can be found here.

Getting started

Have a look at our contributor guidelines

You can find definitions of most of the terms and abbreviations used in the code in the glossary. If you ca not find something that you are looking for, feel free to open an issue.

The Step by Step Guide is a good starting point to get to know Hyrise.

Native Setup

You can install the dependencies on your own or use the install.sh script (recommended) which installs all of the therein listed dependencies and submodules. The install script was tested under macOS (brew) and Ubuntu 17.04/17.10 (apt-get).

See dependencies for a detailed list of dependencies to use with brew install or apt-get install, depending on your platform. As compilers, we generally use the most recent version of clang and gcc (Linux only). Please make sure that the system compiler points to the most recent version or use cmake (see below) accordingly. Older versions may work, but are neither tested nor supported.

Setup using Docker

To get all dependencies of Hyrise in a docker image, run

docker-compose build

You can start the container via

docker-compose run --rm hyrise

Inside of the container, run ./install.sh to download the required submodules. :whale:

Building and Tooling

It is highly recommended to perform out-of-source builds, i.e., creating a separate directory for the build. Advisable names for this directory would be cmake-build-{debug,release}, depending on the build type. Within this directory call cmake .. to configure the build. Subsequent calls to CMake, e.g., when adding files to the build will not be necessary, the generated Makefiles will take care of that.

Compiler choice

CMake will default to your system's default compiler. To use a different one, call like cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. in a clean build directory.

Build

Simply call make -j*, where * denotes the number of threads to use.

Usually debug binaries are created. To configure a build directory for a release build make sure it is empty and call CMake like cmake -DCMAKE_BUILD_TYPE=Release

Lint

./scripts/lint.sh (Google's cpplint is used which needs python 2.7)

Format

./scripts/format.sh (clang-format is used)

Test

Calling make hyriseTest from the build directory builds all available tests. The binary can be executed with ./<YourBuildDirectory>/hyriseTest. Note, that the tests/sanitizers/etc need to be executed from the project root in order for table files to be found.

Coverage

./scripts/coverage.sh <build dir> will print a summary to the command line and create detailed html reports at ./coverage/index.html

Supports only clang on MacOS and only gcc on linux

Address/UndefinedBehavior Sanitizers

make hyriseSanitizers will build Hyrise's tests with enabled AddressSanitizer and Undefined Behavior options. Execute ./<YourBuildDirectory>/hyriseSanitizers from the project root to run the tests with enabled sanitization. It will fail on the first detected error and will print a summary. To convert addresses to actual source code locations, make sure llvm-symbolizer is installed (included in the llvm package) and is available in $PATH. To specify a custom location for the symbolizer, set $ASAN_SYMBOLIZER_PATH to the path of the executable. This seems to work out of the box on macOS - If not, make sure to have llvm installed. The binary can be executed with LSAN_OPTIONS=suppressions=asan-ignore.txt ./<YourBuildDirectory>/hyriseSanitizers.

Compile Times

When trying to optimize the time spent building the project, it is often helpful to have an idea how much time is spent where. scripts/compile_time.sh helps with that. Get usage instructions by running it without any arguments.

Maintainers

  • Jan Kossmann
  • Markus Dreseler
  • Martin Boissier
  • Stefan Klauck

Contact: [email protected]

Contributors

  • Yannick Bäumer
  • Lawrence Benson
  • Timo Djürken
  • Fabian Dumke
  • Moritz Eyssen
  • Martin Fischer
  • Pedro Flemming
  • Sven Ihde
  • Michael Janke
  • Max Jendruk
  • Marvin Keller
  • Sven Lehmann
  • Jan Mattfeld
  • Arne Mayer
  • Torben Meyer
  • Leander Neiß
  • David Schumann
  • Daniel Stolpe
  • Jonathan Striebel
  • Nils Thamm
  • Carsten Walther
  • Fabian Wiebe
  • Tim Zimmermann

hyrise's People

Contributors

adi64 avatar bensk1 avatar bouncner avatar carstenwalther avatar dukeharris avatar f4lco avatar fabianwiebe avatar j-beyer avatar jfrohnhofen avatar johannalatt avatar jstriebel avatar julkw avatar klauck avatar lanice avatar lawben avatar michael-janke avatar mjendruk avatar mrks avatar nilsthamm avatar normanrz avatar svenlehmann avatar timzimmermann avatar torpedro avatar

Watchers

 avatar  avatar  avatar

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.