Stasis: Transactions Without SQL
blog comments powered by Disqus
Stasis is "a flexible transactional storage library that is geared toward high-performance applications and system developers."
It's a difficult challenge to build applications that have persistent state, yet are robust against failures. The typical way to solve this problem is to use a database. Transactions are an great technology for making sure the system is in a correct state on recovery, and the database's storage model ensures that application state is persistent.
However, databases come with a cost and a predefined data model. Their "one size fits all" approach defines a storage abstraction upon which the application must be built. But relational databases and SQL are not a good fit for many areas, such as search engines, object-oriented databases, XML, streaming databases, or document management systems.
Stasis is a storage library which takes a "bottom-up" approach instead. Applications are free to define their own storage abstractions, data layout, object models, or locking semantics. Stasis provides simple mechanisms for making sure that updates to the application's structures are persistent and transactional. Stasis was developed by Russell Sears at the University of California, Berkeley.
I'll walk through the Stasis API and show an example of how easy it is to create a robust, high-performance application.