Couchbase Server

This manual documents the Couchbase Server database system. For differences between individual version within this release series, see the version-specific notes throughout the manual.

In addition to an introduction to Couchbase Server and a description of the relationship to NoSQL, this manual provides the following topics:

Enhancements in 2.5

Couchbase Server 2.5 includes the following new features and enhancement:

  • Rack Awareness (Enterprise Edition only)
  • XDCR data security (Enterprise Edition only)
  • Optimized connection management

Rack Awareness feature

The Rack Awareness feature allows logical groupings of servers on a cluster where each server group physically belongs to a rack or availability zone. This feature provides the ability to specify that active and corresponding replica partitions be created on servers that are part of a separate rack or zone. This increases reliability and availability in case entire racks or zones become unavailable.

See the following for more information about Rack Awareness:

XDCR data encryption feature

The cross data center (XDCR) data security feature provides secure cross data center replication using Secure Socket Layer (SSL) encryption. The data replicated between clusters can be SSL-encrypted in both uni and bi-directional.

With the XDCR data security feature, the XDCR traffic can be secured by selecting the XDCR encryption option and providing the remote cluster’s certificate.

Note

The certificate is an internal self-signed certificate used by SSL to initiate secure sessions.

See the following for more information about XDCR data encryption:

Optimized connection management

In releases prior to Couchbase Server 2.5, a developer, via a client library of their choice, randomly selects a host from which to request an initial topology configuration. Any future changes to the cluster map following the initial bootstrap are based on the NOT_MY_VBUCKET response from the server. This connection is made to port 8091 and is based on an HTTP connection.

Starting with Couchbase Server 2.5, client libraries may instead query a cluster for initial topology configuration for a bucket from one of the nodes in the cluster. This is similar to prior releases. However, this information is transmitted via the memcached protocol on port 11210 (rather than via persistent HTTP connections to port 8091). This significantly improves connection scaling capabilities.

Optimized connection management is backward compatible. Old client libraries can connect to Couchbase Server 2.5, and updated client libraries can connect to Couchbase Server 2.5 and earlier.

Note

This change is only applicable to Couchbase type buckets (not memcached buckets).

An updated client library is required take advantage of optimized connection management. Older client libraries will continue to use the port 8091 HTTP connection. See the client library release notes for details.

For more information, see Using a smart (vBucket aware) client in Deployment strategies.

Couchbase Server introduction

Couchbase Server is a NoSQL document database for interactive web applications. It has a flexible data model, is easily scalable, provides consistent high performance and is ‘always-on,’ meaning it is can serve application data 24 hours, 7 days a week. Couchbase Server provides the following benefits:

  • Flexible Data Model

    With Couchbase Server, you use JSON documents to represent application objects and the relationships between objects. This document model is flexible enough so that you can change application objects without having to migrate the database schema, or plan for significant application downtime. Even the same type of object in your application can have a different data structures. For instance, you can initially represent a user name as a single document field. You can later structure a user document so that the first name and last name are separate fields in the JSON document without any downtime, and without having to update all user documents in the system.

    The other advantage in a flexible, document-based data model is that it is well suited to representing real-world items and how you want to represent them. JSON documents support nested structures, as well as field representing relationships between items which enable you to realistically represent objects in your application.

  • Easy Scalability

    It is easy to scale your application with Couchbase Server, both within a cluster of servers and between clusters at different data centers. You can add additional instances of Couchbase Server to address additional users and growth in application data without any interruptions or changes in your application code. With one click of a button, you can rapidly grow your cluster of Couchbase Servers to handle additional workload and keep data evenly distributed.

    Couchbase Server provides automatic sharding of data and rebalancing at runtime; this lets you resize your server cluster on demand. Cross-data center replication enables you to move data closer to your user at other data centers.

  • Consistent High Performance

    Couchbase Server is designed for massively concurrent data use and consistent high throughput. It provides consistent sub-millisecond response times which help ensure an enjoyable experience for users of your application. By providing consistent, high data throughput, Couchbase Server enables you to support more users with less servers. The server also automatically spreads workload across all servers to maintain consistent performance and reduce bottlenecks at any given server in a cluster.

  • “Always Online”

    Couchbase Server provides consistent sub-millisecond response times which help ensure an enjoyable experience for users of your application. By providing consistent, high data throughput, Couchbase Server enables you to support more users with less servers. The server also automatically spreads workload across all servers to maintain consistent performance and reduce bottlenecks at any given server in a cluster.

    Features such as cross-data center replication and auto-failover help ensure availability of data during server or datacenter failure.

All of these features of Couchbase Server enable development of web applications where low–latency and high throughput are required by end users. Web applications can quickly access the right information within a Couchbase cluster and developers can rapidly scale up their web applications by adding servers.

Couchbase Server and NoSQL

