Table of Contents
Membase is a distributed, key-value ("NoSQL") database management system optimized for storing data behind web applications. These applications are characterized by their need to serve many interactive users concurrently; they must create, store, retrieve, aggregate, manipulate and present data in real-time. Supporting these requirements, Membase processes both read and write operations with low, quasi-deterministic (sub-millisecond) latency and high sustained throughput. Membase maintains its performance characteristics across the entire scaling spectrum: from a single server running Membase to a cluster aggregating thousands of Membase servers.
To accommodate growth of database size or increases in data access volume, Membase distributes data and I/O load across individual servers which collectively form a Membase cluster. Applications access a Membase cluster using language- or framework-specific client libraries. For any given data operation, a client library can rapidly identify and direct the request to the cluster member holding the target data. It is the distribution of intelligence across both cluster members and clients which allows Membase to scale so effectively.
Membase source code is available under the Apache 2.0 license and the development project is hosted at couchbase.com. Commercially-supported packages of Membase, and related products and services, are available from Couchbase, Inc. at couchbase.com.
The core Membase development team includes the leading contributors to the Memcached open source project. Memcached is the world's most widely deployed distributed object caching technology and a core infrastructure component of thousands of web applications including Google, Facebook, YouTube, FarmVille, Twitter and Wikipedia. For the thousands of software systems already built atop Memcached, Membase is a drop-in replacement.
Memcached was initially realeased in 2003 and has been maturing in complex production environments for nearly a decade. There are client libraries for every language and web framework and a rich ecosystem of supporting utilities and users. On-the-wire compatibility with Memcached means Membase inherits the benefits of this ecosystem.
Membase Server is a high-performance, highly-available, distributed, key-value database. It is optimized for storing the data behind web applications and is a scale-out ("elastic") technology at its core. As an application's user base grows, increasing the amount of data and the frequency of database operations, one simply adds more commodity servers to a Membase cluster. Data automatically rebalances across the cluster, immediately increasing the aggregate data storage and I/O capacity - and with zero impact to applications built atop the Membase layer. Every Membase design decision was vetted against three non-negotiable requirements: Simple, Fast, Elastic.
Membase provides a scalable, extremely cost-effective place to store vast quantities of data. Everything about Membase is easy: getting, installing, managing, expanding and using it. As a key-value database, there is no need to create and manage schemas; and never a need to normalize, shard or tune the database. Membase is 100% compatible with Memcached - the most widely deployed weapons-grade distributed key-value caching software on the planet. Memcached is an indispensible enabling technology behind 18 of the top 20 most heavily-trafficked websites (including Google, Facebook, Twitter, YouTube, Wikipedia and Craigslist) and tens of thousands of others. Memcached compatibility means every language and application framework can already "speak Membase." Membase was built by the leading contributors to the Memcached open source project.
Membase is screamingly, predictably fast. It is the lowest latency, highest throughput "NoSQL" database technology available, by a wide margin. But even more important is the predictability of Membase performance. While other systems may demonstrate peak or burst performance approaching that of Membase Server, their performance invariably hiccups, sputters, slows and delays. Hiccups, sputters and delays underneath a web application result in lost sales, lost audiences and frustrated users. Membase provides quasi-deterministic latency and throughput. When your application needs data, right now, it will get it, right now. That means happy application users.
Expanding (or contracting) a Membase cluster is as easy as spinning up or down a few new VMs (or commodity servers) and hitting the rebalance button (or sending a rebalance request using the Membase REST interface or CLI utility). Data is automatically re-distributed across the cluster, increasing or reducing aggregate I/O and storage capacity to optimally match the needs of an application. Membase is also a highly-available infrastructure component. There are no single points of failure in a Membase cluster (every node is just like every other node) and all operations function across the entire cluster. Sophisticated replication and persistence subsystems guarantee continuous operations through localized failures and rapid recovery from widespread outages.