GithubHelp home page GithubHelp logo

haplocheirus's Introduction

Haplocheirus

Haplocheirus is a redis-backed storage engine for timelines.

Disclaimer: This project is an experiment, and is not complete or deployed anywhere yet.

Timelines are lists of 64-bit ids, possibly with a small bit of attached metadata, in preserved order. New entries are always added at the "front". Old entries may be dropped off the "back" if the timeline exceeds a maximum size. Two timelines can be merged by assuming they're roughly sorted by id. A timeline query returns a slice of the timeline, newest first.

Goals

  • Highly available, partitioned
  • Structured vectors (each timeline entry is an atomic blob, not necessarily all alike)
  • Homogeneous service interface
  • Eliminate client side hashing
  • Preserve ability to expire timelines that aren't being read
  • Durable snapshots
  • Idempotent/commutative

Non-goals

  • Contain business logic for building timelines from scratch
  • Transactionally durable timelines

Structure

Gizzard is used to handle partitioning and job queueing, and Redis is used as the backend storage for each shard.

New features from redis 2.2 are required (LPUSHX and LINSERT for example), so for now, you will need to build redis from trunk: http://github.com/antirez/redis

Building

You need:

  • java 1.6
  • thrift 0.2.0
  • sbt 0.7.4
  • redis-server (2.2 trunk; see above)

You might want:

A special build of jredis is used, too, but currently the jar is included in the repo.

Then:

$ sbt clean update package-dist

Running

Start up your local redis server, then:

$ ./dist/haplocheirus-1.0/scripts/setup-env.sh

Community

License: Apache 2 (see included LICENSE file)

  • IRC: #twinfra on freenode (irc.freenode.net)

haplocheirus's People

Contributors

rcohen avatar szegedi avatar freels avatar garru avatar caniszczyk avatar

Watchers

James Cloos avatar Dario Bottazzi 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.