ksaur / kvolve

KVolve: an extension to the popular Redis database, to support the evolution of high-availability applications and their data online.

Home Page:http://www.cs.umd.edu/~mwh/papers/kvolve.pdf

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

See our Kvolve paper for full description

Kvolve files: (See redis-2.8.17/src/)

  • kvolve.c: code for kvolve wrapper functions, command table, and command parsing
  • kvolve.h: header listing all implemented wrapper functions
  • kvolve_internal.c: update mechanics, internal state tracking, version tracking
  • kvolve_internal.h: header/documentation for update mechanics
  • kvolve_upd.h: header/documentation for user-supplied update functions
  • uthash.h: a hashtable to help with data tracking

Getting started:

Tested on Ubuntu 12.04, 14.04, RHEL 6.5

Making redis:

make in redis-2.8.17
If you get an error about jemalloc: cd deps; make jemalloc

To run:

./redis-2.8.17/src/redis-server

To run tests:

tests/redis_server_tests$ ./run_all_tests.sh
(tests in parent directory, not tests in redis directory)

Changes made to redis-2.8.17 source code (7 lines of code in redis-2.8.17/src/):

4 lines of code to implement the version tag:

  • networking.c (2 changes)
    < #include "kvolve.h"
    < kvolve_process_command(c);

  • redis.h (1 change)
    < int vers;

  • object.c (1 change)
    < o->vers = -1;

3 lines of code so version data can be stored to the database:

  • rdb.c:
    int vers;
    if ((vers = rdbLoadType(&rdb)) == -1) goto eoferr;
    val->vers = vers;

About

KVolve: an extension to the popular Redis database, to support the evolution of high-availability applications and their data online.

http://www.cs.umd.edu/~mwh/papers/kvolve.pdf


Languages

Language:C 75.9%Language:Tcl 8.0%Language:HTML 6.3%Language:Perl 3.8%Language:Ruby 1.9%Language:C++ 1.1%Language:M4 1.0%Language:Makefile 1.0%Language:Shell 0.6%Language:Lua 0.3%Language:Roff 0.2%Language:Python 0.1%Language:CSS 0.0%Language:Batchfile 0.0%Language:Smarty 0.0%Language:XSLT 0.0%