{"id":14327,"date":"2023-04-27T09:25:41","date_gmt":"2023-04-27T16:25:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=14327"},"modified":"2025-06-13T23:11:04","modified_gmt":"2025-06-14T06:11:04","slug":"scopes-collections-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/","title":{"rendered":"Scopes and Collections Support in Couchbase Mobile for Edge Applications"},"content":{"rendered":"<p><span style=\"font-weight: 400\">We&#8217;re pleased to announce the general availability of Couchbase Mobile 3.1, which includes Couchbase Lite and Sync Gateway for mobile and edge computing solutions. This is a significant release that introduces cloud-to-edge support for scopes and collections in Couchbase Mobile for self managed deployments. Launched in <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/\"><span style=\"font-weight: 400\">Couchbase Service 7.0<\/span><\/a><span style=\"font-weight: 400\">, Scopes and Collections brings the ability to isolate data logically and to enforce independent app lifecycle management at multiple levels of granularity.<\/span><\/p>\n<p><span style=\"font-weight: 400\">With the 3.1 release of Couchbase Lite and Sync Gateway, developers can avail the benefits of scopes and collections within their mobile and edge apps. In this post, I\u2019ll discuss the benefits of using scopes and collections in the context of some typical use cases. While the post focuses on a key feature of the 3.1 release, to learn about other enhancements and bug fixes, you can read our platform-specific release notes.<\/span><\/p>\n<p><span style=\"font-weight: 400\">This post assumes that you are familiar with the fundamentals of Couchbase Mobile. If you are new to Couchbase Mobile, check out the <\/span><a href=\"https:\/\/www.couchbase.com\/products\/mobile\/\"><span style=\"font-weight: 400\">overview<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<h2>Download Today!<\/h2>\n<p><span style=\"font-weight: 400\">Here\u2019s how you can start evaluating the new features in Couchbase Lite and Sync Gateway 3.1:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/downloads\/?family=couchbase-lite\"><span style=\"font-weight: 400\">Download Couchbase Lite 3.1<\/span><\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/downloads\/?family=sync-gateway\"><span style=\"font-weight: 400\">Download Sync Gateway 3.1<\/span><\/a><\/li>\n<li><a href=\"https:\/\/hub.docker.com\/r\/couchbase\/sync-gateway\"><span style=\"font-weight: 400\">Get the Sync Gateway 3.1 Docker image<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Use Cases for Scopes and Collections<\/h2>\n<p><span style=\"font-weight: 400\">It&#8217;s probably best to discuss the benefits of scopes and collections in the context of some real world use cases. For each of the use cases discussed, we explore bucket\/database level solutions and then introduce a solution with scopes and collections.<\/span><\/p>\n<h3>Simplified Data Organization<\/h3>\n<p><span style=\"font-weight: 400\">The ability for developers to structure data inside buckets similar to tables inside a relational database such that related data is grouped together in separate containers, which is especially useful for developers who are migrating from a relational world.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Here are <\/span><b>two examples<\/b><span style=\"font-weight: 400\"> to illustrate the problem:<\/span><\/p>\n<h4>Example<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14263\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example1.1-286x300.png\" alt=\"Couchbase Mobile Multi App Example\" width=\"320\" height=\"335\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-286x300.png 286w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-300x314.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1.png 708w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Consider a <\/span><b>field order app with data related to products and data related to orders<\/b><span style=\"font-weight: 400\">. There are<\/span><b> two Couchbase Lite enabled mobile apps,<\/b><span style=\"font-weight: 400\"> one for Products and one for Orders. <\/span><b>Products<\/b><span style=\"font-weight: 400\"> related documents <\/span><b>are synced to the Products mobile app<\/b><span style=\"font-weight: 400\">, while <\/span><b>orders<\/b><span style=\"font-weight: 400\"> related documents are synced to the <\/span><b>Orders mobile app.<\/b><span style=\"font-weight: 400\"> An app user on the products mobile app can only read products related data, while an app user on the orders mobile app can read and write orders related data.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Bucket based<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14264 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example1.1-bucket.png\" alt=\"Couchbase - data model bucket\" width=\"320\" height=\"319\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-bucket.png 784w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-bucket-300x299.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-bucket-150x150.png 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-bucket-768x766.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-bucket-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-bucket-50x50.png 50w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Products and orders data are<\/span><b> in a single bucket.<\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The bucket has a dozen document types. <\/span><b>A <em>doc_type<\/em> field is used to logically group<\/b><span style=\"font-weight: 400\"> products related and orders related documents.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">App users are defined at the bucket level.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>A Sync function is defined at bucket level and is complicated<\/b><span style=\"font-weight: 400\">. Access control rules are based on <em>doc_type<\/em>\u00a0and <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/access-control-model.html\"><span style=\"font-weight: 400\">channels<\/span><\/a><span style=\"font-weight: 400\"> defined for <em>doc_type<\/em>\u00a0control which user can access which subset of documents.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The Products app has a <em>pull only<\/em> replication for products documents, while the Orders app has <em>push-pull<\/em>\u00a0replication for orders related documents.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5>Solution: Scope\/collections based<\/h5>\n<p><span style=\"font-weight: 400\">Use scopes and collections to organize data and to simplify access control policies.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14265 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example1.1-scopes.png\" alt=\"example1.1-scopes\" width=\"320\" height=\"321\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-scopes.png 780w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-scopes-300x301.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-scopes-150x150.png 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-scopes-768x770.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-scopes-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.1-scopes-50x50.png 50w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>Segregate<\/b><span style=\"font-weight: 400\"> products and orders related documents into <\/span><b>two scopes within a single bucket.<\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Instead of a <em>doc_type<\/em>\u00a0field, <\/span><b>logically group documents of specific type into its own collection.<\/b><\/li>\n<li style=\"font-weight: 400\"><b>App users are then segregated by scope, <\/b><span style=\"font-weight: 400\">so users in the products scope can only access products documents and users in the orders scope can access orders docs.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>The sync function becomes simplified <\/b><span style=\"font-weight: 400\">by being set<\/span> <span style=\"font-weight: 400\">at the collection level.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The Products app has a <em>pull only<\/em> replication for products scope and the Orders app has <em>push-pull<\/em> replication for orders scope.\u00a0<\/span><\/li>\n<\/ul>\n<h4>Example<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14266\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example1.2.png\" alt=\"couchbase mobile\" width=\"320\" height=\"361\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2.png 674w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-266x300.png 266w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-300x338.png 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Consider a<\/span><b> health care app with 30 categories of data, <\/b><span style=\"font-weight: 400\">including patients, visits, procedures, insurers, diseases, diagnosis etc.<\/span><\/p>\n<p><span style=\"font-weight: 400\"><br \/>\n<\/span><b>Patients have access to their medical records via a Couchbase Lite mobile app<\/b><span style=\"font-weight: 400\">. Some of the documents (eg. insurers) must not be synced down to the mobile app. Some of the documents (eg. profile) can be updated by the patients via the mobile app while some (like diagnosis) are read only.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Bucket based<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14267\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example1.2-bucket.png\" alt=\"example1.2-bucket\" width=\"320\" height=\"310\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-bucket.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-bucket-300x290.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-bucket-768x743.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Data corresponding to the health care app is maintained in a corresponding bucket.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The bucket has over 30 document types. <\/span><b>The <em>doc_type<\/em> field is used to logically group related documents<\/b><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>A Sync function is defined at the bucket level and is complicated<\/b><span style=\"font-weight: 400\">. Access control rules are based on <em>doc_type<\/em> and channels defined for <em>doc_type<\/em> control which user can access which subset of documents.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Import filters are at the bucket level and complicated<\/b><span style=\"font-weight: 400\">. Use <em>doc_type<\/em> conditions to filter out documents that don\u2019t have to be synced.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Scope\/collections based<\/h5>\n<p><span style=\"font-weight: 400\">Use scopes and collections to organize data and to simplify access control policies.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14268\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example1.2-scopes.png\" alt=\"example1.2-scopes\" width=\"320\" height=\"302\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-scopes.png 802w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-scopes-300x284.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example1.2-scopes-768x726.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Instead of a <em>doc_type<\/em>\u00a0field,<\/span><b> logically group each document of a specific type into its own collection<\/b><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>The Sync function is simplified and defined at the collection level<\/b><span style=\"font-weight: 400\">. Every collection is implicitly associated with a channel and as such it is much simpler to specify read\/write access to collections.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Import filter function is simplified and defined at the collection level.<\/b><span style=\"font-weight: 400\"> Filter out collections of documents that do not have to be imported.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>Scalable Multi-tenant applications<\/h3>\n<p><span style=\"font-weight: 400\">The ability to support multi-tenant applications that do not need strict resource isolation but still require independent data lifecycle management.<\/span><\/p>\n<h4>Example<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14269 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example2.png\" alt=\"multi tenant Couchbase Mobile\" width=\"320\" height=\"325\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2.png 722w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-295x300.png 295w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-50x50.png 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-300x305.png 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Consider an<\/span><b> ISV hosting an events application for 20 enterprise tenants<\/b><span style=\"font-weight: 400\">. Every tenant has a <\/span><b>Couchbase Lite app that can sync event data belonging to the tenant<\/b><span style=\"font-weight: 400\">. Every tenant has a distinct set of app users who can access tenant specific data. Authenticated app users can sync data via the corresponding Couchbase Lite app for their tenant. The tenants do not require strict resource isolation.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><\/h5>\n<h5>Solution: Bucket based<\/h5>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example2-bucket.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14270 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example2-bucket.png\" alt=\"example2-bucket\" width=\"320\" height=\"305\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-bucket.png 808w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-bucket-300x286.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-bucket-768x732.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>Every tenant<\/b><span style=\"font-weight: 400\">\u2019s data is in its <\/span><b>own bucket.<\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Each bucket has dozens of document types. The <em>doc_type<\/em> field is used to logically group related documents.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">As the solution scales to <\/span><b>more tenants, more buckets <\/b><span style=\"font-weight: 400\">and subsequently, more clusters are added. This is <\/span><b>expensive<\/b><span style=\"font-weight: 400\"> and is not scalable.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Every tenant has a distinct set of app users registered at the bucket level.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Couchbase Lite client replications are set up to sync data from the corresponding tenant\u2019s bucket.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h5>Solution: Scope\/collections based<\/h5>\n<p><span style=\"font-weight: 400\">Scopes and collections <\/span><b>offers a scalable alternative to supporting multi-tenant apps<\/b><span style=\"font-weight: 400\"> with independent data lifecycle management.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14271 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example2-scopes.png\" alt=\"example2-scopes\" width=\"320\" height=\"309\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-scopes.png 788w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-scopes-300x290.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example2-scopes-768x743.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>Each tenant has its own scope<\/b><span style=\"font-weight: 400\">, contained in a single <em>events<\/em>\u00a0bucket.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Each tenant\u2019s <\/span><b>client application syncs data<\/b><span style=\"font-weight: 400\"> associated with the <\/span><b>tenant\u2019s scope.<\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Each <\/span><b>tenant has a distinct set of app users <\/b><span style=\"font-weight: 400\">registered at the scope level.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">When <\/span><b>tenants are added or removed, a scope is added to or removed from the bucket<\/b><span style=\"font-weight: 400\">. A tenant can be taken offline without impacting other tenants.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>High Application Density at the Edge<\/h3>\n<p><span style=\"font-weight: 400\">This is the ability to support large scale cloud-to-edge deployments with a number of applications at the edge. Each edge is served using a microservices based application architecture. Microservices need loose coupling so that they can be developed, deployed, and scaled independently. Data specific to a microservice is private to the microservice.<\/span><\/p>\n<h4>Example<\/h4>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14272 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example3.png\" alt=\"inter Sync Gateway Replication\" width=\"320\" height=\"298\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3.png 884w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-300x280.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-768x716.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Consider a <\/span><b>ship-to-shore app deployment, with 20 ships each running Couchbase Mobile clusters<\/b><span style=\"font-weight: 400\">, and a Couchbase Mobile cluster in the cloud. The Couchbase Mobile cluster on each ship <\/span><b>powers 50 applications<\/b><span style=\"font-weight: 400\">. Each of the applications is <\/span><b>built using a microservices architecture<\/b><span style=\"font-weight: 400\">. Applications running on each ship sync voyage and ship related documents with shore clusters <\/span><b>using <\/b><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/sync-inter-syncgateway-overview.html\"><b>inter-Sync Gateway replication<\/b><\/a><span style=\"font-weight: 400\">. Each app has a distinct set of users.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Bucket based<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14273 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example3-bucket.png\" alt=\"example3-bucket\" width=\"320\" height=\"291\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-bucket.png 848w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-bucket-300x273.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-bucket-768x699.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>Each of the microservices<\/b><span style=\"font-weight: 400\"> corresponding to the 50 edge applications running <\/span><b>on each ship is in its own bucket<\/b><span style=\"font-weight: 400\">. The number of applications served by a cluster is limited by the number of buckets in the cluster.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Inter-Sync Gateway replications between the buckets<\/b><span style=\"font-weight: 400\"> in the on-ship cluster and corresponding cloud cluster keeps the ships and shore in-sync. The result is a <\/span><b>minimum of one ship-to-shore replication for each microservice<\/b><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Setup on each ship is <\/span><b>expensive<\/b><span style=\"font-weight: 400\">. The cost is <\/span><b>multiplied by the number of ships<\/b><span style=\"font-weight: 400\"> and not very scalable.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h5>Solution: Scopes\/collections based<\/h5>\n<p><span style=\"font-weight: 400\">Scopes and collections allow bucket consolidation and a more scalable and cost-effective alternative to bucket based solution.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14274 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example3-scopes.png\" alt=\"example3-scopes\" width=\"320\" height=\"267\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-scopes.png 856w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-scopes-300x250.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example3-scopes-768x641.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><b>Each app is associated with a scope<\/b><span style=\"font-weight: 400\"> and each <\/span><b>microservice is associated with its own collection.<\/b><span style=\"font-weight: 400\"> The result is the ability to host a large number of applications on a few clusters.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Inter-Sync Gateway replication between the scopes in the on-ship cluster and corresponding cloud cluster keeps the ships and shore in-sync. <\/span><b>Instead of a replication for each microservice, replication can be set up at app level<\/b><span style=\"font-weight: 400\">.<\/span><\/li>\n<\/ul>\n<h3>Data Organization and Isolation on Couchbase Lite<\/h3>\n<p><span style=\"font-weight: 400\">The ability for developers to organize and logically isolate data within a single Couchbase Lite database instance.<\/span><\/p>\n<h4>Example<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14275 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example4.png\" alt=\"Couchbase Mobile field app\" width=\"320\" height=\"315\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4.png 786w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-300x295.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-768x756.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-50x50.png 50w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Consider a Couchbase Lite <\/span><b>field app<\/b><span style=\"font-weight: 400\"> used by employees of a <\/span><b>utility company to manage their tasks when in the field.<\/b><span style=\"font-weight: 400\"> The field app regularly syncs data such as projects, infrastructure maps, etc. via Sync Gateway. The <\/span><b>field app has a &#8220;scratchpad&#8221; like functionality <\/b><span style=\"font-weight: 400\">that allows employees to take quick notes that they can erase without affecting other documents. These <\/span><b>notes are temporary and local-only must not be synced to a remote server<\/b><span style=\"font-weight: 400\">.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Bucket Based<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14276 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example4-bucket.png\" alt=\"example4-bucket\" width=\"320\" height=\"307\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-bucket.png 818w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-bucket-300x288.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-bucket-768x736.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The bucket based solution requires two<\/span><b> separate Couchbase Lite databases within the app<\/b><span style=\"font-weight: 400\">; <\/span><b>one for local-only data and one for data that is synced.<\/b><span style=\"font-weight: 400\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A replicator is set up with the Couchbase Lite database that holds data to be synced.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The database level of isolation means that <\/span><b>queries across local-only and sync data are not possible.<\/b><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Scope\/collections based<\/h5>\n<p><span style=\"font-weight: 400\">Scopes and collections allow logical data isolation within a single Couchbase Lite database.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14277 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example4-scopes.png\" alt=\"example4-scopes\" width=\"330\" height=\"315\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-scopes.png 814w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-scopes-300x286.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example4-scopes-768x732.png 768w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Instead of\u00a0 two Couchbase Lite databases, the use case can be supported by <\/span><b>scopes within the same Couchbase Lite database,<\/b><span style=\"font-weight: 400\"> such that the <\/span><b>local-only data is in one scope and data that can be synced is in another scope.<\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Data is logically isolated from each other and <\/span><b>applications can query across the local and sync data.<\/b><\/li>\n<li style=\"font-weight: 400\"><b>Queries are simplified<\/b><span style=\"font-weight: 400\"> as they can be applied to a scope, avoiding need for filters. It is also easy to purge all documents in a local scope as needed.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The replicator is configured to sync data associated with the <em>sync<\/em> scope via Sync Gateway.<\/span><\/li>\n<\/ul>\n<h3><\/h3>\n<h3>Sync Gateway Metadata Isolation<\/h3>\n<p><span style=\"font-weight: 400\">The ability to segregate application data in buckets from system metadata maintained by Sync Gateway for its internal operations.<\/span><\/p>\n<h4>Example<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14278\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example5.png\" alt=\"couchbase mobile SDK app\" width=\"320\" height=\"292\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5.png 844w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-300x274.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-768x701.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Consider an<\/span><b> inventory management store application which allows store clerks to pull store inventory data<\/b><span style=\"font-weight: 400\"> from their Couchbase Lite embedded mobile app. Store managers use a backend web application based on Couchbase Server <\/span><b>SDK to interface with Couchbase Server for managing inventory data<\/b><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Any updates made via the web app are synced down to the Couchbase Lite mobile app.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>Solution: Bucket based<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14279\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example5-bucket.png\" alt=\"example5-bucket\" width=\"320\" height=\"305\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-bucket.png 808w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-bucket-300x286.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-bucket-768x732.png 768w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sync metadata cannot be isolated from application data using the bucket-based approach.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sync gateway persists sync metadata and other database configurations in the bucket alongside application data. This data is intended to be used exclusively by Sync Gateway for its operations.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">There are<\/span><b> no RBAC controls that restrict access to sync metadata <\/b><span style=\"font-weight: 400\">which is a risk. This increases the burden on the SDK-based app to ensure that it does not modify sync metadata.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Queries<\/b><span style=\"font-weight: 400\"> for app data need to be appropriately filtered to remove sync metadata, thereby<\/span><b> increasing the complexity of the SDK app.<\/b><\/li>\n<\/ul>\n<h5>Solution: Scope\/collections based<\/h5>\n<p><span style=\"font-weight: 400\">Scopes and collections are the only option for isolating sync gateway metadata.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-14280\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/example5-scopes.png\" alt=\"example5-scopes\" width=\"320\" height=\"317\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-scopes.png 794w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-scopes-300x297.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-scopes-150x150.png 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-scopes-768x760.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-scopes-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/example5-scopes-50x50.png 50w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>System data <\/b><span style=\"font-weight: 400\">used by Sync Gateway is maintained in <\/span><b>_default scope\/collection, where it is logically isolated from application data<\/b><span style=\"font-weight: 400\"> in user defined scopes\/collections.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Eliminates the risk of the SDK-based app inadvertently deleting sync metadata<\/span><b> by using scope RBAC controls to restrict access to the _default scope<\/b><span style=\"font-weight: 400\"> containing sync metadata.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>The SDK-based app is simplified.<\/b><span style=\"font-weight: 400\"> Separation of system metadata into its own scope simplifies implementation &#8211; queries don\u2019t need filters, and the lifecycle of app data can be managed more easily.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Cloud-to-Edge support for Scopes and Collections<\/h2>\n<p><span style=\"font-weight: 400\">With this release, scopes and collections are available end-to-end across the entire <\/span><a href=\"https:\/\/www.couchbase.com\/products\/mobile\/\"><span style=\"font-weight: 400\">Couchbase Mobile<\/span><\/a><span style=\"font-weight: 400\"> stack. For details, please refer to the <\/span><a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/cbl-whatsnew.html\"><span style=\"font-weight: 400\">documentation<\/span><\/a><span style=\"font-weight: 400\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The figure below is a summary:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-14281\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/scopes-collections-couchbase-mobile-1024x577.png\" alt=\"Scopes and Collections in Couchbase Mobile\" width=\"973\" height=\"548\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile-1024x577.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile-300x169.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile-768x433.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile-1536x866.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile-1320x744.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png 1650w\" sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Data in Couchbase Server is organized within scopes and collections.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Sync Gateway database is associated with a single scope. The database can be associated with one or more collections within the scope, including all collections within the scope.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Couchbase Lite client can set up one or more replications to one or more Sync Gateway database endpoints. Each replication can sync one or all collections associated with that scope.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The Couchbase Lite client can also locally persist data in a scope that is not synced to remote Sync Gateway.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Sync Gateway cluster can sync one or more scopes to another Sync Gateway cluster via <\/span><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/sync-inter-syncgateway-overview.html\"><span style=\"font-weight: 400\">inter-Sync Gateway replication<\/span><\/a><span style=\"font-weight: 400\"> protocol.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A Couchbase Lite client can sync one or more scopes directly to other Couchbase Lite clients over a local network via <\/span><a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/android\/p2psync-websocket.html\"><span style=\"font-weight: 400\">Couchbase Lite Peer-to-Peer<\/span><\/a><span style=\"font-weight: 400\"> protocol. This can be done without the need for a cloud based control point.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Compatibility<\/h2>\n<p><span style=\"font-weight: 400\">Couchbase Mobile deployments upgrading to v3.1 can continue to use the bucket based model until they are ready to upgrade to scopes and collections. This also allows deployments to continue to use a bucket based model for existing apps but can take advantage of the benefits of scopes and collections for new apps.<\/span><\/p>\n<h2>Resources<\/h2>\n<p><span style=\"font-weight: 400\">But that\u2019s not all. There are other enhancements and API changes that are discussed in the release notes. Here are direct links to a few helpful resources. You can learn more on our <\/span><a href=\"https:\/\/www.couchbase.com\/products\/mobile\/whats-new\/\"><span style=\"font-weight: 400\">What\u2019s New<\/span><\/a><span style=\"font-weight: 400\"> page.<\/span><\/p>\n<div id=\"1682461101.451819\" class=\"c-virtual_list__item\" role=\"listitem\" data-qa=\"virtual-list-item\" data-item-key=\"1682461101.451819\">\n<div class=\"c-message_kit__background c-message_kit__background--hovered p-message_pane_message__message c-message_kit__message\" role=\"presentation\" data-qa=\"message_container\" data-qa-unprocessed=\"false\" data-qa-placeholder=\"false\">\n<div class=\"c-message_kit__hover c-message_kit__hover--hovered\" role=\"document\" data-qa-hover=\"true\">\n<div class=\"c-message_kit__actions c-message_kit__actions--default\">\n<div class=\"c-message_kit__gutter\">\n<div class=\"c-message_kit__gutter__right\" role=\"presentation\" data-qa=\"message_content\">\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"1682461173.151579\" class=\"c-virtual_list__item c-virtual_list__item--initial-activeitem\" role=\"listitem\" data-qa=\"virtual-list-item\" data-item-key=\"1682461173.151579\">\n<div class=\"c-message_kit__background p-message_pane_message__message c-message_kit__message\" role=\"presentation\" data-qa=\"message_container\" data-qa-unprocessed=\"false\" data-qa-placeholder=\"false\">\n<div class=\"c-message_kit__hover\" role=\"document\" data-qa-hover=\"true\">\n<div class=\"c-message_kit__actions c-message_kit__actions--above\">\n<div class=\"c-message_kit__gutter\">\n<div class=\"c-message_kit__gutter__right\" role=\"presentation\" data-qa=\"message_content\">\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div><b>Documentation<\/b><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/data-modeling.html#scopes-and-collections\"><span style=\"font-weight: 400\">Scopes and Collections in Sync Gateway<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/current\/java\/scopes-collections-manage.html\"><span style=\"font-weight: 400\">Scopes and Collections in Couchbase Lite<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Whitepapers<\/b><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/resources.couchbase.com\/c\/how-to-choose-a-mobi?x=9xr1sL\"><span style=\"font-weight: 400\">Choosing the right mobile database<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/customers\/\"><span style=\"font-weight: 400\">Couchbase Mobile Use cases<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Release Notes<\/b><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/release-notes.html\"><span style=\"font-weight: 400\">Couchbase Lite 3.1<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Sync Gateway 3.1<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Hear Wayne Carter, VP of Engineer at Couchbase, talk about Scopes and Collections in Couchbase Mobile:<\/p>\n<p><iframe loading=\"lazy\" title=\"Scopes and Collections support in Couchbase Mobile\" width=\"900\" height=\"506\" src=\"https:\/\/www.youtube.com\/embed\/BPp-SY6vGf0?feature=oembed&#038;enablejsapi=1&#038;origin=https:\/\/www.couchbase.com\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<p><span style=\"font-weight: 400\">If you have questions or feedback, please leave a comment below or feel free to reach out to me via <\/span><a href=\"https:\/\/twitter.com\/rajagp\"><span style=\"font-weight: 400\">Twitter<\/span><\/a><span style=\"font-weight: 400\"> or <\/span><a href=\"mailto:priya.rajagopal@couchbase.com\"><span style=\"font-weight: 400\">email<\/span><\/a><span style=\"font-weight: 400\"> me.<\/span><\/p>\n<h2>Acknowledgement<\/h2>\n<p><span style=\"font-weight: 400\">Special thanks to <\/span><a href=\"https:\/\/github.com\/adamcfraser\"><span style=\"font-weight: 400\">Adam Fraser<\/span><\/a><span style=\"font-weight: 400\"> and <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/author\/heymarkgamble\/\"><span style=\"font-weight: 400\">Mark Gamble <\/span><\/a><span style=\"font-weight: 400\">for their review of the blog post.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;re pleased to announce the general availability of Couchbase Mobile 3.1, which includes Couchbase Lite and Sync Gateway for mobile and edge computing solutions. This is a significant release that introduces cloud-to-edge support for scopes and collections in Couchbase Mobile [&hellip;]<\/p>\n","protected":false},"author":1423,"featured_media":14281,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1810,1816,6319,7666,2366],"tags":[1903,9339],"ppma_author":[8948],"class_list":["post-14327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile","category-couchbase-server","category-customers","category-edge-computing","category-sync-gateway","tag-rbac","tag-scopes-and-collections"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Scopes and Collections Support in Couchbase Mobile for Edge Applications<\/title>\n<meta name=\"description\" content=\"Couchbase Lite and Sync Gateway developers can avail the benefits of scopes and collections within their mobile and edge apps.\" \/>\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\/scopes-collections-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scopes and Collections Support in Couchbase Mobile for Edge Applications\" \/>\n<meta property=\"og:description\" content=\"Couchbase Lite and Sync Gateway developers can avail the benefits of scopes and collections within their mobile and edge apps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-27T16:25:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:11:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1650\" \/>\n\t<meta property=\"og:image:height\" content=\"930\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Scopes and Collections Support in Couchbase Mobile for Edge Applications\",\"datePublished\":\"2023-04-27T16:25:41+00:00\",\"dateModified\":\"2025-06-14T06:11:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/\"},\"wordCount\":2348,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2023\\\/04\\\/scopes-collections-couchbase-mobile.png\",\"keywords\":[\"RBAC\",\"Scopes and Collections\"],\"articleSection\":[\"Couchbase Mobile\",\"Couchbase Server\",\"Customers\",\"Edge computing\",\"Sync Gateway\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/\",\"name\":\"Scopes and Collections Support in Couchbase Mobile for Edge Applications\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2023\\\/04\\\/scopes-collections-couchbase-mobile.png\",\"datePublished\":\"2023-04-27T16:25:41+00:00\",\"dateModified\":\"2025-06-14T06:11:04+00:00\",\"description\":\"Couchbase Lite and Sync Gateway developers can avail the benefits of scopes and collections within their mobile and edge apps.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2023\\\/04\\\/scopes-collections-couchbase-mobile.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2023\\\/04\\\/scopes-collections-couchbase-mobile.png\",\"width\":1650,\"height\":930,\"caption\":\"Scopes and Collections in Couchbase Mobile\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/scopes-collections-couchbase-mobile\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scopes and Collections Support in Couchbase Mobile for Edge Applications\"}]},{\"@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\\\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/rajagp\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/author\\\/priya-rajagopalcouchbase-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Scopes and Collections Support in Couchbase Mobile for Edge Applications","description":"Couchbase Lite and Sync Gateway developers can avail the benefits of scopes and collections within their mobile and edge apps.","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\/scopes-collections-couchbase-mobile\/","og_locale":"en_US","og_type":"article","og_title":"Scopes and Collections Support in Couchbase Mobile for Edge Applications","og_description":"Couchbase Lite and Sync Gateway developers can avail the benefits of scopes and collections within their mobile and edge apps.","og_url":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2023-04-27T16:25:41+00:00","article_modified_time":"2025-06-14T06:11:04+00:00","og_image":[{"width":1650,"height":930,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png","type":"image\/png"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Scopes and Collections Support in Couchbase Mobile for Edge Applications","datePublished":"2023-04-27T16:25:41+00:00","dateModified":"2025-06-14T06:11:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/"},"wordCount":2348,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png","keywords":["RBAC","Scopes and Collections"],"articleSection":["Couchbase Mobile","Couchbase Server","Customers","Edge computing","Sync Gateway"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/","name":"Scopes and Collections Support in Couchbase Mobile for Edge Applications","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png","datePublished":"2023-04-27T16:25:41+00:00","dateModified":"2025-06-14T06:11:04+00:00","description":"Couchbase Lite and Sync Gateway developers can avail the benefits of scopes and collections within their mobile and edge apps.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/scopes-collections-couchbase-mobile.png","width":1650,"height":930,"caption":"Scopes and Collections in Couchbase Mobile"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/scopes-collections-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Scopes and Collections Support in Couchbase Mobile for Edge Applications"}]},{"@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\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Senior Director, Product Management","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/author\/priya-rajagopalcouchbase-com\/"}]}},"acf":[],"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/14327","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\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=14327"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/14327\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/14281"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=14327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=14327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=14327"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=14327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}