DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Couchbase


Couchbase is an open-source, distributed NoSQL document database. It supports the Memcached client protocol and provides extra features like disk persistence, data replication.[04]

Source Code
https://github.com/couchbase/manifest[02]
Developer
Country of Origin
US
Start Year
2010 [23]
Former Name
Membase
Project Types
Commercial, Open Source
Written in
C, C++, Erlang, Go
Supported Languages
C, C#, Go, Java, JavaScript, PHP, Python
Derived From
CouchDB
Compatible With
Memcached
Operating Systems
Linux, macOS, Windows
License
Apache v2
Twitter
@couchbase[05]

Database Entry

Couchbase


Couchbase is an open-source, distributed NoSQL document database. It supports the Memcached client protocol and provides extra features like disk persistence, data replication.[04]

History[04]


In 2010, the initial version of Couchbase, originally called Membase, was developed at NorthScale, which was founded by developers from Memcached project.

In February 2011, the Membase project founders and Membase, Inc. merged with CouchOne (a company with many engineers behind CouchDB) as a new company called Couchbase, Inc.

In January 2012, Membase was renamed to Couchbase Server.

Checkpoints[06]


The checkpoint inside the Couchbase Server is a record of last sequenceID. The Sequence ID is an internal unique number for every change happened in Couchbase Server with chronological increasing order. The replicator of the Couchbase Server sends the checkpoint of last change to the target at the end of every replication cycle. The target could be any remote Couchbase Server database where the changes are replicated.

Compression[03]


Couchbase Server (Enterprise Edition) applies data compression to documents with the Snappy third-party library. There are three modes of compression in Couchbase Server.

  • Off Mode: The Couchbase Server decompresses the document if it is compressed, and stores the uncompressed document in memory but recompresses it when storing on disk. Also, Couchbase server sends the document in uncompressed form.

  • Passive Mode: When Couchbase Server receives the compressed document, it stores the compressed document in memory and disk. At the same time, the documents are sent in compressed form.

  • Active Mode: Couchbase Server stores and sends compressed document even if the document is uncompressed.

Concurrency Control[07]


Couchbase Server offers both optimistic and pessimistic locking to guarantee concurrency. The optimistic locking is implemented with Compare-and-Swap (CAS) value, which is a unique and atomic incrementing identifier inside the metadata of document. Couchbase Server verifies the CAS value before a document is modified. It also supports pessimistic locking which is less commonly used.

Data Model[08]


The documents stored in Couchbase Server are in JSON or binary format.

Foreign Keys[09]


Couchbase Server does not support foreign keys.

Hardware Acceleration[10]


Not Supported

Indexes[11][12]


A few of indexes are available in Couchbase Server:

  • Primary Index is based on the unique key of every item in a specified bucket. The bucket is introduced in "Storage Model". Primary index contains a full set of keys in a configured key space.

  • Global Secondary Index (GSI) is the most frequently used index in Couchbase Server. The indexer for GSI creates a B+ tree for fast scans on the index key. Also, there is a Memory-Optimized GSI index which uses the skip-list structure as opposed to B-tree indexes.

  • Full Text is provided by the Search Service and it contains targets derived from the contents of documents within one or more specified buckets.

  • View index is generated with fields and information extracted from documents.

Isolation Levels[13]


Couchbase Server provides read committed isolation at the single document level. However, by enabling a more restrictive concurrency control scheme, supports serializable isolation for a single document.

Joins[14]


Couchbase Server supports lookup join, index join and ANSI join in its N1QL interface.

Query Interface[15]


Couchbase Server presents a new SQL language called N1QL which is a SQL extension for JSON as the query interface.

Storage Architecture[16]


Couchbase Server maintains hot data in the memory to achieve high performance. The data which is not recently used will be swapped on to disks.

Storage Model[17][18]


Couchbase Server stores items in the Buckets. There are two kinds of Buckets in the Couchbase. One is Couchbase Buckets which could reside both in memory and disks. Another is Ephemeral bucket which only stays in the memory.

Storage Organization[18]


Couchbase Server uses Couchstore to store its data. Each Bucket (the smallest unit of Couchbase's storage model) is stored as a separate Couchstore file in the file system. B+tree structure is used to provide fast items access. Append-only write model is applied for efficient writes.

Stored Procedures[19]


A similar feature called "Prepared queries" is supported in Couchbase Server.

System Architecture[20]


Each machine running Couchbase Server is a single node, and multiple nodes could join together as a cluster. Every node of the cluster has a Cluster Manager module for communication. The data inside the cluster is well distributed and replicated over the nodes.

Views[21][22]


Three views are supported by Couchbase Server: MapReduce views, Spatial views and Global Secondary Indexes (GSI) views. They could be accessed by customized APIs or N1QL interface.

Citations

23 sources
  1. Couchbase | Home couchbase.com
  2. GitHub - couchbase/manifest: Top-level source repository for Couchbase Server source code and build projects · GitHub github.com
  3. Couchbase Documentation | Couchbase Docs couchbase.com
  4. Couchbase Server - Wikipedia wikipedia.org
  5. https://twitter.com/couchbase twitter.com
  6. https://blog.couchbase.com/data-replication-couchbase-mobile couchbase.com Dead — Check Archive
  7. Data | Couchbase Docs couchbase.com
  8. The Couchbase Data Model | Couchbase Docs couchbase.com Dead — Check Archive
  9. https://blog.couchbase.com/moving-from-sql-server-to-couchbase-part-1-data-modeling couchbase.com Dead — Check Archive
  10. System Resource Requirements | Couchbase Docs couchbase.com
  11. Indexes | Couchbase Docs couchbase.com
  12. Primary and Secondary Index Reference | Couchbase Docs couchbase.com
  13. https://blog.couchbase.com/acid-properties-couchbase-part-1 couchbase.com Dead — Check Archive
  14. https://blog.couchbase.com/ansi-join-support-n1ql couchbase.com Dead — Check Archive
  15. SQL++ for Query Reference | Couchbase Docs couchbase.com
  16. Buckets, Memory, and Storage | Couchbase Docs couchbase.com
  17. Buckets | Couchbase Docs couchbase.com
  18. Storage Properties | Couchbase Docs couchbase.com
  19. https://www.couchbase.com/forums/t/stored-procedures-in-n1ql/3551/7 couchbase.com Dead — Check Archive
  20. Clusters and Availability | Couchbase Docs couchbase.com
  21. Index Service | Couchbase Docs couchbase.com
  22. https://developer.couchbase.com/documentation/server/3.x/admin/Views/views-writing.html couchbase.com Dead — Check Archive
  23. NoSQL Companies CouchOne And Membase Merge To Form Couchbase | TechCrunch techcrunch.com
Revision #21