NoSQL databases are characterized by their ability to store data without first requiring one to define a database schema. In Couchbase Server, you can store data as key-value pairs or JSON documents. Data does not need to confirm to a rigid, pre-defined schema from the perspective of the database management system. Due to this schema-less nature, Couchbase Server supports a scale out approach to growth, increasing data and I/O capacity by adding more servers to a cluster; and without any change to application software. In contrast, relational database management systems scale up by adding more capacity including CPU, memory and disk to accommodate growth.

Relational databases store information in relations which must be defined, or modified, before data can be stored. A relation is simply a table of rows, where each row in a given relation has a fixed set of columns. These columns are consistent across each row in a relation. Tables can be further connected through cross-table references. One table, could hold rows of all individual citizens residing in a town. Another table, could have rows consisting of parent, child and relationship fields. The first two fields could be references to rows in the citizens table while the third field describes the parental relationship between the persons in the first two fields such as father or mother.

Deprecated items

The following are items that are deprecated, will be deprecated, or are unsupported.

  • The _all_docs view is not supported. To recreate the features provide by _all_docs, use the default view. For more information, see the Views section.
  • The undocumented facility for enabling legacy memcached detailed stats through “stats detail on” and “stats detail dump” is deprecated.

Platforms

The following operating systems were or will be deprecated.

Operating System Description/Status Deprecated version Unsupported version
Linux 32-bit operating systems (CentOS, Ubuntu, RHEL) will not be supported. 2.5.x 3.0.0
Windows 32-bit operating systems will only be supported for development purposes. 32-bit production systems will not be supported. 2.5.x 3.0.0
CentOS 5 Centos 5 will not be supported after Couchbase Server version 3.0. 3.0.0 3.0.x
Ubuntu 10.04 Ubuntu 10.04 will not be supported after Couchbase Server version 3.0.0 3.0.0 3.0.x

REST API

The following REST API URI was or will be deprecated.

REST API URI Description Deprecated version Unsupported version
Server nodes /pools/nodes URI for obtaining information about nodes in a Couchbase cluster. 3.0.0 3.0.x
  • To obtain information about nodes in a Couchbase cluster, use the ‘/pools/default/buckets/default’ URI.

CLI tools and parameters

The following are tools that existed in previous versions but have been deprecated and removed as of Couchbase Server 1.8:

Tool Server Versions Description/Status
tap.py 1.8 Deprecated in 1.8.
cbclusterstats 1.8 Deprecated in 1.8. Replaced by cbstats in 1.8.
membase 1.7 Deprecated in 1.8. Replaced by couchbase-cli in 1.8.1
mbadm-online-restore 1.7 Deprecated in 1.8. Replaced by cbadm-online-restore in 1.8.1
membase 1.7 Deprecated in 1.8, replaced by couchbase-cli
mbadm-online-restore 1.7 Deprecated in 1.8, replaced by cbadm-online-restore
mbadm-online-update 1.7 Deprecated in 1.8, replaced by cbadm-online-update
mbadm-tap-registration 1.7 Deprecated in 1.8, replaced by cbadm-tap-registration
mbbackup-incremental 1.7 Deprecated in 1.8, replaced by cbbackup-incremental
mbbackup-merge-incremental 1.7 Deprecated in 1.8, replaced by cbbackup-merge-incremental
mbbackup 1.7 Deprecated in 1.8, replaced by cbbackup
mbbrowse_logs 1.7 Deprecated in 1.8, replaced by cbbrowse_logs
mbcollect_info 1.7 Deprecated in 1.8, replaced by cbcollect_info
mbdbconvert 1.7 Deprecated in 1.8, replaced by cbdbconvert
mbdbmaint 1.7 Deprecated in 1.8, replaced by cbdbmaint
mbdbupgrade 1.7 Deprecated in 1.8, replaced by cbdbupgrade
mbdumpconfig.escript 1.7 Deprecated in 1.8, replaced by cbdumpconfig.escript
mbenable_core_dumps.sh 1.7 Deprecated in 1.8, replaced by cbenable_core_dumps.sh
mbflushctl 1.7 Deprecated in 1.8, replaced by cbflushctl
mbrestore 1.7 Deprecated in 1.8, replaced by cbrestore
mbstats 1.7 Deprecated in 1.8, replaced by cbstats
mbupgrade 1.7 Deprecated in 1.8, replaced by cbupgrade
mbvbucketctl 1.7 Deprecated in 1.8, replaced by cbvbucketctl

Deprecated parameters

The following CLI parameter is deprecated.

Tool Parameter Description Deprecated version Unsupported version
cbepctl flush_param flushall_enabled The flushall_enabled parameter is deprecated. 2.2 2.5

Unsupported CLI tools

The following are tools that are visible in Couchbase Server 2.0 installation; however the tools are unsupported. This means they are meant for Couchbase internal use and will not be supported by Couchbase Technical Support:

  • cbbrowse_logs

  • cbdump-config

  • cbenable_core_dumps.sh

  • couch_compact

  • couch_dbdump

  • couch_dbinfo

  • memslap