apavlo/h-store — Issue #16: Implement New Client Interfaces
Author: apavlo
Created: 2012-01-11 16:41:00+00:00
State: open
Labels: cs227, easy

One of the key distinctions of good a DBMS is if it supports a wide-variety of client protocols and interfaces. H-Store only supports Java-based clients that issue transaction requests through a custom (but open-source) protocol based on the [VoltDB wire protocol](http://community.voltdb.com/docs/WireProtocol/index).

For this project, students will extend H-Store support different client interfaces. This will allow applications to issue transaction requests and receive results without using the default Java library. The goal of this project is to familiarize students with asynchronous approaches for accessing databases that are commonly used in large-scale deployments.

1. Implement a JSON-based interface in `HStoreSite`. Each node will start an HTTP server that can receive transaction requests. Students may use the [VoltDB JSON interface](http://community.voltdb.com/docs/UsingVoltDB/ProgLangJson) as a reference.

2. Implement support for the [Memcached text protocol](https://github.com/memcached/memcached/blob/master/doc/protocol.txt). The Memcache operations will be mapped to special StmtProcedures that automatically invoke queries needed to perform the appropriate action in the database. Andy will need to first add support for VARBINARY data type. Again, students may reference the [VoltCache](http://voltdb.com/voltcache) implementation.

3. **Optional:** Extend the HTTP server used for the JSON interface to provide a web-based terminal for interacting with H-Store. Such a web-site could be extended to include cluster information, and the ability to control nodes.