What is Orestes? Orestes is a REST/HTTP database access protocol for object-oriented persistence that allows read requests to scale horizontally: Scalability is achieved by using Web Proxy Caches to serve database objects, while keeping strong ACID transaction semantics through optimistic verification mechanisms. We call this protocol Orestes (Objects RESTfully encapsulated in standard formats) and validate the approach by comparative benchmarks for a cloud computing scenario.
Which problems does Orestes solve? The approach has several benefits:

Reads scale horizontally

Low latency

Cloud and service capable DB interface

Reduction of server load

Arbitrary combinations of persistence API and DB

Browser persistence and administration

What is new about Orestes? The emergence of cloud computing and NoSQL databases has demonstrated a clear demand for scalable database systems with cloud capable, web-based interfaces. With Orestes we try to reconcile four desirable system properties:
  • Low latency access, to mitigate possible database/application distribution
  • Horizontal scalability for read requests
  • HTTP access based on standards
  • Loose coupling of persistence APIs and database systems
These four properties of database access are crucial for novel application architectures. In particular applications deployed in cloud environments mostly need to interact with their services (one of which is persistence) via stateless HTTP.
How can I use it? We developed an implementation of the Orestes network layer in Java, which is easily extensible for new formats, new persistence APIs and new database systems. We created a server-side binding for two object oriented (OO) database systems, the Versant Object Database (VOD) and db4o, as well as client-side binding for JDO and a JPA port for JavaScript. The generic Java Orestes layer also contains a web interface that can be used to browse the database via the REST resource structure.
We will provide access to our implementation soon and are working on a web-based console allowing to try Orestes.
How does it work? Here is an example of a client requesting an object and all the systems this request passes through in our implementation of Orestes:
Resources Links Contact