Couchbase Server is an open-source, distributed NoSQL document-oriented database. It is desgined for interactive applications involving multiple users and concurrency operations. Couchbase server provides well-scaled key-value or JSON document access. It supports the Memcached client protocol and provides extra features like disk persistence, data replication, rebalancing and multi-tenancy with data partitioning, etc.[04]
- Source Code
- https://github.com/couchbase/manifest[02]
- Developer
- Country of Origin
- US
- Start Year
- 2010 [22]
- Former Name
- Membase
- Project Types
- Commercial, Open Source
- Derived From
- CouchDB
- Compatible With
- Memcached
- License
- Apache v2
Couchbase Server is an open-source, distributed NoSQL document-oriented database. It is desgined for interactive applications involving multiple users and concurrency operations. Couchbase server provides well-scaled key-value or JSON document access. It supports the Memcached client protocol and provides extra features like disk persistence, data replication, rebalancing and multi-tenancy with data partitioning, etc.[04]
History[04]
In 2010, the origination of Couchbase, Membase, was developed by a company called 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, Couchbase Server 1.8 was released and 1.8 was the first version after rename from Membase.
In December 2012, Couchbase Server 2.0 was released. New features like JSON new document store, indexing and querying, incremental MapReduce and replication across data centers are added.
The latest version of Couchbase Server is 6.0.0.
Checkpoints[05]
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 chronologically 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 here could be any remote database where the changes are replicated.
Compression[03]
Couchbase Server (Enterprise Edition) applies data compression to documents with a 3rd party open-source library Snappy. It provides three modes of compression.
-
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. Also, the documents are sent in compressed form.
-
Active Mode. Couchbase Server stores and sends compressed document even if the document is uncompressed.
Concurrency Control[06]
Couchbase Server offers both optimistic and pessimistic locking to guarantee concurrency. The optimistic locking is implemented on the Compare-and-Swap (CAS) Value, which is a unique and atomically incrementing identifier inside the metadata of document. Couchbase Server verifies the CAS Value before a document is modified. Couchbase Server also supports pessimistic locking but it is less commonly used.
Indexes[10][11]
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 contains a full set of keys in a given key space.
-
Global Secondary Index (GSI) is the most frequently used index in Couchbase Server, for queries performed with the N1Ql query-language. 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.
-
Views are supported with fields and information extracted from documents.
Isolation Levels[12]
Couchbase Server provides read committed isolation by default at the single document level. However, by using the provided optimistic locking and pessimistic locking, user can obtain serialized isolation of an individual document.
Query Interface[14]
Couchbase Server presents a new language called N1QL which is a SQL extension for JSON as the query interface.
Storage Architecture[15]
Couchbase Server maintains recent accessed data in the memory to achieve high performance and scalability. The data which is not recently used will be swapped on to disks.
Storage Model[16][17]
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[17]
Couchbase Server uses Couchstore to store core data operations. Each Bucket (the smallest unit of Couchbase's storage model) is stored as a separate Couchstore file in the file system. Couchstore uses a B+tree structure to quickly access items through their keys. Append-only write model is used for efficient and safe writes.
System Architecture[19]
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 evenly distributed and replicated over the nodes.
Views[20][21]
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 queries.
Citations
22 sources- Couchbase | Home couchbase.com
- GitHub - couchbase/manifest: Top-level source repository for Couchbase Server source code and build projects · GitHub github.com
- Couchbase Documentation | Couchbase Docs couchbase.com
- Couchbase Server - Wikipedia wikipedia.org
- https://blog.couchbase.com/data-replication-couchbase-mobile couchbase.com
- Data | Couchbase Docs couchbase.com
- The Couchbase Data Model | Couchbase Docs couchbase.com
- https://blog.couchbase.com/moving-from-sql-server-to-couchbase-part-1-data-modeling couchbase.com
- System Resource Requirements | Couchbase Docs couchbase.com
- Indexes | Couchbase Docs couchbase.com
- Primary and Secondary Index Reference | Couchbase Docs couchbase.com
- https://blog.couchbase.com/acid-properties-couchbase-part-1 couchbase.com
- https://blog.couchbase.com/ansi-join-support-n1ql couchbase.com
- SQL++ for Query Reference | Couchbase Docs couchbase.com
- Buckets, Memory, and Storage | Couchbase Docs couchbase.com
- Buckets | Couchbase Docs couchbase.com
- Storage Properties | Couchbase Docs couchbase.com
- https://www.couchbase.com/forums/t/stored-procedures-in-n1ql/3551/7 couchbase.com
- Clusters and Availability | Couchbase Docs couchbase.com
- Index Service | Couchbase Docs couchbase.com
- https://developer.couchbase.com/documentation/server/3.x/admin/Views/views-writing.html couchbase.com
- NoSQL Companies CouchOne And Membase Merge To Form Couchbase | TechCrunch techcrunch.com