Couchbase Server

From Wikipedia, the free encyclopedia
  (Redirected from Couchbase)
Jump to: navigation, search
Couchbase Server
Couchbase Server Screenshot.jpg
Developer(s) Couchbase, Inc.
Stable release 2.5.1 / March 31, 2014 (2014-03-31)
Written in C++, Erlang, C[1]
Operating system Cross-platform
Type distributed key-value / document database system
License Apache License (Community edition), Proprietary (Enterprise edition)
Website www.couchbase.com

Couchbase Server, originally known as Membase, is an open source, distributed (shared-nothing architecture) NoSQL document-oriented database that is optimized for interactive applications. These applications must service many concurrent users; creating, storing, retrieving, aggregating, manipulating and presenting data. In support of these kinds of application needs, Couchbase is designed to provide easy-to-scale key-value or document access with low latency and high sustained throughput. It is designed to be clustered from a single machine to very large scale deployments.

For those familiar with memcached, Couchbase Server provides on-the-wire client protocol compatibility,[2] but is designed to add disk persistence, data replication, live cluster reconfiguration, rebalancing and multitenancy with data partitioning.

Companies like AOL, Cisco, Concur, LinkedIn, Orbitz,[3] Salesforce.com, Shuffle Master, Zynga, NHN Corporation and hundreds of others around the world use Couchbase Server for their interactive web and mobile applications.

In the parlance of Eric Brewer’s CAP theorem, Couchbase is a CP type system.

Product history[edit]

Membase was developed by several leaders of the memcached project, who had founded a company, NorthScale, to develop a key-value store with the simplicity, speed, and scalability of memcached, but also provided the storage, persistence and querying capabilities of a database. The original membase source code was contributed by NorthScale, and project co-sponsors Zynga and NHN to a new project on membase.org in June 2010.

On February 8, 2011, the Membase project founders and Membase, Inc. announced a merger with CouchOne (a company with many of the principal players behind CouchDB) with an associated project merger. The merged company was called Couchbase, Inc. In January 2012, Couchbase released Couchbase Server 1.8. On December 2012, Couchbase Server 2.0 was released, with new features including a new JSON document store, indexing and querying, incremental MapReduce and cross datacenter replication.[4]

High-level architecture[edit]

Every Couchbase node is architecturally identical consisting of a data manager and cluster manager component.

Cluster manager[edit]

The cluster manager supervises the configuration and behavior of all the servers in a Couchbase cluster. It configures and supervises internode behavior like managing replication streams and rebalancing operations. It also provides metric aggregation and consensus functions for the cluster, and a RESTful cluster management API. The cluster manager is built atop Erlang/OTP, a proven environment for building and operating fault-tolerant distributed systems.

Replication and failover[edit]

  • Multi-model replication support: Peer-to-peer replication support with underlying architecture supporting master-slave replication
  • Configurable replication count: Balance resource utilization with availability requirements
  • High-speed failover: Fast failover to replicated items based upon request

Data manager[edit]

The data manager is responsible for storing and retrieving documents in response to data operations from applications.

  • Asynchronously writes data to disk after acknowledging write to client. In version 1.7 and later, applications can ensure data is synced to more than one server, while disk writes are still asynchronous.
    • Tunables to define item ages that affect when data is persisted.
  • Supports working set greater than a memory quota per "node" or "bucket"
    • Tunables to affect how max memory and migration from main-memory to disk is handled.
  • Configurable “tap” interface: External systems can subscribe to filtered data streams supporting, for example, full text search indexing, data analytics or archiving.[5]

Data format[edit]

A document is the most basic unit of data manipulation in Couchbase Server. Documents are stored in JSON document format with no predefined schemas.

Object managed cache[edit]

Couchbase Server includes a built-in multithreaded object-managed cache that implements memcached compatible APIs such as get, set, delete, append, prepend etc. The object-managed cache provides consistent sub-millisecond latency for read and writes operations, independent of the load or size of the data accessed.

Storage engine design[edit]

Couchbase Server has a tail-append storage design that is immune to data corruption, OOM killers or sudden loss of power. Data is written to the data file in an append-only manner, which enables Couchbase to do mostly sequential writes for update, and provide an optimized access patterns for disk I/O.

Performance[edit]

Cisco published a benchmark that measures the latency and throughput of Couchbase Server [6] with a mixed workload. Another performance benchmark done by Altoros, compares Couchbase Server with other NoSQL database solutions.[7]

Licensing and support[edit]

Couchbase Server is a packaged version of Couchbase's open source technology and is available in two variants: a Community Edition without recent bug fixes as Open Source (Apache 2.0 license[citation needed]) distribution, and an Enterprise Edition for commercial use.[8]

Couchbase Server builds are available for Ubuntu, Red Hat, Windows and Mac OSX platforms.

See also[edit]

Bibliography[edit]

  • Brown, MC (June 22, 2012). Getting Started with Couchbase Server (1st edition). O'Reilly Media. p. 88. ISBN 978-1449331061. 

References[edit]

External links[edit]