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 can serve application data 24 hours, 7 days a week. For more information about Couchbase Server 2.0, visit Couchbase Server 2.0.
The major new features available in Couchbase Server 2.0 include:
Flexible data model. Couchbase provides a schema-less, JSON-based data model which is more efficient and intuitive to work with compared to the fixed-schema approach used by RDBMS. With JSON you can use different structures for application objects; it is much easier to represent complex data, and you can add new types of data without having to go through typical schema migration.
Indexing and Querying. With Couchbase Server 2.0, you can easily find documents and perform calculations on your data by using views in 2.0. Indexes can be defined using JSON and JavaScript functions. Once you have defined your functions you can query the information or perform calculations on the information using Couchbase Web Console or a Couchbase SDK.
Incremental Map/Reduce. Couchbase Server supports incremental index building, meaning it only re-indexes documents that have been changed since the last index update. Instead of recomputing index results from the beginning every time data changes in your database, Couchbase Server stores intermediate results in the index and can recalculate this data only when necessary. This means you do not need to wait for a batch job across the entire data set to finish each time you want to see your results.
Cross Data Center Replication (XDCR). In 2.0, we add cross data center replication which enables you to replicate data from one cluster to another one so that your data is always available 24x365. It provides you with an easy way to replicate active data uni-directionally or bi-directionally between multiple data centers in different geographical areas. This provides you a copy of your data for disaster recovery and can help you bring your data closer to your end users for better application performance.
New Features and Behaviour Changes in 2.0.0
XDCR (Cross Data-Center Replication) Enhancements.
This includes the following features and enhancements:
Performance improvements. Performance for outbound replication from a source cluster to a destination has been improved. CPU utilization on destination clusters has been reduced for better performance.
Improved Error Handling and Logging. More information about documents and the size of documents awaiting replication now available.
UI Improvements for XDCR in the Couchbase Web Console.
The Couchbase Web Admin Console has been expanded to show the number of documents waiting to be replicated via XDCR and the total size of all documents waiting for replication. Low-level errors and statistics have been moved to a Couchbase Web Console log file to avoid information overload and confusion. Messages that are more appropriately categorized as recoverable states have been labeled warnings, not errors.
New sample data buckets are available to get you started with Couchbase Server 2.0. The new buckets include sample documents as well as views so you play around with the new Couchbase Server 2.0 features.
Online compaction for data and indexes, which kicks off based on fragmentation thresholds. You can configure these thresholds along with the compaction schedule. In addition, the UI gives you more visibility into background compaction. For more information, see 「自動コンパクションの設定」.
There is also now a new REST-API in Couchbase Server 2.0 where you can enable or disable flush for each data bucket in a cluster. This also enables you to flush an individual bucket in a cluster or multiple buckets on a cluster with a single REST-API command. For more information, see 「バケットのフラッシュ」.
Issues: MB-6776
Improve and enable data flush for entire cluster via individual data buckets. Ability to disable and enable the configuration setting for safe cluster administration. For more information, see 「Couchbaseバケットの編集」.
New command-line tools, and consolidated tools provided in new locations. This is to simplify your use of these tools. For more information about these improvements, and the location of new tools, see 「コマンドラインツールと利用可能状況」.
Improved working set management. When your working set of documents becomes larger than allocated memory, the system needs to eject documents. Couchbase now tracks recently accessed, updated or inserted documents and ejects “not recently used” documents from RAM. This working set metadata is also replicated so that after a rebalance operation, your working set is maintained on the new nodes in the cluster for reduced latencies post rebalance.
Server logs have been split and have been provided logical naming. This makes it easier for you to spot or diagnose server issues. For more information, see 「ログとログ出力」.
Querying Views during Rebalance.
If you perform queries during rebalance, this new feature will ensure that you receive the query results that you would expect from a node as if it is not being rebalanced. During node rebalance, you will get the same results you would get as if the data were on an original node and as if data were not being moved from one node to another. In other words, this new feature ensures you get query results from a new node during rebalance that are consistent with the query results you would have received from the node before rebalance started.
With this new feature, you will get the same query results before rebalance, during rebalance and after rebalance. Without this new functionality querying a view during rebalance would have provided results inconsistent with the results from a source node. With this new functionality enabled, data that is being moved from one node to another node will be incrementally added to an index available at the new node so that you get query results that are consistent with your expectations.
New append-only persistence engine. This improves disk write performance as updates are written only to the end of the file. Additional disk resources are required..
Shorter server warm-up time. When Couchbase Server is restarted, or when it is started after an offline recovery from backup, the server goes through a warm-up process first loading metadata from disk into RAM. Additionally, it loads the documents that belong to the tracked working set maintained in an access log. This reduces warm-up time and also makes the most relevant data available instead of sequentially loading all data into RAM.
General Changes in Rebalance Behavior.
During rebalance, Couchbase Server now has new internal logic that will wait for data to be persisted at a new node before the new node takes responsibility for serving the data. In situations where you want a very high level of durability, this can provide you more assurance that your data can be recovered after node failures.
Database Operations
Now provide timestamp for when a TAP queue backfill starts. The TAP backfill queue is used to send a snapshot of a vbucket to another node.
Issues: MB-6753
Couchbase Server had created new checkpoints even in the case where empty, current checkpoints were available. The server provided extraneous notifications when various changes to checkpoints ID occurred due to constant polling by XDCR. Now when an empty checkpoint is available, the server uses this checkpoint for additional replication and provide this checkpoint ID to XDCR. The server also pushes a single notification to XDCR when a checkpoint is empty.
In the past if you set the disk path for data to be the same path as that for index files, Couchbase Server would fail to start. This is fixed.
Issues: MB-6995
In the past, if you used a symbolic link to reference a data directory for Couchbase Server, the server determined remaining free only for the partition that contained the symbolic link. This resulted in two issues: 1) incorrect information in the Couchbase Web Console, 2) more significantly, it would accidentally inhibit the data compaction process because of incorrect information about free disk space. This has been fixed in 2.0.
Issues: MB-7307
During Couchbase Server warmup or rebalance, if you delete a data bucket, it will cause the node to crash.
Issues: MB-7272
Performing a touch operation and providing an expiration of 0, to indicate no expiration did not function. This is now fixed.
Issues: MB-7342
We now log all vBucket state changes as mccouch events.
Issues: MB-7057
To handle current limitations on open file descriptors allowed on MacOS, the number of vBuckets on MacOS have been reduced to 64 from 1024. This reduces the number of files that are created for data as well as for indexes. Overall this provides improved CPU and disk I/O for MacOS.
Note however that replication via XDCR between a MacOS and non-MacOS servers will not work due to the mismatch in the number of vBuckets between Mac OSX and other platforms.
In addition mixed clusters with Couchbase nodes running on Mac OSX and on non-Mac OSX platforms will not function. In general Mac OSX is supported by Couchbase only for developing with Couchbase Server and not for production.
Issues: MB-6781
Check-and-set value was not returned in response to a successful delete request. Now it is returned as part of the response.
Issues: MB-6661
In the past, the server would delete items even if a provided CAS value was a mismatch. This has been fixed.
Issues: MB-6985
Cluster Operations
Get-and-touch function were not providing the correct error information from the server. Get-and-touch now returns ENOENT if key does not exist.
Issues: MB-6840
The Couchbase REST-API has changed to enable you to change the default maximum number of buckets used in a Couchbase cluster. The maximum allowed buckets in this request is 128, however the maximum suggested number of buckets is ten per cluster. This is a safety mechanism to ensure that a cluster does not have resource and CPU overuse due to too many buckets. The following illustrates the endpoint and parameters used:
shell> curl -X -u admin:password -d maxBucketCount=6 http://ip_address:8091/internalSettings
For this request you need to provide administrative credentials for the cluster. The following HTTP request will be sent:
About to connect() to 127.0.0.1 port 8091 (#0) Trying 127.0.0.1... connected Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0) Server auth using Basic with user 'Administrator' POST /internalSettings HTTP/1.1
If Couchbase Server successfully changes the bucket limit for the cluster, you will get a HTTP 200 response:
HTTP/1.1 200 OK Server: Couchbase Server 2.0.0r_501_gb614829 Pragma: no-cache Date: Wed, 31 Oct 2012 21:21:48 GMT Content-Type: application/json Content-Length: 2 Cache-Control: no-cache
If you provide an invalid number, such as 0, a negative number, or an amount over 128 buckets, you will get this error message:
["Unexpected server error, request logged."]
For more information about setting buckets per cluster via REST-API, see 「クラスタの最大バケットの設定」.
Issues: MB-5684
Web Console
We have removed the automatic 5-minute timeout for Couchbase Web Console. This inhibited people from performing ongoing work and demonstrations of the server.
For Mac OSX, we had provided a drop-down UI menu for logs that pointed to the wrong location. This menu option has been removed since it is already provided in the Web Console.
Issues: MB-7075
We now provide memcached logs in the diagnostic reports available from the Couchbase Web Console.
Issues: MB-7048
Command-line Tools
Several command line tools have been deprecated, superceded, or moved. This includes cbflushctl which has been superceded by cbepctl. For more information, see 7章管理用コマンドラインインターフェイス.
Issues: MB-6912
For Mac OSX, the tool for collecting statistics for Couchbase technical support cbcollect_info was not functioning. We have fixed it.
Issues: MB-6958
Incorrect message had been sent in response to a cbstats vkey command. Server had returned the string 'not found' for valid request. Now correct the memcached protocol error is returned. For more information about cbstats, see 「cbstatsツール」.
Issues: MB-6751
cbepctl help options now show option for setting the expiry_pager, a maintenance process for removing deleted items from disk.
Issues: MB-6764
Cross Datacenter Replication (XDCR)
Fix rebalance timeout failure during unidirectional replication of items via XDCR. Failure had returned message: "timeout, ns_memcached-bucket','ns_1@10.1.3.238'}, {get_vbucket,".
Issues: MB-6493
Errors had occurred performing replication via XDCR due to improper handling of non- UTF-8 characters. We now handle errors due to non- UTF-8 characters and can continue replication via XDCR for JSON documents containing non- UTF-8.
Issues: MB-7092
We have added 3 new outbound operation stats, namely, 1) data replicated, which is amount of data XDCR have replicated to the remote data center through inter- cluster network; 2) active vb replications, which shows the number of ongoing active replications to the remote clusters; 3) waiting vb replications, which is the number of vb replications in the waiting pool to wait for turn to start replication. These stats will be useful for performance monitoring and diagnosis.
Issues: MB-6919
By default, the server automatically disables flushing data from a source data bucket when XDCR replications exist for that bucket.
Issues: MB-6809
Installation and Upgrade
It is not possible to perform an upgrade between Couchbase Server 2.0 pre-releases including beta, or to perform an offline upgrade from Couchbase Server 1.8 to a pre-release or beta of Couchbase Server 2.0. To upgrade between these versions use cbbackup to backup your data, delete the existing installation, install the new version, and restore the stored data.
For more information, see 「バックアップとリストア」, 付録B Couchbase Serverのアンインストール.
By default when you perform a new install of Couchbase Server 2.0, creating a replica index for a data bucket is disabled by default. This should be the standard default setting for all new installs of the server. However, when you upgrade from 1.8.1 to 2.0, be aware it is enabled by default.
Issues: MB-7339
Documents identified as Non-JSON stored within Couchbase Server may appear as binary, or text-encoded binary data within the UI.
Issues: MB-7069
In order to upgrade from 1.8.1 to 2.0 for the Microsoft Windows platform, you need to make changes to the ip file located on the node at Couchbase\Server\var\lib\couchbase\ip as well as complete some additional steps on your node which will apply whether you are using Windows on the cloud or not. For more information about upgrading from 1.8.x to 2.0, see 「Couchbase Server 1.8.xからCouchbase Server 2.0.xへのアップグレード」.
Issues: MB-7289
For more information, see 「IPアドレスが変わることの処理」.
During periods of moderate CPU load on the Couchbase Server
cluster, you may see warnings that IP address seems to
have changed. Unable to listen to node X.X.X.X
.
Performing an upgrade from Couchbase 1.8.1 to Couchbase 2.0.0 GA build freezes while transferring data from SQLite files to Couchstore files using cbtransfer.
Issues: MB-7341
If you use couchbase-cli to setup a Couchbase node on a non-default port, you may receive an error. Although the cluster gets initialized, the initial RAM quota is not used and the server returns an error.
Issues: MB-7268
On Ubuntu 64-bit 12.04, when you upgrade Couchbase Server from 1.8.1 to 2.0 the upgrade will work, however the server erroneously returns an error in the end when it starts. The error is: "Failed to start couchbase-server dpkg: error processing couchbase-server (‐‐install)". Ignore this error message.
Issues: MB-7298
Database Operations
Several incidents have been reported that after using Flush on nodes, Couchbase Server returns TMPFAIL even after a successful flush.
Issues: MB-7160
For the Windows platform, attempts to perform a rebalance of a restarted node fails due to failure to clean up old data buckets on the node. The workaround is to retry the rebalance.
Issues: MB-7202
If you reset the disk path to a path that contained corrupted data, Couchbase Server will shut down and non response. When you change the data path to a different folder, make sure it does not contain files with a different format or with incorrect permissions.
Issues: MB-7185
Be aware that you may experience delays while node is in a pending state after you change the index path for that node. This will be fixed in a point release after 2.0 GA.
Issues: MB-7337
Cluster Operations
If you query a view during cluster rebalance it will fail and return the messages "error Reason: A view spec can not consist of merges exclusively" and then "no_active_vbuckets Reason: Cannot execute view query since the node has no active vbuckets." The workaround for this situation is to handle this error and retry later in your code. Alternatively the latest version of the Java SDK will automatically retry upon these errors.
Issues: MB-7661
During a rebalance operation for clusters undergoing uni- and bi-directional replication via XDCR, the following server errors may appear, which are currently under investigation:
Server error during processing: ["web request failed", {path,"/pools/default"}, {type,exit}, {what, {timeout, {gen_server,call, [ns_doctor,get_tasks_version]}}}, {trace, [{gen_server,call,2}, {menelaus_web,build_pool_info,4}, {menelaus_web,handle_pool_info_wait,5}, {menelaus_web,loop,3}, {mochiweb_http,headers,5}, {proc_lib,init_p_do_apply,3}]}] (repeated 1 times)
Issues: MB-7286
By default most Linux systems have swappiness set to 60. This will lead to overuse of disk swap with Couchbase Server. Please follow our current recommendations on swappiness and swap space, see 「スワップ領域」.
One of the internal maintenance processes within Couchbase Server for checking vBuckets will stop node rebalance when you create replication via XDCR on a source cluster.
A node in a cluster may also stop rebalance when another node orchestrating rebalances is over loaded. When a node stops rebalance, it results in the error message "Resetting rebalance status since it is not really running".
Rebalance cna also fail due to the timeout in
bulk_set_vbucket_state
operation with
continuous view queries.
Web Console
The Couchbase Web Console will erroneously clear all summary statistics for a data bucket when a new index is being generated in the background. The workaround is to reload the page to get the current statistics.
Issues: MB-7090
Be aware that if attempt hundreds of simultaneous queries with an unlimited number of results, Couchbase Server may fail. If you have a result set from indexing that contains 10 million items or more, and you query for that entire result set, the server will fail.
Instead you should specify a reasonable limit of results when you query, such as retriving a range of results from the larger set, otherwise the server will stall and crash due to excessive memory usage. For more information about querying and specifying a subset of results, see 「ビューへのクエリ」.
Issues: MB-7199
If you have a cluster running Couchbase Server 1.8.1 and 2.0.0, Couchbase Web Console 2.0 will show incorrect, sometimes negative values for Disk Usage in the summary section. Ignore this error.
Issues: MB-7183
Command-line Tools
The cbbackup, cbrestore,
and cbtransfer command-line tools require the
zlib
module for Python to have been
installed. If Python was installed from source, you must have
enabled zlib
using the
--with-zlib
option during the build process.
Issues: MB-7256
For more information, see 「バックアップとリストア」, 付録B Couchbase Serverのアンインストール.
The sample data loader will fail to run on a cluster when the cluster contains nodes with different versions of Couchbase. The workaround is to upgrade all cluster nodes to Couchbase Server 2.0. For more information about upgrading nodes from 1.8.x to 2.0, see 「Couchbase Server 1.8.xからCouchbase Server 2.0.xへのアップグレード」.
Issues: MB-7171
The couchbase command line tool, couchbase-cli does not enable you to set index_path as a separate parameter as data_path. The former contains indexed data from defined views functions, while the later contains keys, metadata, and JSON documents. You can however use the REST-API to do this.
Issues: MB-7323
For more information, see 「ノードのディスクとインデックスのパスの構成」.
The sample data loader will also fail if there are multiple nodes in a cluster and creating a bucket in the cluster is taking longer than 10 seconds.
Issues: MB-7170
Indexing and Querying
If you are using development views, be aware you may see inconsistent results if you query a development view during rebalance. For production views, you are able to query during rebalance and get results consistent with those you would have recieved if no rebalance were occurring.
Issues: MB-6967
Accessing a recently created view (with other, existing active views) may return a error if the corresponding design document and view definition have not been replicated across the cluster. The error return will be returned in error of the view output detailing the missing design document. The workaround is to add views and design documents to your node or cluster after you have performed rebalance. For more information about resolving issues with Couchbase Views, see 付録D ビューのトラブルシューティング(技術的背景).
Note also that stopping a rebalance operation on a cluster may take a long time if compaction and indexing operations are in progress on the cluster at the point of rebalance. Again, the workaround is to add views and index and query views after you have performed compaction or rebalance. For more information about rebalance, and considerations on when to rebalance, see 「クラスターの拡張と縮小(リバランス)」.
If a map function in a design document fails while processing a document, that document will also not be computed for any other map functions in the same design document. To avoid creating errors in your views functions, see the tips and advice provided in 付録D ビューのトラブルシューティング(技術的背景).
Issues: MB-6895
Couchbase Server does lazy expiration, that is, expired items are flagged as deleted rather than being immediately erased. Couchbase Server has a maintenance process that will periodically look through all information and erase expired items. This means expired items may still be indexed and appear in result sets of views. The workarounds for this behavior are available here About Document Expiration.
Issues: MB-7053
Cross Datacenter Replication (XDCR)
beam.smp memory usage grows to 2 GB when XDCR feature is enabled and rebalancing is in progress.
Issues: MB-6649
Under the XDCR tab for Couchbase Web Console, the link to a a destination cluster takes you to a missing URL. A simple workaround is to append ':8091' to the address in the newly opened browser tab.
Issues: MB-7211
Replication rat e may drop when the XDCR replication queue size becomes less than 500 items.
Issues: MB-6586
Be aware that if you are using XDCR for replication to a destination bucket and you remove and create a new bucket with the same name, it has a different UUIDs. Therefore any replication you had established with the deleted bucket will not apply to the new bucket.
Issues: MB-7262
Performance
Under a heavy load of write operations on two clusters and both bi-directional and uni-directional replications occurring via XDCR, Couchbase Server 2.0 may fail during rebalance.
Issues: MB-7290
ep-engine
needs 1.5 minutes to create 1024
vbuckets. This may be too slow, however performance improves
with setting barrier=0.
Issues: MB-6232