Distributed key-value stores are a scalable alternative for relational databases and file systems. Different systems try to provide the right balance between scalability, consistency and reliability for a certain category of applications. Yet many applications don't have a single static set of requirements for all the data they create and use. In order to meet different requirements, the applications end up using multiple data stores, each with its own interface, or suffer the unnecessary performance degradation. This paper describes Hop, our attempt to define an interface that allows specification of different consistency and replication levels, and by allowing the assembly of different implementations of the interface, provides the right balance of consistency, scalability and availability for different parts of application data. We describe the Hop interface and evaluate some of the implementations we created, as well as how they can be combined to provide flexible distributed deployments.
展开▼