{"id":13577,"date":"2022-07-19T13:51:37","date_gmt":"2022-07-19T20:51:37","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=13577"},"modified":"2023-05-22T06:21:54","modified_gmt":"2023-05-22T13:21:54","slug":"couchbase-capella-vs-cosmosdb-nosql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/","title":{"rendered":"Comparing Couchbase Capella vs CosmosDB"},"content":{"rendered":"<p><span style=\"font-weight: 400\">CosmosDB is Microsoft&#8217;s NoSQL offering that&#8217;s exclusive to Microsoft Azure. It used to be called DocumentDB, but they changed the name and added some interesting new features. Let\u2019s go a little deeper on it and explore its strategy, documentation, what developers have been talking about, and how it compares to Couchbase Capella.<\/span><\/p>\n<h3><b>One Database to rule them all?<\/b><\/h3>\n<p><span style=\"font-weight: 400\">Microsoft claims that CosmosDB is a NoSQL database able to do literally <\/span><i><span style=\"font-weight: 400\">everything<\/span><\/i><span style=\"font-weight: 400\">: It is a Document database, Columnar storage, a Key-Value Store and a Graph Database. All achieved thanks to an abstraction of the data format called <\/span><a href=\"https:\/\/azure.microsoft.com\/en-gb\/blog\/a-technical-overview-of-azure-cosmos-db\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">atom-record-sequence (ARS)<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Let&#8217;s look at how data is organized according to each model. First, you have to choose the API you would like to use (SQL, MongoDB API, Microsoft Azure Table, Cassandra or Gremlin) and stick with it, as it can\u2019t be changed later. But behind the scenes, it looks to be a <\/span><a href=\"https:\/\/blog.spectologic.com\/2017\/06\/30\/digging-into-cosmosdb-storage\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">custom JSON format<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">CosmosDB is trying to compete with all of the major NoSQL databases, which may be a risky strategy. For one, this approach may limit the features that CosmosDB can ultimately offer. There&#8217;s a single common denominator, and that can&#8217;t be strayed too far from. Also, APIs like MongoDB and Cassandra are not defined or planned by Microsoft. This means that Microsoft will always be catching-up to the latest releases, and will ultimately never achieve 100% compatibility. Microsoft maintains documentation about <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/mongodb\/feature-support-42\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">which MongoDB features are supported<\/span><\/a><span style=\"font-weight: 400\"> and which are not (and the same thing for <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/cassandra\/cassandra-support\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Cassandra<\/span><\/a><span style=\"font-weight: 400\">). An <\/span><i><span style=\"font-weight: 400\">all-in-one<\/span><\/i><span style=\"font-weight: 400\"> solution like CosmosDB might be good for simple applications with few functionality demands, but all those abstractions come with a cost and will ultimately impact simplicity, performance and be feature limited.<\/span><span style=\"font-weight: 400\">\u00a0<\/span><\/p>\n<h3><b>Couchbase vs CosmosDB \u2013 Comparing Apples with \u201cApples\u201d<\/b><\/h3>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><span style=\"font-weight: 400\">This comparison will focus most on scenarios that make sense to compare both technologies (for example, Couchbase is not a graph database, so the comparison wouldn&#8217;t make sense).<\/span><\/p>\n<p><span style=\"font-weight: 400\">One other important note: Couchbase Capella is Couchbase&#8217;s DBaaS (database-as-a-service) offering, available in AWS and GCP (soon to be in Azure too). It is basically a managed version of Couchbase Server, which is still available for download, so they are very similar. Unless otherwise stated, the &#8220;Couchbase&#8221; column applies to both Capella and Server.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Feature<\/span><\/td>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Couchbase Capella<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Licensing<\/span><\/td>\n<td><span style=\"font-weight: 400\">Proprietary, closed-source but free-tier is available.\u00a0<\/span><\/td>\n<td><a href=\"https:\/\/cloud.couchbase.com\/sign-up\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Free trial available for Capella<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.couchbase.com\/licensing-and-support-faq\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Couchbase Community and Enterprise available for download<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-adopts-bsl-license\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">BSL<\/span><\/a><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Type<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Key-value<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Document<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Graph<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Columnar<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Key-value<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Document<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Built-in cache<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Mobile<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Model<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">2MB limit per document<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">16MB limit for Mongo mode only<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">20MB document limit<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Search<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Requires a separate, propietary product: Azure Cognitive Search<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/products\/full-text-search\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Full-text search engine built in<\/span><\/a><span style=\"font-weight: 400\"> (using <\/span><a href=\"https:\/\/github.com\/blevesearch\/bleve\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Bleve<\/span><\/a><span style=\"font-weight: 400\"> open-source engine)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Connector available for <\/span><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/index.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">ElasticSearch<\/span><\/a><span style=\"font-weight: 400\"> if necessary<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Indexing<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Indexes every property for all items by default<\/span><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/index-policy\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Allows index customization<\/span><\/a><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Unlimited indexes<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Any field can be indexed<\/span><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/indexes\/storage-modes.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Memory-optimized indexes available<\/span><\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Data Integrity<\/span><\/td>\n<td><span style=\"font-weight: 400\">Five options are available in configuration:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Strong<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Bounded staleness<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Session (default)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Consistent prefix<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Eventual<\/span><\/li>\n<\/ul>\n<\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Strong consistency<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Query consistency can be specified on a per-query basis<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Scalability<\/span><\/td>\n<td><span style=\"font-weight: 400\">Highly scalable<\/span><\/td>\n<td><a href=\"https:\/\/www.couchbase.com\/multi-dimensional-scalability-overview\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Highly scalable<\/span><\/a><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Mobile<\/span><\/td>\n<td><a href=\"https:\/\/feedback.azure.com\/d365community\/idea\/e115ee33-0e25-ec11-b6e6-000d3a4f0858\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">No plans for CosmosDB for mobile or devices<\/span><\/a><span style=\"font-weight: 400\"> or any offline support<\/span><\/td>\n<td>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Couchbase Lite provides a mobile\/device\/edge database.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sync Gateway automatically syncs to\/from the data center<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Deployment<\/span><\/td>\n<td><span style=\"font-weight: 400\">Azure only, fully managed only.<\/span><\/p>\n<p><span style=\"font-weight: 400\">There is a development version available (currently Windows only).<\/span><\/td>\n<td><span style=\"font-weight: 400\">Can be deployed anywhere, including Azure, on-premises, Kubernetes, Docker, VM, bare-metal.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Couchbase Capella offers a fully managed DBaaS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Locking<\/span><\/td>\n<td><span style=\"font-weight: 400\">Optimistic and pessimistic locking available<\/span><\/td>\n<td><span style=\"font-weight: 400\">Optimistic and pessimistic locking available<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Backup &amp; Restore<\/span><\/td>\n<td><span style=\"font-weight: 400\">Continuous backup mode for 30 days<\/span><\/p>\n<p><span style=\"font-weight: 400\">Periodic backup mode (default)<\/span><\/td>\n<td><span style=\"font-weight: 400\">Automatic <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/introducing-couchbase-backup-service\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">backup and restore<\/span><\/a><span style=\"font-weight: 400\"> service with configurable backup wizard<\/span><\/p>\n<p><span style=\"font-weight: 400\">Continuous backup available using XDCR<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Querying<\/span><\/td>\n<td><span style=\"font-weight: 400\">Based on which mode is chosen.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Example 1: SQL API is an extremely limited subset of standard SQL<\/span><\/p>\n<p><span style=\"font-weight: 400\">Example 2: MongoDB API is a non-100% subset of Mongo API<\/span><\/td>\n<td><a href=\"https:\/\/www.couchbase.com\/products\/n1ql\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Full SQL implementation<\/span><\/a><span style=\"font-weight: 400\"> called SQL++ (with JOIN, aggregate, CTE, window functions, CRUD operations, etc) &#8211; previously known as &#8220;N1QL&#8221;<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Data Center Replication<\/span><\/td>\n<td><span style=\"font-weight: 400\">Push-button global master-master replication between supported Azure data centers<\/span><\/td>\n<td><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/clusters-and-availability\/xdcr-overview.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">XDCR<\/span><\/a><span style=\"font-weight: 400\"> allows any combination of unidirectional and bidirectional replication between any Couchbase deployment, including data filtering<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Speed\/performance<\/span><\/td>\n<td><span style=\"font-weight: 400\">More speed and performance is only obtained by increasing <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/request-units\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">RUs<\/span><\/a><span style=\"font-weight: 400\">, which will often be prohibitively expensive\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\">Memory-first read and write operations.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Built-in caching layer.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Can be tuned by increasing memory, disk, or adding a new node.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Memory-optimized indexes available<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Sharding \/ partitioning<\/span><\/td>\n<td><span style=\"font-weight: 400\">Partition key(s) must be created and managed manually, requiring a dedicated expert to set and design correctly in order to reach performance\/scale goals<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sharding is <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/buckets-memory-and-storage\/vbuckets.html#understanding-vbuckets\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">completely automatic<\/span><\/a><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Architecture<\/span><\/td>\n<td><span style=\"font-weight: 400\">Unknown \/ proprietary<\/span><\/td>\n<td><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/architecture-overview.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Every node is a master<\/span><\/a><span style=\"font-weight: 400\"> in Couchbase, making most efficient use of resources<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Supported SDKs<\/span><\/td>\n<td><span style=\"font-weight: 400\">.NET (primary, most feature complete)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Other SDKs:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Java<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Node.js<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Python<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0\u00a0\u00a0(Others through Mongo\/Cassandra)<\/span><\/td>\n<td><span style=\"font-weight: 400\">.NET<\/span><span style=\"font-weight: 400\">C \/ C++<\/span><\/p>\n<p><span style=\"font-weight: 400\">Go<\/span><\/p>\n<p><span style=\"font-weight: 400\">Java<\/span><\/p>\n<p><span style=\"font-weight: 400\">Node.js<\/span><\/p>\n<p><span style=\"font-weight: 400\">PHP<\/span><\/p>\n<p><span style=\"font-weight: 400\">Python<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ruby<\/span><\/p>\n<p><span style=\"font-weight: 400\">Scala<\/span><\/p>\n<p><span style=\"font-weight: 400\">Kotlin<\/span><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><b>Success in the Real World<\/b><\/h3>\n<p><span style=\"font-weight: 400\">This side-by-side comparison may favor Couchbase, but what about the real-world experiences of an organization that was using CosmosDB and switched to using Couchbase?<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/how-couchbase-cloud-helps-facet-digital-cut-costs-by-50-improve-performance-100x\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Facet Digital cut their database costs<\/span><\/a><span style=\"font-weight: 400\"> by 50%, and improved their performance by 100x by switching to Couchbase Capella.<\/span><\/p>\n<p><span style=\"font-weight: 400\">How was it possible?<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Faster deployment time<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Easy search integration<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Faster indexing<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Better DevOps automation (CI\/CD index definitions)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Familiar and complete SQL syntax<\/span><\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/how-couchbase-cloud-helps-facet-digital-cut-costs-by-50-improve-performance-100x\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13578 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/07\/image_2022-07-19_134250296-1024x455.png\" alt=\"Facet digital couchbase story\" width=\"900\" height=\"400\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/image_2022-07-19_134250296-1024x455.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/image_2022-07-19_134250296-300x133.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/image_2022-07-19_134250296-768x341.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/image_2022-07-19_134250296-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/image_2022-07-19_134250296.png 1073w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<h3><b>Summary<\/b><\/h3>\n<p><span style=\"font-weight: 400\">CosmosDB has a unique vision, but as a natural consequence of building something focusing on multiple fields at once, CosmosDB&#8217;s support for all of your desired features can be uneven.<\/span><\/p>\n<p><span style=\"font-weight: 400\">One of the most prominent features is the ability to choose between multiple levels of eventual consistency: Bounded-staleness, Session, Consistent Prefix and Eventually Consistent. The fact that <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/consistency-levels\" target=\"_blank\" rel=\"noopener\"><b><i>Session<\/i><\/b><\/a><span style=\"font-weight: 400\"> is set as the default consistency says a lot about the recommended way to use CosmosDB. It could mean that it might not be the best solution if you need a strong data consistency (and perhaps Microsoft would want to steer you back towards their flagship SQL Server database).<\/span><\/p>\n<p><span style=\"font-weight: 400\">Being memory-first is one of the reasons why Couchbase is so fast. CosmosDB has an <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/how-to-configure-integrated-cache\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">integrated cache<\/span><\/a><span style=\"font-weight: 400\"> (currently in preview), but like with search, it&#8217;s a separate product that must be added-on. Couchbase has been memory-first since its inception.<\/span><\/p>\n<p><span style=\"font-weight: 400\">With CosmosDB, all fields are indexed in their Global Secondary Indexes (GSI). It seems like overkill. It may be easier to specify which fields to index than specifying which fields <\/span><i><span style=\"font-weight: 400\">not <\/span><\/i><span style=\"font-weight: 400\">to index. As soon as your JSON gets much bigger than a handful of properties (and especially when nesting JSON objects), these indexes are definitely going to be overkill, with the costs passed on by default. Too many indexes means too many RUs which means too many dollars.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Sharding seems to be one of the trickiest things in CosmosDB. Partitions are moved automatically among nodes, but you still have to specify a partition key. One drawback of this approach is that each partition is indivisible with a max size of 10Gb. If you pick a bad partition key, a lot of frequently accessed documents might end up in the same partition, which limits the throughput of your reads\/writes by the node capacity where the partition is stored.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The partition key is also immutable, so in order to change it, you will be required to copy your whole data to another collection. In Couchbase, <\/span><a href=\"https:\/\/www.couchbase.com\/binaries\/content\/assets\/website\/docs\/whitepapers\/technical-whitepaper-couchbase-server-vbuckets.pdf\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">documents are distributed evenly between vBuckets<\/span><\/a><span style=\"font-weight: 400\"> to avoid this problem, and also to increase your read\/write performance.<\/span><\/p>\n<p><span style=\"font-weight: 400\">With CosmosDB, throttling up is done only by increasing Request Units (RUs).\u00a0 The challenge with this approach is that it is not a very good predictor of the query performance and makes it even harder to boost a <\/span><i><span style=\"font-weight: 400\">specific <\/span><\/i><span style=\"font-weight: 400\">behavior like increasing only the writes capacity. For some use cases, you may find a team needs a person to work on RUs full-time to figure out and maintain the queries properly.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Microsoft has put a lot of effort into trying to make RUs easier to understand, but it&#8217;s common for developers to underestimate their RUs (see <\/span><a href=\"https:\/\/www.mazsoft.com\/blog\/post\/2017\/08\/12\/how-replacing-elasticsearch-with-azure-documentdb-cosmosdb-turned-out-to-be-a-bad-idea\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\"> or <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=b1VFyEhucnA&amp;feature=youtu.be&amp;t=56m40s\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">)\u00a0 and they end up stuck with a bill much higher than expected. On Couchbase, throttling up is very flexible, it can be done by vertical and\/or horizontal scaling, running specific services according to the node hardware, keeping indexes in memory, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400\">CosmosDB also provides a cool push-button global data distribution that makes it really simple to replicate data in multiple data centers across the world. However, it can also be easily achieved in a matter of minutes in Couchbase Server without the limitation of running only in Azure.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Benchmarking is difficult, because of CosmosDB&#8217;s RUs model, but a <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/how-does-couchbase-capella-compare-with-azure-cosmos-db\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">third-party benchmark using the YCSB approach<\/span><\/a><span style=\"font-weight: 400\"> shows Couchbase Capella&#8217;s clear advantage in throughput and latency.<\/span><\/p>\n<p><span style=\"font-weight: 400\">CosmosDB&#8217;s pricing is attractive if you have a small database with few reads\/writes per second. But anything above that can cost a lot. CosmosDB&#8217;s price calculator shows that with a 50\/50 mix of reads and writes, plus a handful of queries per second, can add up to thousands per month. CosmosDB provides a <\/span><a href=\"https:\/\/cosmos.azure.com\/capacitycalculator\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">helpful calculator<\/span><\/a><span style=\"font-weight: 400\">, but it&#8217;s somewhat unreliable, due to the difficulty in predicting RUs (as mentioned earlier). Also, the calculator does not consider the consistency model you are going to use, so you have to add a few extra dollars to this number for Strong-Consistency.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/pricing\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Couchbase Capella pricing<\/span><\/a><span style=\"font-weight: 400\"> is much more predictable, and will often be lower cost, especially for larger, mission-critical use cases.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CosmosDB is Microsoft&#8217;s NoSQL offering that&#8217;s exclusive to Microsoft Azure. It used to be called DocumentDB, but they changed the name and added some interesting new features. Let\u2019s go a little deeper on it and explore its strategy, documentation, what [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":13579,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2225,1816,2201],"tags":[],"ppma_author":[8937],"class_list":["post-13577","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-couchbase-server","category-tools-sdks"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comparing Couchbase Capella vs CosmosDB - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comparing Couchbase Capella vs CosmosDB\" \/>\n<meta property=\"og:description\" content=\"CosmosDB is Microsoft&#8217;s NoSQL offering that&#8217;s exclusive to Microsoft Azure. It used to be called DocumentDB, but they changed the name and added some interesting new features. Let\u2019s go a little deeper on it and explore its strategy, documentation, what [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-19T20:51:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-22T13:21:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/07\/capella-vs-cosmosdb-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1709\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Comparing Couchbase Capella vs CosmosDB\",\"datePublished\":\"2022-07-19T20:51:37+00:00\",\"dateModified\":\"2023-05-22T13:21:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\"},\"wordCount\":1560,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg\",\"articleSection\":[\"Couchbase Capella\",\"Couchbase Server\",\"Tools &amp; SDKs\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\",\"name\":\"Comparing Couchbase Capella vs CosmosDB - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg\",\"datePublished\":\"2022-07-19T20:51:37+00:00\",\"dateModified\":\"2023-05-22T13:21:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg\",\"width\":2560,\"height\":1709,\"caption\":\"Couchbase Capella vs CosmosDB\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comparing Couchbase Capella vs CosmosDB\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comparing Couchbase Capella vs CosmosDB - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/","og_locale":"en_US","og_type":"article","og_title":"Comparing Couchbase Capella vs CosmosDB","og_description":"CosmosDB is Microsoft&#8217;s NoSQL offering that&#8217;s exclusive to Microsoft Azure. It used to be called DocumentDB, but they changed the name and added some interesting new features. Let\u2019s go a little deeper on it and explore its strategy, documentation, what [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/","og_site_name":"The Couchbase Blog","article_published_time":"2022-07-19T20:51:37+00:00","article_modified_time":"2023-05-22T13:21:54+00:00","og_image":[{"width":2560,"height":1709,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/07\/capella-vs-cosmosdb-scaled.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Comparing Couchbase Capella vs CosmosDB","datePublished":"2022-07-19T20:51:37+00:00","dateModified":"2023-05-22T13:21:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/"},"wordCount":1560,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg","articleSection":["Couchbase Capella","Couchbase Server","Tools &amp; SDKs"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/","name":"Comparing Couchbase Capella vs CosmosDB - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg","datePublished":"2022-07-19T20:51:37+00:00","dateModified":"2023-05-22T13:21:54+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/07\/capella-vs-cosmosdb-scaled.jpg","width":2560,"height":1709,"caption":"Couchbase Capella vs CosmosDB"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-capella-vs-cosmosdb-nosql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Comparing Couchbase Capella vs CosmosDB"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/13577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=13577"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/13577\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13579"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=13577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=13577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=13577"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=13577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}