# Couchbase - llms-full.txt Generated from https://www.couchbase.com/page-sitemap.xml and curated URLs in llms.txt on 2026-06-30. Contains the full text of 258 pages. --- # Couchbase | Home Source: https://www.couchbase.com/ Last modified: 2026-06-30T12:17:00+00:00 ## Different on Purpose Couchbase is the only enterprise data platform that connects and mobilizes your data so you can protect critical experiences, scale globally, and give production AI agents one governed layer to remember, reason, and act - all with less risk and lower overhead. ##### Power your performance Expect peak performance from your digital experiences - even at peak demand. ##### Accelerate your innovation Get to market faster and stay one step ahead of competitors with a unified data platform. ##### Simplify your operations Cut complexity and drive visibility by consolidating your legacy infrastructure and services. ##### Unleash your data Take your data wherever it needs to go - across regions and data centers, from cloud to edge. ##### Keep costs in control Optimize your infrastructure spending with a unified database that significantly reduces your TCO. ## Who We Are We help the world’s biggest and most trusted brands make AI a practical part of mission-critical applications, giving production agents, copilots, and assistants the data foundation they need to reach production. ##### Speed Sub-millisecond latency keeps experiences fast even as demand skyrockets, matching the pace of agentic workloads that fire many reads, writes, searches, and memory lookups per interaction. ##### Scale Purpose-built for complex, critical infrastructure, our scale-out architecture grows with unpredictable agent traffic as teams build more agents and apps. ##### Efficiency Save time, money, and resources by reducing custom memory and retrieval code and cutting redundant inference calls across every team. ##### Resilience De-risk operations with data infrastructure and partnership that keep both critical applications and the production agents wired into them continuously available. ## The Proof is in the performance Couchbase enables 99.999% availability anywhere and has a track record for delivering up to a >50% reduction in TCO. See what Couchbase can do: ##### Deploy securely, anywhere Run your data and your agents across DBaaS, Kubernetes, cloud, on premises, edge, mobile, and air-gapped environments. ##### Performance that beats expectations Caching, workload isolation, billion-scale vector search, and auto-sharding combine into infrastructure that delivers real-time AI context seamlessly. ##### Deliver a better experience Give customers and teams local, ultra-low-latency access and agents that remember context instead of asking users to re-explain it. ##### Bring everything together Deploy the agent data layer across public cloud, private cloud, hybrid, on-prem, and edge so your architecture evolves with your business. ##### Dive right In Access developer tools and SDKs to start building production AI agents on Couchbase today. ### Make your cloud database go further Whatever cloud server you work with, we take your data wherever it needs to go - across regions and data centers, from cloud to edge. ## Stay Ahead of AI ##### Be AI-native Keep data, AI workloads, and agents on a single platform to accelerate every AI initiative. - Agent Memory - MCP Server - Agent Catalog - Model hosting - Vector search from cloud to edge --- # Couchbase MCP Server Source: https://mcp-server.couchbase.com/ # Couchbase MCP Server Couchbase MCP Server is a self-hosted MCP Server that allows AI agents to connect to and interact with data in Couchbase clusters, whether hosted on Capella or self-managed. It provides tools across categories including Cluster Health, Data Schema, Key-Value, Query, and Performance - with safety controls via read-only mode and fine-grained tool disabling. It supports both STDIO and Streamable HTTP transports. Couchbase MCP server is distributed as a Python Package Index (PyPI) package and via Docker. Enterprise support for Couchbase MCP Server is available by licensing Couchbase AI Data Plane, which also entitles use and enterprise support of Couchbase Agent Memory and Couchbase Agent Catalog. ## Architecture For the component breakdown and request flow, see Architecture. ## Tools The server exposes several tools across multiple categories. See the Tools page for full details. | Category | Tools | |---|---| Cluster Setup & Health | `get_server_configuration_status` , `test_cluster_connection` , `get_cluster_health_and_services` | Data Model & Schema Discovery | `get_buckets_in_cluster` , `get_scopes_in_bucket` , `get_collections_in_scope` , `get_scopes_and_collections_in_bucket` , `get_schema_for_collection` | Document KV Operations | `get_document_by_id` , `upsert_document_by_id` , `insert_document_by_id` , `replace_document_by_id` , `delete_document_by_id` | Query and Indexing | `run_sql_plus_plus_query` , `explain_sql_plus_plus_query` , `list_indexes` , `get_index_advisor_recommendations` | Query Performance Analysis | `get_longest_running_queries` , `get_most_frequent_queries` , `get_queries_not_selective` , `get_queries_not_using_covering_index` , `get_queries_using_primary_index` , `get_queries_with_largest_response_sizes` , `get_queries_with_large_result_count` | ## Releases The latest release is available on PyPI and Docker Hub. See the Release Notes for version history and details. ## Support Policy Enterprise support for Couchbase MCP Server is available by licensing Couchbase AI Data Plane, which also entitles use and enterprise support of Couchbase Agent Memory and Couchbase Agent Catalog. --- # About Us Source: https://www.couchbase.com/about/ Last modified: 2026-06-30T14:29:49+00:00 ## Join Our World-Class Team Come join us and make tomorrow better than today. There are endless ways to bring data to life. Couchbase helps you turn your database into the foundation for your next breakthrough, whether you’re scaling up, connecting cloud to edge, or awakening possibilities in AI. Couchbase is here to empower tomorrow’s businesses to succeed by bringing data to life in new ways. Here’s how we do that: Every single person at Couchbase is motivated by our customers’ success. We get to know our customers on a deeper level, and our passion is to solve their biggest challenges with personalized attention and world-class database platform solutions. Discover the values that shape who we are: Be authentic. Assume and act with positive intent, even in tough times. Eliminate bias, foster inclusion. Be your best self. Smile. Be courageous and innovative. Satisfy unmet, underserved needs. Deliver technical excellence and honesty. Enable transformation. Do the right thing, every time. Build trust with all constituents. Be honest and transparent. Do what you say. Be proactive. Plan for success. Put in work, be proud of it. Balance confidence and humility. Never lose alone. Be a great teammate. Celebrate. Put your family first. Let the company work for you in times of need. Help your family benefit through the company’s success. Have a bias for action. Execute with intensity and urgency. Know you have an impact. What we do matters. Enjoy the journey. --- # Couchbase Academy: NoSQL Training & Online Courses Source: https://www.couchbase.com/academy/ Last modified: 2026-05-18T08:42:47+00:00 Updates TRAINING # Couchbase Academy Learn Couchbase and NoSQL from the experts at Couchbase Academy. Build practical database skills through online courses and training paths that lead to official Couchbase certification. Choose from beginner or advanced instruction tailored to your needs, then complete your certifications on your own schedule. We have course and certification content for database administrators (DBAs), developers, architects, and systems administrators. All online courses (Associate-level Developer, Architect, and Administrator) are offered free of charge. You need to add the course to your cart, but you’ll see the cost is $0. Because in-person courses provide a Couchbase expert and lab environment for 4 days, there is a cost of $1,900 (USD) per seat. Also, all 6 Associate-level certification exams cost $50 (USD) each, and both Professional-level certification exams cost $100 (USD) each. At learn.couchbase.com/learn, you can find a list of upcoming classes and their dates. You can also email us at training@couchbase.com to learn more specifics and add users for your company. Couchbase classes are taught by Couchbase experts. Content is vetted by subject matter experts, and all learners are offered the opportunity to test what they’ve learned in live lab environments provided during the in-person classes. Please use the training suggestion link on this page to make a suggestion. Couchbase Academy is always looking for ways to make content more accessible and useful to customers. We’ll prioritize requests as soon as possible. If you have an idea for a training course you or your company would benefit from, please contact us. We’re happy to prioritize any training that will help our customers be successful. --- # Couchbase Capella NoSQL Certification Source: https://www.couchbase.com/academy/certification/ Last modified: 2026-05-18T08:46:24+00:00 Updates TRAINING # Couchbase Certification Join over 600 Couchbase certified professionals and advance your skills with Couchbase Academy, the official training and certification platform for developers and administrators. Whether you’re pursuing a Couchbase Capella certification or a NoSQL certification, our online courses and exams help you master the database technologies powering modern applications. --- # AI-Powered Applications in Retail Banking Source: https://www.couchbase.com/ai-applications-in-retail-banking/ Last modified: 2026-05-06T10:04:48+00:00 Case Study ## AI data strategy for retail banking Slow applications lose users. A flexible multipurpose database is foundational to high performance - and to building AI-powered applications that offer personalized customer experiences. ### AI strategy requirements The success of AI is dependent on how well one understands and manages the underlying data. Hence, AI strategy should be an extension of your data strategy. ### AI strategy execution Explore retail banking considerations to building a robust AI architecture, navigating an evolving AI ecosystem, and establishing effective AI governance practices. ### Retail banking solutions Common applications for retail banking companies include fraud detection and scoring, e-payments, and customer 360. ## What customers are saying “For our customers, the loss of $100 can mean the difference between a pleasant holiday and frustration. Couchbase has never failed us or our customers.” **Dmitri Lihhatsov,**Financial Crime Product Owner, Revolut 96% of fraudulent transactions caught $3M saved ## AI-powered apps, vector search, and RAG ### Coding with AI: vector search and RAG Learn how to integrate AI with LangChain and Couchbase vector search to solve real-world problems and simplify complex coding tasks. ### Vector search at the edge Ensure search results are always available, even in areas with no internet connectivity. ### Improve LLM accuracy One method to improve the data accuracy of large language models is retrieval-augmented generation (RAG). How does RAG work? ## Providing fast, secure payment processing for Finservs and their customers Wibmo, a PayU subsidiary and India’s largest authentication service provider, powers secure digital payments across emerging markets. The company chose Couchbase to deliver sub-second response times while processing over 4 million transactions per day, scale seamlessly for growth and demand spikes, and support 80% of banks in India. ### Start building Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. ### Use Capella free Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. ### Get in touch Want to learn more about Couchbase offerings? Let us help. --- # AI Data Plane for Production Agents (formerly AI Services) Source: https://www.couchbase.com/ai-cloud-services/ Last modified: 2024-04-25T08:30:23+00:00 Video AGENT MEMORY TRIAL Couchbase AI Data Plane gives production AI agents persistent memory, governed data access, tool and prompt visibility, and fast context retrieval across cloud, self-managed, hybrid, edge, and air-gapped environments. It brings Agent Memory, MCP Server, and Agent Catalog together on Couchbase, helping teams avoid scattered agent infrastructure and move from pilots to production-ready systems faster. Keep prompts, tools, traces, memory, and operational data in one governed data layer so teams can inspect agent behavior with SQL++. Maintain short-term, long-term, semantic, profile, and conversational memory across sessions, restarts, users, and frameworks. Give agents standardized access to Couchbase operational data, vectors, documents, tools, prompts, traces, and cache. Reduce redundant LLM calls with exact and semantic caching while keeping cache, vectors, documents, and operational data together. Production agents need access to memory, tools, prompts, operational data, traces, and context, but those assets often live in scattered systems. Couchbase keeps them in one governed data layer, giving teams visibility into what an agent used, which prompt version was involved, and what data shaped the response. Production agents need fast access to current context across operational data, vectors, documents, memory, and cache. Couchbase keeps those assets close together, reducing data hops and helping agents respond quickly across cloud, self-managed, hybrid, edge, and air-gapped environments. Couchbase’s advanced vector search delivers billion-scale storage and search with exceptional performance. It enables rich context across text and images while ensuring scalability, security, and seamless AI tool integration. Move from prototype to production with three indexing options tailored to any use case. Organizations often overlook unstructured data that could enhance AI. Couchbase automates data ingestion, vectorization, and indexing converting text, PDFs, and images into JSON and vectors. It automatically re-vectorizes updates to streamline workflows and give models richer context. Couchbase provides the data foundation for critical AI apps and agents, helping teams store LLM interactions, connect agents to governed operational data, reduce custom memory and retrieval code, cut latency and token costs, and run across cloud, self-managed, hybrid, edge, and air-gapped environments. Build with leading AI, data, and observability partners while keeping agent memory, context, tools, traces, and cache secured on Couchbase. Get quick answers about agent memory, governed data access, LLM caching, security, and production AI agents. Couchbase AI Data Plane provides production AI agents with one governed data layer for memory, context, tools, traces, operational data, and cache. Agent Memory maintains short-term and long-term memory across sessions, restarts, users, and frameworks while keeping memory close to operational data. Couchbase keeps prompts, tools, traces, memory, and operational data in one governed data layer so teams can inspect what agents used and why they responded. Agent Catalog manages prompt metadata, tool metadata, and end-to-end traces so teams can inspect, reuse, and govern agent behavior across applications. Agent Memory reduces token costs by reusing persistent, cumulative context instead of resending conversations each turn, while co-located data and caching cut redundant inference calls. Yes, AI Services has officially rebranded to AI Data Plane as of June 2026. The product has evolved under the AI Data Plane identity to support new features. --- # Power AI Apps with Couchbase’s AI Integration Platform Source: https://www.couchbase.com/ai-integration/ Last modified: 2025-09-22T14:55:22+00:00 # Build and Run AI-Powered Apps With Couchbase’s AI Integration Platform ## Couchbase is an AI integration platform that unifies database, vector search, and real-time sync to power intelligent applications at any scale. Enterprises like Rakuten and Tondo Smart trust Couchbase to build AI-powered apps that work with diverse data formats, structures, and sources while delivering speed, flexibility, and resilience. ### Your roadmap for AI agents - Learn how to overcome common challenges ## AI applications require a platform approach The promise of AI is significant, but so are the challenges. You need to secure sensitive data, work with diverse data types, control hallucinations, simplify data flow, manage costs, and evolve apps quickly. Couchbase Capella is an AI integration platform that helps you do all of this in one unified developer data platform. ##### Build and support AI apps Enterprise Strategy Group confirms Couchbase is ready for the future of AI today. Their evaluation shows how Capella DBaaS compares to top competitors and why enterprises choose Couchbase as their AI integration platform to scale with confidence. ##### Get mobile & edge support For user-facing applications, the ideal AI integration platform includes mobile and edge capabilities with support for on-device processing. Learn why Couchbase is uniquely suited to deliver. ## What customers are saying "The ability to run queries easily helped us boost the machine learning AI algorithms that we’re running today. Couchbase was the database for us.” **Eliav Gnessin,**CTO, Tondo Smart **60%**reduction in operating costs **50%**decrease in lighting costs ## Create smarter, more efficient agentic apps with ease ###### Use unstructured data Automate ingestion of unstructured data without code for easier vector search and RAG applications. ###### Simplify vectorization for apps Build AI-native applications more easily using high-performance vector retrieval for knowledge-intensive tasks. ###### Use semantic search Augment vector search with deeper contextual and linguistic capabilities. ### Rakuten increased personalization and reduced TCO by 20% When Rakuten’s legacy RDBMS became too expensive to expand and scale, they consolidated their databases with Couchbase’s developer data platform. Today, Rakuten is delivering global applications ahead of schedule despite teams being dispersed around the world. ##### Start building Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. ##### Use Capella free Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. ##### Get in touch Want to learn more about Couchbase offerings? Let us help. --- # About Agentic Apps Source: https://docs.couchbase.com/ai/agent-tutorial/about-agentic-app.html # About Agentic Apps - concept An overview of the key concepts involved in agentic apps. ## What’s an Agentic App? An agentic app uses a Large Language Model (LLM) to simulate reasoning, planning, and decision-making. This enables agentic apps to handle tasks with less explicit step-by-step programming. Agentic apps tend to have these properties: - **Being Goal-Oriented:**Tell your agent your specific goal, and it figures out how to meet that goal. - **Autonomous Execution:**An agent can take actions without step-by-step instructions. - **Multi-Step Reasoning:**An agent can break down complex tasks into smaller steps. - **Tool and API Usage:**An agent can interact with external services, databases, or devices. The defining feature of agentic apps is that they use an LLM to make decisions and execute steps towards a goal. The LLM is the brain of the app. It has agency to make decisions and use the tools it has available. There’s no universally agreed definition for an agentic app. Apps can range from straight-forward assistants to fully autonomous agents. Couchbase offers AI services that can support your agentic apps, making them easier to build, faster to run and cheaper to support. For more information about the Couchbase AI Data Plane, see Couchbase AI Data Plane. | The AI Data Plane also offers notebooks and sample code hosted on Google Colab and GitHub to get you started with a prebuilt agentic app in your choice of agent framework: - Colab: LangGraph | LangChain | LlamaIndex - GitHub: LangGraph | LangChain | LlamaIndex | ## Why Create Agentic Apps? Agentic apps can have benefits over using a traditionally programmed app: | Benefit | Agentic App | Traditional App | |---|---|---| High level of automation saves time, reduces repetitive work, and minimizes user effort. | Users state their goal, and the app handles the entire process. | Users must manually perform each step or input fields and configure options. | More natural, human-like interaction. Closer to delegating tasks to a personal assistant. | Focuses on what the user wants, figuring out the how automatically. | Focuses on how to do something and uses step-by-step navigation. | Multi-step reasoning and decision-making handles complex, changing scenarios without requiring constant user input. | Can plan, adapt, and make decisions dynamically based on context and data. | Executes predefined workflows with limited flexibility. | Proactive assistance improves convenience and reduces stress for the user. | Can anticipate needs and act, such as rebooking a flight when detecting a delay. | Reacts only when the user initiates an action. | Integration with multiple tools and APIs expands capabilities without requiring the user to switch between multiple apps. | Can connect to external services, databases, and devices to complete tasks. | Often limited to its own built-in features. | Personalization and adaptation delivers increasingly relevant and efficient results. | Learns from user behavior and preferences to improve over time. | Offers static features and settings. | Frees mental bandwidth for more important decisions. | Handles the complexity in the background. | Users must remember steps, options, and settings. | ## Example: Personal Finance Assistant App Consider a personal finance assistant app. A traditional budgeting app might let you track spending, set goals, and receive alerts. When something unusual happens - like a duplicate charge or overspending in 1 category - you would still need to investigate and take action yourself. An agentic app can go further: - Monitor your transactions in real time. - Detect unusual activity or overspending. - Retrieve your budget and compare against goals. - Suggest adjustments, such as moving money between accounts. - Take action automatically if given prior permission, such as paying a bill or flagging a charge. The app has less reliance on waiting for a user to interact with it to further the goal. The app can plan, adapt, and act on the user’s behalf. To make this work, the app needs to interpret events, such as user goals, and decide on next steps. It needs some way to store preferences and past actions. It also requires access to banking APIs, budgeting systems, and notification services. You can mix and match these components to build your app. Similarly, you can chain multiple LLMs to specialize in different tasks or add new tools as the app grows in capability. The agent has access to tools and instructions, then tries to accomplish the goals. It’s possible to add modularly to this structure, introducing additional tools, memory sources and even LLMs specialized for different tasks. ## Key Concepts of Agentic Apps Every agentic app is a combination of key concepts. It’s up to you how to combine these building blocks. ### The LLM Rather than a complex decision tree, agentic apps use a Large Language Model (LLM) as a reasoning engine. The LLM can take instructions and make decisions on how to proceed. It’s responsible for: - Understanding the user’s request. - Breaking it into smaller tasks. - Deciding which tools to use and in what order. - Integrating results into a coherent response. For more information about how to deploy an LLM on the AI Data Plane, see Deploy a Large Language Model (LLM). ### The Orchestration Layer The orchestration layer is the glue between the LLM and the rest of the app. - Manages the prompt, updating it with context such as the conversation history. - Decides when to call external tools or APIs. - Injects retrieved knowledge into the prompt. - Applies guardrails and safety checks. - Handles retries, error recovery, and monitoring. Keep in mind that the LLM can do some of this by itself. Some apps are more agentic than others. When you plan your agentic app, you need to decide the right balance between using your LLM and using the more traditionally programmed orchestration layer. ### The Prompts Prompts are how you tell the LLM what role it’s playing, how it should behave and what information it has available. In all but the most basic apps, a prompt is not just an initial instruction or user input. A prompt is a constructed input assembled by the orchestration layer. The prompt grows and changes as the app progresses through its workflow and more information becomes available. This is how the LLM stays informed of the app’s current state. Prompts can include: - The agent’s persona or style. - Rules for interacting with the user. - Step-by-step instructions for solving a problem. - Information retrieved through RAG. - Guardrails to prevent the app acting inappropriately. A well-crafted prompt is like a good brief to a human assistant. It sets expectations and boundaries while providing all the information required to complete the task. ### The Memory Most apps rely on some kind of memory to function. The LLM must take all information required to make decisions as part of the prompt. Memory comes in 2 main forms: - **Short-term memory**: Keeps track of the current conversation or task state. - **Long-term memory**: Stores knowledge, past results, and important context for future use. In both cases, the prompt incorporates memory, which the prompt then passes to the LLM. For short term memory, this can mean adding the conversation history into the prompt. The prompt contains context, which is all of the information the model has available to generate its output. The model does not know everything and specific tasks require specialist context such as domain knowledge or sensitive user information. Agentic apps can retrieve context from an external source, such as fetching documents from a vector database. This is known as Retrieval Augmented Generation (RAG). Other types of RAG can retrieve information from tools such as a web search, often termed Tool Augmented Generation. For more information about RAG, see About RAG Blueprints. For more information about using a Capella operational cluster as a vector store, see Process Your Data For the Couchbase AI Data Plane. ### The Tools Tools are the ways the agent interacts with the other systems either within the app or the outside world. Tools might be: - APIs - Databases or document stores - Web searches - Pre-written code functions - Other agents Depending on the framework, the LLM may suggest tool usage, or the orchestration layer may decide when to invoke tools. The AI Data Plane can also help you manage tool calling and tool versioning in your agentic apps. For more information, see Integrate an Agent with the Agent Catalog. ### The Frameworks While you can build an agentic app entirely yourself, they can become complex as the app grows. Frameworks provide reusable building blocks and patterns that make this easier, such as: - **Prompt management:**Ways to structure, template, and evolve prompts as the app runs. For help with prompt management, you can also use the Agent Catalog. - **Memory handling:**Utilities for storing and retrieving both short-term and long-term memory and context. - **Tool integration:**Standard ways to connect APIs, databases, or functions so the LLM can use them. - **Orchestration:**Mechanisms for coordinating multiple steps, handling branching workflows, retries, and error recovery. - **Guardrails:**Ways to enforce rules, validate tool calls, and keep the agent within safe boundaries. You do not need a framework to build an agentic app but they can: - Save time by handling common patterns. - Provide structure as your app grows more complex. - Make it easier to swap out components such as different LLMs or memory stores. For more information about agent frameworks, see Agent Development Framework. --- # Make an API Call with the Couchbase AI Data Plane APIs Source: https://docs.couchbase.com/ai/api-guide/api-use.html # Make an API Call with the Couchbase AI Data Plane APIs - how-to How to make an API call with the Couchbase AI Data Plane APIs. This page is for the Couchbase AI Data Plane. It covers the AI Data Plane features in the Management API, and the Model Service API. For more information about the Management API for Capella Operational features, see Make an API Call with the Capella Operational Management API. the AI Data Plane has different APIs that you can use. You can: - Make an API call with the Management API to manage **Provider**integrations,**Workflows**, AI**Models**, and**Model Service API Keys**. - Make an API call with Model Service API to send inference requests to your embedding models or Large Language Models (LLMs) and receive outputs. ## Make an API Call with the Management API Use the Management API to manage your AI Data Plane. ### Prerequisites - You have created an API key. - The API key must have all the organization roles, project access, and project roles required to carry out the API call. In the Management API reference, each endpoint description lists the roles that are needed. - The API key is not expired. - You added your connection IP address to your API key’s allowed IP addresses. - You saved the API key token when you created it. - ### Make an API Call You can use a client such as cURL or a native SDK call to make an API call with the Management API. To make an API call: - Use the following base URL: https://cloudapi.cloud.couchbase.com - Pass your API key as a Bearer token using the HTTP `Authorization` header. - If a request body is required, pass it in JSON format. Alternatively, you can use a client such as Insomnia or Postman to explore the details of the REST API, generate code samples, and so on. The Management API uses an OpenAPI v3 specification. To download the Management API specification, go to the Management API Reference and click **Download**. ### Examples The following examples show different operations you can complete with the Management API: #### List an API Key’s Organizations The following GET request lists all of the organizations available to the provided API key. - `$TOKEN` is the API key token. ``` curl "https://cloudapi.cloud.couchbase.com/v4/organizations" \ -H "Authorization: Bearer $TOKEN" ``` The response is a JSON object similar to the following. In this case, the provided API key is able to access a single organization. ``` { "data": [ { "audit": { "createdAt": "2025-10-02T16:34:44.604521691Z", "createdBy": "", "version": 1 }, "description": "", "id": "", "name": "My Organization", "preferences": { "sessionDuration": 7200 } } ] } ``` The response includes the organization ID. You can use the organization ID for any further API calls in which `{organization}` is a path parameter. #### List Deployed Models in an Organization The following GET request lists all of the deployed models available to the provided API key within the specified organization. - `$ORGID` is the organization ID. - `$TOKEN` is the API key token. ``` curl "https://cloudapi.cloud.couchbase.com/v4/organizations/$ORGID/aiServices/models -H "Authorization: Bearer $TOKEN" ``` The response is a JSON object similar to the following. ``` { "cursor": { "hrefs": { "first": "https://cloudapi.cloud.couchbase.com/v4/organizations//aiServices/models?page=1&perPage=10", "last": "https://cloudapi.cloud.couchbase.com/v4/organizations//aiServices/models?page=1&perPage=10", "next": "https://cloudapi.cloud.couchbase.com/v4/organizations//aiServices/models?page=0&perPage=10", "previous": "" }, "pages": { "last": 1, "next": 0, "page": 1, "perPage": 10, "previous": 0, "totalItems": 2 } }, "data": [ { "model": { "actions": [ "pause", "destroy", "edit" ], "cloudConfig": { "compute": { "cpu": 4, "gpuMemory": 48 }, "provider": "aws", "region": "us-east-1" }, "config": { "catalogModelName": "mistralai/mistral-7b-instruct-v0.3", "provider": "mistral", "type": "text-generation" }, "connectionString": "https://.ai.couchbase.com", "id": ".ai.couchbase.com", "id": "", "name": "model-2", "status": "healthy" } } ] } ``` This response contains details about all the models, including their model type and respective `{connectionString}` URL. #### Get a Model’s Connection String The following GET request retrieves details about a specific model’s connection string. This connection string is the base URL required to use the Model Service API for this specific model. - `$ORGID` is the organization ID. - `$MODELID` is the model ID. - `$TOKEN` is the API key token. ``` curl "https://cloudapi.cloud.couchbase.com/v4/organizations/$ORGID/aiServices/models/$MODELID/connectionString" \ -H "Authorization: Bearer $TOKEN" ``` The response is a JSON object similar to the following. ``` { "connectionString": "https://.ai.couchbase.com" } ``` #### Create Model Service API Key for a Region The following POST request creates a Model Service API Key for an AWS region within the specified organization. You need this Model Service API Key to access the Model Service API and use your AI model. - `$ORGID` is the organization ID. - `$TOKEN` is the API key token. ``` curl "https://cloudapi.cloud.couchbase.com/v4/organizations/$ORGID/aiServices/models/apiKeys" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "model-api-key", "description": "API key for LLM", "expiry": 180, "allowedCIDRs": [""], "region": "us-east-1" }' ``` The response is an JSON similar to the following. ``` { "id": "", "token": "" } ``` ## Make an API Call with the Model Service API Use the Model Service API to provide inference requests to your hosted models. ### Prerequisites To make an API call with the Model Service API, you need: #### Model Service API Key A Model Service API key is only used for the Model Service API. Organizational API keys created for the Management API have different access and will not work for the Model Service API. To use a Model Service API key to make a call to the Model Service API: - Configure it with the same region as your AI model. - Use a key that has not expired. - Add the IP address you want to connect from to your API key’s allowed IP addresses. - Save the API key token when you create it, as it cannot be retrieved later. To create an API key for the Model Service API, see Generate Model Service API Keys. #### Model Connection String The Model Service API uses a model’s **Model Endpoint** as its base URL. This is also known as the model connection string in the Management API. The model connection string is unique to every AI model you deploy. To get your model connection string: - Go to . - Find your model and copy the **Model Endpoint**. To get your model connection string using the Management API, see Get a Model’s Connection String. ### Make an API Call You can use a client such as cURL or a native SDK call to make an API call with the Model Service API. To make an API call with the Model Service API and a specific model: - Use your model’s connection string as the base URL: `https://.ai.couchbase.com` - Pass the Model Service API key as a Bearer token using the HTTP `Authorization` header. - If a request body is required, pass it in JSON format. Alternatively, you can use a client such as Insomnia or Postman to explore the details of the REST API, generate code samples, and so on. The Model Service API uses an OpenAPI v3 specification. To download the Model Service API specification, go to the Model Service API Reference and click **Download**. ### Examples The following examples show different operations you can complete with the Model Service API: #### Create Chat Conversation The following POST request creates a model response for a given chat conversation with your specified LLM. To use your model, you need a Model Service API key in the same region as the model, along with its unique model connection string. - `$MODEL_STRING` is the base URL. This is the model connection string, also known as**Model Endpoint**in the Capella UI. - `$TOKEN` is the Model Service API key token. ``` curl "$MODEL_STRING/v1/chat/completions \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": "What is Couchbase all about? Write a N1QL query to get top 250 documents in a sorted list of scope, inventory and collection, airlines" } ], "model": "meta-llama/Llama-3.1-8B-Instruct", "stream": false, "max_tokens": 100 } ``` The response is an JSON similar to the following. ``` { "id": "", "object": "chat.completion", "created": 1759451545, "model": "mistralai/mistral-7b-instruct-v0.3", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Couchbase is a NoSQL document-oriented database that can be used for building fast and resilient applications, offering features like data durability, real-time insights, and flexible data modeling. It supports various programming languages and APIs, including N1QL (SQL-likequery language).\n\nIn your case, you want to retrieve the top 250 documents from a scope, inventory, and collection named \"airlines\" in a sorted order. Assuming you have" }, "finish_reason": "length" } ], "usage": { "prompt_tokens": 38, "completion_tokens": 100, "total_tokens": 138 } } ``` ## Next Steps - For a full reference guide of the Management API, see Capella Operational Management API Reference. - For a full reference guide of the Model Service API, see Inference API Reference. - For a reference of the Management API errors, see Management API Error Messages . - For a reference of the AI Data Plane Model Service API errors, see Model Service API Error Messages . --- # Agent Memory for Persistent Memory Storage Source: https://docs.couchbase.com/ai/build/agent-memory/about-agent-mem.html # Agent Memory for Persistent Memory Storage - concept Couchbase Agent Memory provides a unified, persistent memory layer for agentic applications to maintain context across user sessions. Couchbase Agent Memory stores conversation history, extracted facts, and vector embeddings so that agents can recall relevant past context across sessions. You access it through the Agent Memory Python SDK or its REST API. Without persistent memory, agents rely on in-context memory that disappears when the context window fills up, or they operate as stateless agents with no memory at all. Agent Memory solves this by acting as the persistence layer between your agent framework and its long-term memory store. You do not need to build custom session tables, summarization flows, or retrieval logic. Agent Memory integrates with any agent framework, including LangGraph, CrewAI, LlamaIndex, and Strands Agents. Agent Memory uses Couchbase Capella or Couchbase Server Enterprise Edition as its underlying data store. Agent Memory manages the storage and retrieval of memories for an agent. Agent Memory does **not** provide: - Reasoning logic for using memories. - Support for non-textual content. - Model hosting. For more information about how to host a model through Capella, see Deploy Models with the AI Data Plane Model Service. - Real-time streaming of memory changes. - Memory sharing across users of your application. You can share memory across agents within the same application using annotation-based access control. ## Use Cases The following examples show how Agent Memory can power domain-specific AI agents. - Personalized retail assistant - A retail agent stores a shopper’s persistent style preferences and sizing as long-term facts with no expiry. The agent stores seasonal browsing interactions with a TTL so they decay automatically after a few months. When the shopper returns, the agent retrieves relevant preferences across all sessions to personalize recommendations without manual context management. - DevOps and SRE copilot - A DevOps agent stores persistent infrastructure facts, like service topology and configuration, with incident logs that carry a short TTL and expire once an incident is resolved. When generating a debug script, the agent retrieves architecture context from all sessions while temporary noise from resolved incidents has already faded. - Financial fraud investigator - A fraud analysis agent stores flagged transaction patterns with a TTL set to match compliance retention requirements. When a new suspicious transaction arrives, the agent uses time-range filtering to restrict its semantic search to a specific historical window, such as a prior holiday season, to surface only relevant precedents. ## Key Capabilities Agent Memory deploys as a stateless Docker container on your own server. It connects to an existing Capella or Couchbase Server Enterprise Edition cluster. You can scale your Agent Memory server as needed and manage its configuration and settings through an environment file. You can retrieve and store memories on your Agent Memory deployment through the Agent Memory Python SDK or its REST API. Once your server is running, Swagger UI is available at `/docs` and ReDoc at `/redoc` , with no additional setup, to view documentation for the Agent Memory REST API. | Agent Memory organizes memory using a hierarchy of users, sessions, and memory blocks. ### User In Agent Memory, a user is what interacts with your AI agent. Each user has a unique identifier that you generate. Agent Memory uses your user identifiers to isolate memory data and implement access control. Each user can have multiple sessions. ### Session A session represents an individual run or interaction between a user and your application. Sessions organize memory blocks for a specific user. A session can be active or ended: - **Active**sessions can receive new memory blocks. - **Ended**sessions can no longer receive new memory blocks and are permanently closed. You cannot reopen an ended session or modify memory blocks in it. Existing blocks remain readable and searchable. You can control the status of a user’s session through your agent application logic. Sessions persist in the Couchbase cluster you connect to Agent Memory. If your application restarts or disconnects, you can retrieve an existing session and continue adding memories. ### Memory Block A memory block is the basic unit of storage in Agent Memory. It captures information from a session. This information can be any important topics or information from a session that you want to store for later recall. Each memory block belongs to a specific session and contains: - The original chat message or fact. - A vector embedding for semantic search. - An LLM-generated summary. Vector embeddings for semantic search and LLM-generated summaries require that you have an embedding model and LLM available for your Agent Memory instance. - A timestamp for conflict resolution. You can use the vector embeddings for a memory block to retrieve relevant memories later, using a semantic search. Memory block timestamps help with conflict resolution and let you filter memories later by a time range. ## Memory Types Agent Memory unifies different memory types into a single retrieval system. - Conversational Memory - Short-term memory scoped to 1 session. It captures the flow of the current conversation to maintain dialog continuity. - Profile Memory - Long-term memory that spans multiple sessions. It stores facts and preferences extracted from user conversations to personalize future responses. - Semantic Memory - Long-term memory that stores knowledge and facts. Agents retrieve this information for factual grounding. ## Memory Management Agent Memory provides APIs to manage memory lifecycle, resolve conflicts, and track access. ### Memory Decay You can set memory to decay over time to keep the agent’s working context relevant. Agent Memory uses time to live (TTL) settings to automatically remove old memory blocks. TTL values follow a hierarchy with the most specific value taking precedence: - Memory block: pass the `memory_block_ttl` SDK parameter to`add_memory()` or`update_memory()` to override both the session and global values. - Session: pass the `memory_blocks_ttl` SDK parameter when creating a session to override the global default. - Global: the `AGENTMEMORY_MEMORY_BLOCK_TTL` environment variable sets the default applied to all memory blocks. For more information, see Manage TTL. ### Conflict Resolution When an agent retrieves contradictory memories, it uses the timestamp on each memory block to determine the most recent information. ### Traceability You can track all memory operations to audit agent behavior and debug issues. Agent Memory records memory read and write operations in structured logs. These logs include user and session identifiers. Agent Memory includes an embedded Prometheus instance that exposes operational metrics, including extraction queue depth, failure counts, and token throughput. For more information, see Prometheus Metrics. ## Security and Access Control You can configure Agent Memory to use OIDC/OAuth2 for access control. You must provide a valid Bearer token in the `Authorization` header of all API requests. Agent Memory requires tokens signed with the RS256 algorithm. Agent Memory isolates data at the user and session level. One user cannot access the memory space of another user. You can share memories across different agents within your application using annotation-based access control. --- # Get Started with Agent Memory Source: https://docs.couchbase.com/ai/build/agent-memory/get-started-agent-mem.html # Get Started with Agent Memory - how-to Deploy the Couchbase Agent Memory server and store and retrieve memory using its Python SDK. Use this quickstart to get Agent Memory running, and to write a simple Python script that demonstrates how to store and retrieve memories. | This quickstart is for development and testing purposes only. For production deployment instructions, see Deploy Agent Memory for Production. | ## Prerequisites - A Couchbase Server Enterprise or Couchbase Capella cluster with the following configuration: - Couchbase Server 8.0.2 or later. - The following services enabled: - A bucket created for Agent Memory. - Cluster access credentials with read and write permissions on that bucket. For more information, see Create Cluster Access Credentials or Manage Users and Roles. - Your cluster’s connection string. For more information, see Connect To Your Cluster. - - You have an API key for an OpenAI-compatible embedding model and large language model (LLM). These can be external or from the Capella Model Service. - You have Docker installed. - You have Python 3.12 or later installed. ## Step 1: Deploy the Agent Memory Server To deploy the Agent Memory server on Linux, Intel/AMD, Apple Silicon, or AWS Graviton: - Download the artifacts using the time-limited download link provided to you. The download link expires in 24 hours. - Load the Docker image: - Intel/AMD (amd64) - ARM (arm64) Use these commands for most Linux servers and Intel/AMD machines: `docker load -i agentmemory-server-amd64-v1.0.0.tar` Use these commands for Apple Silicon and AWS Graviton instances: `docker load -i agentmemory-server-arm64-v1.0.0.tar` - - Create a `.env` file with the following configuration:Replace each placeholder with your actual values. `AGENTMEMORY_CONN_STRING=couchbases://your_cluster_host` **(1)**AGENTMEMORY_USERNAME=your_username AGENTMEMORY_PASSWORD=your_password AGENTMEMORY_BUCKET=your_bucket_name # AGENTMEMORY_CONN_ROOT_CERTIFICATE=/app/certs/ca.pem**(2)**OPENAI_API_KEY=your_api_key AGENTMEMORY_EMBEDDING_MODEL=text-embedding-3-small AGENTMEMORY_LLM_MODEL=gpt-4o-mini AGENTMEMORY_SERVER_HOST=0.0.0.0 AGENTMEMORY_SERVER_PORT=8080 OIDC_AUTH_ENABLED=false LOG_LEVEL=INFO**1**Use `couchbase://` for clusters without TLS, or`couchbases://` for clusters with TLS.**2**When connecting to a Capella cluster, you need to use the cluster’s root certificate. To use your Capella cluster’s certificate, first uncomment this line. Next, Download the root certificate from the Capella UI, rename it to `ca.pem` , and place it in the same directory as your`.env` file. The path`/app/certs/ca.pem` is the location inside the container.This `.env` file shows only the variables you need for a minimal deployment. For the full list of available variables, see Agent Memory Environment Variable Reference. - Start the server: If Couchbase Server and Agent Memory are running on the same host, see connecting to Couchbase Server on the same host. - Intel/AMD (amd64) - ARM (arm64) Use these commands for most Linux servers and Intel/AMD machines: `docker run -d \ --name agentmemory-server \ --platform linux/amd64 \ --env-file .env \ -p 8080:8080 \ -p 9090:9090 \ -v agentmemory-logs:/app/logs \ --restart unless-stopped \ agentmemory-server:amd64` - If connecting to a Capella cluster, add `-v $(pwd)/ca.pem:/app/certs/ca.pem:ro` before the image name in the`docker run` command. - Port `8080` is the Agent Memory API. For more information, see API Endpoints. - Port `9090` is the embedded Prometheus metrics endpoint. If you do not need to scrape Prometheus from outside the host, omit the`-p 9090:9090` flag. Use these commands for Apple Silicon and AWS Graviton instances: `docker run -d \ --name agentmemory-server \ --env-file .env \ -p 8080:8080 \ -p 9090:9090 \ -v agentmemory-logs:/app/logs \ --restart unless-stopped \ agentmemory-server:arm64` - If connecting to a Capella cluster, add `-v $(pwd)/ca.pem:/app/certs/ca.pem:ro` before the image name in the`docker run` command. - Port `8080` is the Agent Memory API. For more information, see API Endpoints. - Port `9090` is the embedded Prometheus metrics endpoint. If you do not need to scrape Prometheus from outside the host, omit the`-p 9090:9090` flag. - - Verify the server is healthy: `curl http://localhost:8080/health` The server is ready when the response includes `"status": "healthy"` .If the status is unhealthy, check the logs for more information: `docker logs agentmemory-server` If you encounter issues, see Troubleshooting. ## Step 2: Install the Python SDK To install the Python SDK on the machine where you want to develop with Agent Memory: - Create and activate a virtual environment in your project directory: `python -m venv .venv source .venv/bin/activate` You can also use Conda or another virtual environment manager. - Install the Agent Memory Python SDK: `python -m pip install --upgrade pip python -m pip install couchbase-agent-memory` ## Step 3: Store and Retrieve Memory You can use the following quickstart example to learn how to store and retrieve memories from Agent Memory: - Create a file called `quickstart.py` and add the following code. This code demonstrates creating a user and session, storing memory blocks, and retrieving them by semantic search:`from agentmemory import AgentMemoryClient, ChatMessage with AgentMemoryClient(base_url="http://localhost:8080") as client: # Create a persistent user identity user = client.create_user(user_id="support-agent-1", name="Support Bot") print(f"Created user: {user.user_id}") # Open a session - the container for this conversation's memory blocks session = user.create_session(session_id="ticket-4821") print(f"Created session: {session.session_id}") # Store a conversation exchange. # async_processing=False blocks until the embedding is generated; # all returned blocks are in ready status on return. r1 = session.add_memory( messages=[ ChatMessage( user_content="My payments keep failing at checkout.", assistant_content="I can help with that. Are you seeing a specific error code?", ) ], async_processing=False, ) print(f"Stored message block(s): {r1.block_ids}") # Store a discrete fact extracted from the conversation r2 = session.add_memory( facts=["Customer is on the free tier and has not added a payment method."], async_processing=False, ) print(f"Stored fact block(s): {r2.block_ids}") # Retrieve memory blocks relevant to a query via semantic search print("\nRetrieving memories relevant to 'billing issues'...") results = session.search_memory(query="billing issues") for block in results.memory_blocks: if block.message: print(f" User: {block.message.user_content}") print(f" Assistant: {block.message.assistant_content}") if block.fact: print(f" Fact: {block.fact}") session.end() print("Session ended.")` `async_processing=False` makes`add_memory()` wait for embedding generation to complete before returning. This is appropriate for a quickstart, but it adds latency per call. In production, use the default`async_processing=True` , which returns immediately and generates embeddings in the background. Blocks remain searchable only after their status reaches`ready` , which happens within seconds under normal load.If your server has OIDC authentication enabled, pass your JWT bearer token to the client constructor: `AgentMemoryClient(base_url="http://localhost:8080", token="your-jwt-token")` - Run the file: `python quickstart.py` - Review your expected output: `Created user: support-agent-1 Created session: ticket-4821 Stored message block(s): [''] Stored fact block(s): [''] Retrieving memories relevant to 'billing issues'... User: My payments keep failing at checkout. Assistant: I can help with that. Are you seeing a specific error code? Fact: Customer is on the free tier and has not added a payment method. Session ended.` Agent Memory stored both blocks, generated a vector embedding for each, and returned them based on semantic similarity to the search query. ## Step 4: Explore the API Interactively Agent Memory serves 2 API explorers at the following URLs with no setup required beyond running the server. If you’re running the server on a different host or port, replace `localhost:8080` with your host and port in the URLs below: `http://localhost:8080/docs` - Swagger UI. Try any endpoint directly in the browser, with request and response schemas auto-populated from the OpenAPI spec. `http://localhost:8080/redoc` - ReDoc. A read-only reference view of the full API spec. ## Troubleshooting - If `/health` returns an error - Check `docker logs agentmemory-server` for startup errors. Both the Agent Memory server and Prometheus log to the same stream; lines are prefixed by the process name. - If the Couchbase connection fails - Verify `AGENTMEMORY_CONN_STRING` ,`AGENTMEMORY_USERNAME` ,`AGENTMEMORY_PASSWORD` , and`AGENTMEMORY_BUCKET` . Check that the Search Service is enabled on the cluster and that the network allows the connection. If using TLS, verify`AGENTMEMORY_CONN_ROOT_CERTIFICATE` is correct. - If model calls fail - Verify `OPENAI_API_KEY` ,`AGENTMEMORY_EMBEDDING_MODEL` , and`AGENTMEMORY_LLM_MODEL` . - If port `9090` returns nothing - Confirm you published the port with `-p 9090:9090` and that no other process on the host is already bound to port`9090` . - If Docker reports a platform incompatibility error - Use `agentmemory-server-amd64.tar` for Intel/AMD Linux servers and`agentmemory-server-arm64.tar` for ARM machines. - If Agent Memory cannot connect to Couchbase Server when both are running on the same host - When running Couchbase Server and Agent Memory containers on the same host, such as an EC2 instance, the Agent Memory container cannot reach the Couchbase Server using `couchbase://localhost` . To share the host’s network namespace, run Agent Memory with`--network host` and keep the connection string as`couchbase://localhost` .**Example**:`docker run` with`--network host` (Intel/AMD)`docker run -d \ --name agentmemory-server --network host \ --platform linux/amd64 \ --env-file .env \ -v agentmemory-logs:/app/logs \ -v agentmemory-prometheus:/prometheus-data \ --restart unless-stopped \ agentmemory-server:amd64` If you’re using Docker Desktop on Mac/Windows, you can instead leave the Agent Memory container on its default bridge network and set the connection string to `couchbase://host.docker.internal` . That name is not defined by default on Linux servers, so do not rely on it when using EC2. --- # Use Couchbase AI Data Plane AI Functions Source: https://docs.couchbase.com/ai/build/ai-functions.html # Use Couchbase AI Data Plane AI Functions - how-to Use AI Functions to summarize text, classify content, detect sentiment, explain patterns, and more - all within your SQL++ queries. Couchbase AI Data Plane AI Functions combine SQL++ with language models to analyze your data. Use large language models (LLMs) such as OpenAI, Bedrock, or models hosted in the AI Data Plane Model Service to run task-based functions using familiar SQL++ queries directly within Capella’s query editor. The following AI Data Plane AI Functions are available: - **Sentiment Analysis**: Determines text sentiment, such as positive, negative, neutral, or mixed. - **Summarization**: Condenses lengthy text into key insights. - **Classification**: Classifies data based on specified labels to improve organization and decision-making. - **Entity Extraction**: Identifies user specified labels or entities. For example, you can extract entities such as persons, locations, organizations, and more from text or images. - **Grammar Correction**: Fixes grammatical errors in the input text. - **Text Generation**: Produces text from a prompt. - **Masking**: Hides personally identifiable information (PII) like names and emails. - **Similarity**: Compares texts and generates scores indicating how similar they are to each other. - **Translation**: Converts text between languages. - **Completion**: Allows you to define your own tasks using prompts and generates tailored responses. Combine with AI Guardrails for safe content generation. | When you use AI Functions, Capella charges based on your Model Service usage and Query Service usage. If you’re using external LLMs such as OpenAI and Amazon Bedrock, you incur charges from those model service providers. | ## Prerequisites - You have deployed a paid Capella operational cluster with: - Couchbase Server version 8.0 or later. To upgrade your operational cluster, see Upgrading a Cluster. - The Query Service enabled on 1 of your nodes. - The Developer Pro or Enterprise Support Plan. - A bucket with scopes, collections, and JSON documents. For more information about how to upload data to Capella, see Import and Export Data. If you do not have a dataset, use the `travel-sample` dataset. - - To enable and update AI Functions in the Capella UI, you need 1 of the following organization or project roles: - To view and run AI Functions: - In the Capella UI Query tab, you must have 1 of the following project roles: - Your application must connect using 1 of the following types of cluster access credentials: - `Advanced access credentials` assigned with a role that includes the`Query Curl Access` privilege. - - A deployed LLM with: - (Recommended) If you have a production workload, enable private networking to use AI Functions. If you want to enable private networking for your AI Functions, your AI Data Plane model and Capella operational cluster need to be deployed within the same AWS region. - (Recommended) You have guardrails selected for your chosen model. This includes keyword filtering and jailbreak detection. Guardrails are important to have when you use the completion function. For more information, see Deploy a Large Language Model (LLM). ## Enable AI Functions You can enable AI Functions on any of your Capella operational clusters. Enabling AI Functions on 1 cluster does not automatically enable it on your other clusters. You need to enable AI Functions individually for each cluster. To enable AI Data Plane AI Functions: - Do 1 of the following: - Go to . - On the **Operational**tab, click the name of the cluster where you want to enable AI Functions.- Go to **AI Functions**. - - - Click **Enable AI Functions**. - Select the functions you want to use, and click **Next**. - Select 1 of the model options: Private networking is only available for AI Data Plane models. - AI Data Plane Model - OpenAI Model - AWS Bedrock Model - Select **Capella Model**. - Choose your AI Data Plane model. - Enter your **API Key ID**and**API Key Token**, or upload your`.txt` credentials file. For more information about API keys for AI Data Plane models, see Get Started with the Couchbase AI Data Plane APIs. - Click **Next**. - Select **OpenAI Model**. - Choose your OpenAI model. - (Optional) To use a new OpenAI API key, click **Add New OpenAI API Key**.- Click **Add API Key** - Enter a name to identify your API Key in Capella. - Enter your **OpenAI API Key**from OpenAI. - Click **Add Key**. - - Choose your OpenAI API Key. - Click **Next**. - Select **AWS Bedrock Model**. - Enter your **Model ID**and choose your AWS**Region**. - (Optional) To use a new Amazon Bedrock key, click **New Bedrock Credentials**.- Click **Add Credentials** - Enter a name to identify your credential in Capella. - Enter your **Access Key ID**and**Secret Access Key**from Amazon Bedrock. - Click **Add Credentials**. - - Choose your Bedrock credentials. - Click **Next**. - - Choose a Capella operational cluster for your functions. - (Optional) If your AI Data Plane model and your Capella operational cluster have the same AWS region, choose whether you want to enable private networking for your functions. This enables private networking between your LLM’s AWS region and your Capella operational cluster. You cannot disable private networking later. - Click **Complete Setup**. ## Run an AI Function Run AI Functions like any other SQL++ query using the Query tab on the operational cluster where you have configured AI Functions. | When using input prompts with AI Data Plane, Bedrock, or OpenAI LLMs, turn on model guardrails for security. | Experiment with AI Functions with your own data or by loading a sample query into the Query tab of your operational cluster. The following sample queries require the `travel-sample` dataset on the same cluster where you configured your AI Functions LLM. For more information about how to load the `travel-sample` into your operational cluster, see Import Sample Data. To load a sample query: - Copy a sample query from the list of AI Data Plane AI Functions available. For example, copy the sample query for Sentiment Analysis. - In your Capella operational cluster, go to . - In the query editor, replace the existing text with the sample query you copied. - Press `Enter`or click**Run**. The query results are automatically displayed in JSON format. Test these functions using your own data, queries, and prompts. You can specify a prompt in the SQL++ statement for prompt engineering to guide the LLM. Use prompts to capture language, output format, examples, and other nuances that the LLM requires to perform these functions. AI Function performance depends on the number and size of query nodes, data volume, and query complexity. Larger or more complex queries may require scaling your cluster to maintain performance. If you receive an error code `3000` after running your query, it indicates the function you’re using is not enabled or associated with an LLM. You need to enable the function and try again. For more information about SQL++ error codes, see SQL++ Error Codes. | ## View AI Functions You can view the list of AI Functions for your operational cluster and their statuses. The status of your AI Function can be dependent on the status of its associated model. An AI function can have 1 of the following statuses: | Status | Description | |---|---| Healthy | The model associated to your AI Functions is in a healthy state. | Unhealthy | The model associated to your AI Functions is in an unhealthy state. | Deploying | After you enable your AI Functions, they enter a deploying state. This may take some time. You can use your AI Functions when the status changes to | Deployment Failed | Your AI Functions failed to deploy. | Updating | Your AI Functions are updating after you changed the associated model. This may take some time. You can use your AI Functions when the status changes to | You can click the name of the associated model to get more information. To view your AI Functions and their statuses: - On the **Operational**tab, click the name of the cluster where you want to view AI Functions. - Go to **AI Functions**. - You can view the status of each AI Function and change the model associated with it. ## Change Model Association for an AI Function You can change the model associated with your AI Function. The model options for AI Functions include: - An AI Data Plane model - An OpenAI model - An AWS Bedrock model To change the model associated with your AI Function: - On the **Operational**tab, click the name of the cluster where you want to change the model association for your AI Functions. - Go to **AI Functions**. - Find the AI Function you want to associate with a different model and go to . - Select 1 of the model options: - AI Data Plane Model - OpenAI Model - AWS Bedrock Model - Select **Capella Model**. - Choose your AI Data Plane model. - Enter your **API Key ID**and**API Key Token**, or upload your`.txt` credentials file. For more information about API keys for AI Data Plane models, see Get Started with the Couchbase AI Data Plane APIs. - Click **Next**. - Select **OpenAI Model**. - Choose your OpenAI model. - (Optional) To use a new OpenAI API key, click **Add New OpenAI API Key**.- Click **Add API Key** - Enter a name to identify your API Key in Capella. - Enter your **OpenAI API Key**from OpenAI. - Click **Add Key**. - - Choose your OpenAI API Key. - Click **Next**. - Select **AWS Bedrock Model**. - Enter your **Model ID**and choose your AWS**Region**. - (Optional) To use a new Amazon Bedrock key, click **New Bedrock Credentials**.- Click **Add Credentials** - Enter a name to identify your credential in Capella. - Enter your **Access Key ID**and**Secret Access Key**from Amazon Bedrock. - Click **Add Credentials**. - - Choose your Bedrock credentials. - Click **Next**. - - Click **Associate Functions**. ## Delete AI Functions You cannot delete an AI Function. Once you have deployed an AI Function, you cannot remove it from the operational cluster. You can only change the model associated with that AI Function. ## View Sample Queries View sample queries for all the available AI Functions and their general responses: | Model Type When working with different LLMs, keep the following in mind: - Responses may vary slightly depending on the model selected. - When using reasoning models, it’s recommended to set a higher `max_tokens` value. For these models, reasoning tokens count towards the total token limit. If your token limit is too low, it may cause truncated responses. | ### Sentiment Analysis To analyze the sentiment of a text, use the `ai_sentiment` function. The LLM identifies the sentiment as either positive, negative, neutral, or mixed. In the following example using the `travel-sample` dataset, the LLM has identified the hostel review as positive: ``` SELECT h.name AS hotel_name, r.author, r.content, default:ai_sentiment({ "text": r.content, "temperature": 0.3, "max_tokens": 500 }) AS review_sentiment FROM `travel-sample`.`inventory`.`hotel` AS h UNNEST h.reviews AS r LIMIT 1; ``` ``` [ { "hotel_name": "Medway Youth Hostel", "author": "Ozella Sipes", "content": "This was our 2nd trip here and we enjoyed it as much or more than last year. Excellent location across from the French Market and just across the street from the streetcar stop. Very convenient to several small but good restaurants. Very clean and well maintained. Housekeeping and other staff are all friendly and helpful. We really enjoyed sitting on the 2nd floor terrace over the entrance and \"people-watching\" on Esplanade Ave., also talking with our fellow guests. Some furniture could use a little updating or replacement, but nothing major.", "review_sentiment": [ { "response": "The sentiment of the text is overwhelmingly positive. The reviewer expresses enjoyment of their stay, highlighting the excellent location, convenience, cleanliness, and the friendliness of the staff. They mention specific positive experiences, such as sitting on the terrace and interacting with other guests" } ] } ] ``` ### Summarization To summarize a long text, use the `ai_summary` function. With the provided text, the LLM returns a concise summary within your specified word limit. In the following example using the `travel-sample` dataset, the LLM has summarized long hotel descriptions with a 20 word limit: ``` SELECT name, default:ai_summary({ "text": description, "max_words": 200, "temperature": 0.4 }) AS summarized_description FROM `travel-sample`.`inventory`.`hotel` WHERE description IS NOT NULL LIMIT 2; ``` ``` [ { "name": "Medway Youth Hostel", "summarized_description": [ { "response": "40-bed summer hostel in a converted Oast House, 3 miles from Gillingham, in a semi-rural area." } ] }, { "name": "The Balmoral Guesthouse", "summarized_description": [ { "response": "Modernized, affordable guesthouse near Gillingham station with cooking facilities, no meals provided." } ] } ] ``` ### Classification To classify your data into specific categories, use the `ai_classification` function. Provide the specific classes you want the LLM to use. In the following example using the `travel-sample` dataset, the LLM has classified different airlines into flight categories: ``` SELECT name, callsign, default:ai_classification({ "text": name, "labels": ["commercial", "charter", "cargo"], "temperature": 0.2, "max_tokens": 600 }) AS airline_category FROM `travel-sample`.`inventory`.`airline` LIMIT 10; ``` ``` [ { "name": "40-Mile Air", "callsign": "MILE-AIR", "airline_category": [ { "response": "charter" } ] }, { "name": "Texas Wings", "callsign": "TXW", "airline_category": [ { "response": "cargo" } ] }, { "name": "Atifly", "callsign": "atifly", "airline_category": [ { "response": "cargo" } ] }, { "name": "Jc royal.britannica", "callsign": null, "airline_category": [ { "response": "cargo" } ] }, { "name": "Locair", "callsign": "LOCAIR", "airline_category": [ { "response": "cargo" } ] }, { "name": "SeaPort Airlines", "callsign": "SASQUATCH", "airline_category": [ { "response": "charter" } ] }, { "name": "Alaska Central Express", "callsign": "ACE AIR", "airline_category": [ { "response": "cargo" } ] }, { "name": "Astraeus", "callsign": "FLYSTAR", "airline_category": [ { "response": "cargo" } ] }, { "name": "Air Austral", "callsign": "REUNION", "airline_category": [ { "response": "cargo" } ] }, { "name": "Airlinair", "callsign": "AIRLINAIR", "airline_category": [ { "response": "commercial" } ] } ] ``` ### Entity Extraction To extract specific information from a text, use the `ai_extraction` function. Given a text, provide specific labels you want to define. The LLM identifies and returns relevant data corresponding to your labels. In the following example using the `travel-sample` dataset, the LLM has extracted the name of the organization and the location of the provided text: ``` SELECT name, content, default:ai_extraction({ "text": content, "labels": ["organization", "location"], "temperature": 0.3, "max_tokens": 2000 }) AS extracted_entities FROM `travel-sample`.`inventory`.`landmark` WHERE content IS NOT NULL LIMIT 1; ``` ``` [ { "name": "Royal Engineers Museum", "content": "Adult - £6.99 for an Adult ticket that allows you to come back for further visits within a year (children's and concessionary tickets also available). Museum on military engineering and the history of the British Empire. A quite extensive collection that takes about half a day to see. Of most interest to fans of British and military history or civil engineering. The outside collection of tank mounted bridges etc can be seen for free. There is also an extensive series of themed special event weekends, admission to which is included in the cost of the annual ticket.", "extracted_entities": [ { "response": "{organization: Museum on military engineering, location: British Empire}" } ] } ] ``` ### Grammar Correction To correct the grammatical errors of a text, use the `ai_corrected_grammar` function. The LLM analyzes your input text and returns a corrected version with proper English grammar. In the following example using the `travel-sample` dataset, the LLM has corrected the grammatical errors of a hotel review: ``` SELECT r.content AS original_review, default:ai_corrected_grammar({ "text": r.content, "temperature": 0.2, "max_tokens": 3000 }) AS corrected_review FROM `travel-sample`.`inventory`.`hotel` AS h UNNEST h.reviews AS r WHERE r.content IS NOT NULL LIMIT 1; ``` ``` [ { "original_review": "This was our 2nd trip here and we enjoyed it as much or more than last year. Excellent location across from the French Market and just across the street from the streetcar stop. Very convenient to several small but good restaurants. Very clean and well maintained. Housekeeping and other staff are all friendly and helpful. We really enjoyed sitting on the 2nd floor terrace over the entrance and \"people-watching\" on Esplanade Ave., also talking with our fellow guests. Some furniture could use a little updating or replacement, but nothing major.", "corrected_review": [ { "response": "This was our second trip here, and we enjoyed it as much, if not more, than last year. The location is excellent, across from the French Market, and just across the street from the streetcar stop, making it very convenient to several small but good restaurants. The property is very clean" } ] } ] ``` ### Text Generation To generate text from a prompt, use the `ai_generated_text` function. Supply a prompt and a set of labels. The LLM generates and returns relevant data corresponding to each label. In the following example using the `travel-sample` dataset, the LLM has generated promo titles for different hotels: ``` SELECT name, default:ai_generated_text({ "prompt": "Create a hotel stay promo title for " || name, "temperature": 0.8, "max_tokens": 1000 }) AS promo_title FROM `travel-sample`.`inventory`.`hotel` WHERE vacancy = TRUE LIMIT 2; ``` ``` [ { "name": "Medway Youth Hostel", "promo_title": [ { "response": "Experience Unforgettable Nights at Medway Youth Hostel: 20% Off & Breakfast Included!" } ] }, { "name": "The Robins", "promo_title": [ { "response": "Luxury Escape: 30% Off Stay at The Robins - Indulge in Complimentary Amenities" } ] } ] ``` ### Masking To protect sensitive information, use the `ai_masked` function. Provide a text and a set of labels identifying entities you want masked. The LLM replaces these entities with placeholders. In the following example using the `travel-sample` dataset, the LLM has masked the requested labels such as locations, phone numbers, and website URLs: ``` SELECT name, content AS original_text, default:ai_masked({ "text": content, "labels": ["person", "location", "email", "phone", "website"], "temperature": 0.2, "max_tokens": 3000 }) AS masked_text FROM `travel-sample`.`inventory`.`landmark` WHERE content LIKE '%@%' OR content LIKE '%contact%' LIMIT 1; ``` ``` [ { "name": "Isle of Kerrera", "original_text": "There are two great hiking trails on the island ([http://www.walkhighlands.co.uk/argyll/kerrera-gylen.shtml South] with '''Gylen Castle''' and [http://www.walkhighlands.co.uk/argyll/kerrera-hutcheson.shtml North] with '''Hutcheson's Monument'''). There is a tiny ferry terminal about 3 km South West of Oban on Gallanach Road and the ferry will bring you to the starting point of the two trails. The [http://www.kerrera-ferry.co.uk ferry] runs throughout the year with more frequent rides in summer (Easter - October) and less frequent ones in winter (October - Easter). £4.50 return for adults, £2.00 return for children, bicycles are free. The ferryman can be contacted by phone: +44 (0)1631 563665 or kerreraferry@hotmail.com. To attract the ferry on the mainland, you need to slide a wooden board to reveal a black surface before the scheduled timing.", "masked_text": [ { "response": "There are two great hiking trails on the island ([******* South] with '''Gylen Castle''' and [******* North] with '''Hutcheson's Monument'''). There is a tiny ferry terminal about 3 km South West of ******* on Gallanach Road and the ferry will bring you to the starting point of the two trails. The [******* ferry] runs throughout the year with more frequent rides in summer (Easter - October) and less frequent ones in winter (October - Easter). £4.50 return for adults, £2.00 return for children, bicycles are free. The ferryman can be contacted by phone: ******* or *******. To attract the ferry on the mainland, you need to slide a wooden board to reveal a black surface before the scheduled timing." } ] } ] ``` ### Similarity To evaluate the relationship between 2 texts, use the `ai_similarity` scoring function that returns a value between 0 and 1. This score quantifies how close the texts are related in meaning, with 0 indicating no similarity and 1 indicating identical or highly similar content. In the following example using the `travel-sample` dataset, the LLM identified the similarity scoring of different hotel reviews: ``` SELECT h.name AS hotel_name, default:ai_similarity({ "text1": r1.content, "text2": r2.content, "temperature": 0.0, "max_tokens": 500 }) AS review_similarity FROM `travel-sample`.`inventory`.`hotel` AS h UNNEST h.reviews AS r1 UNNEST h.reviews AS r2 LIMIT 3; ``` ``` [ { "hotel_name": "Medway Youth Hostel", "review_similarity": [ { "response": "1.0" } ] }, { "hotel_name": "Medway Youth Hostel", "review_similarity": [ { "response": "0.65" } ] }, { "hotel_name": "Medway Youth Hostel", "review_similarity": [ { "response": "0.45" } ] } ] ``` ### Translation To translate a text to a specified target language, use the `ai_translation` function. Indicate the language you want your text translated to. In the following example using the `travel-sample` dataset, the LLM is translating the text from English to Spanish: ``` SELECT name, description, default:ai_translation({ "text": description, "to_language": "es", "temperature": 0.3, "max_tokens": 1500 }) AS description_in_spanish FROM `travel-sample`.`inventory`.`hotel` WHERE description IS NOT NULL LIMIT 2; ``` ``` [ { "name": "Medway Youth Hostel", "description": "40 bed summer hostel about 3 miles from Gillingham, housed in a districtive converted Oast House in a semi-rural setting.", "description_in_spanish": [ { "response": "Albergue de verano con 40 camas situado a aproximadamente 3 millas de Gillingham, alojado en una distintiva casa convertida de Oast en un entorno semi rural." } ] }, { "name": "The Balmoral Guesthouse", "description": "A recently modernised basic but cheap guesthouse across the road from Gillingham station. No meals, but many rooms have a fridge and hob for cooking.", "description_in_spanish": [ { "response": "Un hospedaje básico recientemente modernizado, pero económico, ubicado a pocas calles de la estación de Gillingham. No se ofrecen comidas, pero muchas habitaciones tienen un refrigerador y una estufa para cocinar." } ] } ] ``` ### Completion To generate tailored text completions, use the `ai_completion` function. Define a unique system and user prompt, and optionally configure parameters such as temperature and maximum tokens. Unlike other pre-defined functions, your inputs directly shape the LLM’s behavior, producing responses aligned with your specific querying needs. As a result, the function provides the flexibility to create your own tasks and design entirely custom interactions with the model. In the following example using the `travel-sample` dataset, based on the specific request from the system and user prompt, the LLM was able to write unique advertisements for all the hotels in the dataset: ``` SELECT name, default:ai_completion({ "system_prompt": "You are a creative hotel marketing assistant.", "user_prompt": "Write a one-line catchy advertisement for the hotel: " || name, "temperature": 0.7, "max_tokens": 1000 }) AS ad_slogan FROM `travel-sample`.`inventory`.`hotel` LIMIT 5; ``` ``` [ { "name": "Medway Youth Hostel", "ad_slogan": [ { "response": "Discover Adventure and Connection at Medway Youth Hostel - Where Every Stay is a New Story!" } ] }, { "name": "The Balmoral Guesthouse", "ad_slogan": [ { "response": "Experience timeless elegance and cozy charm at The Balmoral Guesthouse - where every stay feels like coming home!" } ] }, { "name": "The Robins", "ad_slogan": [ { "response": "Experience timeless elegance and modern comfort at The Robins-where every stay feels like coming home!" } ] }, { "name": "Le Clos Fleuri", "ad_slogan": [ { "response": "Escape to Le Clos Fleuri: Where Every Stay Blooms into a Memorable Experience!" } ] }, { "name": "Glasgow Grand Central", "ad_slogan": [ { "response": "Experience timeless elegance and modern luxury at Glasgow Grand Central - where your stay becomes a story worth sharing." } ] } ] ``` ## AI Functions Billing For information about how Couchbase bills you according to your AI Functions usage, see AI Functions Billing. --- # Integrate an Agent with the Agent Catalog Source: https://docs.couchbase.com/ai/build/integrate-agent-with-catalog.html # Integrate an Agent with the Agent Catalog - how-to Use the Couchbase Agent Catalog to create your own custom AI agents with your preferred Large Language Model (LLM) and agent framework. An AI agent could be a simple application like a chatbot, or a more specialized application designed to solve a specific problem, like a smart web crawler. Use the Couchbase AI Data Plane together with the Couchbase Agent Catalog to integrate AI Data Plane-hosted models into your agent. The Agent Catalog features a command-line tool and a Python SDK to support your development. It works with Capella or Couchbase Server as a profile store, transactional store, or vector store. | The AI Data Plane also offers notebooks and sample code hosted on Google Colab and GitHub to get you started with a prebuilt agentic app in your choice of agent framework: - Colab: LangGraph | LangChain | LlamaIndex - GitHub: LangGraph | LangChain | LlamaIndex | The Agent Catalog also helps you: - Write tools for using data you have stored in a Capella operational or Couchbase Server cluster. - Centralize and reuse your tools across your development teams. - Examine and monitor agent responses with the Agent Tracer. - Version your user and system prompts and other agent-specific metadata. - Search for tools based on the question you want to answer, with support for catalogs of hundreds of tools. The Agent Catalog is not an agent framework, but works with agent frameworks to help you develop and manage your tools and prompts. You can use any Python-based agent framework, such as LangChain or ControlFlow. Any agent framework that expects lists of Python functions and strings for prompts can use the Agent Catalog. The Agent Catalog does not execute tools itself - tool execution is managed by your chosen framework. The Agent Catalog lets you manage and audit agent application activity, such as: - Tool calls - Tool results - Agent handoffs - LLM generations You can also use it to manage your agent’s tools and prompts, through Git versioning and source control. You can create new projects with the Agent Catalog, or integrate it into an existing project. | The Agent Catalog uses the Python programming language. | ## Prerequisites - Couchbase Server - Couchbase Capella - You have created a Couchbase Server cluster that has the following: - Couchbase Server version 8.0 or later. - (Optional) To support the full capabilities of the Agent Catalog, including semantic search, make sure the Search Service is running on at least 1 Service Group. For more information about how to deploy a new node and Services on your cluster, see Manage Nodes and Clusters. - A bucket that can store data from the Agent Catalog. Use any bucket settings you would prefer for your particular use case. For more information, see Create a Bucket. - A username and password for a user account that has read and write access to your Agent Catalog bucket. For more information about how to manage users in Couchbase Server, see Manage Users, Groups, and Roles. - - You have installed Python version 3.12 or later. - You have installed Git and set up a GitHub repository for your project inside your Python virtual environment. For more information about how to set up a GitHub repository, see the GitHub Documentation. - You have created an operational cluster in Capella that has the following: - Couchbase Server version 8.0 or later. - (Optional) To support the full capabilities of the Agent Catalog, including semantic search, make sure the Search Service is running on at least 1 Service Group. For more information, see Services and Service Groups. - A bucket that can store data from the Agent Catalog. Use any bucket settings you would prefer for your particular use case. For more information, see Manage Buckets. - Cluster access credentials that have read and write access to your Agent Catalog bucket. For more information, see Manage Cluster Access Credentials. - - You have added the IP address you want to use to connect to your Capella cluster to your list of Allowed IP Addresses. For more information about allowed IP addresses, see Configure Allowed IP Addresses. - You have the connection string for your Capella cluster. To find your connection string, from the **Operational**page, click your cluster and go to**Connect**. Copy the**Public Connection String**from any of the connection methods. - You have installed Python version 3.12 or later. - You have installed Git and set up a GitHub repository for your project inside your Python virtual environment. For more information about how to set up a GitHub repository, see the GitHub Documentation. ## Install and Set Up Environment Variables To get started with the Couchbase Agent Catalog: - (Optional) Set up a virtual environment in your project to avoid conflicts with your system install of Python. For example, you could install and use Anaconda. - Install the Agent Catalog package in your project: `pip install agentc` To install the helper packages for LangChain, LangGraph, or LlamaIndex, run: `pip install agentc[langchain,langgraph,llamaindex]` These helper packages contain custom helper functions to help automatically integrate Agent Catalog into the existing features in your chosen framework. For example, you could use `agentc_langgraph.agent.agent.ReActAgent.create_react_agent` instead of`langchain.agents.react.agent.create_react_agent` for easier logging.For alternate installation instructions for Agent Catalog, see the agent-catalog documentation. - Add the required environment variables for the Agent Catalog to an `.env` file at the root of your project:`# Enter the connection string for your cluster. # For Capella, this will be the string you copied in the Prerequisites. # For Server, this will be the IP address of the node in your cluster, prefixed by "couchbase://" or "couchbases://", or "localhost" AGENT_CATALOG_CONN_STRING=$CONNECTION_STRING # Enter the username from the cluster access credentials or user account you created for your Agent Catalog bucket. AGENT_CATALOG_USERNAME=$CLUSTER_ACCESS_CREDENTIALS_USERNAME # Enter the password from the cluster access credentials or user account you created for your Agent Catalog bucket. AGENT_CATALOG_PASSWORD=$CLUSTER_ACCESS_CREDENTIALS_PASSWORD # Enter the name of the bucket you created for the Agent Catalog. AGENT_CATALOG_BUCKET=$BUCKET_NAME # Enter the directory where you want to save your local Agent Catalog. The default is .agent-catalog. AGENT_CATALOG_CATALOG=.agent-catalog # Enter the directory where you want to save your local agent activity files. The default is .agent-activity. AGENT_CATALOG_ACTIVITY=.agent-activity` - (Optional) If you plan to use an OpenAI model with your agent, you can also add the following to your `.env` file:`OPENAI_API_KEY=$API_KEY` For more information about how to find your OpenAI API key, see the OpenAI Help Center. You can use any LLM you want with the Agent Catalog and your chosen agent framework. Make sure you add any required API keys to your `.env` file. - (Optional) Add additional environment variables for other features of the Agent Catalog: `# If you want to use TLS for secure connections, enter the path to the TLS root certificate for your Couchbase cluster AGENT_CATALOG_CONN_ROOT_CERTIFICATE=$PATH_TO_ROOT_CERTIFICATE # If you do not want the Agent Catalog CLI to prompt for user input, enter False. The default is True. AGENT_CATALOG_INTERACTIVE=True # If you want to view debug messages for the Agent Catalog CLI and SDK, enter True. AGENT_CATALOG_DEBUG=False # Enter the version of your catalog that the Agent Catalog SDK should use to serve tools and prompts. By default, the SDK uses the latest version available in the Git repository for your project. AGENT_CATALOG_SNAPSHOT=$CATALOG_VERSION_VALUE # If you want your generated tool code from your agentc.Provider instances for prompts and other tools to be written to disk, enter the file location where the Agent Catalog should write the generated code. AGENT_CATALOG_PROVIDER_OUTPUT=$PATH_TO_OUTPUT_LOCATION # If you want audit logs generated by agentc.Auditor instances to write to a different location, enter the file location where you want to write and rotate logs. The default is ./agent-activity AGENT_CATALOG_AUDITOR_OUTPUT=./agent-activity # If you want to use a specific embedding model for indexing and querying tools and prompts, enter a valid embedding model supported by the sentence_transformers.SentenceTransformer class. The default is all-MiniLM-L12-v2. AGENT_CATALOG_EMBEDDING_MODEL=all-MiniLM-L12-v2 # Enter a value for the total number of Vector Search index partitions you want to have on the nodes in your Couchbase cluster. Partitions increase performance, but also complexity and resource usage. The default value is 2 * the number of nodes with the Search Service in your cluster. AGENT_CATALOG_INDEX_PARTITION=$NUMBER_OF_INDEX_PARTITIONS # Enter a value for the maximum number of source partitions allowed for a Vector Search index definition. The default value is 1024. AGENT_CATALOG_MAX_SOURCE_PARTITION=1024` - Initialize the Agent Catalog in your project: `agentc init` You can also set options to install Git hooks to automatically index and publish your prompts, or skip local or remote Couchbase cluster initialization. For more information, see the agent-catalog documentation. After you install the Agent Catalog package, you should have access to the following in your project: - `agentc-cli` : The Agent Catalog command-line tool - `agentc-core` : The Agent Catalog core SDK package ## Develop Your AI Agent To start developing your own AI agent with the Agent Catalog: If you want to integrate the Agent Catalog with an existing agent: - Configure your existing tools to be indexed by the Agent Catalog. - Index and publish your tools and prompts to the Agent Catalog and your Couchbase cluster. - Adjust your code to call the tool or prompt from the catalog inside your agent code. - Configure and use the Agent Tracer to analyze and monitor your agent’s activity and performance. If you need to, at any time, you can also Clean or Delete Data From Agent Catalog. ### Build New Tools and Prompts Choose what type of tool or prompt you want to use in your AI agent and add to the Agent Catalog. The Agent Catalog converts the SQL++ queries, semantic searches, and HTTP requests you create into Python functions, after you retrieve them from the catalog using `get_item` . You can use these functions during LLM function and tool calls and execute them in your choice of agent framework. Your agent framework uses your prompts to create a final LLM prompt, which guides the LLM to choose the relevant tools for a question. | The agent-catalog GitHub repository has some example code and tools that you can use right away in your agent. Find these tools in the | - Python Function - SQL++ Query - Semantic Search - HTTP Request - Prompt To add a new Python function as a tool for your agent, you can use the Agent Catalog command-line tool’s `add` command: ``` agentc add Record Kind (python_function, sqlpp_query, semantic_search, http_request, prompt): python_function Now building a new tool / prompt file. The output will be saved to: $PROJECT_PATH Type: python_function # Your function name must be written in snake case. Name: my_python_function Description: My first Python tool for my AI agent Python (function) tool written to: $PROJECT_PATH\my_python_function.py ``` The Agent Catalog command-line tool creates a new `.py` file with your chosen tool name inside your project directory. The Python function comes with placeholder code to help get you started: ``` # The following file has been automatically generated by agentc at 11:05AM on October 31, 2024. from agentc import tool from pydantic import BaseModel # Although Python uses duck-typing, the specification of models greatly improves the response quality of LLMs. # It is highly recommended that all tools specify the models of their bound functions using Pydantic or dataclasses. # class SalesModel(BaseModel): # input_sources: list[str] # sales_formula: str # Only functions decorated with "tool" will be indexed. # All other functions / module members will be ignored by the indexer. tool def my_python_function(<<< Replace me with your input type! >>>) -> <<< Replace me with your output type! >>>: """My first Python tool for my AI agent""" <<< Replace me with your Python code! >>> ``` You can also create a new Python function file manually or configure an existing Python function for your catalog. See Add Existing Tools or Prompts to the Agent Catalog. You can reference tools that have their Python source code outside your project’s GitHub repository, as long as they can be imported with an `import` statement. You can add a SQL++ query that you want to use to search for data inside your Couchbase cluster. You can add any existing SQL++ query into a `.sqlpp` file to use with your agent. Use the Agent Catalog’s `add` command to create a new query: ``` agentc add Record Kind (python_function, sqlpp_query, semantic_search, http_request, prompt): sqlpp_query Now building a new tool / prompt file. The output will be saved to: $PROJECT_PATH Type: sqlpp_query # Your sqlpp_query name must be written in snake case. Name: my_sqlpp_query Description: A query to find a list of direct routes between two airports, using source_airport and destination_airport. SQL++ query tool written to: $PROJECT_PATH\my_sqlpp_query.sqlpp ``` The Agent Catalog command-line tool creates a new `.sqlpp` file with your chosen query name inside your project directory. The query includes some placeholder code and comments to help get you started: ``` -- /* # The name of the query must be a valid Python identifier - the name cannot include spaces. name: my_sqlpp_query # The description will be used in the docstring for this query's generated Python function. description: > A query to find a list of direct routes between two airports, using source_airport and destination_airport. # The inputs used to resolve the named parameters in the SQL++ query below. # Inputs are described using a JSON object that follows the JSON schema standard. # This field is mandatory, and will be used to build a Pydantic model. # See https://json-schema.org/learn/getting-started-step-by-step for more info. input: > <<< Replace me with your input type! >>> # The outputs used describe the structure of the SQL++ query result. # Outputs are described using a JSON object that follows the JSON schema standard. # This field is mandatory, and will be used to build a Pydantic model. # We recommend using the 'INFER' command to build a JSON schema from your query results. # See https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/infer.html. # In the future, this field will be optional (we will INFER the query automatically for you). output: > <<< Replace me with your output type! >>> # As a supplement to the tool similarity search, users can optionally specify search annotations. # The values of these annotations MUST be strings (e.g., not 'true', but '"true"'). # This field is optional, and does not have to be present. # annotations: # gdpr_2016_compliant: "false" # ccpa_2019_compliant: "true" # The "secrets" field defines search keys that will be used to query a "secrets" manager. # Note that these values are NOT the secrets themselves, rather they are used to lookup secrets. secrets: # All Couchbase tools (e.g., semantic search, SQL++) must specify conn_string, username, and password. - couchbase: conn_string: CB_CONN_STRING username: CB_USERNAME password: CB_PASSWORD */ <<< Replace me with your SQL++ query! >>> ``` You can also create a new SQL++ query file manually or configure an existing SQL++ query. Make sure you include the required header information from the example before your SQL++ query. Add a new semantic search as a tool to your agent to return content from a semantic search against a Vector Search index. To create a semantic search tool, you must have: - A bucket, scope, and collection on a Capella operational cluster that contains vector embeddings. For more information about buckets, scopes, and collections, see Buckets, Scopes, and Collections. - A Vector Search index that includes the document field that contains your vector embeddings. For more information about how to create a Vector Search index, see Create a Search Vector Index in Quick Mode. - The name of the embedding model used to create the vector embeddings in that field. To add a new semantic search tool, use the Agent Catalog’s `add` command: ``` agentc add Record Kind (python_function, sqlpp_query, semantic_search, http_request, prompt): semantic_search Now building a new tool / prompt file. The output will be saved to: $PROJECT_PATH # Your semantic search name must be written in snake case. Name: my_semantic_search Description: Find product descriptions that are closely related to a collection of tags. # The bucket, scope, and collection where you created your Vector Search index. Bucket: my-bucket Scope: my-scope Collection: my-collection # The name of the Vector Search index Index Name: my-vector-search-index # The name of the field that holds your vector embeddings Vector Field: vector # The name of the field to use for your tool's output results Text Field: output_text # The name of the embedding meal you used to generate the vector embeddings in your Vector Search index. Embedding Model: sentence-transformers/all-MiniLM-L12-v2 Semantic search tool written to: $PROJECT_PATH\my_semantic_search.yaml ``` The Agent Catalog command-line tool creates a new `.yaml` file with your chosen semantic search name inside your project directory. The YAML file comes with some placeholders and comments to help you get started: ``` record_kind: semantic_search # The name of the query must be a valid Python identifier - the name cannot include spaces. name: my_semantic_search # The description will be used in the docstring for this search's generated Python function. description: > Find product descriptions that are closely related to a collection of tags. # The inputs used to build a comparable representation for a semantic search. # Inputs are described using a JSON object that follows the JSON schema standard. # This field is mandatory, and will be used to build a Pydantic model. # See https://json-schema.org/learn/getting-started-step-by-step for more info. input: > <<< Replace me with your input type! >>> # As a supplement to the tool similarity search, users can optionally specify search annotations. # The values of these annotations MUST be strings (e.g., not 'true', but '"true"'). # This field is optional, and does not have to be present. # annotations: # gdpr_2016_compliant: "false" # ccpa_2019_compliant: "true" # The "secrets" field defines search keys that will be used to query a "secrets" manager. # Note that these values are NOT the secrets themselves, rather they are used to lookup secrets. secrets: # All Couchbase tools (e.g., semantic search, SQL++) must specify conn_string, username, and password. - couchbase: conn_string: CB_CONN_STRING username: CB_USERNAME password: CB_PASSWORD # Couchbase semantic search tools always involve a vector search. vector_search: # A bucket, scope, and collection must be specified. # Semantic search across multiple collections is currently not supported. bucket: my-bucket scope: my-scope collection: my-collection # All semantic search operations require that a (FTS) vector index is built. # In the future, we will relax this constraint. index: my-vector-search-index # The vector_field refers to the field the vector index (above) was built on. # In the future, we will relax the constraint that an index exists on this field. vector_field: vector # The text_field is the field name used in the tool output (i.e., the results). # In the future, we will support multi-field tool outputs for semantic search. text_field: output_text # The embedding model used to generate the vector_field. # This embedding model field value is directly passed to sentence transformers. # In the future, we will add support for other types of embedding models. embedding_model: sentence-transformers/all-MiniLM-L12-v2 ``` Add a new HTTP request as an agent tool to return operations from an OpenAPI specification. HTTP request tools let your agent use external services. Create one HTTP request tool for each endpoint you want your agent to use. You must have an existing OpenAPI specification in JSON or YAML format, available in your project or hosted on a URL. To add a new HTTP request tool, use the Agent Catalog’s `add` command: ``` agentc add Record Kind (python_function, sqlpp_query, semantic_search, http_request, prompt): http_request Now building a new tool / prompt file. The output will be saved to: $PROJECT_PATH Type: http_request # Your http_request will not be assigned a name like the other tool types. Enter a name to populate the filename only. Filename: my_http_request # Do not include the path in your OpenAPI spec filename. OpenAPI Filename [NO PATH]: webhook-example.json HTML request tool written to: $PROJECT_PATH\my_http_request.yaml ``` The Agent Catalog command-line tool creates a new `.yaml` file with your chosen filename inside your project directory. The YAML file comes with some placeholders and comments to help you get started: ``` record_kind: http_request # As a supplement to the tool similarity search, users can optionally specify search annotations. # The values of these annotations MUST be strings (e.g., not 'true', but '"true"'). # This field is optional, and does not have to be present. # annotations: # gdpr_2016_compliant: "false" # ccpa_2019_compliant: "true" open_api: filename: webhook-example.json # Which OpenAPI operations should be indexed as tools are specified below. # This field is mandatory, and each operation is validated against the spec on index. operations: # All operations must specify a path and a method. # 1. The path corresponds to an OpenAPI path object. # 2. The method corresponds to GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS/TRACE. # See https://swagger.io/specification/#path-item-object for more information. - path: <<< Replace me with a path! >>> method: <<< Replace me with a method! >>> ``` Add a new prompt to specify tools, instructions, or context to guide your AI agent’s behavior, without the use of additional formatting or templating. Author your prompts in separate `.prompt` files, instead of embedding them directly in your code. To add a new prompt, you can use the Agent Catalog’s `add` command: ``` agentc add Record Kind (python_function, sqlpp_query, semantic_search, http_request, prompt): prompt Now building a new tool / prompt file. The output will be saved to: $PROJECT_PATH Type: prompt # Your raw prompt name must be written in snake case. Name: my_prompt Description: This prompt provides instructions for how to find routes between airports. Raw prompt written to: $PROJECT_PATH\my_prompt.prompt ``` The Agent Catalog command-line tool creates a new `.prompt` file with your chosen name inside your project directory. The prompt file comes with some placeholders and comments to help you get started: ``` --- record_kind: prompt # The name of the prompt must be a valid Python identifier - the name cannot include spaces. name: my_prompt # The description will be used indirectly when running semantic searches for prompts. description: > This prompt provides instructions for how to find routes between airports. # As a supplement to the description similarity search, users can optionally specify search annotations. # The values of these annotations MUST be strings (e.g., not 'true', but '"true"'). # This field is optional, and does not have to be present. # annotations: # organization: "sequoia" # A prompt is _generally_ (more often than not) associated with a small collection of tools. # This field is used at provider time to search the catalog for tools. # This field is optional, and does not have to be present. # tools: # # Tools can be specified using the same parameters found in Provider.get_tools_for. # # For instance, we can condition on the tool name... # - name: "find_indirect_routes" # # # ...the tool name and some annotations... # - name: "find_direct_routes" # annotations: gdpr_2016_compliant = "true" # # # ...or even a semantic search via the tool description. # - query: "finding flights by name" # limit: 2 # Below the '---' represents the prompt in its entirety. --- <<< Replace me with your prompt! >>> ``` #### Add Existing Tools or Prompts to the Agent Catalog If you have existing agent code that you want to integrate with the Agent Catalog, you need to add specific metadata or decorators to your code. - Python Function - SQL++ Query - HTTP Request - Prompt If you have an existing Python tool that you want to add to the Agent Catalog, add `agentc` to your imports and add the `@agentc.catalog.tool` decorator to your tool definition: ``` import my_framework_1 import agentc # Add the decorator to make sure your tool is indexed by the Agent Catalog @agentc.catalog.tool def my_tool_1(arg_1: int, arg_2: int): """a good description""" ... ``` To add an existing SQL++ query, you must include YAML metadata in a multi-line C-style comment at the top of your file: ``` /* # The name of the tool must be a valid Python identifier (e.g., no spaces). # This field is mandatory, and will be used as the name of a Python function. name: example_sqlpp_query_name # A description for the function bound to this tool. # This field is mandatory, and will be used in the docstring of a Python function. description: > Fill me in with a description of this query. # The inputs used to resolve the named parameters in the SQL++ query below. # Inputs are described using a JSON object (given as a string) OR a YAML object that follows the JSON schema standard. # This field is mandatory, and will be used to build a Pydantic model. # See https://json-schema.org/learn/getting-started-step-by-step for more info. input: type: object properties: source_airport: type: string destination_airport: type: string # The outputs used describe the structure of the SQL++ query result. # Outputs are described using a JSON object (given as a string) OR a YAML object that follows the JSON schema standard. # This field is mandatory, and will be used to build a Pydantic model. # We recommend using the 'INFER' command to build a JSON schema from your query results. # See https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/infer.html. # In the future, this field will be optional (we will INFER the query automatically for you). # output: > # { # "type": "array", # "items": { # "type": "object", # "properties": { # "airlines": { # "type": "array", # "items": { "type": "string" } # }, # "layovers": { # "type": "array", # "items": { "type": "string" } # }, # "from_airport": { "type": "string" }, # "to_airport": { "type": "string" } # } # } # } # The "secrets" field defines search keys that will be used to query a "secrets" manager. # Note that these values are NOT the secrets themselves, rather they are used to lookup secrets. # Users must specify these variables at runtime as environment variables OR explicitly through a Catalog instance. secrets: # All Couchbase tools (e.g., semantic search, SQL++) must specify conn_string, username, and password. - couchbase: conn_string: CB_CONN_STRING username: CB_USERNAME password: CB_PASSWORD # certificate: CB_CERTIFICATE */ ``` HTTP requests must use an OpenAPI specification and include a `record_kind: http_request` at the start of their YAML definition: ``` # # The following file is a template for a set of HTTP request tools. # record_kind: http_request # As a supplement to the tool similarity search, users can optionally specify search annotations. # The values of these annotations MUST be strings (e.g., not 'true', but '"true"'). # This field is optional, and does not have to be present. annotations: gdpr_2016_compliant: "false" ccpa_2019_compliant: "true" # HTTP requests must be specified using an OpenAPI spec. open_api: # The path relative to the tool-calling code. # The OpenAPI spec can either be in JSON or YAML. filename: path_to_openapi_spec.json # A URL denoting where to retrieve the OpenAPI spec. # The filename or the url must be specified (not both). # url: http://url_to_openapi_spec/openapi.json # Which OpenAPI operations should be indexed as tools are specified below. # This field is mandatory, and each operation is validated against the spec on index. operations: # All operations must specify a path and a method. # 1. The path corresponds to an OpenAPI path object. # 2. The method corresponds to GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS/TRACE. # See https://swagger.io/specification/#path-item-object for more information. - path: /users/create method: post - path: /users/delete/{user_id} method: delete ``` Prompts must set the `record_kind` as `prompt` , and provide a name and description. The prompt itself must be a string or a YAML object: ``` # To signal to Agent Catalog that this file is a prompt, the 'record_kind' field must be set to 'prompt'. record_kind: prompt # The name of the prompt must be a valid Python identifier (e.g., no spaces). # This field is mandatory, and will be used when searching for prompts by name. name: endpoint_finding_node # A description of where this prompt is used. # This field is mandatory, and will be used (indirectly) when performing semantic search for prompts. description: > All inputs required to assemble the endpoint-finding node. # As a supplement to the description similarity search, users can optionally specify search annotations. # The values of these annotations MUST be strings (e.g., not 'true', but '"true"'). # This field is optional, and does not have to be present. annotations: framework: "langgraph" # The output type (expressed in JSON-schema) associated with this prompt. # See https://json-schema.org/understanding-json-schema for more information. # This field is commonly supplied to an LLM to generate structured responses. # This field is optional, and does not have to be present. output: title: Endpoints description: The source and destination airports for a flight / route. type: object properties: source: type: string description: "The IATA code for the source airport." dest: type: string description: "The IATA code for the destination airport." required: [source, dest] # The main content of the prompt. # This field is mandatory and must be specified as a string OR a YAML object. content: agent_instructions: > Your task is to find the source and destination airports for a flight. The user will provide you with the source and destination cities. You need to find the IATA codes for the source and destination airports. Another agent will use these IATA codes to find a route between the two airports. If a route cannot be found, suggest alternate airports (preferring airports that are more likely to have routes between them). output_format_instructions: > Ensure that each IATA code is a string and is capitalized. ``` ### Index and Publish New Tools and Prompts to the Agent Catalog If you do not want the Agent Catalog to index your agent code, create an `.agentcignore` file and add the files or filename patterns that you want the Agent Catalog to ignore. | After you have written new tools or prompts or prepared existing tools and prompts, you must index them in the Agent Catalog. Indexing creates a JSON index file in your local project that contains information about your tools and prompts. When you publish, you send these JSON index files to the Couchbase cluster configured in your environment variables, where you can Use the Agent Catalog Tools and Prompts Hub. The Tools and Prompts Hub and the Agent Catalog rely on Git for versioning and source control for your tools and prompts. It’s important to push your agent project to Git, and index your tools and prompts often. To index and publish your tools or prompts: - Create a new commit in Git for all changes in your project. Before you index any tools or prompts, you must make sure that your working directory in Git is clean. Run `git status` to check the current status of your working directory in Git. - To index all tools and prompts contained in a single directory, in your command prompt, run the following command: `agentc index $PATH_TO_TOOL_OR_PROMPT_DIRECTORY` The Agent Catalog creates a new directory, `.agent-catalog` , that can contain 2 files:- `tool-catalog.json` , which contains the index for the tools found in the directory you specified. - `prompt-catalog.json` , which contains the index for the prompts found in the directory you specified.If you want to index only the tools in a directory, use the following command: `agentc index $PATH_TO_TOOL_OR_PROMPT_DIRECTORY --tools --no-prompts` If you want to index only the prompts in a directory, use the following command: `agentc index $PATH_TO_TOOL_OR_PROMPT_DIRECTORY --prompts --no-tools` - - To publish your entire Agent Catalog to your Couchbase cluster, in your command prompt, run the following command: `agentc publish --bucket $BUCKET_NAME` If your cluster has more than 1 bucket and you do not set the `--bucket` flag, the Agent Catalog prompts you to choose a specific bucket.If your publish was successful, the Agent Catalog creates a new scope, `agent_catalog` , with the following collections:- If you used the `tool` flag:- `tool_catalog` for any indexed tools - `tool_metadata` for related tool metadata - - If you used the `prompt` flag:- `prompt_catalog` for any indexed prompts - `prompt_metadata` for related prompt metadata - - If you did not use the `tool` or`prompt` flag, the Agent Catalog uploads all catalog and metadata files to their appropriate collections under`agent_catalog` .The Agent Catalog updates this scope and its collections every time you run the `agentc publish` command on your project. - | Remember to reindex and publish your tools and prompts as they change in your project. If your tools and prompts change after your first index and publish command, you can also set Agent Catalog to automatically index and publish your catalog when you run For example, to automatically index and publish items in the | #### Index and Publish Programmatically Using The agentc.cmd Module You can also use the `agentc` command-line tool programmatically by importing the `agentc.cmd` module, and using the `index` and `publish` methods: ``` from agentc_cli.cmd import cmd_index, cmd_publish from agentc_core.config import Config # Index the directory named tools. Index only tools, not prompts. cmd_index( source_dirs=["tools"], kinds=["tools"], dry_run=False ) # Publish the local catalog of tools to the travel-sample bucket on a Couchbase cluster running on localhost. config = Config(bucket="travel-sample", username="Administrator", password="password", conn_string="localhost") cmd_publish( kind=["tools"] ) ``` ### Call Tools and Prompts From Your Agent The code samples in this section are only partial code samples, to show you the specific code you need to add to your own agent. Click View on GitHub to view the full example code and view the necessary imports and other information. | To call a tool or prompt from your agent’s code, call the `catalog.find()` method. For example, to search for a tool: ` tool_search = catalog.find("tool", name="search_vector_database")` Or, to search for a prompt: ` hotel_prompt = catalog.find("prompt", name="hotel_search_assistant")` By default, the Agent Catalog starts the search process for your `.agent_catalog` directory inside the current working directory. You can search by: - Using a semantic search against your indexed tools and prompts, through the `query=` parameter if the Search Service is deployed on your cluster. For example:`tool_search = catalog.find(kind="tool", query="Find a trip planning tool")` - Using a direct search against your indexed tools and prompts, through the `name=` parameter. For example:`my_prompt = catalog.find(kind="prompt", name="summarize_article_instructions") # You can also specify a catalog_id value to search a specific version of your catalog results = catalog.find(kind="prompt", query="Trip planner", catalog_id="37aa520")` You can adjust the results of either search type with the `limit=` and `annotations=` parameters. You must add a properly formatted `annotations` section to your tool or prompt definition to use the `annotations=` parameter. For example, after using the `catalog.find()` method example, you could define your tools under a new variable: ``` tools = [ Tool( name=tool_search.meta.name, description=tool_search.meta.description, func=tool_search.func, ), ] ``` Then, you could add the tools as part of a programmatically created prompt: ``` custom_prompt = PromptTemplate( template=hotel_prompt.content.strip(), input_variables=["input", "agent_scratchpad"], partial_variables={ "tools": "\n".join( [f"{tool.name}: {tool.description}" for tool in tools] ), "tool_names": ", ".join([tool.name for tool in tools]), }, ) ``` To pass the tools and prompts to your agent, you could use the `AgentExecutor` constructor with a defined ReAct agent: ``` agent = create_react_agent(llm, tools, custom_prompt) agent_executor = AgentExecutor( agent=agent, tools=tools, verbose=True, handle_parsing_errors=handle_parsing_error, # Use custom error handler max_iterations=2, # STRICT: 1 tool call + 1 Final Answer only early_stopping_method="force", # Force stop return_intermediate_steps=True, # For better debugging ) return agent_executor, application_span ``` For more information about working with `Catalog` instances and functions in your agent code, see the agent-catalog documentation. | If you want to define your tools so the results of tool calls are logged to the Agent Catalog, see Log the Results of Tool Calls. | ### Clean or Delete Data From Agent Catalog If you need to: - Delete a specific version of your Agent Catalog - Delete local Agent Catalog data - Delete agent activity data Use the `agentc clean` command to delete data. For example, if you wanted to delete all tool, prompt, and metadata entries from the Agent Catalog with versions `GS53S` and `14dFDD` : `agentc clean --catalog-id GS53S -cid 14dFDD` `--catalog-id` and `-cid` are equivalent. You can also specify: - A specific bucket ( `--bucket $BUCKET_NAME` ) - Whether to delete data on your Couchbase cluster ( `--db` ) - Whether to delete local data ( `--local` ) - Whether to delete only prompts ( `--prompts --no-tools` ) or only tools (`--tools --no-prompts` ) For more information about the different options for the `agentc clean` command, run `agentc clean --help` or see the agent-catalog documentation. ## Next Steps After you have started your agent development and integrated the Agent Catalog, use the Agent Tracer to monitor agent activity. --- # Couchbase AI Data Plane Source: https://docs.couchbase.com/ai/get-started/intro.html # Couchbase AI Data Plane The Couchbase AI Data Plane provides you with the tools to create, organize, and manage your agentic applications and data in a unified environment. Choose between self-managed deployments for use with Couchbase Server Enterprise Edition or fully managed solutions integrated with Couchbase Capella. Get enterprise support by licensing Couchbase AI Data Plane, and get access and support for Couchbase Agent Memory, Couchbase Agent Catalog and Couchbase MCP Server. ## Core Features ### Model Service Enterprise Support Only Deploy and manage Large Language Models (LLMs) and embedding models in Capella to power your AI-driven applications. Or bring your own model using the provided OpenAI and Bedrock integrations. ### Agent Catalog Govern your agentic app development with the Couchbase Agent Catalog to help manage tools and prompts for your own custom AI agents, using your preferred Large Language Model (LLM) and agent framework. ### Agent Memory Enterprise Support Only Couchbase Agent Memory provides a unified, persistent memory layer for agentic applications. It allows secure storage and retrieval of information specific to each user, helping to maintain context across user sessions. ### AI Functions Use AI Functions to summarize text, classify content, detect sentiment, explain patterns, and more - all within your SQL++ queries. ### MCP Server Couchbase MCP Server is a Model Context Protocol (MCP) server implementation that lets LLMs directly interact with data stored in Couchbase clusters through a rich set of tools. ### Data Processing Service Enterprise Support Only Use the Data Processing Service to vectorize your structured and unstructured data for use with other AI Data Plane features. Vectorize your structured and unstructured data. ## Start Building ### Host an AI Model in the Couchbase AI Data Plane Deploy an embedding model or LLM alongside your data. ### Couchbase AI Data Plane Workflows Use Couchbase AI Data Plane Workflows to prepare, process, and vectorize text for use with other AI Data Plane features. Learn more ### Build an Agent Create an agentic app using the Agent Catalog and use Agent Tracer to monitor and observe agent activity. --- # Couchbase AI Data Plane Release Notes Source: https://docs.couchbase.com/ai/reference/release-notes.html # Couchbase AI Data Plane Release Notes - reference ## June 2026 Changelog - We’re excited to reintroduce Couchbase AI Services, now known as the **Couchbase AI Data Plane**.The Couchbase AI Data Plane is a unified data infrastructure layer for your production AI agents. Use it to give your agents persistent memory, governed data access, tool and prompt visibility, and fast context retrieval across cloud, self-managed, hybrid, edge, and air-gapped environments. As a part of this release, the AI Data Plane is introducing new features to help solve the problem of scattered agent data through: - **Agent Memory**: Use Couchbase Agent Memory to get a unified, persistent memory layer for your agentic applications. Store your users' conversation history, extracted facts, and vector embeddings to improve the personalization and user experience of your agents.For more information, see Agent Memory for Persistent Memory Storage. - **MCP Server**: Use the Couchbase Model Context Protocol (MCP) Server to let LLMs interact directly with data stored in your Couchbase clusters. Use natural language querying to explore your cluster’s setup and health, data models and schemas, directly query documents, or analyze query performance.For more information, see Capella MCP Server. The Couchbase AI Data Plane also includes: - **Agent Catalog**: Use Couchbase Agent Catalog for a database-native, centralized catalog for all your agent components. Use it as a governed store where every tool, prompt, and piece of ground-truth data can live, evolve, and scale to simplify agent development and management.For more information, see Integrate an Agent with the Agent Catalog. Use the Couchbase AI Data Plane wherever your agents are deployed, backed by either Couchbase Server or Couchbase Capella. The AI Data Plane on Capella still includes the Model Service, AI Functions, and the Data Processing Service. - ## November 2025 Changelog - We’re excited to announce that the AI Data Plane is now available. Hosted with AWS, the AI Data Plane includes the following: - Data Processing Service The Data Processing Service provides no-code, automated RAG ETL pipelines to prepare your enterprise data for agentic applications. Deploy fully managed workflows to ingest, preprocess, and vectorize unstructured data, such as PDF and DOCX, directly from your sources into a vector index. Use workflows to accelerate your RAG application deployments by eliminating complex ETL development and management. For more information, see Process Your Data For the Couchbase AI Data Plane. - Model Service The Model Service is a managed inference service for deploying leading open source LLMs and embedding models. Available models include Llama 3, NVIDIA Nemotron, Mistral, and more. Backed by NVIDIA Enterprise AI, this service delivers high performance and a low total cost of ownership (TCO). Colocate your models and data within Capella to achieve optimal response times and eliminate the security risks associated with sending data to external inference providers. Value-added features include a built-in cache, content safety guardrails, and automated performance optimizations. For more information, see Deploy Models with the AI Data Plane Model Service. - AI Functions AI Functions are pre-built and customizable task functions that utilize LLM capabilities to extract insights directly from your data using SQL++. Pre-built task functions include: - Sentiment analysis - Summarization - Classification - Entity extraction - Grammar correction - Text generation - PII masking - Similarity scoring - Translation A flexible completion function is also available for custom use cases. Run these functions using a Capella-hosted model deployed through the Model Service or an external inference provider of your choice. For more information, see Use Couchbase AI Data Plane AI Functions. - - Agent Catalog Agent Catalog provides a database-native, centralized catalog for all your agent components. Use it as a governed store where every tool, prompt, and piece of ground-truth data can live, evolve, and scale to simplify agent development and management. For more information, see Integrate an Agent with the Agent Catalog. - --- # Couchbase AI Data Plane Release Notes Source: https://docs.couchbase.com/ai/reference/release-notes.html # Couchbase AI Data Plane Release Notes - reference ## June 2026 Changelog - We’re excited to reintroduce Couchbase AI Services, now known as the **Couchbase AI Data Plane**.The Couchbase AI Data Plane is a unified data infrastructure layer for your production AI agents. Use it to give your agents persistent memory, governed data access, tool and prompt visibility, and fast context retrieval across cloud, self-managed, hybrid, edge, and air-gapped environments. As a part of this release, the AI Data Plane is introducing new features to help solve the problem of scattered agent data through: - **Agent Memory**: Use Couchbase Agent Memory to get a unified, persistent memory layer for your agentic applications. Store your users' conversation history, extracted facts, and vector embeddings to improve the personalization and user experience of your agents.For more information, see Agent Memory for Persistent Memory Storage. - **MCP Server**: Use the Couchbase Model Context Protocol (MCP) Server to let LLMs interact directly with data stored in your Couchbase clusters. Use natural language querying to explore your cluster’s setup and health, data models and schemas, directly query documents, or analyze query performance.For more information, see Capella MCP Server. The Couchbase AI Data Plane also includes: - **Agent Catalog**: Use Couchbase Agent Catalog for a database-native, centralized catalog for all your agent components. Use it as a governed store where every tool, prompt, and piece of ground-truth data can live, evolve, and scale to simplify agent development and management.For more information, see Integrate an Agent with the Agent Catalog. Use the Couchbase AI Data Plane wherever your agents are deployed, backed by either Couchbase Server or Couchbase Capella. The AI Data Plane on Capella still includes the Model Service, AI Functions, and the Data Processing Service. - ## November 2025 Changelog - We’re excited to announce that the AI Data Plane is now available. Hosted with AWS, the AI Data Plane includes the following: - Data Processing Service The Data Processing Service provides no-code, automated RAG ETL pipelines to prepare your enterprise data for agentic applications. Deploy fully managed workflows to ingest, preprocess, and vectorize unstructured data, such as PDF and DOCX, directly from your sources into a vector index. Use workflows to accelerate your RAG application deployments by eliminating complex ETL development and management. For more information, see Process Your Data For the Couchbase AI Data Plane. - Model Service The Model Service is a managed inference service for deploying leading open source LLMs and embedding models. Available models include Llama 3, NVIDIA Nemotron, Mistral, and more. Backed by NVIDIA Enterprise AI, this service delivers high performance and a low total cost of ownership (TCO). Colocate your models and data within Capella to achieve optimal response times and eliminate the security risks associated with sending data to external inference providers. Value-added features include a built-in cache, content safety guardrails, and automated performance optimizations. For more information, see Deploy Models with the AI Data Plane Model Service. - AI Functions AI Functions are pre-built and customizable task functions that utilize LLM capabilities to extract insights directly from your data using SQL++. Pre-built task functions include: - Sentiment analysis - Summarization - Classification - Entity extraction - Grammar correction - Text generation - PII masking - Similarity scoring - Translation A flexible completion function is also available for custom use cases. Run these functions using a Capella-hosted model deployed through the Model Service or an external inference provider of your choice. For more information, see Use Couchbase AI Data Plane AI Functions. - - Agent Catalog Agent Catalog provides a database-native, centralized catalog for all your agent components. Use it as a governed store where every tool, prompt, and piece of ground-truth data can live, evolve, and scale to simplify agent development and management. For more information, see Integrate an Agent with the Agent Catalog. - --- # SQL++ Tutorial for SQL Users: Query Example Data Source: https://www.couchbase.com/analytics-data/ Last modified: 2026-05-18T16:16:41+00:00 ``` (Q1) SELECT custid, name, address.zipcode, rating FROM customers ORDER BY custid; (Q2) SELECT c.name, c.rating FROM customers AS c WHERE c.custid = "C41"; (Q3) SELECT name FROM customers WHERE rating > 650; (Q4) SELECT VALUE name FROM customers WHERE rating > 650; (Q5) SELECT VALUE [name, rating] FROM customers WHERE rating > 650; (Q6) SELECT VALUE {"high-rated customers, ordered by rating": (SELECT c.rating, c.custid, c.name FROM customers AS c WHERE c.rating > 650 ORDER BY c.rating DESC), "high-rated customers, ordered by zipcode": (SELECT c.address.zipcode, c.custid, c.name FROM customers AS c WHERE c.rating > 650 ORDER BY c.address.zipcode) }; (Q7) SELECT name FROM customers WHERE rating = (SELECT MAX(rating) FROM customers); (Q8) SELECT c1.name FROM customers AS c1 WHERE c1.rating = (SELECT MAX(c2.rating) FROM customers AS c2); (Q9) SELECT c1.name FROM customers AS c1 WHERE c1.rating IN (SELECT VALUE MAX(c2.rating) FROM customers AS c2); (Q10) SELECT c1.name FROM customers AS c1 WHERE c1.rating > (SELECT VALUE AVG(c2.rating) FROM customers AS c2)[0]; (Q11) SELECT VALUE c1.name FROM customers AS c1 WHERE c1.rating = (SELECT VALUE MAX(c2.rating) FROM customers AS c2)[0]; (Q12) SELECT VALUE c1.name FROM customers AS c1 WHERE EVERY r IN (SELECT VALUE c2.rating FROM customers AS c2) SATISFIES c1.rating >= r; (On N1QL, add END after SATISFIES clause) (Q13) SELECT VALUE c1.name FROM customers AS c1 WHERE EVERY r IN (SELECT VALUE c2.rating FROM customers AS c2 WHERE c2.rating IS KNOWN) SATISFIES c1.rating >= r; (On N1QL, add END after SATISFIES clause) (Q14) FROM customers WHERE address.zipcode = "63101" SELECT custid AS customer_id, name ORDER BY customer_id; (Q15) FROM customers AS c WHERE c.address.zipcode = "63101" SELECT c.custid AS customer_id, c.name ORDER BY customer_id; ``` ``` (Q16) FROM customers AS c, orders AS o WHERE c.custid = o.custid AND o.orderno = 1001 SELECT o.orderno, c.name AS customer_name, c.address, o.items AS items_ordered; (Q17) FROM customers AS c JOIN orders AS o ON c.custid = o.custid WHERE o.orderno = 1001 SELECT o.orderno, c.name AS customer_name, c.address, o.items AS items_ordered; (Q18) FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid SELECT c.custid, c.name, o.orderno, o.order_date ORDER BY c.custid, o.order_date; (Q19) FROM orders AS o, o.items AS i WHERE i.qty > 100 SELECT o.orderno, o.order_date, i.itemno AS item_number, i.qty AS quantity ORDER BY o.orderno, item_number; (Q20) FROM orders AS o UNNEST o.items AS i WHERE i.qty > 100 SELECT o.orderno, o.order_date, i.itemno AS item_number, i.qty AS quantity ORDER BY o.orderno, item_number; (Q21a) FROM orders AS o, o.items AS i, customers AS c WHERE o.custid = c.custid AND i.itemno = 680 SELECT c.custid, c.name, o.order_date AS date ORDER BY c.custid, date; (Q21b) FROM orders AS o, customers AS c WHERE o.custid = c.custid AND EXISTS (SELECT i.itemno FROM o.items AS i WHERE i.itemno = 680) SELECT c.custid, c.name, o.order_date AS date ORDER BY c.custid, date; (Q22) FROM orders AS o LET days = DATE_DIFF_STR(o.ship_date, o.order_date, "day") WHERE days > 2 SELECT o.orderno, days - 2 AS days_late ORDER BY days_late DESC; (Q23) FROM orders AS o GROUP BY o.custid SELECT o.custid, COUNT(o.orderno) AS `order count` ORDER BY o.custid; (Q24) FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid GROUP BY c.custid, c.name SELECT c.custid, c.name, COUNT(o.orderno) AS `order count` ORDER BY c.custid; (Q25) FROM orders AS o WHERE DATE_PART_STR(o.order_date, "year") = 2017 GROUP BY DATE_PART_STR(o.order_date, "month") AS month SELECT month, COUNT(*) AS order_count ORDER BY month; (Q26) FROM orders AS o, o.items as i GROUP BY o.orderno SELECT o.orderno, SUM(i.qty * i.price) AS revenue ORDER BY o.orderno; (Q27) FROM orders AS o, o.items as i GROUP BY o.orderno LET revenue = SUM(i.qty * i.price) HAVING revenue > 1000 SELECT o.orderno, revenue ORDER BY revenue DESC; (Q28) FROM orders AS o LET revenue = (FROM o.items AS i SELECT VALUE SUM(i.qty * i.price))[0] WHERE revenue > 1000 SELECT o.orderno, revenue ORDER BY revenue DESC; (Q29) FROM orders AS o, o.items AS i, customers AS c WHERE o.custid = c.custid GROUP BY o.orderno AS `order no.`, o.order_date AS date, c.name, c.address SELECT `order no.`, date, c.name, c.address, SUM(i.qty * i.price) AS `amount due` ORDER BY `order no.`; (Q30) FROM orders AS o, o.items AS i GROUP BY o.orderno, o.order_date HAVING SUM(i.qty * i.price) > 10000 SELECT o.orderno AS order_number, o.order_date, SUM(i.qty * i.price) AS revenue ORDER BY revenue DESC; ``` ``` (Q31) FROM orders AS o, o.items AS i GROUP BY o.orderno, o.order_date LET revenue = SUM(i.qty * i.price) HAVING revenue > 10000 SELECT o.orderno AS order_number, o.order_date, revenue ORDER BY revenue DESC; (Q32) FROM customers AS c GROUP BY c.address.zipcode AS zip SELECT zip, AVG(c.rating) AS `avg credit rating` ORDER BY zip; (Q33) FROM customers AS c SELECT AVG(c.rating) AS `avg credit rating`; (Q34) SELECT ARRAY_AVG( (SELECT VALUE c.rating FROM customers AS c) ) AS `avg credit rating`; (Q35) FROM orders AS o LET revenue = ARRAY_SUM( (FROM o.items AS i SELECT VALUE i.qty * i.price) ) WHERE revenue > 10000 SELECT o.orderno AS order_number, o.order_date, revenue ORDER BY revenue DESC; (Q36) FROM orders AS o WHERE DATE_PART_STR(o.order_date, "year") = 2017 AND DATE_PART_STR(o.order_date, "month") = 9 SELECT o.orderno, ARRAY_COUNT(o.items) AS line_items ORDER BY o.orderno; (Q37) FROM orders AS o, o.items AS i WHERE DATE_PART_STR(o.order_date, "year") = 2017 AND DATE_PART_STR(o.order_date, "month") = 9 GROUP BY o.orderno SELECT o.orderno, COUNT(i) AS line_items ORDER BY o.orderno; (Q38a) FROM customers AS c GROUP BY c.address.zipcode AS zip GROUP AS g SELECT zip, AVG(c.rating) AS `avg credit rating`, (FROM g AS gi SELECT gi.c.custid, gi.c.name ORDER BY gi.c.custid) AS `local customers` ORDER BY zip; (Q38b) FROM customers AS c GROUP BY c.address.zipcode AS zip GROUP AS g SELECT zip, AVG(c.rating) AS `avg credit rating`, (FROM g SELECT c.custid, c.name ORDER BY c.custid) AS `local customers` ORDER BY zip; (Q39) FROM customers AS c GROUP BY c.address.zipcode AS zip GROUP AS g LET `best rating` = MAX(c.rating) SELECT zip, `best rating`, (FROM g AS gi WHERE gi.c.rating = `best rating` SELECT gi.c.custid, gi.c.name ORDER BY gi.c.custid) AS `best customers` ORDER BY zip; (Q40) FROM customers AS c GROUP BY c.address.zipcode AS zip GROUP AS g LET `best rating` = MAX(c.rating), `best customers` = (FROM g AS gi WHERE gi.c.rating = `best rating` SELECT gi.c.custid, gi.c.name ORDER BY gi.c.custid) SELECT zip, `best rating`, `best customers` ORDER BY zip; (Q41) FROM customers AS c GROUP BY c.address.zipcode AS zip GROUP AS g SELECT zip, ARRAY_AVG((FROM g AS gi SELECT VALUE gi.c.rating)) AS `avg credit rating` ORDER BY zip; (Q42) FROM orders AS o, o.items AS i GROUP BY o.order_date GROUP AS g LET revenue = SUM(i.price * i.qty) HAVING revenue > 1000.00 SELECT o.order_date AS `good day`, revenue, (FROM g AS gi WHERE gi.i.price > 100.00 SELECT gi.i.itemno, gi.i.price ORDER BY gi.i.itemno) AS `expensive items` ORDER BY o.order_date; (Q43) FROM customers AS c, orders AS o, o.items AS i WHERE c.custid = o.custid GROUP BY c.custid, c.name GROUP AS g SELECT c.custid, c.name, (FROM g AS gi SELECT gi.o.order_date, gi.i.itemno, gi.i.qty ORDER BY gi.o.order_date, gi.i.itemno) AS recent_items ORDER BY c.custid; (Q44) FROM customers AS c LEFT OUTER JOIN /* This subquery unnests the items in each order, returning an array of results named sq */ (FROM orders AS o, o.items AS i SELECT o.custid, o.order_date, i.itemno, i.qty) AS sq ON c.custid = sq.custid GROUP BY c.custid, c.name GROUP AS g SELECT c.custid, c.name, (FROM g AS gi SELECT gi.sq.order_date, gi.sq.itemno, gi.sq.qty ORDER BY gi.sq.order_date, gi.sq.itemno) AS recent_items ORDER BY c.custid; (Q45) FROM orders AS o, o.items AS i GROUP BY i.itemno GROUP AS g LET total_on_order = SUM(i.qty) SELECT i.itemno, total_on_order, (FROM g AS gi SELECT gi.o.order_date, gi.o.custid ORDER BY gi.o.order_date) AS purchasers ORDER BY i.itemno; ``` ``` (Q46) SELECT DISTINCT VALUE i.itemno FROM orders AS o, o.items AS i WHERE o.custid IN (SELECT VALUE c.custid FROM customers AS c WHERE c.name = "T. Cruise"); (Q47) FROM customers AS c GROUP BY c.address.zipcode AS zip SELECT zip, ROUND(AVG(c.rating)) AS avg_rating ORDER BY zip; (Q48) SELECT VALUE { "Average credit rating by zipcode" : (FROM customers AS c WHERE c.address.zipcode IS KNOWN GROUP BY c.address.zipcode AS zip SELECT VALUE { zip : ROUND(AVG(c.rating)) } ORDER BY zip ) }; (Q49) FROM customers AS c WHERE c.address.zipcode = "02115" SELECT *; (Q50) FROM customers AS c WHERE c.address.zipcode = "02115" SELECT c.*; (Q51) FROM customers AS c, orders AS o WHERE c.custid = o.custid AND c.address.zipcode = "02115" SELECT *; (Q52) FROM customers AS c WHERE c.address.zipcode = "02115" SELECT c.*, "Northeast" AS region; (Q53) FROM customers AS c LET credit = CASE WHEN c.rating > 650 THEN "Good" WHEN c.rating BETWEEN 500 AND 649 THEN "Fair" ELSE "Poor" END WHERE c.address.zipcode = "02115" SELECT c.*, credit; (Q54) WITH order_revenue AS (FROM orders AS o, o.items AS i WHERE DATE_PART_STR(o.order_date, "year") = 2017 GROUP BY o.orderno SELECT SUM(i.qty * i.price) AS revenue ) FROM order_revenue SELECT ROUND(MIN(revenue)) AS minimum, ROUND(MAX(revenue)) AS maximum, ROUND(AVG(revenue)) AS average; (Q55) SELECT c.custid, "Unknown zipcode" AS reason FROM customers AS c WHERE c.address.zipcode IS NOT KNOWN UNION ALL SELECT o.custid, "Big order" AS reason FROM orders AS o WHERE ARRAY_COUNT(o.items) > 3 ORDER BY reason; ``` ``` insert into customers (key, value) values ("C13", { "custid": "C13", "name": "T. Cruise", "address": { "street": "201 Main St.", "city": "St. Louis, MO", "zipcode": "63101" }, "rating": 750 } ), ("C25", { "custid": "C25", "name": "M. Streep", "address": { "street": "690 River St.", "city": "Hanover, MA", "zipcode": "02340" }, "rating": 690 } ), ("C31", { "custid": "C31", "name": "B. Pitt", "address": { "street": "360 Mountain Ave.", "city": "St. Louis, MO", "zipcode": "63101" } } ), ("C35", { "custid": "C35", "name": "J. Roberts", "address": { "street": "420 Green St.", "city": "Boston, MA", "zipcode": "02115" }, "rating": 565 } ), ("C37", { "custid": "C37", "name": "T. Hanks", "address": { "street": "120 Harbor Blvd.", "city": "Boston, MA", "zipcode": "02115" }, "rating": 750 } ), ("C41", { "custid": "C41", "name": "R. Duvall", "address": { "street": "150 Market St.", "city": "St. Louis, MO", "zipcode": "63101" }, "rating": 640 } ), ("C47", { "custid": "C47", "name": "S. Lauren", "address": { "street": "17 Rue d'Antibes", "city": "Cannes, France" }, "rating": 625 } ); ``` ``` insert into orders (key, value) values ( "1001", { "orderno": 1001, "custid": "C41", "order_date": "2017-04-29", "ship_date": "2017-05-03", "items": [ { "itemno": 347, "qty": 5, "price": 19.99 }, { "itemno": 193, "qty": 2, "price": 28.89 } ] } ), ("1002", { "orderno": 1002, "custid": "C13", "order_date": "2017-05-01", "ship_date": "2017-05-03", "items": [ { "itemno": 460, "qty": 95, "price": 100.99 }, { "itemno": 680, "qty": 150, "price": 8.75 } ] } ), ("1003", { "orderno": 1003, "custid": "C31", "order_date": "2017-06-15", "ship_date": "2017-06-16", "items": [ { "itemno": 120, "qty": 2, "price": 88.99 }, { "itemno": 460, "qty": 3, "price": 99.99 } ] } ), ("1004", { "orderno": 1004, "custid": "C35", "order_date": "2017-07-10", "ship_date": "2017-07-15", "items": [ { "itemno": 680, "qty": 6, "price": 9.99 }, { "itemno": 195, "qty": 4, "price": 35.00 } ] } ), ("1005", { "orderno": 1005, "custid": "C37", "order_date": "2017-08-30", "items": [ { "itemno": 460, "qty": 2, "price": 99.98 }, { "itemno": 347, "qty": 120, "price": 22.00 }, { "itemno": 780, "qty": 1, "price": 1500.00 }, { "itemno": 375, "qty": 2, "price": 149.98 } ] } ), ("1006", { "orderno": 1006, "custid": "C41", "order_date": "2017-09-02", "ship_date": "2017-09-04", "items": [ { "itemno": 680, "qty": 51, "price": 25.98 }, { "itemno": 120, "qty": 65, "price": 85.00 }, { "itemno": 460, "qty": 120, "price": 99.98 } ] } ), ("1007", { "orderno": 1007, "custid": "C13", "order_date": "2017-09-13", "ship_date": "2017-09-20", "items": [ { "itemno": 185, "qty": 5, "price": 21.99 }, { "itemno": 680, "qty": 1, "price": 20.50 } ] } ), ("1008", { "orderno": 1008, "custid": "C13", "order_date": "2017-10-13", "items": [ { "itemno": 460, "qty": 20, "price": 99.99 } ] } ); ``` --- # Couchbase Enterprise Benchmarks | NoSQL Performance Comparison Source: https://www.couchbase.com/benchmarks/ Last modified: 2026-05-27T03:33:33+00:00 REPORT Report Explore the latest Couchbase benchmarks to see how Capella delivers exceptional NoSQL performance across real-world workloads. Compare results for speed, scalability, and efficiency against other leading database platforms. REPORT Report Using the VectorDBBench this report compares throughput, recall rate, and latency for 100M and 1B vectors of Couchbase and MongoDB. Using the Yahoo! Cloud Serving Benchmark (YCSB), this report compares the throughput and latency of four popular Database-as-a-Service (DBaaS) products. The report includes four business scenarios and four different cluster configurations. benchANT’s Database Ranking provides a performance ranking to help users compare various databases. Using established benchmarks like YCSB and TSBS, it evaluates relational, NoSQL, and NewSQL databases and DBaaS offerings across different scenarios. BenchANT’s DBaaS Navigator compares various DBaaS offerings based on performance, management, support, deployment, and price. The evaluation criteria highlights the importance of assessing DBaaS options based on scalability, support, and cost-effectiveness to determine their suitability for specific needs and use cases. Couchbase benchmarks prove that our architecture is built to move data faster. By combining an integrated cache, multi-dimensional scaling, and an in-memory database, Capella achieves the blazing performance that powers enterprise and AI workloads. Boost performance and reduce costs with Couchbase’s integrated NoSQL caching solution. Use flexible multi-dimensional scaling to scale Couchbase services independently for optimal performance. Give your real-time applications high-speed data processing and scalability with Couchbase’s in-memory database. Couchbase offers superior scalability, performance, and mobile support with features like SQL++ and real-time analytics. “Couchbase is a trifecta of value. We get more features, save time, and spend less money all at once.” 50% reduction in overall storage needs 500% improvement in query performance “Couchbase provides consistent sub-millisecond response times, which helps ensure an enjoyable experience for application users.” 1M transactions per second 500K events processed in 3 minutes “We’re able to put data to work in a more efficient way, and we’ve built a strong foundation for the future.” Architecture Lead, Nielsen 80% change management improvement 50% boost in response time WEBPAGE DOCS CASE Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. Want to learn more about Couchbase offerings? Let us help. --- # The Couchbase Blog - The Couchbase Blog Source: https://www.couchbase.com/blog/ # Couchbase.The Operational Data Platform for AI® The scalable foundation for enterprise operational, analytical, mobile, and AI workloads. The scalable foundation for enterprise operational, analytical, mobile, and AI workloads. - ### Hybrid Search: An Overview What Is Hybrid Search? Hybrid search typically refers to a search approach that combines multiple search methodologies or technologies to provide more comprehensive and accurate results. In the context of information retrieval, hybrid search… 9 MIN READ - ### What are Embedding Models? An Overview What are embedding models? Embedding models are a type of machine learning model designed to represent data (such as text, images, or other forms of information) in a continuous, low-dimensional vector space. These embeddings… 10 MIN READ - ### What Is a Token in AI? An Explainer SUMMARY A token is the smallest unit of text an AI system uses to interpret and generate language, and it can represent a full word, part of a word, a character, or even a… 11 MIN READ --- # What Is Hybrid Search? Hybrid Vector Search Databases & More Source: https://www.couchbase.com/blog/hybrid-search/ ## What Is Hybrid Search? Hybrid search typically refers to a search approach that combines multiple search methodologies or technologies to provide more comprehensive and accurate results. In the context of information retrieval, hybrid search often involves blending traditional keyword-based searching with more advanced techniques such as natural language processing (NLP), semantic search, and machine learning. Hybrid search has been implemented in various practical applications. In the workplace, enterprise search engines that leverage hybrid search can empower employees to find exactly what they need within a company’s knowledge base. E-commerce websites are also adopting hybrid search to improve their search functionality, allowing customers to find products that perfectly match their needs, even if they don’t know the exact product name. Even traditional web search engines are starting to use hybrid search to provide users with more relevant, accurate results. ## How Does Hybrid Search Work? Hybrid search works by combining traditional keyword-based search (sparse vectors) with modern semantic search (dense vectors) to provide better results. Here’s a detailed breakdown of how it works: **Keyword-Based Search (Sparse Vectors)** In traditional search engines, queries and documents are represented as sparse vectors, where each dimension corresponds to a unique term from the vocabulary. These vectors are mostly zeros, with non-zero entries only representing specific terms in the query or document. Techniques like term frequency-inverse document frequency (TF-IDF) and inverted indexing help efficiently match query keywords with documents. This method is quick and effective for finding exact matches. **Semantic Search (Dense Vectors)** In semantic search, both queries and documents are represented as dense vectors in a lower-dimensional space using techniques like word embeddings (e.g., Word2vec, GloVe) or contextual embeddings (e.g., BERT, GPT). Dense vectors capture the semantic meaning of words and phrases. Embedding models are trained on large corpora to understand the context and relationships between words. These models convert text into dense vectors that reflect semantic similarity. **Combining Sparse and Dense Vectors** In a hybrid search system, both sparse and dense vectors are generated for documents and stored in respective indices. The sparse index supports keyword-based retrieval, while the dense index supports semantic retrieval. When a user submits a query, it’s processed to generate both sparse and dense vectors. The system then searches both indices to retrieve relevant documents. **Retrieval and Ranking** The system retrieves an initial set of candidate documents using both the sparse index (keyword match) and the dense index (semantic match). The retrieved documents are then re-ranked based on a combination of relevance scores from both sparse and dense vectors. Machine learning models can optimize the final ranking by considering query context, user behavior, and document relevance. ## Keyword Search vs. Semantic Search vs. Hybrid Search Now that we’ve covered how hybrid search works, let’s explore the key differences and similarities between keyword, semantic, and hybrid search. Feature | Keyword Search | Semantic Search | Hybrid Search | Vector Type | Sparse vectors | Dense vectors | Sparse and dense vectors | Method | Exact keyword matching | Understanding context and meaning | Combination of keyword matching and semantic understanding | Techniques Used | TF-IDF, inverted index | Word embeddings (Word2vec, GloVe), contextual embeddings (BERT, GPT) | TF-IDF, inverted index, word embeddings, contextual embeddings | Relevance | Matches exact terms | Captures semantic similarity | Balances exact matches with semantic relevance | Strengths | Fast and efficient for exact matches | Handles synonyms, context, and meaning well | Provides more accurate and relevant results by leveraging both strengths | Weaknesses | Misses relevant documents without exact terms | Computationally intensive, may miss exact matches | More complex to implement and maintain | Query Handling | Requires precise keywords | Understands natural language queries | Handles both precise and natural language queries | Use Cases | Simple searches, database lookups | Complex queries, user intent understanding | Enterprise search, digital libraries, e-commerce | Ultimately, the best search technique depends on the specific requirements and context of the use case. Hybrid search is the best choice for many modern applications because it provides the most relevant and precise results by leveraging keyword and semantic search strengths. However, the specific context and requirements of the use case should ultimately guide the decision. ## Why Hybrid Search? Advantages for Search Engines & Vector Databases Hybrid search is the best option in many scenarios because it combines the strengths of both keyword-based and semantic search techniques, resulting in a more versatile and effective search solution. Here are several reasons why you should leverage hybrid search: ### Enhanced Relevance and Precision Hybrid search leverages the exact matching capabilities of keyword search and the contextual understanding of semantic search. This combination ensures that both precise matches and semantically relevant results are retrieved. It can handle exact keyword queries efficiently while capturing relevant results that might use different terminology but share the same meaning. ### Better Query Handling Hybrid search can process both simple, precise keyword queries and complex, natural language queries, making it versatile for various user needs. By understanding the context and intent behind queries, hybrid search can provide more intuitive and accurate results, enhancing the overall user experience. ### Comprehensive Results Hybrid search ensures no relevant documents are missed, whether they match the exact keywords or are semantically related to the query. Users are more likely to find what they seek in a single search attempt, reducing the need for multiple queries. ### Adaptability Hybrid search can dynamically adjust the weight given to keyword matches and semantic relevance based on the specific query and user behavior. Machine learning models can be employed to continuously improve the relevance and ranking of search results by learning from user interactions and feedback. ### Optimized Performance While semantic search alone can be computationally intensive, combining it with keyword search allows for efficient initial filtering of results using sparse vectors, followed by more detailed ranking using dense vectors. The hybrid approach can be designed to scale effectively, balancing the load between keyword-based and semantic-based processing. ### Versatility in Applications Hybrid search is ideal for enterprise environments where diverse and complex queries are common, providing employees with quick and accurate access to information. It enhances product search in e-commerce by understanding user intent and context, leading to better product recommendations and increased sales. In digital libraries and archives, it helps retrieve both specific documents and thematically related content, making it useful for researchers and academics. Hybrid search doesn’t limit the search process to a single technique. Integrating both keyword and semantic search methods provides a comprehensive search experience that is well-suited to meet modern users’ varied and complex needs. This ability makes it particularly valuable in environments where accuracy, relevance, and user satisfaction are critical. ## Examples of Hybrid Vector Search Engines, Databases, & Platforms Now that we’ve gone over why you should consider implementing hybrid search, let’s discuss examples of hybrid search engines across different platforms. Each platform has unique features and capabilities that enhance search accuracy and relevance. ### Couchbase Couchbase is a NoSQL cloud database platform that allows teams to build powerful search capabilities into applications. It supports vector, full-text, geolocation, ranges, and predicate search techniques, all within a single SQL query and index - delivering simplicity and lower latency. You can learn more about Couchbase’s hybrid vector search capabilities here. ### Elasticsearch Elasticsearch is a powerful open-source search engine that supports keyword-based and semantic search functionalities. It integrates with various plugins and tools like Kibana for visualization and machine learning to enhance search relevance. You can learn more about Elasticsearch’s hybrid search capabilities in this blog post. ### Algolia Algolia is a search-as-a-service platform that provides real-time search and discovery capabilities. It combines keyword-based search with features like typo tolerance, synonyms, and personalization, which are aspects of semantic search. You can learn more about Algolia’s AI search capabilities here. ### Amazon Kendra Amazon Kendra is an intelligent search service powered by machine learning. It offers natural language understanding capabilities to deliver more relevant search results, combining keyword and semantic searches. You can learn more about Amazon Kendra’s features here. ## How to Get Started with Hybrid Search To get started with hybrid search, you can follow these steps, which integrate both keyword-based and semantic search capabilities: ### 1. Understand and Choose a Hybrid Search Platform Before diving in, it’s important to understand what hybrid search entails. Hybrid search combines traditional keyword-based search (sparse vectors) with semantic search (dense vectors) to improve the accuracy and relevance of search results. Once you understand the basics, select a search platform that supports hybrid search functionalities. Some popular options are mentioned in the previous section. ### 2. Set Up Your Search Environment Once you’ve chosen a platform, follow the setup instructions to get your search environment up and running. Setup typically involves: - Installing the platform or subscribing to a cloud service - Configuring the search indices to store your data - Setting up access controls and security measures ### 3. Index Your Data Prepare and index your data using sparse and dense vectors: - Sparse vectors: Use traditional indexing techniques like TF-IDF and inverted indexing. - Dense vectors: Generate dense vectors using word embeddings or contextual embeddings (e.g., Word2vec, GloVe, BERT, GPT). ### 4. Implement Query Processing When a user submits a query, you can process it to generate both sparse and dense vectors. This task involves: - Tokenizing and normalizing the query for keyword-based search - Using an embedding model to convert the query into a dense vector for semantic search ### 5. Combine Results from Both Indices Retrieve documents from both the sparse index (keyword match) and the dense index (semantic match). Combine and re-rank the results based on relevance scores from both indices. Machine learning models can be employed to optimize this re-ranking process. ### 6. Optimize and Refine Continuously optimize and refine your hybrid search setup by: - Analyzing user behavior and feedback - Adjusting the weights assigned to keyword and semantic relevance - Updating embedding models and retraining them with new data ## Key Takeaways and Additional Resources Hybrid search combines the strengths of keyword-based and semantic search techniques to deliver more accurate, relevant, and comprehensive search results. By leveraging sparse vectors for precise keyword matching and dense vectors for understanding context and semantic meaning, hybrid search provides a mature and powerful solution that can handle diverse and complex queries. Visit these additional resources to learn more about concepts related to AI and Couchbase’s search capabilities: --- # Meet Your Best New Caching Solution Source: https://www.couchbase.com/caching-comparison/ Last modified: 2026-05-19T17:18:07+00:00 Whitepaper ## High-performance applications with caching Distributed caching enhances app performance, reduces cost, and is scalable COMPARE - What’s included - JSON support - Sub-document access - Real-time analytics - Secondary indexing - Scalability - Multi-dimensional scaling - Replication across data centers - Container/Kubernetes - DBaaS on all major public cloud providers - HA replication/failover - Couchbase - Redis - Requires additional module - Lacks complex query capabilities - Basic indexing, not complex queries - Lacks advanced sharding - Not fully automatic - Memcached - Lacks advanced sharding - Basic Kubernetes support - Oracle Coherence - Lacks deep analytics tools - Limited capability CUSTOMERS --- # caching Archives - The Couchbase Blog Source: https://www.couchbase.com/caching/ # Tag: caching - ## Couchbase Developer Days and LivePerson: Who, What and Why? I’ve recently returned from a rather brilliant Couchbase trip to Israel. My colleague Tug Grall and I lead the Couchbase Developer Day held at the LivePerson offices, which was followed by a Couchbase meetup… - ## Caching queries in Couchbase for high performance Starting from version 2.0, Couchbase server offers a powerful way of creating indexes for JSON documents through the concept of views. Using views, it is possible to define primary indexes, composite indexes and… --- # Capella App Services Admin API Reference Source: https://docs.couchbase.com/cloud/app-services/references/rest_api_admin.html Download OpenAPI specification: License: Business Source License 1.1 (BSL) App Services manages access and synchronization between Couchbase Lite and Couchbase Capella. The App Services Admin REST API is used to administer user accounts and roles, and to run administrative tasks in superuser mode. This will get the information about the current user. | db required | string Example: db1 The name of the database to run the operation against. | - 200 - 404 Content type application/json `{`- "authentication_handlers": [ - "default", - "cookie" ], - "ok": true, - "userCtx": { - "channels": { - "!": 1, - "channelA": 2 }, - "name": "string" } } Generates a login session for a user and returns the session ID and cookie name for that session. If no TTL is provided, then the default of 24 hours will be used. A session cannot be generated for an non-existent user or the `GUEST` user. | db required | string Example: db1 The name of the database to run the operation against. | The body can depend on if using the Public or Admin APIs. | name | string User name to generate the session for. | | ttl | integer Time until the session expires. Uses default value of 24 hours if left blank. This value must be greater or equal to 1. | - Payload Content type application/json `{`- "name": "string", - "ttl": 0 } - 200 - 401 - 404 Content type application/json `{`- "session_id": "c5af80a039db4ed9d2b6865576b6999935282689", - "expires": "2022-01-21T15:24:44Z", - "cookie_name": "SyncGatewaySession" } Retrieve session information such as the user the session belongs too and what channels that user can access. | db required | string Example: db1 The name of the database to run the operation against. | | sessionid required | string The ID of the session to target. | - 200 - 404 Content type application/json `{`- "authentication_handlers": [ - "default", - "cookie" ], - "ok": true, - "userCtx": { - "channels": { - "!": 1, - "channelA": 2 }, - "name": "string" } } Invalidates the session provided so that anyone using it is logged out and is prevented from future use. | db required | string Example: db1 The name of the database to run the operation against. | | sessionid required | string The ID of the session to target. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Invalidates all the sessions that a user has. Will still return a `200` status code if the user has no sessions. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the user. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Invalidates the session only if it belongs to the user. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the user. | | sessionid required | string The ID of the session to target. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Retrieve a single users information. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the user. | - 200 - 404 Content type application/json `{`- "name": "string", - "password": "string", - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "email": "string", - "disabled": false, - "admin_roles": [ - "string" ], - "roles": [ - "string" ], - "jwt_roles": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_issuer": "string", - "jwt_last_updated": "2019-08-24T14:15:22Z", - "collection_access": { - "scopename1": { - "collectionname1": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" }, - "collectionname2": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" } }, - "scopename2": { - "collectionname1": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" }, - "collectionname2": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" } } } } If the user does not exist, create a new user otherwise update the existing user. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the user. | Properties associated with a user | name | string The name of the user. User names can only have alphanumeric ASCII characters and underscores. | | password | string The password of the user. Mandatory. unless | | admin_channels | Array of strings A list of channels to explicitly grant to the user for the default collection. See | string The email address of the user. | | | disabled | boolean Default: false If true, the user will not be able to login to the account as it is disabled. | | admin_roles | Array of strings A list of roles to explicitly grant to the user. | object A set of access grants by scope and collection for a specific collection. | - Payload Content type application/json `{`- "name": "string", - "password": "string", - "admin_channels": [ - "string" ], - "email": "string", - "disabled": false, - "admin_roles": [ - "string" ], - "collection_access": { - "scopename1": { - "collectionname1": { - "admin_channels": [ - "string" ] }, - "collectionname2": { - "admin_channels": [ - "string" ] } }, - "scopename2": { - "collectionname1": { - "admin_channels": [ - "string" ] }, - "collectionname2": { - "admin_channels": [ - "string" ] } } } } - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Delete a user from the database. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the user. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Retrieves all the roles that are in the database. | db required | string Example: db1 The name of the database to run the operation against. | | deleted | boolean Default: false Enum: true false Indicates that roles marked as deleted should be included in the result. | - 200 - 404 Content type application/json `[`- "Administrator", - "Moderator" ] Create a new role using the request body to specify the properties on the role. | db required | string Example: db1 The name of the database to run the operation against. | Properties associated with a role | name | string The name of the role. Role names can only have alphanumeric ASCII characters and underscores. | | admin_channels | Array of strings A list of channels to explicitly grant to the role for the default collection. See | object A set of access grants by scope and collection for a specific collection. | - Payload Content type application/json `{`- "name": "string", - "admin_channels": [ - "string" ], - "collection_access": { - "scopename1": { - "collectionname1": { - "admin_channels": [ - "string" ] }, - "collectionname2": { - "admin_channels": [ - "string" ] } }, - "scopename2": { - "collectionname1": { - "admin_channels": [ - "string" ] }, - "collectionname2": { - "admin_channels": [ - "string" ] } } } } - 404 - 409 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Retrieve a single roles properties. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the role. | - 200 - 404 Content type application/json `{`- "name": "string", - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "collection_access": { - "scopename1": { - "collectionname1": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" }, - "collectionname2": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" } }, - "scopename2": { - "collectionname1": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" }, - "collectionname2": { - "admin_channels": [ - "string" ], - "all_channels": [ - "string" ], - "jwt_channels": [ - "string" ], - "jwt_last_updated": "2019-08-24T14:15:22Z" } } } } If the role does not exist, create a new role otherwise update the existing role. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the role. | Properties associated with a role | name | string The name of the role. Role names can only have alphanumeric ASCII characters and underscores. | | admin_channels | Array of strings A list of channels to explicitly grant to the role for the default collection. See | object A set of access grants by scope and collection for a specific collection. | - Payload Content type application/json `{`- "name": "string", - "admin_channels": [ - "string" ], - "collection_access": { - "scopename1": { - "collectionname1": { - "admin_channels": [ - "string" ] }, - "collectionname2": { - "admin_channels": [ - "string" ] } }, - "scopename2": { - "collectionname1": { - "admin_channels": [ - "string" ] }, - "collectionname2": { - "admin_channels": [ - "string" ] } } } } - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Delete a role from the database. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the role. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Check if the role exists by checking the status code. | db required | string Example: db1 The name of the database to run the operation against. | | name required | string The name of the role. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } --- # Capella App Services Metrics API Reference Source: https://docs.couchbase.com/cloud/app-services/references/rest_api_metric.html Download OpenAPI specification: License: Business Source License 1.1 (BSL) App Services manages access and synchronization between Couchbase Lite and Couchbase Capella. The App Services Metrics REST API returns App Services metrics, in Prometheus-compatible format, for performance monitoring and diagnostic purposes. Returns App Services statistics and other runtime variables in Prometheus Exposition format. - 200 Content type application/json `{`- "sgw_audit_num_audits_filtered_by_role": 0, - "sgw_audit_num_audits_filtered_by_user": 0, - "sgw_audit_num_audits_logged": 0, - "sgw_cache_abandoned_seqs": 0, - "sgw_cache_chan_cache_active_revs": 0, - "sgw_cache_chan_cache_bypass_count": 0, - "sgw_cache_chan_cache_channels_added": 0, - "sgw_cache_chan_cache_channels_evicted_inactive": 0, - "sgw_cache_chan_cache_channels_evicted_nru": 0, - "sgw_cache_chan_cache_compact_count": 0, - "sgw_cache_chan_cache_compact_time": 0, - "sgw_cache_chan_cache_hits": 0, - "sgw_cache_chan_cache_max_entries": 0, - "sgw_cache_chan_cache_misses": 0, - "sgw_cache_chan_cache_num_channels": 0, - "sgw_cache_chan_cache_pending_queries": 0, - "sgw_cache_chan_cache_removal_revs": 0, - "sgw_cache_chan_cache_tombstone_revs": 0, - "sgw_cache_current_skipped_seq_count": 0, - "sgw_cache_high_seq_cached": 0, - "sgw_cache_high_seq_stable": 0, - "sgw_cache_non_mobile_ignored_count": 0, - "sgw_cache_num_active_channels": 0, - "sgw_cache_num_skipped_seqs": 0, - "sgw_cache_pending_seq_len": 0, - "sgw_cache_rev_cache_bypass": 0, - "sgw_cache_rev_cache_hits": 0, - "sgw_cache_rev_cache_misses": 0, - "sgw_cache_revision_cache_num_items": 0, - "sgw_cache_revision_cache_total_memory": 0, - "sgw_cache_skipped_seq_cap": 0, - "sgw_cache_skipped_seq_len": 0, - "sgw_cache_view_queries": 0, - "sgw_collection_doc_reads_bytes": 0, - "sgw_collection_doc_writes_bytes": 0, - "sgw_collection_import_count": 0, - "sgw_collection_num_doc_reads": 0, - "sgw_collection_num_doc_writes": 0, - "sgw_collection_sync_function_count": 0, - "sgw_collection_sync_function_exception_count": 0, - "sgw_collection_sync_function_reject_access_count": 0, - "sgw_collection_sync_function_reject_count": 0, - "sgw_collection_sync_function_time": 0, - "sgw_config_database_config_bucket_mismatches": 0, - "sgw_config_database_config_collection_conflicts": 0, - "sgw_database_compaction_attachment_start_time": 0, - "sgw_database_compaction_tombstone_start_time": 0, - "sgw_database_conflict_write_count": 0, - "sgw_database_crc32c_match_count": 0, - "sgw_database_dcp_caching_count": 0, - "sgw_database_dcp_caching_time": 0, - "sgw_database_dcp_received_count": 0, - "sgw_database_dcp_received_time": 0, - "sgw_database_doc_reads_bytes_blip": 0, - "sgw_database_doc_writes_bytes": 0, - "sgw_database_doc_writes_bytes_blip": 0, - "sgw_database_doc_writes_xattr_bytes": 0, - "sgw_database_high_seq_feed": 0, - "sgw_database_http_bytes_written": 0, - "sgw_database_num_attachments_compacted": 0, - "sgw_database_num_doc_reads_blip": 0, - "sgw_database_num_doc_reads_rest": 0, - "sgw_database_num_doc_writes": 0, - "sgw_database_num_idle_kv_ops": 0, - "sgw_database_num_public_rest_requests": 0, - "sgw_database_num_replications_active": 0, - "sgw_database_num_replications_rejected_limit": 0, - "sgw_database_num_replications_total": 0, - "sgw_database_num_tombstones_compacted": 0, - "sgw_database_public_rest_bytes_read": 0, - "sgw_database_replication_bytes_received": 0, - "sgw_database_replication_bytes_sent": 0, - "sgw_database_sequence_assigned_count": 0, - "sgw_database_sequence_get_count": 0, - "sgw_database_sequence_incr_count": 0, - "sgw_database_sequence_released_count": 0, - "sgw_database_sequence_reserved_count": 0, - "sgw_database_sync_function_count": 0, - "sgw_database_sync_function_exception_count": 0, - "sgw_database_sync_function_time": 0, - "sgw_database_total_sync_time": 0, - "sgw_database_warn_channel_name_size_count": 0, - "sgw_database_warn_channels_per_doc_count": 0, - "sgw_database_warn_grants_per_doc_count": 0, - "sgw_database_warn_xattr_size_count": 0, - "sgw_delta_sync_delta_cache_hit": 0, - "sgw_delta_sync_delta_pull_replication_count": 0, - "sgw_delta_sync_delta_push_doc_count": 0, - "sgw_delta_sync_delta_sync_miss": 0, - "sgw_delta_sync_deltas_requested": 0, - "sgw_delta_sync_deltas_sent": 0, - "sgw_gsi_views__count": 0, - "sgw_gsi_views__error_count": 0, - "sgw_gsi_views__time": 0, - "sgw_replication_expected_sequence_len": 0, - "sgw_replication_expected_sequence_len_post_cleanup": 0, - "sgw_replication_processed_sequence_len": 0, - "sgw_replication_processed_sequence_len_post_cleanup": 0, - "sgw_replication_pull_attachment_pull_bytes": 0, - "sgw_replication_pull_attachment_pull_count": 0, - "sgw_replication_pull_max_pending": 0, - "sgw_replication_pull_norev_send_count": 0, - "sgw_replication_pull_num_pull_repl_active_continuous": 0, - "sgw_replication_pull_num_pull_repl_active_one_shot": 0, - "sgw_replication_pull_num_pull_repl_caught_up": 0, - "sgw_replication_pull_num_pull_repl_since_zero": 0, - "sgw_replication_pull_num_pull_repl_total_caught_up": 0, - "sgw_replication_pull_num_pull_repl_total_continuous": 0, - "sgw_replication_pull_num_pull_repl_total_one_shot": 0, - "sgw_replication_pull_num_replications_active": 0, - "sgw_replication_pull_replacement_rev_send_count": 0, - "sgw_replication_pull_request_changes_count": 0, - "sgw_replication_pull_request_changes_time": 0, - "sgw_replication_pull_rev_error_count": 0, - "sgw_replication_pull_rev_processing_time": 0, - "sgw_replication_pull_rev_send_count": 0, - "sgw_replication_pull_rev_send_latency": 0, - "sgw_replication_push_attachment_push_bytes": 0, - "sgw_replication_push_attachment_push_count": 0, - "sgw_replication_push_doc_push_count": 0, - "sgw_replication_push_doc_push_error_count": 0, - "sgw_replication_push_propose_change_count": 0, - "sgw_replication_push_propose_change_time": 0, - "sgw_replication_push_write_processing_time": 0, - "sgw_replication_push_write_throttled_count": 0, - "sgw_replication_push_write_throttled_time": 0, - "sgw_replication_sgr_conflict_resolved_local_count": 0, - "sgw_replication_sgr_conflict_resolved_merge_count": 0, - "sgw_replication_sgr_conflict_resolved_remote_count": 0, - "sgw_replication_sgr_deltas_recv": 0, - "sgw_replication_sgr_deltas_requested": 0, - "sgw_replication_sgr_deltas_sent": 0, - "sgw_replication_sgr_docs_checked_recv": 0, - "sgw_replication_sgr_docs_checked_sent": 0, - "sgw_replication_sgr_num_attachment_bytes_pulled": 0, - "sgw_replication_sgr_num_attachment_bytes_pushed": 0, - "sgw_replication_sgr_num_attachments_pulled": 0, - "sgw_replication_sgr_num_attachments_pushed": 0, - "sgw_replication_sgr_num_connect_attempts_pull": 0, - "sgw_replication_sgr_num_connect_attempts_push": 0, - "sgw_replication_sgr_num_docs_failed_to_pull": 0, - "sgw_replication_sgr_num_docs_failed_to_push": 0, - "sgw_replication_sgr_num_docs_pulled": 0, - "sgw_replication_sgr_num_docs_purged": 0, - "sgw_replication_sgr_num_docs_pushed": 0, - "sgw_replication_sgr_num_handlers_panicked": 0, - "sgw_replication_sgr_num_reconnects_aborted_pull": 0, - "sgw_replication_sgr_num_reconnects_aborted_push": 0, - "sgw_replication_sgr_push_conflict_count": 0, - "sgw_replication_sgr_push_rejected_count": 0, - "sgw_resource_utilization_admin_net_bytes_recv": 0, - "sgw_resource_utilization_admin_net_bytes_sent": 0, - "sgw_resource_utilization_error_count": 0, - "sgw_resource_utilization_go_memstats_heapalloc": 0, - "sgw_resource_utilization_go_memstats_heapidle": 0, - "sgw_resource_utilization_go_memstats_heapinuse": 0, - "sgw_resource_utilization_go_memstats_heapreleased": 0, - "sgw_resource_utilization_go_memstats_pausetotalns": 0, - "sgw_resource_utilization_go_memstats_stackinuse": 0, - "sgw_resource_utilization_go_memstats_stacksys": 0, - "sgw_resource_utilization_go_memstats_sys": 0, - "sgw_resource_utilization_goroutines_high_watermark": 0, - "sgw_resource_utilization_node_cpu_percent_utilization": 0, - "sgw_resource_utilization_num_goroutines": 0, - "sgw_resource_utilization_process_cpu_percent_utilization": 0, - "sgw_resource_utilization_process_memory_resident": 0, - "sgw_resource_utilization_pub_net_bytes_recv": 0, - "sgw_resource_utilization_pub_net_bytes_sent": 0, - "sgw_resource_utilization_system_memory_total": 0, - "sgw_resource_utilization_uptime": 0, - "sgw_resource_utilization_warn_count": 0, - "sgw_security_auth_failed_count": 0, - "sgw_security_auth_success_count": 0, - "sgw_security_num_access_errors": 0, - "sgw_security_num_docs_rejected": 0, - "sgw_security_total_auth_time": 0, - "sgw_shared_bucket_import_import_cancel_cas": 0, - "sgw_shared_bucket_import_import_count": 0, - "sgw_shared_bucket_import_import_error_count": 0, - "sgw_shared_bucket_import_import_high_seq": 0, - "sgw_shared_bucket_import_import_partitions": 0, - "sgw_shared_bucket_import_import_processing_time": 0 } --- # Capella App Services Public API Reference Source: https://docs.couchbase.com/cloud/app-services/references/rest_api_public.html App Services manages access and synchronization between Couchbase Lite and Couchbase Capella. The App Services Public REST API is used for client replication. - 200 Content type application/json `{`- "ADMIN": true, - "couchdb": "Welcome", - "vendor": { - "name": "Couchbase Sync Gateway", - "version": 3.1 }, - "version": "Couchbase Sync Gateway/3.1.0(1;a765231) EE", - "persistent_config": true } Retrieve information about the database. | db required | string Example: db1 The name of the database to run the operation against. | - 200 - 404 Content type application/json `{`- "db_name": "db", - "update_seq": 123456, - "committed_update_seq": 123456, - "instance_start_time": 1644600082279583, - "compact_running": true, - "purge_seq": 0, - "disk_format_version": 0, - "state": "Online", - "server_uuid": "995618a6a6cc9ac79731bd13240e19b5" } Check if a database exists by using the response status code. | db required | string Example: db1 The name of the database to run the operation against. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } This endpoint is non-functional but is present for CouchDB compatibility. This was deprecated in CouchDB 3.0. | db required | string Example: db1 The name of the database to run the operation against. | - 201 Content type application/json `{`- "instance_start_time": 1644600082279583, - "ok": true } This will get the information about the current user. | db required | string Example: db1 The name of the database to run the operation against. | - 200 - 401 Content type application/json `{`- "authentication_handlers": [ - "default", - "cookie" ], - "ok": true, - "userCtx": { - "channels": { - "!": 1, - "channelA": 2 }, - "name": "string" } } Generates a login session for the user based on the credentials provided in the request body or if that fails (due to invalid credentials or none provided at all), generates the new session for the currently authenticated user instead. On a successful session creation, a session cookie is stored to keep the user authenticated for future API calls. If `Origin` header is passed to this endpoint, the `Origin` header must match both the `cors.login_origin` and `cors.origin` configuration options. | db required | string Example: db1 The name of the database to run the operation against. | | one_time | boolean Sets the session to only be valid for a single authentication. This session will expire in 5 minutes if not used. | optional When name and password are included in the request body, the session will be created for the specified user. Otherwise the session will be created for the authenticated user making the request. | name | string User name to generate the session for. Omit this value to generate a session for the authenticated user. | | password | string Password of the user to generate the session for. Omit this value to generate a session for the authenticated user. | - Payload Content type application/json `{`- "name": "string", - "password": "string" } - 200 - 400 - 401 Content type application/json `{`- "authentication_handlers": [ - "default", - "cookie" ], - "ok": true, - "userCtx": { - "channels": { - "!": 1, - "channelA": 2 }, - "name": "string" }, - "one_time_session_id": "c5af80a039db4ed9d2b6865576b6999935282689" } Invalidates the session for the currently authenticated user and removes their session cookie. If `Origin` header is passed to this endpoint, the `Origin` header must match both the `cors.login_origin` and `cors.origin` configuration options. | db required | string Example: db1 The name of the database to run the operation against. | - 400 - 401 - 404 Content type application/json `{`- "error": "Bad Request", - "reason": "No CORS" } Called by clients to initiate the OpenID Connect Authorization Code Flow. Redirects to the OpenID Connect provider if successful. | db required | string Example: db1 The name of the database to run the operation against. | | provider | string The OpenID Connect provider to use for authentication. The list of providers are defined in the Sync Gateway config. If left empty, the default provider will be used. | | offline | string If true, the OpenID Connect provider is requested to confirm with the user the permissions requested and refresh the OIDC token. To do this, access_type=offline and prompt=consent is set on the redirection link. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } Called by clients to initiate the OpenID Connect Authorization Code Flow. This will establish a connection with the provider, then put the redirect URL in the `WWW-Authenticate` header. | db required | string Example: db1 The name of the database to run the operation against. | | provider | string The OpenID Connect provider to use for authentication. The list of providers are defined in the Sync Gateway config. If left empty, the default provider will be used. | | offline | string If true, the OpenID Connect provider is requested to confirm with the user the permissions requested and refresh the OIDC token. To do this, access_type=offline and prompt=consent is set on the redirection link. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } The callback URL that the client is redirected to after authenticating with the OpenID Connect provider. | db required | string Example: db1 The name of the database to run the operation against. | | error | string The OpenID Connect error, if any occurred. | | code required | string The OpenID Connect authentication code. | | provider | string The OpenID Connect provider to use for authentication. The list of providers are defined in the Sync Gateway config. If left empty, the default provider will be used. | | state | string The OpenID Connect state to verify against the state cookie. This is used to prevent cross-site request forgery (CSRF). This is not required if | - 200 - 404 - 500 Content type application/json `{`- "id_token": "string", - "refresh_token": "string", - "session_id": "string", - "name": "string", - "access_token": "string", - "token_type": "string", - "expires_in": 0 } Refresh the OpenID Connect token based on the provided refresh token. | db required | string Example: db1 The name of the database to run the operation against. | | refresh_token required | string The OpenID Connect refresh token. | | provider | string The OpenID Connect provider to use for authentication. The list of providers are defined in the Sync Gateway config. If left empty, the default provider will be used. | - 200 - 404 Content type application/json `{`- "id_token": "string", - "refresh_token": "string", - "session_id": "string", - "name": "string", - "access_token": "string", - "token_type": "string", - "expires_in": 0 } Create a new document in the keyspace. This will generate a random document ID unless specified in the body. A document can have a maximum size of 20MB. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | roundtrip | boolean Block until document has been received by change cache | | _id | string The ID of the document. | | _rev | string The revision of the document. | | _exp | string Expiry time after which the document will be purged. The expiration time is set and managed on the Couchbase Server document. The value can be specified in two ways; in ISO-8601 format, for example the 6th of July 2022 at 17:00 in the BST timezone would be As with the existing explicit purge mechanism, this applies only to the local database; it has nothing to do with replication. This expiration time is not propagated when the document is replicated. The purge of the document does not cause it to be deleted on any other database. | | _deleted | boolean Whether the document is a tombstone or not. If true, it is a tombstone. | object | | object | | | property name* additional property | any | - Payload Content type application/json `{`- "_id": "string", - "_rev": "string", - "_exp": "string", - "_deleted": true, - "_revisions": { - "start": 0, - "ids": [ - "string" ] }, - "_attachments": { - "attachmentname1": { - "content_type": "string", - "data": "string" }, - "attachmentname2": { - "content_type": "string", - "data": "string" } } } - 200 - 400 - 404 - 409 - 415 Content type application/json `{`- "id": "string", - "ok": true, - "rev": "string", - "cv": "string" } Retrieve a document from the database by its doc ID. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | rev | string Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58 The document revision to target. This can be a RevTree ID or a CV (Current Version) ID. If this is a CV value, ensure the query parameter is URL encoded ( | | open_revs | Array of strings Option to fetch specified revisions of the document. The value can be all to fetch all leaf revisions or an array of revision numbers (i.e. open_revs=["rev1", "rev2"]). Only leaf revision bodies that haven't been pruned are guaranteed to be returned. If this option is specified the response will be in multipart format. Use the | | show_exp | boolean Whether to show the expiry property ( | | revs_from | Array of strings Trim the revision history to stop at the first revision in the provided list. If no match is found, the revisions will be trimmed to the | | atts_since | Array of strings Include attachments only since specified revisions. Excludes the attachments for the specified revisions. Only gets used if | | revs_limit | integer Maximum amount of revisions to return for each document. | | attachments | boolean Include attachment bodies in response. | | replicator2 | boolean Returns the document with the required properties for replication. This is an enterprise-edition only feature. | - 200 - 400 - 404 - 501 Content type application/json `{`- "FailedLoginAttempts": 5, - "Friends": [ - "Bob" ], - "_id": "AliceSettings", - "_rev": "1-64d4a1f179db5c1848fe52967b47c166", - "_cv": "1@src" } This will upsert a document meaning if it does not exist, then it will be created. Otherwise a new revision will be made for the existing document. A revision ID must be provided if targetting an existing document. A document ID must be specified for this endpoint. To let App Services generate the ID, use the `POST /{db}/` endpoint. If a document does exist, then replace the document content with the request body. This means unspecified fields will be removed in the new revision. The maximum size for a document is 20MB. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | roundtrip | boolean Block until document has been received by change cache | | replicator2 | boolean Returns the document with the required properties for replication. This is an enterprise-edition only feature. | | new_edits | boolean Default: true Setting this to false indicates that the request body is an already-existing revision that should be directly inserted into the database, instead of a modification to apply to the current document. This mode is used for replication. This option must be used in conjunction with the | | rev | string Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58 The document revision to target. This can be a RevTree ID or a CV (Current Version) ID. If this is a CV value, ensure the query parameter is URL encoded ( | | If-Match | string An optimistic concurrency control (OCC) value used to prevent conflicts. Use the value returned in the ETag response header of the GET request for the resource being updated, or the latest known Revision Tree ID or Current Version of the document. | | _id | string The ID of the document. | | _rev | string The revision of the document. | | _exp | string Expiry time after which the document will be purged. The expiration time is set and managed on the Couchbase Server document. The value can be specified in two ways; in ISO-8601 format, for example the 6th of July 2022 at 17:00 in the BST timezone would be As with the existing explicit purge mechanism, this applies only to the local database; it has nothing to do with replication. This expiration time is not propagated when the document is replicated. The purge of the document does not cause it to be deleted on any other database. | | _deleted | boolean Whether the document is a tombstone or not. If true, it is a tombstone. | object | | object | | | property name* additional property | any | - Payload Content type application/json `{`- "_id": "string", - "_rev": "string", - "_exp": "string", - "_deleted": true, - "_revisions": { - "start": 0, - "ids": [ - "string" ] }, - "_attachments": { - "attachmentname1": { - "content_type": "string", - "data": "string" }, - "attachmentname2": { - "content_type": "string", - "data": "string" } } } - 201 - 400 - 404 - 409 - 415 Content type application/json `{`- "id": "string", - "ok": true, - "rev": "string", - "cv": "string" } Delete a document from the database. A new revision is created so the database can track the deletion in synchronized copies. A revision ID either in the header or on the query parameters is required. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | rev | string Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58 The document revision to target. This can be a RevTree ID or a CV (Current Version) ID. If this is a CV value, ensure the query parameter is URL encoded ( | | If-Match | string An optimistic concurrency control (OCC) value used to prevent conflicts. Use the value returned in the ETag response header of the GET request for the resource being updated, or the latest known Revision Tree ID or Current Version of the document. | - 200 - 400 - 404 Content type application/json `{`- "id": "string", - "ok": true, - "rev": "string", - "cv": "string" } Return a status code based on if the document exists or not. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | rev | string Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58 The document revision to target. This can be a RevTree ID or a CV (Current Version) ID. If this is a CV value, ensure the query parameter is URL encoded ( | | open_revs | Array of strings Option to fetch specified revisions of the document. The value can be all to fetch all leaf revisions or an array of revision numbers (i.e. open_revs=["rev1", "rev2"]). Only leaf revision bodies that haven't been pruned are guaranteed to be returned. If this option is specified the response will be in multipart format. Use the | | show_exp | boolean Whether to show the expiry property ( | | revs_from | Array of strings Trim the revision history to stop at the first revision in the provided list. If no match is found, the revisions will be trimmed to the | | atts_since | Array of strings Include attachments only since specified revisions. Excludes the attachments for the specified revisions. Only gets used if | | revs_limit | integer Maximum amount of revisions to return for each document. | | attachments | boolean Include attachment bodies in response. | | replicator2 | boolean Returns the document with the required properties for replication. This is an enterprise-edition only feature. | - 400 - 404 Content type application/json `{`- "error": "string", - "reason": "string" } This request retrieves a sorted list of changes made to documents in the database, in time order of application. Each document appears at most once, ordered by its most recent change, regardless of how many times it has been changed. This request can be used to listen for update and modifications to the database for post processing or synchronization. A continuously connected changes feed is a reasonable approach for generating a real-time log for most applications. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | limit | integer Maximum number of changes to return. | |||||| | since | string Starts the results from the change immediately after the given sequence ID. Sequence IDs should be considered opaque; they come from the last_seq property of a prior response. | |||||| | style | string Default: "main_only" Enum: "main_only" "all_docs" Controls whether to return the current winning revision ( | |||||| | active_only | boolean Default: false Set true to exclude deleted documents and notifications for documents the user no longer has access to from the changes feed. | |||||| | include_docs | boolean Include the body associated with each document. | |||||| | revocations | boolean If true, revocation messages will be sent on the changes feed. | |||||| | filter | string Enum: "sync_gateway/bychannel" "_doc_ids" Set a filter to either filter by channels or document IDs. | |||||| | channels | string A comma-separated list of channel names to filter the response to only the channels specified. To use this option, the | |||||| | doc_ids | Array of strings A valid JSON array of document IDs to filter the documents in the response to only the documents specified. To use this option, the | |||||| | heartbeat | integer Default: 0 The interval (in milliseconds) to send an empty line (CRLF) in the response. This is to help prevent gateways from deciding the socket is idle and therefore closing it. This is only applicable to | |||||| | timeout | integer [ 0 .. 900000 ] Default: 300000 This is the maximum period (in milliseconds) to wait for a change before the response is sent, even if there are no results. This is only applicable for | |||||| | feed | string Default: "normal" Enum: "normal" "longpoll" "continuous" "websocket" The type of changes feed to use. | |||||| | version_type | string Default: "rev" The preferred type of document versioning to use for the changes feed. | - 200 - 400 - 404 Content type application/json `{`- "results": [ - { - "seq": 0, - "id": "string", - "changes": [ - { - "rev": "string" } ] } ], - "last_seq": "string" } This request retrieves a sorted list of changes made to documents in the database, in time order of application. Each document appears at most once, ordered by its most recent change, regardless of how many times it has been changed. This request can be used to listen for update and modifications to the database for post processing or synchronization. A continuously connected changes feed is a reasonable approach for generating a real-time log for most applications. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | limit | string Maximum number of changes to return. | | style | string Controls whether to return the current winning revision ( | | active_only | string Set true to exclude deleted documents and notifications for documents the user no longer has access to from the changes feed. | | include_docs | boolean Include the body associated with each document. | | revocations | string If true, revocation messages will be sent on the changes feed. | | filter | string Set a filter to either filter by channels or document IDs. | | channels | string A comma-separated list of channel names to filter the response to only the channels specified. To use this option, the | | doc_ids | string A valid JSON array of document IDs to filter the documents in the response to only the documents specified. To use this option, the | | heartbeat | string The interval (in milliseconds) to send an empty line (CRLF) in the response. This is to help prevent gateways from deciding the socket is idle and therefore closing it. This is only applicable to | | timeout | string This is the maximum period (in milliseconds) to wait for a change before the response is sent, even if there are no results. This is only applicable for | | feed | string The type of changes feed to use. | - Payload Content type application/json `{`- "limit": "string", - "style": "string", - "active_only": "string", - "include_docs": true, - "revocations": "string", - "filter": "string", - "channels": "string", - "doc_ids": "string", - "heartbeat": "string", - "timeout": "string", - "feed": "string" } - 200 - 400 - 404 Content type application/json `{`- "results": [ - { - "seq": 0, - "id": "string", - "changes": [ - { - "rev": "string" } ] } ], - "last_seq": "string" } Returns all documents in the database based on the specified parameters. This endpoint is not recommended for larger datasets or production workloads. GET /{keyspace}/_changes or POST /{keyspace}/_bulk_get have more efficient implementations and should be used instead. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | include_docs | boolean Include the body associated with each document. | | channels | boolean Include the channels each document is part of that the calling user also has access too. | | access | boolean Include what user/roles that each document grants access too. | | revs | boolean Include all the revisions for each document under the | | update_seq | boolean Include the document sequence number | | keys | Array of strings An array of document ID strings to filter by. | | startkey | string Return records starting with the specified key. | | endkey | string Stop returning records when this key is reached. | | limit | number This limits the number of result rows returned. Using a value of | - 200 - 400 - 403 - 404 Content type application/json `{`- "rows": [ - { - "key": "string", - "id": "string", - "value": { - "rev": "string", - "cv": "string" } } ], - "total_rows": 0, - "update_seq": 0 } Returns all documents in the database based on the specified parameters. This endpoint is not recommended for larger datasets or production workloads. GET /{keyspace}/_changes or POST /{keyspace}/_bulk_get have more efficient implementations and should be used instead. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | include_docs | boolean Include the body associated with each document. | | channels | boolean Include the channels each document is part of that the calling user also has access too. | | access | boolean Include what user/roles that each document grants access too. | | revs | boolean Include all the revisions for each document under the | | update_seq | boolean Include the document sequence number | | startkey | string Return records starting with the specified key. | | endkey | string Stop returning records when this key is reached. | | limit | number This limits the number of result rows returned. Using a value of | | keys required | Array of strings List of the documents to retrieve. | - Payload Content type application/json `{`- "keys": [ - "string" ] } - 200 - 400 - 403 - 404 Content type application/json `{`- "rows": [ - { - "key": "string", - "id": "string", - "value": { - "rev": "string", - "cv": "string" } } ], - "total_rows": 0, - "update_seq": 0 } This will allow multiple documented to be created, updated or deleted in bulk. To create a new document, simply add the body in an object under `docs` . A doc ID will be generated by App Services unless `_id` is specified. To update an existing document, provide the document ID (`_id` ) and Revision Tree ID (`_rev` ) as well as the new body values. To delete an existing document, provide the document ID (`_id` ), Revision Tree ID (`_rev` ), and set the deletion flag (`_deleted` ) to true. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | new_edits | boolean Default: true This controls whether to assign new revision identifiers to new edits ( | required | Array of objects | - Payload Content type application/json `{`- "new_edits": true, - "docs": [ - { - "_id": "FooBar", - "foo": "bar" }, - { - "_id": "AliceSettings", - "_rev": "5-832a6db48ed130adadede928aee54576", - "FailedLoginAttempts": 7 }, - { - "_id": "BobSettings", - "_rev": "1-fa76ba41ee5fdfee1b91fc478ed09e59", - "_deleted": true } ] } - 201 - 400 - 404 Content type application/json Example `[`- { - "id": "FooBar", - "rev": "1-cd809becc169215072fd567eebd8b8de" }, - { - "id": "AliceSettings", - "rev": "6-b3e8dcf825b71ccee112f3572ec4323c" }, - { - "id": "BobSettings", - "rev": "2-5145e1086bb8d1d71a531e9f6b543c58" } ] This request returns any number of documents, as individual bodies in a MIME multipart response. Each enclosed body contains one requested document. The bodies appear in the same order as in the request, but can also be identified by their `X-Doc-ID` and `X-Rev-ID` headers (if the `attachments` query is `true` ). A body for a document with no attachments will have content type `application/json` and contain the document itself. A body for a document that has attachments will be written as a nested `multipart/related` body. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | attachments | boolean Default: false This is for whether to include attachments in each of the documents returned or not. | | revs | boolean Include all the revisions for each document under the | | revs_limit | integer The number of revisions to include in the response from the document history. This parameter only makes a different if the | | X-Accept-Part-Encoding | string If this header includes | | Accept-Encoding | string If this header includes | required | Array of objects | - Payload Content type application/json `{`- "docs": [ - { - "id": "FooBar" }, - { - "id": "attachment" }, - { - "id": "AliceSettings" } ] } - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } This request retrieves a local document. Local document IDs begin with `_local/` . Local documents are not replicated or indexed, don't support attachments, and don't save revision histories. In practice they are almost only used by Couchbase Lite's replicator, as a place to store replication checkpoint data. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string The name of the local document ID excluding the | - 400 - 404 Content type application/json `{`- "error": "string", - "reason": "string" } This request creates or updates a local document. Updating a local document requires that the revision ID be put in the body under `_rev` . Local document IDs are given a `_local/` prefix. Local documents are not replicated or indexed, don't support attachments, and don't save revision histories. In practice they are almost only used by the client's replicator, as a place to store replication checkpoint data. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string The name of the local document ID excluding the | The body of the document | _rev | string Revision to replace. Required if updating existing local document. | - Payload Content type application/json `{`- "_rev": "string" } - 201 - 400 - 404 Content type application/json `{`- "id": "string", - "ok": true, - "rev": "string", - "cv": "string" } This request deletes a local document. Local document IDs begin with `_local/` . Local documents are not replicated or indexed, don't support attachments, and don't save revision histories. In practice they are almost only used by Couchbase Lite's replicator, as a place to store replication checkpoint data. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string The name of the local document ID excluding the | | rev required | string The revision ID of the revision to delete. | - 400 - 404 Content type application/json `{`- "error": "string", - "reason": "string" } This request checks if a local document exists. Local document IDs begin with `_local/` . Local documents are not replicated or indexed, don't support attachments, and don't save revision histories. In practice they are almost only used by Couchbase Lite's replicator, as a place to store replication checkpoint data. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string The name of the local document ID excluding the | - 400 - 404 Content type application/json `{`- "error": "string", - "reason": "string" } Takes a set of document IDs, each with a set of revision IDs. For each document, an array of unknown revisions are returned with an array of known revisions that may be recent ancestors. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid | Array of strings The document ID with an array of revisions to use for the comparison. | - Payload Content type application/json `{`- "docid": [ - "string" ] } - 200 - 404 Content type application/json `{`- "docid": { - "missing": [ - "string" ], - "possible_ancestors": [ - "string" ] } } This request retrieves a file attachment associated with the document. The raw data of the associated attachment is returned (just as if you were accessing a static file). The `Content-Type` response header is the same content type set when the document attachment was added to the database. The `Content-Disposition` response header will be set if the content type is considered unsafe to display in a browser (unless overridden by by database config option `serve_insecure_attachment_types` ) which will force the attachment to be downloaded. If the `meta` query parameter is set then the response will be in JSON with the additional metadata tags. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | attach required | string The attachment name. This value must be URL encoded. For example, if the attachment name is | | rev | string Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58 The document revision to target. This can be a RevTree ID or a CV (Current Version) ID. If this is a CV value, ensure the query parameter is URL encoded ( | | content_encoding | boolean Default: true Set to false to disable the | | meta | boolean Default: false Return only the metadata of the attachment in the response body. | | Range | string Example: bytes=123-456 RFC-2616 bytes range header. | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } This request adds or updates an attachment associated with the document. If the document does not exist, it will be created and the attachment will be added to it. If the attachment already exists, the data of the existing attachment will be replaced in the new revision. The maximum content size of an attachment is 20MB. The `Content-Type` header of the request specifies the content type of the attachment. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | attach required | string The attachment name. This value must be URL encoded. For example, if the attachment name is | | rev | string The existing document revision ID to modify. Required only when modifying an existing document. | | Content-Type | string Default: application/octet-stream The content type of the attachment. | | If-Match | string An alternative way of specifying the document revision ID. | The attachment data string The content to store in the body - 201 - 404 - 409 Content type application/json `{`- "id": "string", - "ok": true, - "rev": "string", - "cv": "string" } This request check if the attachment exists on the specified document. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | attach required | string The attachment name. This value must be URL encoded. For example, if the attachment name is | | rev | string Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58 The document revision to target. This can be a RevTree ID or a CV (Current Version) ID. If this is a CV value, ensure the query parameter is URL encoded ( | - 404 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } This request deletes an attachment associated with the document. If the attachment exists, the attachment will be removed from the document. | keyspace required | string Examples: - db1 - Default scope and collection - db1.collection1 - Named collection within the default scope - db1.scope1.collection1 - Fully-qualified scope and collection The keyspace to run the operation against. A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection. | | docid required | string Example: doc1 The document ID to run the operation against. | | attach required | string The attachment name. This value must be URL encoded. For example, if the attachment name is | | rev | string The existing document revision ID to modify. | | If-Match | string An alternative way of specifying the document revision ID. | - 200 - 404 - 409 Content type application/json `{`- "id": "string", - "ok": true, - "rev": "string", - "cv": "string" } This handles incoming BLIP Sync requests from either Couchbase Lite or another App Services node. The connection has to be upgradable to a websocket connection or else the request will fail. | db required | string Example: db1 The name of the database to run the operation against. | | client | string Default: "cbl2" Enum: "cbl2" "sgr2" This is the client type that is making the BLIP Sync request. Used to control client-type specific replication behaviour. | - 404 - 426 Content type application/json `{`- "error": "not_found", - "reason": "no such database \"invalid-db\"" } --- # Welcome to Couchbase Capella Source: https://docs.couchbase.com/cloud/get-started/intro.html # Welcome to Couchbase Capella Capella is the easiest way to use our Couchbase NoSQL database. Get access to SQL-like querying, Full-Text Search, powerful eventing, and connect to mobile and IoT devices at the edge. ## How Do You Want To Start Building Today? ### Explore Couchbase Capella Get set up with an account and a free tier operational cluster. ### Get Data Into Capella Import a sample, or bring your own data. ### Work With Data Learn how Couchbase Services can power up your workflows. ### Develop With Capella Ready to dive into development? Explore our APIs and SDKs. ### Optimize A Cluster Get the best performance from your cluster while managing costs. ### Manage Access And Security Learn how to keep everything secure for your cluster, and your users. --- # Capella Operational Management API Reference Source: https://docs.couchbase.com/cloud/management-api-reference/index.html Download OpenAPI specification: The Couchbase Capella Management API provides a set of REST APIs for creating and managing Capella instances. It enables users to perform operations such as creating new Capella instances, managing their configurations, and interacting with the Capella services. This API documentation specifies the endpoints, request and response formats, and authentication requirements for seamless integration with Couchbase Capella. To access the Management API, you need an API key. To create an initial bootstrap API key you must use the Capella UI. Once you have created an initial bootstrap API key, you can use the Management API itself to create further API keys. To learn more, see Get Started with the Management API v4.0. For a history of updates to the Management API, see Management API v4.0 Change Log. **API Base URL:** `https://cloudapi.cloud.couchbase.com` Couchbase Capella supports sending Capella alert notifications to the most common service like ServiceNow. Creates a new alert integration for a project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | kind required | string Enum: "webhook" "slack" "teams" Type of alert integration. | | name required | string <= 1024 characters Name of the alert integration (up to 1024 characters). | required | object or object or object (RequestConfig) | - Payload Content type application/json `{`- "kind": "slack", - "name": "test alert 1", - "config": { - "webhook": { - "method": "POST", - "token": "QktxVUtFU1dKV1FlJBYXdnTVlRemFZdlRDZTg6eFh4dzU4JUYjqdUwwYkJoTjZSTmlzRWFIRHF0b1h4a08yazBpQjJ1bms1OW4yTUhdsfRib3IhVQ==", - "basicAuth": { - "user": "username80085", - "password": "yed69khj420_i" }, - "headers": { - "property1": "string", - "property2": "string" }, - "exclude": { - "clusters": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ], - "appServices": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ] } }, - "slack": { - "botToken": "string", - "channel": "#alerts", - "clusterChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceChannelMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "channelWebhookUrlMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } }, - "teams": { - "webhookUrlMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } } } } - 201 - 403 - 404 - 409 - 422 - 429 - 500 - 504 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the alert integrations under the project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 - 504 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "test alert 1", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "ffffffff-aaaa-1414-eeee-000000000000", - "kind": "teams", - "configKey": "ffffffff-aaaa-1414-eeee-000000000000-alert-integration", - "status": "healthy", - "enabled": false, - "config": { - "webhook": { - "method": "POST", - "headers": { - "property1": "string", - "property2": "string" }, - "exclude": { - "clusters": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ], - "appServices": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ] } }, - "slack": { - "channel": "#alerts", - "clusterChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceChannelMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } }, - "teams": { - "clusterWebhookMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Lists Slack or Teams channels available to a bot token or existing alert integration, for populating channel mappings. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | One of | botToken required | string Slack bot token (starts with | | integrationId | string ID of an existing Slack or Teams alert integration. Mutually exclusive with | - Payload Content type application/json `{`- "botToken": "xoxb-1234567890-1234567890123-AbCdEfGhIjKlMnOpQrStUvWx", - "integrationId": "497a18ca-284e-40c0-985d-f72be35d468e" } - 200 - 400 - 403 - 404 - 422 - 429 - 500 - 504 Content type application/json `{`- "channels": [ - { - "id": "C01234ABCDE", - "name": "alerts", - "type": "public" } ] } Fetches the details of the given alert integration. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | alertIntegrationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the alert integration. | - 200 - 403 - 404 - 422 - 429 - 500 - 504 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "test alert 1", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "ffffffff-aaaa-1414-eeee-000000000000", - "kind": "teams", - "configKey": "ffffffff-aaaa-1414-eeee-000000000000-alert-integration", - "status": "healthy", - "enabled": false, - "config": { - "webhook": { - "method": "POST", - "headers": { - "property1": "string", - "property2": "string" }, - "exclude": { - "clusters": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ], - "appServices": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ] } }, - "slack": { - "channel": "#alerts", - "clusterChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceChannelMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } }, - "teams": { - "clusterWebhookMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Update the details of the given alert integration. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | alertIntegrationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the alert integration. | | kind | string Enum: "webhook" "slack" "teams" Type of alert integration. If provided, must match the existing integration's kind. This field cannot be used to change the integration kind. | | name | string or null <= 1024 characters Name of the alert integration (up to 1024 characters). | | enabled | boolean Enables or disables the integration. | object or object or object (UpdateRequestConfig) | - Payload Content type application/json `{`- "kind": "slack", - "name": "test alert 1", - "enabled": true, - "config": { - "webhook": { - "method": "POST", - "token": "QktxVUtFU1dKV1FlJBYXdnTVlRemFZdlRDZTg6eFh4dzU4JUYjqdUwwYkJoTjZSTmlzRWFIRHF0b1h4a08yazBpQjJ1bms1OW4yTUhdsfRib3IhVQ==", - "basicAuth": { - "user": "username80085", - "password": "yed69khj420_i" }, - "headers": { - "property1": "string", - "property2": "string" }, - "exclude": { - "clusters": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ], - "appServices": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ] } }, - "slack": { - "botToken": "string", - "channel": "string", - "clusterChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceChannelMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "channelWebhookUrlMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } }, - "teams": { - "webhookUrlMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } } } } - 200 - 400 - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 504 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "test alert 1", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "ffffffff-aaaa-1414-eeee-000000000000", - "kind": "teams", - "configKey": "ffffffff-aaaa-1414-eeee-000000000000-alert-integration", - "status": "healthy", - "enabled": false, - "config": { - "webhook": { - "method": "POST", - "headers": { - "property1": "string", - "property2": "string" }, - "exclude": { - "clusters": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ], - "appServices": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ] } }, - "slack": { - "channel": "#alerts", - "clusterChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceChannelMappings": { - "property1": "string", - "property2": "string" }, - "clusterWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookChannelMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } }, - "teams": { - "clusterWebhookMappings": { - "property1": "string", - "property2": "string" }, - "appServiceWebhookMappings": { - "property1": "string", - "property2": "string" }, - "customPayloads": { - "property1": { - "payload": { } }, - "property2": { - "payload": { } } } } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Deletes an existing alert integration. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | alertIntegrationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the alert integration. | - 403 - 404 - 429 - 500 - 504 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Tests a new alert integration for a project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | One of | kind required | string Enum: "webhook" "slack" "teams" Type of alert integration. | required | object or object or object | - Payload Content type application/json `{`- "kind": "slack", - "config": { - "webhook": { - "method": "POST", - "token": "QktxVUtFU1dKV1FlJBYXdnTVlRemFZdlRDZTg6eFh4dzU4JUYjqdUwwYkJoTjZSTmlzRWFIRHF0b1h4a08yazBpQjJ1bms1OW4yTUhdsfRib3IhVQ==", - "basicAuth": { - "user": "username80085", - "password": "yed69khj420_i" }, - "headers": { - "property1": "string", - "property2": "string" }, - "exclude": { - "clusters": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ], - "appServices": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "..." ] } }, - "slack": { - "channelName": "#alerts", - "channel": "#alerts", - "botToken": "string" }, } } - 400 - 403 - 404 - 422 - 429 - 500 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } App Services only allow trusted IP addresses to connect and use its REST APIs. Each App Service has a configurable Allowed IP list that can include up to 75 entries. Each entry can be a single IP address or an IP address space. Any IP address you add to this list can have a user-specified expiration time for temporary access, or be permanent. Capella automatically denies any connection attempts to and from an IP not in the allowed IP list. Deletes an Allowed CIDR by ID on the specified App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | allowedCidrId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the allowed CIDR. | - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Lists the Allowed CIDRs for the specified App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=id Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "cidr": "1.23.45.67/32", - "comment": "Allows access from my local developer machine", - "expiresAt": "2023-05-14T21:49:58.465Z", - "status": "active", - "type": "temporary", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Adds a trusted CIDR to the specified App Service's list of allowed CIDRs. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | cidr required | string The trusted CIDR to allow network connections from. The example represents a single IP address (i.e. a subnet mask of 32). | | comment | string A short description of the allowed CIDR. | | expiresAt | string An RFC3339 timestamp determining when the allowed CIDR should expire. If this field is empty/omitted then the allowed CIDR is permanent and will never automatically expire. | - Payload Content type application/json `{`- "cidr": "6.60.28.100/32", - "comment": "Allows access from my local developer machine", - "expiresAt": "2023-05-14T21:49:58.465Z" } - 201 - 400 - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Couchbase Capella only allows trusted IP addresses to connect to databases. Each database has a configurable Allowed IP list that can include up to 75 entries. Each entry can be a single IP address or an IP address space. Any IP address you add to this list can have a user-specified expiration time for temporary access, or be permanent. Capella automatically denies any connection attempts to and from an IP not in the allowed IP list. Adds a trusted CIDR to a cluster's list of allowed CIDRs. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. Note that updating this resource is not supported; you must delete and recreate allowed CIDRs instead. As a result, ETags are also not supported for this resource. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | cidr required | string The trusted CIDR to allow the database connections from. The example represents a single IP address (i.e. a subnet mask of 32). | | comment | string A short description of the allowed CIDR. | | expiresAt | string An RFC3339 timestamp determining when the allowed CIDR should expire. If this field is empty/omitted then the allowed CIDR is permanent and will never automatically expire. | - Payload Content type application/json `{`- "cidr": "6.60.28.100/32", - "comment": "Allows access from my local developer machine", - "expiresAt": "2023-05-14T21:49:58.465Z" } - 201 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all of the allowed CIDRs for a given cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=id Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "cidr": "1.23.45.67/32", - "comment": "Allows access from my local developer machine", - "expiresAt": "2023-05-14T21:49:58.465Z", - "status": "active", - "type": "temporary", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details for the specified allowed CIDR. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | allowedCidrId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the allowed CIDR. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "cidr": "1.23.45.67/32", - "comment": "Allows access from my local developer machine", - "expiresAt": "2023-05-14T21:49:58.465Z", - "status": "active", - "type": "temporary", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Deletes the existing allowed CIDR. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | allowedCidrId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the allowed CIDR. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Couchbase Capella Management API uses a Bearer token mechanism for authentication; each call to the Management API has to be authenticated by API key. Creates a new API key under an organization. Organization Owners can create Organization and Project scoped API keys. Project Owner and Project Creator can create project scoped keys. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | name required | string (APIKeyName) Name of the API key. | | description | string (APIKeyDescription) Default: "" Description for the API key. | | expiry | number (APIKeyExpiry) Default: 180 Expiry of the API key in number of days. If set to -1, the token will not expire. | | allowedCIDRs | Array of strings (APIKeyAllowedCIDRs) Default: ["0.0.0.0/0"] List of inbound CIDRs for the API key. The system making a request must come from one of the allowed CIDRs. | | organizationRoles required | Array of strings (APIKeyOrganizationRoles) Items Enum: "organizationOwner" "organizationMember" "projectCreator" | Array of objects (APIKeyResources) Default: [] Resources are the resource level permissions associated with the API key. To learn more about Organization Roles, see Organization Roles. | - Payload Content type application/json Example `{`- "name": "Organization Owner API Key", - "description": "Creates an API key with a Organization Owner role.", - "expiry": 720, - "allowedCIDRs": [ - "8.8.8.8/32" ], - "organizationRoles": [ - "organizationOwner" ], - "resources": [ ] } - 201 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL", - "token": "QktxVUtFU1dKV1FlMmxwbzJBYXdnTVlRemFZdlRDZTg6eFh4dzU4JUYjekJVYWZPY3lqdUwwYkJoTjZSTmlzRWFIRHF0b1h4a08yazBpQjJ1bms1OW4yTUhAenRib3IhVQ==" } Lists all the API keys under an organization. Organization Owners can list all the API keys inside the Organization. Organization Members and Project Creators can list all the Project scoped API key for which they are Project Owner. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL", - "name": "Production", - "description": "API key to manage production Capella Cluster.", - "expiry": 180, - "allowedCIDRs": [ - "0.0.0.0/0" ], - "organizationRoles": [ - "organizationMember" ], - "resources": [ ], - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details of the given API key under an organization. Organization Owners can get any API key inside the Organization. Organization Members and Project Creator can get any Project scoped API key for which they are Project Owner. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | ApiKeyId required | string Example: ffffffffaaaa1414eeee000000000000 The ID (Access key) of the API key. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL", - "name": "Organization Owner API Key", - "description": "Creates an API key with an Organization Owner role.", - "expiry": 720, - "allowedCIDRs": [ - "8.8.8.8/32" ], - "organizationRoles": [ - "organizationOwner" ], - "resources": [ ], - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Deletes the given API key under an organization. Organization Owners can delete any API key inside the Organization. Organization Members and Project Creator can delete any Project scoped API key for which they are Project Owner. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | ApiKeyId required | string Example: ffffffffaaaa1414eeee000000000000 The ID (Access key) of the API key. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Rotate the secret of a given API key under an organization. Organization Owners can rotate any API key inside the Organization. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | ApiKeyId required | string Example: ffffffffaaaa1414eeee000000000000 The ID (Access key) of the API key. | | secret | string A secret associated with API key. One has to follow the secret key policy, such as allowed characters and a length of 64 characters. If this field is left empty, a secret will be auto-generated. | - Payload Content type application/json `{`- "secret": "" } - 200 - 403 - 404 - 422 - 500 Content type application/json `{`- "secretKey": "", - "token": "" } App Endpoints represent instances of mobile applications on App Services. Each App Endpoint is linked to one bucket and synchronizes data to a set of linked collections. Users can configure App Endpoints, including setting the Access Control function, Import Filter and OpenID Connect (OIDC) authentication configuration. Lists all the App Endpoints under a specific App Service along with their associated configurations such as Access Control function, Import Filter or user defined xattr key. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | - 200 - 400 - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json Example `{`- "data": { - "bucket": "bucket1", - "name": "defaultAppEndpoint", - "userXattrKey": "key", - "disablePublicAllDocs": false, - "deltaSyncEnabled": true, - "oidc": [ - { - "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt", - "rolesClaim": "roles", - "providerId": "ffffffff-aaaa-1414-eeee-000000000000", - "isDefault": true }, - { - "register": true, - "clientId": "bar_client", - "userPrefix": "barOIDC", - "usernameClaim": "barAlt", - "providerId": "ffffffff-aaaa-1414-eeee-000000000000", - "isDefault": false } ], - "cors": { - "headers": [ - "Content-Type", - "X-Forwarded-Host" ], - "disabled": false, - "maxAge": 120 }, - "scopes": { - "_default": { - "collections": { - "_default": { - "accessControlFunction": "function(doc){channel(doc.channels);}", - "importFilter": "function(doc) { if (doc.type != 'mobile') { return false; } return true; }" } } } }, - "requireResync": { - "_default": { - "items": [ ] } }, }, - "cursor": { - "hrefs": { }, - "pages": { - "last": 1, - "page": 1, - "perPage": 5, - "totalItems": 5 } } } Creates an App Endpoint within an App Service with specific configurations such as collection level Access Control function and Import Filter. If the scopes property is not included in the request body, the default scope and collection will be used. The first OpenID Connect provider given will be set as the default provider for the App Endpoint. To change the default, please use the Change App Endpoint OIDC Default Provider endpoint. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | bucket required | string The Capella Cluster backing bucket for the App Endpoint. | Array of objects (OIDCProvider) OpenID Connect provider configuration. | | object (CORSConfig) | | object (ScopesConfig) Default: {"_default":{"collections":{"_default":{"accessControlFunction":"function(doc){channel(doc.channels);}","importFilter":" function(doc) { if (doc.type != 'mobile') { return false; } return true; }"}}}} | | | name required | string App Endpoint name. Must be less than 228 characters. It can only contain lowercase letters, numbers, or the following characters | | deltaSyncEnabled | boolean Default: false Enable/disable delta sync | | userXattrKey | string The key of the user-extended attributes (xattr) that will be accessible from the Access control and validation function. If left empty, the feature will be disabled. | | disablePublicAllDocs | boolean Default: false Disable the | - Payload Content type application/json Example `{`- "bucket": "bucket1", - "name": "defaultAppEndpoint", - "userXattrKey": "key", - "disablePublicAllDocs": false, - "deltaSyncEnabled": true, - "scopes": { - "_default": { - "collections": { - "_default": { - "accessControlFunction": "function(doc){channel(doc.channels);}", - "importFilter": "function(doc) { if (doc.type != 'mobile') { return false; } return true; }" } } } }, - "cors": { - "headers": [ - "Content-Type" ], - "disabled": true }, - "oidc": [ - { - "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt", - "rolesClaim": "roles", - "scope": [ - "openid", - "profile", - "email" ] }, - { - "register": true, - "clientId": "bar_client", - "userPrefix": "barOIDC", - "usernameClaim": "barAlt" } ] } - 400 - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Fetches the details of the given App Endpoint, including operational and resync states and various configurations such as Access Control function and Import Filter. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 200 - 400 - 403 - 404 - 412 - 422 - 429 - 500 - 503 Content type application/json Example `{`- "bucket": "bucket1", - "name": "defaultAppEndpoint", - "userXattrKey": "key", - "disablePublicAllDocs": false, - "deltaSyncEnabled": true, - "oidc": [ - { - "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt", - "rolesClaim": "roles", - "providerId": "ffffffff-aaaa-1414-eeee-000000000000", - "isDefault": true } ], - "cors": { - "headers": [ - "Content-Type" ], - "maxAge": 600, - "disabled": false }, - "scopes": { - "_default": { - "collections": { - "_default": { - "accessControlFunction": "function(doc){channel(doc.channels);}", - "importFilter": "function(doc) { if (doc.type != 'mobile') { return false; } return true; }" } } } }, - "requireResync": { - "_default": { - "items": [ ] } }, } Replaces a specified App Endpoint’s configurations such as Access Control function, Import Filter, Delta Sync, or user defined xattr key. The first OpenID Connect provider given will be set as the default provider for the App Endpoint. To change the default, please use the Change App Endpoint OIDC Default Provider endpoint. All fields are required, the App Endpoint and bucket names cannot be changed. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | name required | string App Endpoint name. Cannot be changed. | | bucket required | string The Capella Cluster backing bucket for the App Endpoint. Cannot be changed. | required | object (ScopesConfig) Default: {"_default":{"collections":{"_default":{"accessControlFunction":"function(doc){channel(doc.channels);}","importFilter":" function(doc) { if (doc.type != 'mobile') { return false; } return true; }"}}}} | | deltaSyncEnabled required | boolean Enable or disable delta sync | | userXattrKey required | string Key of user xattr that will be accessible from the Access control and validation function. If empty, the feature will be disabled. | | disablePublicAllDocs required | boolean Default: false Disable the | required | Array of objects (OIDCProvider) OpenID Connect provider configuration. | required | object (CORSConfig) | - Payload Content type application/json `{`- "name": "appEndpoint1", - "bucket": "store_locations", - "scopes": { - "scope_1": { - "collections": { - "collection_1": { - "accessControlFunction": "function(doc){channel(doc.channels);}", - "importFilter": "function(doc) { if (doc.type != 'mobile') { return false; } return true; }" }, - "collection_2": { - "accessControlFunction": "function(doc){channel(doc.channels);}", - "importFilter": "function(doc) { if (doc.type != 'mobile') { return false; } return true; }" } } } }, - "deltaSyncEnabled": true, - "userXattrKey": "syncFnXattr", - "disablePublicAllDocs": false, - "oidc": [ - { - "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt", - "scope": [ - "openid", - "foo" ] } ], - "cors": { - "headers": [ - "Content-Type" ], - "maxAge": 600, - "disabled": false } } - 400 - 403 - 404 - 409 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing App Endpoint given its name. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 400 - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Lists all the collections under a specific App Endpoint along with their associated configurations such as Access Control function, Import Filter or user defined xattr key. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json Example `{`- "scopes": { - "_default": { - "collections": { - "_default": { - "accessControlFunction": "function(doc){channel(doc.channels);}", - "importFilter": "function(doc) { if (doc.type != 'mobile') { return false; } return true; }" } } } } } Brings an App Endpoint online to close and reopen the connection to the backing Cluster bucket, re-establish access from the Public REST API and accept all incoming Admin API requests. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 403 - 404 - 409 - 412 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Take the database offline to run resync or to make changes without disrupting current App Endpoint operations. Clients currently connected to the App Endpoint will not be able to sync data with the Cluster while the App Endpoint is paused. This will not take the backing Cluster bucket offline. Pausing an App Endpoint that is in the progress of coming online will pause the App Endpoint after it comes online. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 403 - 404 - 409 - 412 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Fetch the App Endpoint Cross-Origin Resource Sharing (CORS) Configuration. CORS is disabled by default. For more information See Cross-Origin Resource Sharing (CORS) on App Endpoints. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 200 - 403 - 404 - 429 - 500 - 503 - 504 Content type application/json `{`- "headers": [ - "Content-Type" ], - "maxAge": 600, - "disabled": false } Upsert the App Endpoint Cross-Origin Resource Sharing (CORS) Configuration. CORS is disabled by default. For more information See Cross-Origin Resource Sharing (CORS) on App Endpoints. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | origin required | Array of strings List of allowed origins, use ['*'] to allow access from everywhere. This is required when CORS is enabled (i.e. disabled is false). | | loginOrigin | Array of strings List of allowed login origins | | headers | Array of strings List of allowed headers | | maxAge | integer Default: 5 Specifies the duration (in seconds) for which the results of a preflight request can be cached. | | disabled | boolean Disable CORS headers in all App Endpoint responses. When true, no other CORS configuration properties should be provided. | - Payload Content type application/json `{`- "headers": [ - "Content-Type" ], - "maxAge": 600, - "disabled": false } - 400 - 403 - 404 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the Access Control and Validation function for the given keyspace. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointKeyspace required | string Example: endpoint1.scope1.collection1 A specific collection denoted by the App Endpoint name, the scope name and collection name separated by a period, for example "endpoint1.scope1.collection1". If only an App Endpoint name is provided this will be interpreted as "endpoint1._default._default". If only an App Endpoint name and collection name are provided these will interpreted as a named collection within the default scope, for example "endpoint1.collection1" will be interpreted as "endpoint1._default.collection1". | - 400 - 403 - 404 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Used to upsert a custom Access Control and Validation function for the given keyspace. This is a Javascript function specified at a keyspace, where a user’s read/write access is defined for documents in that particular keyspace. Every document mutation is processed by this function. If an Access Control function is not explicitly defined, a default is applied. Read more. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointKeyspace required | string Example: endpoint1.scope1.collection1 A specific collection denoted by the App Endpoint name, the scope name and collection name separated by a period, for example "endpoint1.scope1.collection1". If only an App Endpoint name is provided this will be interpreted as "endpoint1._default._default". If only an App Endpoint name and collection name are provided these will interpreted as a named collection within the default scope, for example "endpoint1.collection1" will be interpreted as "endpoint1._default.collection1". | string (AccessFunction) All mutations in this collection are processed by this Javascript function - 400 - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes the Access Control and Validation function for the given keyspace. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointKeyspace required | string Example: endpoint1.scope1.collection1 A specific collection denoted by the App Endpoint name, the scope name and collection name separated by a period, for example "endpoint1.scope1.collection1". If only an App Endpoint name is provided this will be interpreted as "endpoint1._default._default". If only an App Endpoint name and collection name are provided these will interpreted as a named collection within the default scope, for example "endpoint1.collection1" will be interpreted as "endpoint1._default.collection1". | - 400 - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the Import Filter for the given keyspace. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointKeyspace required | string Example: endpoint1.scope1.collection1 A specific collection denoted by the App Endpoint name, the scope name and collection name separated by a period, for example "endpoint1.scope1.collection1". If only an App Endpoint name is provided this will be interpreted as "endpoint1._default._default". If only an App Endpoint name and collection name are provided these will interpreted as a named collection within the default scope, for example "endpoint1.collection1" will be interpreted as "endpoint1._default.collection1". | - 403 - 404 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Upserts the Import Filter for the given keyspace. By default, there is no import filter and all documents are imported. Import Filters identify the subset of documents eligible to be replicated by App services based on user-defined requirements. This subset is applied to all future mutations. Once the document has been imported and processed by the App Endpoint, changing the Import Filter will not remove it, even if the updated import filters would prevent newer mutations or iterations of the document from getting imported. Read more. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointKeyspace required | string Example: endpoint1.scope1.collection1 A specific collection denoted by the App Endpoint name, the scope name and collection name separated by a period, for example "endpoint1.scope1.collection1". If only an App Endpoint name is provided this will be interpreted as "endpoint1._default._default". If only an App Endpoint name and collection name are provided these will interpreted as a named collection within the default scope, for example "endpoint1.collection1" will be interpreted as "endpoint1._default.collection1". | string (ImportFilter) The Javascript function used to specify the documents in this collection that are to be imported by the App Endpoint. By default, all documents in corresponding collection are imported. - 400 - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes the Import Filter for the given keyspace. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointKeyspace required | string Example: endpoint1.scope1.collection1 A specific collection denoted by the App Endpoint name, the scope name and collection name separated by a period, for example "endpoint1.scope1.collection1". If only an App Endpoint name is provided this will be interpreted as "endpoint1._default._default". If only an App Endpoint name and collection name are provided these will interpreted as a named collection within the default scope, for example "endpoint1.collection1" will be interpreted as "endpoint1._default.collection1". | - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Creates an OIDC provider for the specified App Endpoint. The first OIDC provider will automatically be set as the default OIDC provider. All client requests will use the default OIDC provider, unless the OIDC provider for the request is explicitly specified on authentication. See more here. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | issuer required | string The URL for the OpenID Connect issuer. | | register | boolean Indicates whether to register a new App Service user account when a user logs in using OpenID Connect. | | clientId required | string The OpenID Connect provider client ID. | | userPrefix | string Username prefix for all users created for this provider | | discoveryUrl | string The URL for the non-standard discovery endpoint. | | usernameClaim | string Allows a different OpenID Connect field to be specified instead of the Subject (sub). | | rolesClaim | string If set, the value(s) of the given OpenID Connect authentication token claim will be added to the user's roles. The value of this claim in the OIDC token must be either a string or an array of strings, any other type will result in an error. | | scope | Array of strings Default: ["openid","email"] The scope sent for the OpenID Connect request. | - Payload Content type application/json `{`- "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt" } - 201 - 400 - 403 - 404 - 409 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "providerId": "ffffffff-aaaa-1414-eeee-000000000000" } List OpenID Connect (OIDC) Providers configured on an App Endpoint. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "data": [ - { - "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt", - "rolesClaim": "roles", - "providerId": "ffffffff-aaaa-1414-eeee-000000000000", - "isDefault": true }, - { - "register": true, - "clientId": "bar_client", - "userPrefix": "barOIDC", - "usernameClaim": "barAlt", - "providerId": "ffffffff-aaaa-1414-eeee-000000000000", - "isDefault": false } ] } Fetches an OIDC provider by ID for the specified App Endpoint. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | OIDCProviderId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the OpenID Connect Provider. | - 200 - 403 - 404 - 429 - 500 - 503 - 504 Content type application/json `{`- "issuer": "foo", - "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt", - "isDefault": true } Updates an OIDC provider for the specified App Endpoint. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | OIDCProviderId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the OpenID Connect Provider. | | issuer required | string The URL for the OpenID Connect issuer. | | register | boolean Indicates whether to register a new App Service user account when a user logs in using OpenID Connect. | | clientId required | string The OpenID Connect provider client ID. | | userPrefix | string Username prefix for all users created for this provider | | discoveryUrl | string The URL for the non-standard discovery endpoint. | | usernameClaim | string Allows a different OpenID Connect field to be specified instead of the Subject (sub). | | rolesClaim | string If set, the value(s) of the given OpenID Connect authentication token claim will be added to the user's roles. The value of this claim in the OIDC token must be either a string or an array of strings, any other type will result in an error. | | scope | Array of strings Default: ["openid","email"] The scope sent for the OpenID Connect request. | - Payload Content type application/json `{`- "register": true, - "clientId": "foo_client", - "userPrefix": "fooOIDC", - "usernameClaim": "fooAlt" } - 400 - 403 - 404 - 409 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an OIDC provider for the specified App Endpoint. Deleting the default provider will error unless it is the only provider. Before deleting the default provider, you must set a new provider as default or have no other providers. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | OIDCProviderId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the OpenID Connect Provider. | - 400 - 403 - 404 - 409 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Updates the default OIDC provider for the specified App Endpoint. All client requests will use the default OIDC provider, unless the OIDC provider for the request is explicitly specified. See more here. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | providerId required | string | - Payload Content type application/json `{`- "providerId": "ffffffff-aaaa-1414-eeee-000000000000" } - 400 - 403 - 404 - 409 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Fetches the Resync status of the given App Endpoint. If no resync operation was triggered, the response will say the status is completed with 0 values for other properties. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 200 - 403 - 404 - 412 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "state": "running", - "startTime": "2023-10-12T07:20:50.52Z", - "lastError": "string", - "docsChanged": 100, - "docsProcessed": 500, - "collections_processing": { - "scope1": [ - "collection_1", - "collection_2" ] } } Initialises the Resync operation for the given collections. By default, all collections that require resync will be resynced unless they are specified in the scopes property, in which case only the specified collections that require resync will be resynced. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | object | - Payload Content type application/json `{`- "scopes": { - "scope1": [ - "collection1", - "collection2" ] } } - 400 - 403 - 404 - 412 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Stops the Resync operation. When stopping resync, it will be stopped for all collections being processed. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 400 - 403 - 404 - 412 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } App Services is a fully managed application backend designed to provide data synchronization between mobile or IoT applications running Couchbase Lite and your Couchbase Capella database. Creates a new App Service. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string <= 256 characters Name of the cluster (up to 256 characters). | |||||||||||| | description | string A short description of the App Service. | |||||||||||| | nodes | integer Number of nodes configured for the App Service. Number of nodes configured for the App Service. The number of nodes can range from 2 to 12. | |||||||||||| object (AppServiceCompute) The CPU and RAM configuration of the App Service. The supported combinations are: | ||||||||||||| | version | string The version of the App Service server. If left empty, it will be defaulted to the latest available version. | - Payload Content type application/json `{`- "name": "MyAppSyncService", - "description": "My app sync service.", - "nodes": 2, - "compute": { - "cpu": 2, - "ram": 4 }, - "version": "3.0" } - 201 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the clusters under the organization. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader Returned set of clusters is reduced to what the caller has access to view. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | projectId | string Example: projectId=ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "My App Service", - "description": "Description of the App Service.", - "cloudProvider": "aws", - "nodes": 2, - "compute": { - "cpu": 2, - "ram": 4 }, - "clusterId": "ffffffff-aaaa-1414-eeee-000000000000", - "currentState": "deploying", - "version": "3.141.5", - "plan": "basic", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details of the given App Service. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "My App Service", - "description": "Description of the App Service.", - "cloudProvider": "aws", - "nodes": 2, - "compute": { - "cpu": 2, - "ram": 4 }, - "clusterId": "ffffffff-aaaa-1414-eeee-000000000000", - "currentState": "deploying", - "version": "3.141.5", - "plan": "basic", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Updates an existing App Service. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | nodes required | integer Number of nodes configured for the App Service. The number of nodes can range from 2 to 12. | |||||||||||| required | object (AppServiceCompute) The CPU and RAM configuration of the App Service. The supported combinations are: | - Payload Content type application/json `{`- "nodes": 2, - "compute": { - "cpu": 2, - "ram": 4 } } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Deletes an existing App Service. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 412 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Turn App Service on. App Services can only be turned on when the linked cluster is turned on and healthy. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 409 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Turn App Service off. Turn off an App Service to temporarily deactivate it and reduce its consumption of compute resources. The App Service itself and its related infrastructure will be removed once turned off. Any private endpoints configured on App Services will remain and will be available when App Service is turned back on. You will continue to incur costs for any private endpoints configured on App Services. If you don’t wish to incur these costs, you must explicitly disable private endpoint service and reinstate private endpoints when App Service is turned back on again. Free tier App Service can only be turned off when the linked free tier cluster is turned off. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Creates an Admin User on the specified App Service. The user can either be granted access to all App Endpoints or to specific App Endpoints by listing them in the `endpoints` field. Currently, the user will be granted admin access to all App Endpoints in a bucket (that is currently associated with the App Endpoint(s) specified in the endpoints field), including ones that are created in future. An option to grant access to specific App Endpoints in a bucket will be available in the future. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | name required | string The name of the user. | | password required | string The password of the user. | | enableBucketLevelAccess | boolean Default: true When set to true, the user will automatically be granted admin access to all App Endpoints in a bucket (that is currently associated with the App Endpoint(s) specified in the endpoints field), including ones that are created in future. The flag defaults to true. Currently, the only supported value is true, which means that the user will have admin access to all App Endpoints in this bucket. In the future, there will be the option to set this to false. | required | UpdateAppServiceAdminUserAllEndpointsRequest (object) or UpdateAppServiceAdminUserEndpointList (object) | - Payload Content type application/json Example `{`- "name": "user1", - "password": "password", - "enableBucketLevelAccess": false, - "access": { - "endpoints": [ - "endpoint1", - "endpoint2" ] } } - 201 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "eeeeeeee-aaaa-1414-eeee-999999999999" } List the admin users for the specified App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 - 503 Content type application/json `{`- "data": [ - { - "id": "eeeeeeee-aaaa-1414-eeee-999999999999", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "dddddddd-cccc-1414-eeee-77777777777", - "clusterId": "gggggggg-zzzz-1414-eeee-55555555555", - "name": "admin", - "endpoints": [ - "appEndpoint1", - "appEndpoint2" ], - "accessAllEndpoints": "false,", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2024-09-01T12:34:56Z", - "modifiedBy": "", - "modifiedAt": "2024-09-01T12:34:56Z", - "version": 1 } }, - { - "id": "eeeeeeee-gggg-1456-tttt-999999999999", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "dddddddd-cccc-1414-eeee-77777777777", - "clusterId": "gggggggg-zzzz-1414-eeee-55555555555", - "name": "admin", - "endpoints": [ - "appEndpoint1", - "appEndpoint2" ], - "accessAllEndpoints": false, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2024-09-01T12:34:56Z", - "modifiedBy": "", - "modifiedAt": "2024-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Updates the Admin User's access to App Endpoints on the specified App Service. The update operation can either grant access to all App Endpoints or to specific App Endpoints by listing them in the `endpoints` field. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the database credential. | One of | endpoints required | Array of strings The list of App Endpoints that the user has access to. | - Payload Content type application/json Example `{`- "endpoints": [ - "endpoint1", - "endpoint2" ] } - 400 - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes the Admin User. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the database credential. | - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Fetches the Admin User. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the database credential. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "ffffffff-aaaa-1414-eeee-000000000000", - "clusterId": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "user1", - "endpoints": [ - "appEndpoint1", - "appEndpoint2" ], - "accessAllEndpoints": false, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } The public certificate is a trusted Certificate Authority (CA) signed certificate. You can copy or download the endpoint’s SSL public certificate to bundle into your mobile application. Pinning your certificate to your App is not recommended as it can increase maintenance overhead and downtime risks. For more information, see here. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "certificate": "-----BEGIN CERTIFICATE-----\nMIIDFTCCAf2gAwIBAgI[...]CSYBWaK0ofivA==\n-----END CERTIFICATE-----\n" } Lists the Admin Users that have access to the specified App Endpoint. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 - 503 Content type application/json `{`- "data": [ - { - "id": "eeeeeeee-aaaa-1414-eeee-999999999999", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "dddddddd-cccc-1414-eeee-77777777777", - "clusterId": "gggggggg-zzzz-1414-eeee-55555555555", - "name": "admin", - "endpoints": [ - "appEndpoint1", - "appEndpoint2" ], - "accessAllEndpoints": "false,", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2024-09-01T12:34:56Z", - "modifiedBy": "", - "modifiedAt": "2024-09-01T12:34:56Z", - "version": 1 } }, - { - "id": "eeeeeeee-gggg-1456-tttt-999999999999", - "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "projectId": "dddddddd-cccc-1414-eeee-77777777777", - "clusterId": "gggggggg-zzzz-1414-eeee-55555555555", - "name": "admin", - "endpoints": [ - "appEndpoint1", - "appEndpoint2" ], - "accessAllEndpoints": false, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2024-09-01T12:34:56Z", - "modifiedBy": "", - "modifiedAt": "2024-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Users can configure audit log support on Capella App Services and can export audit logs from cloud blob storage to an AWS S3 bucket. Users can retrieve audit logs from a pre-signed download URL. Logs are retained for 30 days. Enable or disable Audit Logging for an App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | auditEnabled required | boolean Determines whether audit logging is enabled or not on the App Service. | - Payload Content type application/json `{`- "auditEnabled": true } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Retrieves the audit logging state for a specific App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "auditEnabled": true } Retrieves all audit log event ids, their descriptions and enabled status for an App Endpoint. The list of filterable event IDs can be specified while configuring audit logging for the App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 200 - 403 - 404 - 409 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "events": { - "53290": { - "description": "Admin API user successfully authenticated", - "enabled": true, - "filterable": true, - "name": "Admin API user authenticated" }, - "53292": { - "description": "Admin API user failed to authorize", - "enabled": true, - "filterable": true, - "name": "Admin API user authorization failed" } } } Updates the audit logging configuration for a specific App Endpoint. Operations performed by disabled users and roles are excluded from audit logs. See a list of event IDs by calling /auditLogEvents, add event IDs to the enabledEventIds field to enable audit logging for those events. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | auditEnabled | boolean Determines whether audit logging is enabled | Array of objects | | Array of objects (DisabledUserRoles) | | Array of objects (DisabledUserRoles) | - Payload Content type application/json `{`- "auditEnabled": true, - "enabledEventIds": [ - { - "id": 0 } ], - "disabledUsers": [ - { - "domain": "string", - "name": "string" } ], - "disabledRoles": [ - { - "domain": "string", - "name": "string" } ] } - 400 - 403 - 404 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the audit logging configuration for a specific App Endpoint. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 200 - 400 - 403 - 404 - 412 - 422 - 429 - 500 - 503 Content type application/json `{`- "auditEnabled": true, - "enabledEventIds": [ - { - "id": 0 } ], - "disabledUsers": [ - { - "domain": "string", - "name": "string" } ], - "disabledRoles": [ - { - "domain": "string", - "name": "string" } ] } Sets up audit log streaming for a specific App Service with filters. If streamingEnabled is true log streaming will begin. Ensure you have provided collector credentials if you wish to begin streaming; log streaming cannot be enabled without credentials. Refer to schema below to see required fields for your log collection provider. Providers include Datadog, Sumo Logic, Grafana Loki, Elasticsearch (versions 8 and newer only) and generic HTTP. To start or resume streaming, set streamingEnabled to true while providing the rest of the log collector config. To disable log streaming and remove the log streaming config including credentials, set streamingEnabled to false and leave the rest of the payload empty. To pause log streaming, set streamingEnabled to false while providing the rest of the log collector config. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | streamingEnabled required | boolean Determines whether audit log streaming is enabled or not. To start or resume streaming, set this to true. To disable or pause log streaming, set this to false. | | disabledAppEndpoints | Array of strings List of App Endpoints to be excluded from audit log streaming. | | outputType | string Enum: "datadog" "generic_http" "sumologic" "loki" "elastic" "splunk" "dynatrace" The type of output for the audit log streaming. Required when starting, resuming or pausing log streaming. | datadog (object) or sumologic (object) or generic_http (object) or elastic (object) or loki (object) or splunk (object) or dynatrace (object) Secrets for audit log streaming configuration. Required when starting, resuming or pausing log streaming. | - Payload Content type application/json `{`- "streamingEnabled": true, - "disabledAppEndpoints": [ - "string" ], - "outputType": "datadog", } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } To start or resume streaming, set streamingEnabled to true. To pause log streaming, set streamingEnabled to false. If log streaming is paused we will retain the collector credentials. To clear these use the PUT request. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | op required | string Value: "update" Type of operation. | | path required | string Path of resource that needs to be updated. | | value required | boolean Determines whether audit log streaming is enabled or not. | - Payload Content type application/json `{`- "op": "update", - "path": "/streamingEnabled", - "value": true } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Retrieves the current state of audit log streaming for a specific App Service, as well as the output type and enabled App endpoints. The audit log streaming states are: - disabled - disabling - enabled - enabling - paused - pausing - errored In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "streamingEnabled": true, - "logStreamingState": "enabling", - "disabledAppEndpoints": [ - "string" ], - "outputType": "datadog" } Initiates an audit log export for a specific App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | start required | string Specifies the audit log's start date and time. | | end required | string Specifies the audit log's end date and time. | - Payload Content type application/json `{`- "start": "2022-09-04T00:56:07.000Z", - "end": "2022-09-05T04:56:07.000Z" } - 202 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "exportId": "ffffffff-aaaa-1414-eeee-000000000000" } Retrieves a list of all audit log export jobs for an App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "920e7b93-28c7-421b-993b-9fffecfd3598", - "download_expires": "2024-08-08T13:43:48.420487299Z", - "status": "Ready", - "appServiceId": "01071798-23e5-4ec6-b814-13bebef70572", - "tenantId": "333d2ad2-1408-405e-9995-68338d20ab5c", - "clusterId": "71dd1cb2-34ac-43ae-a503-b2a9202f02d4", - "audit": { - "createdBy": "d4fa667c-206a-4916-9a24-3a03c2ec5771", - "createdAt": "2024-08-05T13:43:45.998790923Z", - "modifiedBy": "d4fa667c-206a-4916-9a24-3a03c2ec5771", - "modifiedAt": "2024-08-05T13:43:48.420521466Z", - "version": 3 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Retrieves details of a specific audit log export job for a given App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | auditLogExportId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The export ID of the audit log export job. | - 200 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "id": "920e7b93-28c7-421b-993b-9fffecfd3598", - "download_expires": "2024-08-08T13:43:48.420487299Z", - "status": "Ready", - "appServiceId": "01071798-23e5-4ec6-b814-13bebef70572", - "tenantId": "333d2ad2-1408-405e-9995-68338d20ab5c", - "clusterId": "71dd1cb2-34ac-43ae-a503-b2a9202f02d4", - "audit": { - "createdBy": "d4fa667c-206a-4916-9a24-3a03c2ec5771", - "createdAt": "2024-08-05T13:43:45.998790923Z", - "modifiedBy": "d4fa667c-206a-4916-9a24-3a03c2ec5771", - "modifiedAt": "2024-08-05T13:43:48.420521466Z", - "version": 3 } } Log Streaming provides a mechanism for real-time streaming of App Services operational logs to third-party observability platforms or self-hosted HTTP logs collectors. This is a crucial tool to gain instant insights into application behavior, enabling rapid issue detection and resolution to enhance application reliability, performance, and security. Re-enables Log Streaming for an App Service that was previously paused. Log Streaming needs to be previously configured for the App Service before it can be paused or resumed. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Temporarily disables Log Streaming for an App Service. Log Streaming needs to be previously configured for the App Service before it can be paused or resumed. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Sets up log streaming for a specific App Service. Ensure you have provided collector credentials if you wish to begin streaming; log streaming cannot be enabled without credentials. Refer to schema below to see required fields for your log collection provider. Supported providers include Datadog, Sumo Logic, Grafana Loki, Elasticsearch (versions 8 and newer only), generic HTTP, Splunk, and Dynatrace. Log streaming can only be configured while the config state is either enabled, paused, or disabled. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | outputType required | string Enum: "datadog" "generic_http" "sumologic" "loki" "elastic" "splunk" "dynatrace" The log collector to have logs streamed to. | required | datadog (object) or sumologic (object) or generic_http (object) or elastic (object) or loki (object) or splunk (object) or dynatrace (object) The credentials to be used to authenticate with the log collector. | - Payload Content type application/json `{`- "outputType": "datadog", } - 400 - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the configured output type, current config state, current streaming state of log streaming for a specific App Service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 429 - 500 - 503 Content type application/json `{`- "outputType": "datadog", - "configState": "enabled", - "streamingState": "healthy" } Disables log streaming for a specific App Service. This will remove the log streaming configuration for the App Service. To enable log streaming again, you will need to provide the configuration details once more using the "Configure App Service Log Streaming" endpoint. Log streaming can only be disabled while the config state is either enabled or paused. It may take a few minutes for the log streaming to be fully disabled. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 422 - 429 - 500 - 503 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Updates the log streaming config for an app endpoint, which configures log levels and keys used to filter log messages. This app endpoint log streaming config can only be updated while the log streaming config state is either "paused" or "enabled". In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | | logLevel required | string Enum: "info" "warn" "error" Controls the verbosity of logs based on the specified log level | | logKeys required | Array of strings Items Enum: "Admin" "Access" "Auth" "Cache" "Changes" "CRUD" "HTTP" "HTTP+" "Import" "Javascript" "Query" "Sync" "SyncMsg" Filter logs to specific log keys | - Payload Content type application/json `{`- "logLevel": "warn", - "logKeys": [ - "HTTP", - "Import", - "Sync" ] } - 400 - 403 - 404 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves log streaming config for an app endpoint, which shows log levels and keys used to filter log messages. This app endpoint log streaming config can only be retrieved while the log streaming config state is either "paused" or "enabled". In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | appEndpointName required | string Example: endpoint1 The name of the App Endpoint. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 - 503 - 504 Content type application/json `{`- "logLevel": "warn", - "logKeys": [ - "HTTP", - "Import", - "Sync" ] } App Services Private Endpoints enables you to configure a secure private network connection between the Virtual Private Cloud (VPC) hosting your applications and the VPC of your Couchbase Capella App Services. Note: This is currently only available for AWS. Enable Private Endpoints for an App Service. Supporting infrastructure is deployed and it may take a few minutes for Private Endpoints to be available. Once enabled, you can create Private Endpoints in your network. You can do this using the cloud provider's CLI. To obtain the command use the /privateEndpointService/privateEndpointCommand endpoint. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } The App Service Private Endpoint service allows you to access your Capella cluster from your private network, using Private Endpoints. This endpoint determines if the endpoint service is enabled or disabled for your App Service. It returns both a state and targetState. The state indicates the current status of the service, while the targetState indicates the desired end state of the service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "state": "enabled", - "targetState": "enabled" } Disable Private Endpoints for an App Service. Supporting infrastructure is removed and it may take a few minutes before the Private Endpoint service is disabled. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Retrieves the Private Endpoints command in order to create Private Endpoints and initiate the connection between the specified VPC and the App Service. An example for AWS: ``` aws ec2 create-vpc-endpoint \ --vpc-id vpc-1234 \ --region us-east-1 \ --service-name com.amazonaws.vpce.us-east-1.vpce-svc-1234 \ --vpc-endpoint-type Interface \ --subnet-ids subnet-1234 ``` In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | One of | vpcID required | string [ 12 .. 21 ] characters The ID of your virtual network | | subnetIDs required | Array of strings | - Payload Content type application/json `{`- "vpcID": "vpc-1234", - "subnetIDs": [ - "subnet-1234" ] } - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "command": "aws ec2 create-vpc-endpoint --vpc-id vpc-1234 --region us-east-1 --service-name com.amazonaws.vpce.us-east-1.vpce-svc-1234 --vpc-endpoint-type Interface --subnet-ids subnet-1234" } Returns a list of the Private Endpoints associated with your Capella App Service with its current state. Each of these Private Endpoints is either attempting to connect or is connected to the App Service network. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Creator - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "privateEndpointDNS": "abcdef123456.pl.cloud.couchbase.com", - "endpoints": [ - { - "id": "vpce-000000000000aaaaa", - "serviceName": "com.amazonaws.vpce.us-east-1.vpce-svc-000000000000aaaaa", - "status": "linked" } ] } Accepts a Private Endpoint connection request for an App Service. This completes the connection and means the Private Endpoint is now associated with the App Service and available for use. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | endpointId required | string Example: vpce-1234 The VPC endpoint ID. | - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } If the Private Endpoint is already connected and accepted this will unassociate the Private Endpoint from the App Service. If the Private Endpoint is not already connected this will reject the Private Endpoint connection request. Both cases will remove the Private Endpoint from the App Service and it will no longer be available for use and any connection will be terminated. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | endpointId required | string Example: vpce-1234 The VPC endpoint ID. | - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Users can configure audit log support on Capella database and can export audit logs from cloud blob storage to an AWS S3 bucket. Users can retrieve audit logs from a pre-signed download URL. Logs are retained for 30 days. Updates the audit log configuration for the cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | auditEnabled required | boolean Determines whether audit logging is enabled or not on the cluster. | required | Array of objects (AuditSettingsDisabledUsers) List of users whose filterable events will not be logged. | | enabledEventIDs required | Array of integers [ items ] List of enabled filterable audit events for the cluster. | - Payload Content type application/json `{`- "auditEnabled": true, - "disabledUsers": [ - { - "domain": "local", - "name": "@eventing" } ], - "enabledEventIDs": [ - 8243, - 8255 ] } - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Fetches information on whether audit logging is enabled, and which event IDs are enabled. To learn more about cluster audit logs, please refer to audit management. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "auditEnabled": true, - "disabledUsers": [ - { - "domain": "local", - "name": "dfelton" } ], - "enabledEventIDs": [ - [ - 8243, - 8255 ] ] } Retrieves a list of audit event IDs. The list of filterable event IDs can be specified while configuring audit log for cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "events": [ - { - "description": "Document was mutated via the REST API", - "id": 8243, - "module": "ns_server", - "name": "mutate document" } ] } Creates a new audit log export job. Audit Logs for the last 30 days can be requested, otherwise they are purged. A pre-signed URL to a s3 bucket location is returned, which is used to download these audit logs. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | start required | string Specifies the audit log's start date and time. | | end required | string Specifies the audit log's end date and time. | - Payload Content type application/json `{`- "start": "2022-09-04T00:56:07.000Z", - "end": "2022-09-05T04:56:07.000Z" } - 202 - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "exportId": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the audit log export jobs and shows the status for each job. It will show the pre-signed URL if the export was successful, a failure error if it was unsuccessful or a message saying no audit logs available if there were no audit logs found. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "cursor": { - "pages": { - "last": 1, - "next": 1, - "page": 1, - "perPage": 10, - "previous": 1, - "totalItems": 2 }, - "hrefs": { - "previous": "" } }, - "data": [ - { - "createdAt": "2023-05-16T06:43:46.264296574Z", - "exportId": "d9db8594-4d0d-43b5-8dfe-1a6679d5b7d3", - "start": "2023-05-15T04:56:07Z", - "end": "2023-05-16T06:43:46.255479842Z", - "status": "Failed" }, - { - "createdAt": "2023-05-16T06:39:33.745602046Z", - "exportId": "624752e7-4600-4007-9a29-15d1323fbd0c", - "start": "2023-05-15T04:56:07Z", - "end": "2023-05-16T06:39:33.732661698Z", - "status": "Queued" } ] } Fetches the status of a single audit log export job. It will show the pre-signed URL if the export was successful, a failure error if it was unsuccessful or a message saying no audit logs available if there were no audit logs found during the given timeframe. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | auditLogExportId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The export ID of the audit log export job. | - 200 - 403 - 404 - 429 - 500 Content type application/json Example `{`- "createdAt": "2023-05-16T04:00:08.870076042Z", - "auditLogExportId": "40b9318a-cc93-458d-bc3e-7d4ffa778386", - "start": "2023-05-15T04:56:07Z", - "end": "2023-05-16T04:56:07Z", - "status": "In Progress" } Couchbase supports a robust scheduled backup and retention time policy as part of an overall disaster recovery plan for production data. Couchbase Capella supports scheduled and on-demand backups of bucket data. A backup can be restored to the same database where it was created or another database in the same organization. On setting up a backup schedule, the bucket automatically backs up the bucket based on the chosen schedule. Creates a scheduled backup for a bucket. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | type | string Value: "weekly" | object Schedule a full backup once a week with regular incrementals. | - Payload Content type application/json `{`- "type": "weekly", - "weeklySchedule": { - "dayOfWeek": "sunday", - "startAt": 10, - "incrementalEvery": 4, - "retentionTime": "90days", - "costOptimizedRetention": false } } - 400 - 403 - 404 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Fetched the backup schedule for a bucket in a cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 200 - 400 - 403 - 404 - 500 Content type application/json `{`- "type": "weekly", - "clusterID": "ffffffff-aaaa-1414-eeee-000000000000", - "bucketId": "dGVzdA", - "weeklySchedule": { - "dayOfWeek": "sunday", - "startAt": 10, - "incrementalEvery": 4, - "retentionTime": "90days", - "costOptimizedRetention": false } } Updates an existing backup schedule. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | type | string Value: "weekly" | object Schedule a full backup once a week with regular incrementals. | - Payload Content type application/json `{`- "type": "weekly", - "weeklySchedule": { - "dayOfWeek": "sunday", - "startAt": 0, - "incrementalEvery": 4, - "retentionTime": "90days", - "costOptimizedRetention": false } } - 400 - 403 - 404 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing backup schedule To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 400 - 403 - 404 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Lists the cycles for a bucket in a cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | startDate | string Example: startDate=2023-07-19 Filters bucket backups beginning from the start date. Specify the start date to retrieve relevant bucket backups from start date. | | endDate | string Example: endDate=2023-07-21 Filters bucket backups till the end date. Specify the end date to retrieve relevant bucket backups till end date. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "cycleID": "8109f151-4475-4d31-bf7e-559b0ecf345e", - "createdAt": "2021-09-01T12:34:56Z" } ] } Lists the backups for a cycle in a bucket. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | cycleId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cycle. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "clusterID": "ffffffff-aaaa-1414-eeee-000000000000", - "tenantID": "ffffffff-aaaa-1414-eeee-000000000000", - "projectID": "ffffffff-aaaa-1414-eeee-000000000000", - "cycleID": "string", - "date": "2021-09-01T12:34:56Z", - "restoreBefore": "2021-09-02T12:34:56Z", - "status": "pending", - "method": "incremental", - "bucketName": "My-First-Bucket", - "bucketID": "dGVzdA", - "source": "scheduled", - "provider": "aws", - "stats": { - "sizeInMb": 0.1, - "items": 150, - "mutations": 150, - "tombstones": 4, - "gsi": 46, - "fts": 30, - "cbas": 30, - "event": 25 }, - "elapsedTimeInSeconds": 30, - "scheduleInfo": { - "backupType": "Weekly", - "backupTime": "2023-07-13 20:26:54.990864215 +0000 UTC", - "increment": 4, - "retention": "90days" } } ] } Couchbase supports a robust scheduled backup and retention time policy as part of an overall disaster recovery plan for production data. Couchbase Capella supports scheduled and on-demand backups of bucket data. A backup can be restored to the same database where it was created or another database in the same organization. An on-demand backup of a bucket is always a Full backup. Capella schedules on-demand backup to start immediately. Creates an on-demand backup for a bucket. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Lists the latest backup for all buckets in a cluster. Note: This endpoint doesn’t return queued backups and only returns ones that are actively being processed or are completed/failed. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "clusterID": "ffffffff-aaaa-1414-eeee-000000000000", - "tenantID": "ffffffff-aaaa-1414-eeee-000000000000", - "projectID": "ffffffff-aaaa-1414-eeee-000000000000", - "cycleID": "string", - "date": "2021-09-01T12:34:56Z", - "restoreBefore": "2021-09-02T12:34:56Z", - "status": "pending", - "method": "incremental", - "bucketName": "My-First-Bucket", - "bucketID": "dGVzdA", - "source": "scheduled", - "provider": "aws", - "stats": { - "sizeInMb": 0.1, - "items": 150, - "mutations": 150, - "tombstones": 4, - "gsi": 46, - "fts": 30, - "cbas": 30, - "event": 25 }, - "elapsedTimeInSeconds": 30, - "scheduleInfo": { - "backupType": "Weekly", - "backupTime": "2023-07-13 20:26:54.990864215 +0000 UTC", - "increment": 4, - "retention": "90days" }, - "bucketDownloadsCount": 2 } ] } Fetches the details of an existing backup. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "clusterID": "ffffffff-aaaa-1414-eeee-000000000000", - "tenantID": "ffffffff-aaaa-1414-eeee-000000000000", - "projectID": "ffffffff-aaaa-1414-eeee-000000000000", - "cycleID": "string", - "date": "2021-09-01T12:34:56Z", - "restoreBefore": "2021-09-02T12:34:56Z", - "status": "pending", - "method": "incremental", - "bucketName": "My-First-Bucket", - "bucketID": "dGVzdA", - "source": "scheduled", - "provider": "aws", - "stats": { - "sizeInMb": 0.1, - "items": 150, - "mutations": 150, - "tombstones": 4, - "gsi": 46, - "fts": 30, - "cbas": 30, - "event": 25 }, - "elapsedTimeInSeconds": 30, - "scheduleInfo": { - "backupType": "Weekly", - "backupTime": "2023-07-13 20:26:54.990864215 +0000 UTC", - "increment": 4, - "retention": "90days" } } Deletes the backup records that belong to the same cycle from the DB by using the backup ID. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Creates an on-demand restore job for a backup immediately. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | | targetClusterID required | string The ID of the target cluster to restore to. | | sourceClusterID required | string The ID of the source cluster the restore is based on. | | backupID required | string The backup record ID that contains the backup to restore from. | | services required | Array of strings (Services) Items Enum: "data" "query" | | forceUpdates | boolean Forces data in the Couchbase cluster to be overwritten even if the data in the cluster is newer. | | autoRemoveCollections | boolean Automatically delete scopes/collections which are known to be deleted in the backup. | | filterKeys | string Only restore data where the key matches a particular regular expression. | | filterValues | string Only restore data where the value matches a particular regular expression. | | includeData | string Restores only the data specified here. | | excludeData | string Skips restoring the data specified here. | | mapData | string Specified when you want to restore source data into a different location. | | replaceTTL | string Enum: "none" "all" "expired" Sets a new expiration (time-to-live) value for the specified keys. | | replaceTTLWith | string Updates the expiration for the keys. | - Payload Content type application/json `{`- "targetClusterID": "ffffffff-aaaa-1414-eeee-000000000000", - "sourceClusterID": "ffffffff-aaaa-1414-eeee-000000000000", - "backupID": "ffffffff-aaaa-1414-eeee-000000000000", - "services": [ - "data", - "query" ], - "forceUpdates": true, - "autoRemoveCollections": true, - "filterKeys": "", - "filterValues": "", - "includeData": "bucket-1.scope1", - "excludeData": "bucket-1.scope1.coll1", - "mapData": "bucket1=new1", - "replaceTTL": "all", - "replaceTTLWith": "2021-09-01T12:34:56Z" } - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } The Billing endpoints allow you to retrieve billing information for your organization. You can view usage data organized by time period and filter by categories, projects, or instances. Retrieves billing information for the organization within the specified date range and filters. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | startDate required | string The start date of the billing period in YYYY-MM-DD format. | | endDate required | string The end date of the billing period in YYYY-MM-DD format. | object (BillingFilters) Filters to narrow down the billing information. | - Payload Content type application/json `{`- "value": { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "filters": { - "categories": [ - "analyticsCompute", - "analyticsStorage" ], - "projectIds": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "ffffffff-aaaa-1414-eeee-000000000001" ], - "instanceIds": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "ffffffff-aaaa-1414-eeee-000000000001" ] } } } - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json Example `{`- "data": { - "periods": [ - { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "categories": [ - { - "category": "analyticsCompute", - "creditSpend": null, - "currencySpend": 90.1, - "contributionPercent": 74 }, - { - "category": "analyticsStorage", - "creditSpend": null, - "currencySpend": 31.65, - "contributionPercent": 26 } ], - "totalCreditSpend": null, - "totalCurrencySpend": 3302.11 } ], - "total": { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "categories": [ - { - "category": "analyticsCompute", - "creditSpend": null, - "currencySpend": 2914.46, - "contributionPercent": 11.15 }, - { - "category": "analyticsStorage", - "creditSpend": null, - "currencySpend": 1250.25, - "contributionPercent": 4.78 } ], - "totalCreditSpend": null, - "totalCurrencySpend": 26120.18 }, - "billingCurrency": "USD" } } Retrieves itemized billing information for a specific cluster within the specified date range and filters. Note: This endpoint supports operational clusters only. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | startDate required | string The start date of the billing period in YYYY-MM-DD format. | | endDate required | string The end date of the billing period in YYYY-MM-DD format. | object (ItemizedBillingFilters) Filters to narrow down the itemized billing information. | - Payload Content type application/json `{`- "value": { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "filters": { - "categories": [ - "operationalComputeAndStorage", - "operationalBucketBackup" ] } } } - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": { - "clusterName": "test-123", - "supportPlan": "DeveloperPro", - "periods": [ - { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "categories": [ - { - "category": "operationalComputeAndStorage", - "creditSpend": null, - "currencySpend": 90.1, - "contributionPercent": 74 }, - { - "category": "operationalBucketBackup", - "creditSpend": null, - "currencySpend": 31.65, - "contributionPercent": 26 } ], - "totalCreditSpend": null, - "totalCurrencySpend": 3302.11 } ], - "total": { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "categories": [ - { - "category": "operationalComputeAndStorage", - "creditSpend": null, - "currencySpend": 2914.46, - "contributionPercent": 11.15 }, - { - "category": "operationalBucketBackup", - "creditSpend": null, - "currencySpend": 1250.25, - "contributionPercent": 4.78 } ], - "totalCreditSpend": null, - "totalCurrencySpend": 26120.18 }, - "billingCurrency": "USD" } } Retrieves prepaid credits information for the organization, including credit details, usage, and remaining amounts. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "sfdc-credit-id-12345", - "creditName": "CN-12345", - "supportPlan": "Plan: Developer Pro", - "startDate": "2024-01-01T00:00:00Z", - "expirationDate": "2024-12-31T23:59:59Z", - "total": 1000, - "used": 350.5, - "remaining": 649.5, - "remainingPercent": 64.95 } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Retrieves pay-as-you-go billing information for the organization within the specified date range, broken down by support plan type. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | startDate | string Example: startDate=2025-04-01 The start date of the billing period in YYYY-MM-DD format. | | endDate | string Example: endDate=2025-05-31 The end date of the billing period in YYYY-MM-DD format. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": { - "periods": [ - { - "startDate": "2025-04-01", - "endDate": "2025-04-30", - "cost": { - "basic": 0, - "devPro": 316.62, - "enterprise": 150 }, - "total": 466.62 }, - { - "startDate": "2025-05-01", - "endDate": "2025-05-31", - "cost": { - "basic": 100, - "devPro": 450.25, - "enterprise": 200 }, - "total": 750.25 } ], - "total": { - "startDate": "2025-04-01", - "endDate": "2025-05-31", - "cost": { - "basic": 100, - "devPro": 766.87, - "enterprise": 350 }, - "total": 1216.87 }, - "billingCurrency": "USD" } } Downloads a csv file with categorized billing information for the organization within the specified date range and filters. Downloaded CSV file named `capella-categorized-billing-{organizationId}-{startDate}_to_{endDate}.csv` with the following columns: `startDate` : The start date`endDate` : The end date`category` : The category name`creditSpend` : Usage in Capella credits for this category`currencySpend` : Usage in dollar or any billingCurrency amount for this category`contributionPercent` : contributionPercent of total consumption`billingCurrency` : currency `Total` - The final row of the CSV will contain totals across all categories over the full time period In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | startDate required | string The start date of the billing period in YYYY-MM-DD format. | | endDate required | string The end date of the billing period in YYYY-MM-DD format. | object (BillingFilters) Filters to narrow down the billing information. | - Payload Content type application/json `{`- "startDate": "2025-04-01", - "endDate": "2025-04-30", - "filters": { - "categories": [ - "analyticsCompute", - "analyticsStorage" ], - "projectIds": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "ffffffff-aaaa-1414-eeee-000000000001" ], - "instanceIds": [ - "ffffffff-aaaa-1414-eeee-000000000000", - "ffffffff-aaaa-1414-eeee-000000000001" ] } } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Downloads a CSV file with itemized billing information for a specific cluster within the specified date range and filters. Note: This endpoint supports operational clusters only. Downloaded CSV file named `capella-itemized-billing-{clusterId}-{startDate}_to_{endDate}.csv` with the following columns: `startDate` : The start date`endDate` : The end date`category` : The category name`projectId` : The UUID of the project containing the cluster`clusterId` : The UUID of the cluster`clusterName` : The name of the cluster`supportPlan` : The support plan of the cluster (e.g., DeveloperPro, Enterprise).`creditSpend` : Usage in Capella credits for this category`currencySpend` : Usage in dollar or any billingCurrency amount for this category`contributionPercent` : contributionPercent of total consumption`billingCurrency` : currency `Total` - The final row of the CSV will contain totals across all categories over the full time period In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | startDate required | string The start date of the billing period in YYYY-MM-DD format. | | endDate required | string The end date of the billing period in YYYY-MM-DD format. | object (ItemizedBillingFilters) Filters to narrow down the itemized billing information. | - Payload Content type application/json `{`- "startDate": "2025-04-01", - "endDate": "2025-04-30", - "filters": { - "categories": [ - "operationalComputeAndStorage", - "operationalBucketBackup" ] } } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } A bucket is the fundamental space for storing data in Couchbase Capella. Scopes and Collections are logical containers within a bucket and a way for organizing data within buckets. A scope is a mechanism for the grouping of multiple collections. A collection is a data container for related documents. Creates a new bucket configuration under a cluster. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string <= 100 characters Name of the bucket. This field cannot be changed later. The name should adhere to the following rules: Characters used for the name should be in the ranges of A-Z, a-z, and 0-9; plus the underscore, period, dash, and percent characters. The name can be a maximum of 100 characters in length. The name cannot have 0 characters or empty. Minimum length of name is 1. The name cannot start with a `.` (period). | | type | string (Type) Default: "couchbase" Enum: "couchbase" "ephemeral" Type of the bucket. If selected Ephemeral, it is not eligible for imports or App Endpoints creation. This field cannot be changed later. The options may also be referred to as Memory and Disk (Couchbase), Memory Only (Ephemeral) in the Couchbase documentation. To learn more, see Create a Bucket. | | storageBackend | string (StorageBackend) Enum: "couchstore" "magma" The storage engine to be assigned to and used by the bucket. Ephemeral buckets do not support StorageBackend, hence not applicable for Ephemeral buckets and throws an error if this field is added. This field is only applicable for a Couchbase bucket. The default value before Couchbase Server 8.0 is `couchstore` . The default value for Couchbase Server 8.0 and above is`magma` with 128 vbuckets.This field cannot be changed later. To learn more, see Storage Engines. | | vbuckets | integer Default: 128 Enum: 128 1024 This field only applies to Couchbase Server 8.0 and above for magma buckets. There are two options for the number of vBuckets: 128 and 1024. The number of vBuckets cannot be changed after the bucket is created. | | memoryAllocationInMb | integer The amount of memory to allocate for the bucket memory in MiB. This is the maximum limit is dependent on the allocation of the KV service. For example, 80% of the allocation. For Couchbase buckets, the default and minimum memory allocation changes according to the Storage Backend type as follows: For Couchstore, the default and minimum memory allocation is 100 MiB. For Magma, the default and minimum memory allocation is 1024 MiB with 1024 buckets for Couchbase server below 8.0. The default and minimum memory allocation is 100 MiB with 128 vbuckets for Couchbase server version 8.0 and above. For Ephemeral buckets, the default and minimum memory allocation is 100 MiB. | | bucketConflictResolution | string (BucketConflictResolution) Default: "seqno" Enum: "seqno" "lww" The means by which conflicts are resolved during replication. This field may be referred to as "conflict resolution" in the Couchbase documentation, and `seqno` and`lww` may be referred to as "sequence number" and "timestamp" respectively.This field cannot be changed later. To learn more, see Conflict Resolution. | | durabilityLevel | string (DurabilityLevel) Default: "none" Enum: "none" "majority" "majorityAndPersistActive" "persistToMajority" This is the minimum level at which all writes to the bucket must occur. The options for Durability level are as follows, according to the bucket type. For a Couchbase bucket: None Replicate to Majority Majority and Persist to Active Persist to Majority For an Ephemeral bucket: None Replicate to Majority To learn more, see Create a Bucket. | | replicas | integer (Replicas) Default: 1 Enum: 1 2 3 The number of replicas for the bucket. To learn more, see Create a Bucket. | | flush | boolean Deprecated Default: false Replaced by flushEnabled. This property is deprecated and will be removed in a future release. Determines whether flushing is enabled on the bucket. Enable Flush to delete all items in this bucket at the earliest opportunity. Disable Flush to avoid inadvertent data loss. | | flushEnabled | boolean Default: false Determines whether bucket flush is enabled. Set flushEnabled to true to be able to delete all items in this bucket using the /flush endpoint. Disable flushEnabled to avoid inadvertent data loss by calling the /flush endpoint . | | timeToLiveInSeconds | integer Default: 0 Specify the time to live (TTL) value in seconds. This is the maximum time to live for items in the bucket. Default is 0, that means TTL is disabled. This is a non-negative value. | | evictionPolicy | string (EvictionPolicy) Default: "fullEviction" Enum: "fullEviction" "noEviction" "nruEviction" The policy which Capella adopts to prevent data loss due to memory exhaustion. This may be also known as Ejection Policy in the Couchbase documentation. For Couchbase bucket, Eviction Policy is `fullEviction` by default.For Ephemeral buckets, Eviction Policy is a required field, and should be one of the following: noEviction nruEviction To learn more, see Ejection Policy. | | priority | integer (BucketPriority) Default: 0 Priority of the bucket. Specify relative bucket priority so that buckets will be recovered in the order specified during failover. Bucket ranking/priority is only available in Couchbase Server 7.6 and above Default bucket priority is 0 and can be set to a value between 0 and 1000. 1000 is the highest priority and 0 is the lowest. | - Payload Content type application/json Example `{`- "name": "CBExample1", - "type": "couchbase", - "storageBackend": "couchstore", - "memoryAllocationInMb": 105, - "bucketConflictResolution": "seqno", - "durabilityLevel": "majorityAndPersistActive", - "replicas": 2, - "flush": true, - "timeToLiveInSeconds": 100 } - 201 - 403 - 422 - 429 - 500 Content type application/json `{`- "id": "dGVzdA" } Lists all the buckets under the cluster. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "dGVzdA", - "name": "My-First-Bucket", - "type": "string", - "storageBackend": "couchstore", - "vbuckets": 128, - "memoryAllocationInMb": 100, - "bucketConflictResolution": "string", - "durabilityLevel": "string", - "replicas": 0, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "evictionPolicy": "fullEviction", - "stats": { - "itemCount": 10, - "opsPerSecond": 0, - "diskUsedInMib": 17, - "memoryUsedInMib": 50 }, - "priority": 0 } ], - "clusterStats": { - "freeMemoryInMb": 640, - "totalMemoryInMb": 1040, - "maxReplicas": 2 } } Fetches the configuration of the given bucket. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "dGVzdA", - "name": "My-First-Bucket", - "type": "string", - "storageBackend": "couchstore", - "vbuckets": 128, - "memoryAllocationInMb": 100, - "bucketConflictResolution": "string", - "durabilityLevel": "string", - "replicas": 0, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "evictionPolicy": "fullEviction", - "stats": { - "itemCount": 10, - "opsPerSecond": 0, - "diskUsedInMib": 17, - "memoryUsedInMib": 50 }, - "priority": 0 } Updates an existing bucket. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | memoryAllocationInMb required | integer The new amount of memory to allocate for the bucket memory in MiB. The maximum limit is dependent on the allocation of the KV service; for example, 80% of the allocation. For Couchbase buckets, the default and minimum memory allocation changes according to the Storage Backend type, as follows: For Couchstore, the default and minimum memory allocation is 100 MiB. For Magma, the default and minimum memory allocation is 1024 MiB. For Ephemeral buckets, the default and minimum memory allocation is 100 MiB. | | durabilityLevel required | string Enum: "none" "majority" "majorityAndPersistActive" "persistToMajority" This is the minimum level at which all writes to the bucket must occur. The options for Durability level are as follows, according to the bucket type. For a Couchbase bucket: None Replicate to Majority Majority and Persist to Active Persist to Majority For an Ephemeral bucket: None Replicate to Majority A Durability other than None cannot be set on a bucket that is linked with an App Endpoint. To learn more, see Create a Bucket. | | replicas required | | | flush | boolean Deprecated Default: false Replaced by flushEnabled. This property is deprecated and will be removed in a future release. The new value of flush property. This determines whether bucket flush is enabled. Enable Flush to be able to delete all items in this bucket at the earliest opportunity using /flush endpoint. Disable Flush to avoid inadvertent data loss by calling the /flush endpoint | | flushEnabled | boolean Default: false This determines whether bucket flush is enabled. Enable flushEnabled to delete all items in this bucket at the earliest opportunity by calling the /flush endpoint. Disable flushEnabled to avoid inadvertent data loss by calling the /flush endpoint. | | timeToLiveInSeconds required | integer Specify the new time to live (TTL) value in seconds. This is the maximum time to live for items in the bucket. If specified as 0, TTL is disabled. This is a non-negative value. A bucket that is linked with an App Endpoint cannot have a TTL configured. | | enableCrossClusterVersioning | boolean (EnableCrossClusterVersioning) This being enabled is a pre-requisite to a few XDCR features. When enabled, each document processed by XDCR will have additional metadata stored, called the Hybrid Logical Vector (HLV), in the document extended attributes (xattrs). The Cross Cluster Versioning setting cannot be disabled after it is enabled. By default, this value reflects what its current value is in the bucket, so omit this setting to leave it as it's current value. See the documentation for enableCrossClusterVersioning and the dependent features for important details on when to enable this setting. | | priority | integer (BucketPriority) Default: 0 Priority of the bucket. Specify relative bucket priority so that buckets will be recovered in the order specified during failover. Bucket ranking/priority is only available in Couchbase Server 7.6 and above Default bucket priority is 0 and can be set to a value between 0 and 1000. 1000 is the highest priority and 0 is the lowest. | - Payload Content type application/json `{`- "memoryAllocationInMb": 100, - "durabilityLevel": "none", - "replicas": 1, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "priority": 0 } - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Deletes an existing bucket. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Flushing of the bucket occurs, causing all items in the bucket to be deleted by the system at the earliest opportunity. This operation can only be performed if the bucket has been configured with flushEnabled to true. If it is disabled, it will throw an error. It is recommended not to run with the flushEnabled configuration set to true in production; due to the danger of all a bucket's data being inadvertently lost. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Creates a new scope in a bucket. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | name required | string The name of the scope. The name should adhere to the following rules: The name must be between 1 and 251 characters in length. The name can contain only the characters A-Z, a-z, 0-9, and the symbols _, -, and %. The name cannot start with _ or %. Note that scope and collection names are case-sensitive. | - Payload Content type application/json `{`- "name": "my-scope" } - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Lists all the scopes in the bucket. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 200 - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "scopes": [ - { - "name": "inventory", - "collections": [ - { - "name": "airport", - "maxTTL": 0 } ] } ] } Fetches the details of the given scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | - 200 - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "name": "inventory", - "collections": [ - { - "name": "airport", - "maxTTL": 0 } ] } Deletes an existing scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Creates a new collection in a scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | | name required | string The name of the collection. The name should adhere to the following rules: The name must be between 1 and 251 characters in length. The name can contain only the characters A-Z, a-z, 0-9, and the symbols _, -, and %. The name cannot start with _ or %. Note that scope and collection names are case-sensitive. | | maxTTL | integer Specify the time to live (TTL) value in seconds. Defines the duration (Seconds) for which the documents in a collection are kept before automatic removal from the database. - For server versions < 7.6.0, this is a non-negative value. Set to 0 to use the bucket's maxTTL value. - For server versions >= 7.6.0, this value should be >= -1. Set to -1 to disable expiry for that collection. Set to 0 to use the bucket's maxTTL value. - The maximum value that can be set for maxTTL is 2147483647. | - Payload Content type application/json `{`- "name": "my-collection", - "maxTTL": 100 } - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Lists all the collections in a scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | - 200 - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": [ - { - "name": "airport", - "maxTTL": 0 } ] } Fetches the details of the given collection. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | | collectionName required | string Example: airline The name of the collection. | - 200 - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "name": "airport", - "maxTTL": 0 } Updates an existing collection. This operation is only allowed for a cluster with server version >= 7.6.0. A collection cannot be updated for the server versions lower than this. This allows to update the maxTTL of the given collection. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | | collectionName required | string Example: airline The name of the collection. | | maxTTL required | integer Specify the new time to live (TTL) value in seconds. - This value should be >= -1. Set to -1 to disable expiry for that collection. - Set to 0 to use the bucket's maxTTL value. - The maximum value that can be set for maxTTL is 2147483647. A collection that is linked with an App Endpoint cannot have a TTL configured. | - Payload Content type application/json `{`- "maxTTL": 100 } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Deletes an existing collection. To learn more about scopes and collections, see Buckets, Scopes, and Collections. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | scopeName required | string Example: inventory The name of the scope. | | collectionName required | string Example: airline The name of the collection. | - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Couchbase Capella supports the use of x.509 certificates, for clients and servers. This ensures that only approved users, applications, machines, and endpoints have access to system resources. Consequently, the mechanism can be used by Couchbase SDK clients to access Couchbase Services, and by source clusters that use XDCR to replicate data to target clusters. Clients can verify the identity of Couchbase Capella, thereby ensuring that they are not exchanging data with a rogue entity. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "certificate": "-----BEGIN CERTIFICATE-----\nMIIDFTCCAf2gAwIBAgI[...]CSYBWaK0ofivA==\n-----END CERTIFICATE-----\n" } Couchbase supports a robust scheduled backup and retention time policy as part of an overall disaster recovery plan for production data. Couchbase Capella supports scheduled and on-demand backups of cloud snapshot data. A backup can be restored to the same database where it was created or another database in the same organization. A backup can also be cloned to create a new database with the same specifications as the backed up cluster in the same organization. An on-demand backup of a bucket is always a Full backup. Capella schedules on-demand backup to start immediately. Creates a cloud snapshot backup for a cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | retention | integer Represents interval in hours to retain the backup. | | regionsToCopy | Array of strings Specifies the regions where the backup will be copied. A maximum of two regions can be selected. If not provided, the backup will remain single-region. | - Payload Content type application/json `{`- "retention": 168, - "regionsToCopy": [ - "us-west-1", - "us-east-1" ] } - 202 - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "backupId": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL" } List the backups belonging to a cluster. Note: This endpoint doesn’t return queued backups and only returns ones that are actively being processed or are completed/failed. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=createdAt Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "cursor": { - "hrefs": { }, - "pages": { - "last": 1, - "page": 1, - "perPage": 5, - "totalItems": 5 } }, - "data": [ - { - "data": { - "clusterId": "49b2c7f7-9612-4c99-b202-d4067b276b89", - "createdAt": "2023-11-25T13:02:32.409980126Z", - "expiration": "2023-12-25T13:02:32.409980126Z", - "id": "42bf3a6c-ebd9-495f-a391-57708b8c267d", - "progress": { - "status": "complete", - "time": "2024-01-18T10:47:18Z" }, - "projectId": "39387120-0a23-41bf-8d53-9048e6080dd1", - "retention": 604800000000000, - "cmek": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "providerId": "example-arn-1" } ], - "server": "7.2.3", - "size": 127569288, - "tenantId": "10f52cbd-8367-47f8-a840-e692339b4b04", - "type": "on_demand" }, - "permissions": { - "create": { - "accessible": true }, - "delete": { - "accessible": true }, - "read": { - "accessible": true }, - "update": { - "accessible": true } } }, - { - "data": { - "clusterId": "49b2c7f7-9612-4c99-b202-d4067b276b89", - "createdAt": "2023-11-25T13:02:32.409980126Z", - "expiration": "2023-12-25T13:02:32.409980126Z", - "id": "42bf3a6c-ebd9-495f-a391-57708b8c267d", - "progress": { - "status": "pending", - "time": "2024-01-18T10:47:18Z" }, - "projectId": "39387120-0a23-41bf-8d53-9048e6080dd1", - "retention": 604800000000000, - "cmek": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "providerId": "example-arn-1" }, - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "providerId": "example-arn-2" } ], - "crossRegionCopies": [ - { - "regionCode": "us-west-2", - "status": "complete", - "time": "2024-01-18T10:48:18Z" }, - { - "regionCode": "ap-southeast-4", - "status": "complete", - "time": "2024-01-18T10:49:21Z" } ], - "server": "7.2.3", - "databaseSize": 127569, - "tenantId": "10f52cbd-8367-47f8-a840-e692339b4b04", - "type": "scheduled" }, - "permissions": { - "create": { - "accessible": true }, - "delete": { - "accessible": true }, - "read": { - "accessible": true }, - "update": { - "accessible": true } } } ], - "permissions": { - "create": { - "accessible": true }, - "delete": { - "accessible": true }, - "read": { - "accessible": true }, - "update": { - "accessible": true } } } Lists the restores that have taken place for a given cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=createdAt Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "cursor": { - "hrefs": { }, - "pages": { - "last": 1, - "page": 1, - "perPage": 5, - "totalItems": 5 } }, - "data": [ - { - "data": { - "clusterId": "49b2c7f7-9612-4c99-b202-d4067b276b89", - "createdAt": "2023-11-25T13:02:32.409980126Z", - "expiration": "2023-12-25T13:02:32.409980126Z", - "id": "42bf3a6c-ebd9-495f-a391-57708b8c267d", - "progress": { - "status": "complete", - "time": "2024-01-18T10:47:18Z" }, - "projectId": "39387120-0a23-41bf-8d53-9048e6080dd1", - "retention": 604800000000000, - "server": "7.2.3", - "size": 127569288, - "tenantId": "10f52cbd-8367-47f8-a840-e692339b4b04", - "type": "on_demand" }, - "permissions": { - "create": { - "accessible": true }, - "delete": { - "accessible": true }, - "read": { - "accessible": true }, - "update": { - "accessible": true } } }, - { - "data": { - "clusterId": "49b2c7f7-9612-4c99-b202-d4067b276b89", - "createdAt": "2023-11-25T13:02:32.409980126Z", - "expiration": "2023-12-25T13:02:32.409980126Z", - "id": "42bf3a6c-ebd9-495f-a391-57708b8c267d", - "progress": { - "status": "pending", - "time": "2024-01-18T10:47:18Z" }, - "projectId": "39387120-0a23-41bf-8d53-9048e6080dd1", - "retention": 604800000000000, - "server": "7.2.3", - "size": 127569288, - "tenantId": "10f52cbd-8367-47f8-a840-e692339b4b04", - "type": "scheduled" }, - "permissions": { - "create": { - "accessible": true }, - "delete": { - "accessible": true }, - "read": { - "accessible": true }, - "update": { - "accessible": true } } } ], - "permissions": { - "create": { - "accessible": true }, - "delete": { - "accessible": true }, - "read": { - "accessible": true }, - "update": { - "accessible": true } } } Lists the geographic regions where replicas of original backups can be stored, to ensure global availability and robust disaster recovery. These regions can also be used for cross-region restores between clusters or for deploying new clusters in any listed region using backup data from every region included in the response. At present, cross-region backups and restores are supported only for AWS and Azure clusters. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 - 501 Content type application/json `[`- "af-south-1", - "ap-east-1", - "ap-northeast-1", - "ap-northeast-2", - "ap-south-1", - "ap-south-2", - "ap-southeast-1", - "ap-southeast-2", - "ap-southeast-3", - "ap-southeast-4", - "ca-central-1", - "eu-central-1", - "eu-central-2", - "eu-north-1", - "eu-south-1", - "eu-west-1", - "eu-west-2", - "eu-west-3", - "il-central-1", - "me-central-1", - "me-south-1", - "sa-east-1", - "us-east-1", - "us-east-2", - "us-west-2" ] Edits the retention time for a backup. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | | retention | integer Represents interval in hours to retain the backup. | - Payload Content type application/json `{`- "retention": 730 } - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Deletes the backup. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | - 202 - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{ }` Creates a restore job for a backup immediately. When multiple cross-regional cloud snapshots are available, a region of preference can be specified within the request payload to ensure optimal recovery in scenarios where the original snapshot in the cluster’s primary region is not restorable. In such cases, cross-regional copies serve as a reliable fallback to maintain data availability and minimize downtime. Selecting the geographically closest cross-regional snapshot among the available options helps reduce latency during data retrieval and significantly lowers data transfer costs due to shorter network paths. If no preferred region order is specified, the system automatically selects the most suitable snapshot based on availability. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | | crossRegionRestorePreference | Array of strings unique Defines the priority order of cross-regional cloud snapshots, based on the index of the array, to be used as a fallback for cluster restoration when the primary backup in the cluster's region is not restorable. The first region in the list is assigned the highest priority, followed by each subsequent region in order. | - Payload Content type application/json `{`- "crossRegionRestorePreference": [ - "us-east-1", - "ap-southeast-4" ] } - 202 - 400 - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "restoreId": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL" } Lists cloud snapshot backups associated with operational clusters within a specific project. The "most recent" and "oldest" backup fields do not include backups that are in a queued state. Only backups that are actively being processed, successfully completed, or marked as failed are returned. For detailed guidance on backup and restore functionality, please refer to Backup and Restore Data. The provided API key must have at least one of the following roles. - Organization Owner - Project Owner - Project Manager For more information about roles and access, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Items Enum: "creationDateTime" "createdBy" "currentStatus" "cloudProvider" "region" Example: sortBy=creationDateTime Specifies the sorting criteria for the results, including the key by which the results should be ordered. Valid fields to sort the results include the following. - | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "clusterId": "ffffffff-aaaa-1414-eeee-000000000000", - "clusterName": "example-cluster", - "creationDateTime": "2024-11-14T14:14:22.122057304Z", - "createdBy": "user@company.com", - "currentStatus": "healthy", - "cloudProvider": "hostedAWS", - "region": "us-east-1", - "mostRecentSnapshot": { - "clusterId": "string", - "createdAt": "2019-08-24T14:15:22Z", - "expiration": "2019-08-24T14:15:22Z", - "id": "string", - "progress": { - "status": "string", - "time": "2019-08-24T14:15:22Z" }, - "projectId": "string", - "appService": "3.141.5", - "cmek": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "providerId": "arn:aws:kms:us-west-1:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef" } ], - "crossRegionCopies": [ - { - "regionCode": "string", - "status": "string", - "time": "2019-08-24T14:15:22Z" } ], - "retention": 0, - "server": { - "version": "7.1" }, - "databaseSize": 0, - "tenantId": "string", - "type": "string" }, - "oldestSnapshot": { - "clusterId": "string", - "createdAt": "2019-08-24T14:15:22Z", - "expiration": "2019-08-24T14:15:22Z", - "id": "string", - "progress": { - "status": "string", - "time": "2019-08-24T14:15:22Z" }, - "projectId": "string", - "appService": "3.141.5", - "cmek": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "providerId": "arn:aws:kms:us-west-1:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef" } ], - "crossRegionCopies": [ - { - "regionCode": "string", - "status": "string", - "time": "2019-08-24T14:15:22Z" } ], - "retention": 0, - "server": { - "version": "7.1" }, - "databaseSize": 0, - "tenantId": "string", - "type": "string" } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Clones the cluster backup into a new cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | backupId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the backup. | | name required | string <= 256 characters Name of the cloned cluster (up to 256 characters). | | description | string <= 1024 characters Description of the cloned cluster (up to 1024 characters). | required | object (CloudProvider) The cloud provider where the cluster will be hosted. For information about providers and supported regions, see: | required | object (Availability) | required | object (Support) | | zones | Array of strings Zones is the cloud services provider availability zones for the cloned cluster. Currently Supported only for single AZ clusters so only 1 zone is allowed in list. | - Payload Content type application/json `{`- "name": "Cloned Cluster", - "description": "This is a cloned cluster.", - "cloudProvider": { - "type": "aws", - "region": "us-east-1", - "cidr": "10.1.30.0/23" }, - "availability": { - "type": "single" }, - "zones": [ - "use1-az1" ], - "support": { - "plan": "developer pro", - "timezone": "PT" } } - 202 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "restoreId": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL", - "clusterId": "IS9DrRsw4KWFS72Zhbj4xmhllHvPcdCL" } Couchbase supports a robust scheduled backup and retention time policy as part of an overall disaster recovery plan for production data. Couchbase Capella supports scheduled and on-demand backups of cloud snapshot data. A backup can be restored to the same database where it was created or another database in the same organization. On setting up a backup schedule, the bucket automatically backs up the bucket based on the chosen schedule. Creates or updates a cloud snapshot backup schedule for a cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | interval | integer Represents the time interval. | | retention | integer Represents interval in hours to retain the backup. | | startTime | string Represents the start time in ISO 8601 format. | | copyToRegions | Array of strings Represents the list of geographical regions where snapshot copies to be stored in addition to the primary region. Currently, this feature is supported for AWS and Azure clusters. | - Payload Content type application/json `{`- "interval": 1, - "retention": 24, - "startTime": "2024-01-05T16:00:00+00:00", - "copyToRegions": [ - "us-east-1", - "ap-southeast-4" ] } - 400 - 403 - 404 - 409 - 429 - 500 - 501 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the cloud snapshot backup schedule for a cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "interval": 1, - "retention": 24, - "startTime": "2024-01-05T16:00:00+00:00", - "copyToRegions": [ - "us-east-1", - "ap-southeast-4" ] } Deletes the backup schedule for a cluster. To learn more about backup and restore, see Backup and Restore Data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } A Couchbase cluster consists of one or more instances of Couchbase Capella, each running on an independent node. Data and services are shared across the cluster. A cluster may be referred to as a "database" in the documentation and in the Couchbase Capella user interface. Creates a new Couchbase Capella provisioned cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | name required | string <= 256 characters Name of the cluster (up to 256 characters). | | description | string <= 1024 characters Description of the cluster (up to 1024 characters). | | configurationType | string (ConfigurationType) Deprecated Default: "multiNode" Enum: "singleNode" "multiNode" - Multi-node databases are best for deployments that require high availability. If your app requires high performance and high availability, choose the Multi-node option. - Single-node databases have resource limitations that make them a good choice for learning, prototyping, and non-production uses. They have limited availability. - Single-node databases should contain only 1 node and 1 Service Group. Adding number of nodes or service groups > 1 is not allowed for such databases. - By default the configurationType is multiNode. | required | object (CloudProvider) The cloud provider where the cluster will be hosted. For information about providers and supported regions, see: | object (CouchbaseServer) | | required | Array of objects (ServiceGroup) non-empty The couchbase service groups to be run. - The set of nodes that share the same disk, number of nodes and services. - At least one service group must contain the data service. | required | object (Availability) | required | object (Support) | | zones | Array of strings Zones is the cloud services provider availability zones for the cluster. Currently Supported only for single AZ clusters so only 1 zone is allowed in list. | | cmekId | string The ID of the CMEK Key. | | enablePrivateDNSResolution | boolean EnablePrivateDNSResolution signals that the cluster should have hostnames that are hosted in a public DNS zone that resolve to a private DNS address. This exists to support the use case of customers connecting from their own data centers where it is not possible to make use of a cloud service provider DNS zone. | - Payload Content type application/json Example `{`- "name": "Test-Cluster-1", - "description": "My first test AWS cluster for multiple services.", - "cloudProvider": { - "type": "aws", - "region": "us-east-1", - "cidr": "10.1.30.0/23" }, - "couchbaseServer": { - "version": "7.2" }, - "serviceGroups": [ - { - "node": { - "compute": { - "cpu": 4, - "ram": 16 }, - "disk": { - "storage": 50, - "type": "gp3", - "iops": 3000 } }, - "numOfNodes": 3, - "services": [ - "data", - "query", - "index", - "search" ] }, - { - "node": { - "compute": { - "cpu": 4, - "ram": 32 }, - "disk": { - "storage": 50, - "type": "io2", - "iops": 3005 } }, - "numOfNodes": 2, - "services": [ - "analytics" ] } ], - "availability": { - "type": "multi" }, - "support": { - "plan": "developer pro", - "timezone": "PT" } } - 202 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the clusters under the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader Returned set of clusters is reduced to what the caller has access to view. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Cluster", - "description": "Description of the cluster", - "configurationType": "multiNode", - "connectionString": "couchbases://cb.irxmynm6vekhe5.cloud.couchbase.com", - "cloudProvider": { - "type": "aws", - "region": "us-east-1", - "cidr": "10.1.30.0/23" }, - "couchbaseServer": { - "version": "7.1" }, - "serviceGroups": [ - { - "node": { - "compute": { - "cpu": 4, - "ram": 16 }, - "disk": { - "type": "gp3", - "storage": 50, - "iops": 3000 } }, - "numOfNodes": 3, - "services": [ - "data" ] } ], - "availability": { - "type": "single" }, - "support": { - "plan": "basic", - "timezone": "ET" }, - "currentState": "deploying", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "cmekId": "ffffffff-aaaa-1414-eeee-000000000000", - "enablePrivateDNSResolution": true, - "deletionProtection": false, - "expressScaling": "enabled" } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details of the given cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Cluster", - "description": "Description of the cluster", - "configurationType": "multiNode", - "connectionString": "couchbases://cb.irxmynm6vekhe5.cloud.couchbase.com", - "cloudProvider": { - "type": "aws", - "region": "us-east-1", - "cidr": "10.1.30.0/23" }, - "couchbaseServer": { - "version": "7.1" }, - "serviceGroups": [ - { - "node": { - "compute": { - "cpu": 4, - "ram": 16 }, - "disk": { - "type": "gp3", - "storage": 50, - "iops": 3000 } }, - "numOfNodes": 3, - "services": [ - "data" ] } ], - "availability": { - "type": "single" }, - "support": { - "plan": "basic", - "timezone": "ET" }, - "currentState": "deploying", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "cmekId": "ffffffff-aaaa-1414-eeee-000000000000", - "enablePrivateDNSResolution": true, - "deletionProtection": false, - "expressScaling": "enabled" } Updates an existing cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | name required | string <= 256 characters The new name of the cluster (up to 256 characters). | | description required | string <= 1024 characters The new cluster description (up to 1024 characters). | required | object (Support) | required | Array of objects (ServiceGroup) | - Payload Content type application/json `{`- "name": "My-New-Cluster", - "description": "The extended description of my new cluster.", - "support": { - "plan": "basic", - "timezone": "ET" }, - "serviceGroups": [ - { - "node": { - "compute": { - "cpu": 4, - "ram": 16 }, - "disk": { - "type": "gp3", - "storage": 50, - "iops": 3000 } }, - "numOfNodes": 3, - "services": [ - "data" ] } ] } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Deletes an existing cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | retainsnapshotbackups | boolean Example: retainsnapshotbackups=true Retain snapshot backups parameter specifies whether to retain snapshot backups after cluster deletion. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Fetches cluster-level capacity statistics including memory availability and replica limits. This endpoint provides cluster capacity information that is not specific to any individual bucket, allowing clients to make informed decisions when managing buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "freeMemoryInMb": 640, - "totalMemoryInMb": 1040, - "maxReplicas": 2 } Turn cluster on. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | turnOnLinkedAppService | boolean Default: false Set this value to true if you want to turn on the app service linked with the cluster, false if not. If set to true, the app service, if present, will turn on with the cluster. Default value for this is false, which means the linked app service will be kept off. | - Payload Content type application/json Example `{`- "turnOnLinkedAppService": true } - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Turn cluster off. Turning off your cluster turns off the compute for your cluster but the storage remains. All of the data, schema (buckets, scopes, and collections), and indexes remain, as well as cluster configuration, including users and allow lists. Turning off cluster will also turn off any linked app services. Turning off cluster will not stop charges being incurred for Data API. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Updates the storage backend of an existing bucket from Couchstore to Magma. The following should be noted while doing this operation - - The outcome of this migration is that all data service nodes in the cluster will be replaced. - During the migration all buckets will remain operational and still be able to perform read and writes. Hence applications will not incur any downtime during this migration and can continue to read/write to the cluster. - The re-balances that occur from the node replacements will result in the bucket(s) being migrated to Magma. - The status of the cluster can be monitored via the GET cluster API. The cluster will transition to healthy state after migration is completed for all listed buckets. This operation is only allowed for clusters with server version >= 7.6.0. The storage backend cannot be updated for the cluster with server versions lower than this. All the nodes must be upgraded to 7.6.0 before the bucket migration can be performed. Before migrating from Couchstore to Magma, the bucket memory allocation should be upgraded to at least the minimum amount required for a Magma bucket that is 1024 MiB. Cluster must be in a healthy state to perform this operation. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | buckets required | Array of strings <= 30 items Names of the buckets which need to be migrated from Couchstore to Magma. | - Payload Content type application/json `{`- "buckets": [ - "sample-bucket", - "my-bucket" ] } - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Enable or disable deletion protection for a cluster. When deletion protection is enabled, the cluster, its app service, and its buckets cannot be deleted, and bucket data cannot be flushed. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | deletionProtection required | boolean Set to true to enable deletion protection for the cluster, false to disable it. When enabled, the cluster, its app service, and its buckets cannot be deleted, and bucket data cannot be flushed. | - Payload Content type application/json `{`- "deletionProtection": true } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } The CMEK (Customer Managed Encryption Keys) endpoints facilitate the management of encryption keys used by clusters for data encryption. They allow organizations to register, list, retrieve, rotate, and delete the metadata associated with their own encryption keys within Capella. This suite of endpoints ensures that organizations have full control over the lifecycle of their keys, enhancing security and compliance by allowing encryption keys that are managed in external key management services like AWS KMS or GCP KMS to be used within the organization's clusters. Fetches the cloud account ID associated with the organization. Use this account ID when adding CMEK to other AWS databases in your organization. To learn more, see CMEK at Rest. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Creator - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "gcp-capella-project": "MyApp-Prod-Project", - "aws-capella-account": "MyApp-Prod-Project", - "azure-capella-subscription": "MyApp-Prod-Project" } Retrieves the application ID so that the customer can install the service principal in their Azure tenant. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Retrieves the application ID so that the customer can install the service principal in their Azure tenant for a specific project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Initializes the metadata record for a customer-managed encryption key stored in AWS, GCP or Azure, linking it to the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | name required | string <= 128 characters Name of the key (up to 256 characters). | | description | string <= 512 characters Description of the key (up to 1024 characters). | required | AWSConfig (object) or GCPConfig (object) or AzureConfig (object) | - Payload Content type application/json `{`- "name": "Test Key", - "description": "Description of the Key", - "config": { - "arn": "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef" } } - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Retrieves detailed metadata for all customer-managed encryption keys associated with the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Key", - "description": "Description of the cluster", - "config": { - "arn": "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef" }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Initializes the metadata record for a customer-managed encryption key stored for a project. This only applies to Azure. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | name required | string <= 256 characters Name of the key. | | description | string <= 1024 characters Description of the key. | required | object (AzureConfig) | - Payload Content type application/json `{`- "name": "Test Key", - "description": "Description of the Key", - "config": { - "region": "eastus" } } - 201 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Retrieves detailed metadata for all Azure customer-managed encryption keys associated with the project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Key", - "description": "Description of the cluster", - "config": { - "region": "eastus" }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Retrieves the full history of rotations for a specific customer-managed encryption key within the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | string Enum: "active" "associatedAt" "associatedBy" "key" Example: sortBy=active Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "cursor": { - "hrefs": { }, - "pages": { - "last": 1, - "page": 1, - "perPage": 2, - "totalItems": 2 } }, - "data": [ - { - "config": { - "arn": "arn:aws:kms:us-west-2:123456789012:key/12345678-1234-1234-1234-123456789012" }, - "active": true, - "associatedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "associatedAt": "2023-09-01T12:34:56Z" }, - { - "config": { - "arn": "arn:aws:kms:us-west-2:000000000000:key/00000000-0000-0000-0000-000000000000" }, - "active": false, - "associatedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "associatedAt": "2023-09-01T12:34:56Z" } ] } Retrieves the full metadata details for a specific customer-managed encryption key within the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Key", - "description": "Description of the cluster", - "config": { - "arn": "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef" }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Initiates the process to rotate a customer-managed encryption key and update its associated metadata within the system. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | required | AWSConfig (object) or GCPConfig (object) or AzureConfig (object) | - Payload Content type application/json `{`- "config": { - "arn": "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef" } } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Permanently removes the specified customer-managed encryption key's metadata from the organization's account. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Retrieves the full metadata details for a specific Azure customer-managed encryption key in a project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Key", - "description": "Description of the cluster", - "config": { - "region": "eastus" }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Initiates the process to rotate an Azure customer-managed encryption key in a project and update its associated metadata within the system. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | required | object (AzureConfig) | - Payload Content type application/json `{`- "config": { - "region": "eastus" } } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Permanently removes the specified Azure customer-managed encryption key's metadata from the project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Enables the customer-managed encryption keys feature for the specified cloud service provider within the organization. For AWS and GCP enabling the customer-managed encryption keys feature is only required if no AWS or GCP cluster respectively has ever been created in the organization. The customer-managed encryption keys feature must always be enabled for Azure before Azure keys can be created. This operation provisions a multi-tenant Azure Entra ID application for the organization, which is required for Capella to access customer-managed encryption keys. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | cloudProvider required | string Enum: "aws" "gcp" "azure" Cloud provider for CMEK keys. | - Payload Content type application/json `{`- "cloudProvider": "aws" } - 400 - 403 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Enables the customer-managed encryption keys feature for Azure on a project. The customer-managed encryption keys feature must always be enabled for Azure before Azure keys can be created. This operation provisions a multi-tenant Azure Entra ID application for a project, which is required for Capella to access customer-managed encryption keys. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | cloudProvider required | string Value: "azure" Cloud provider for CMEK keys. | - Payload Content type application/json `{`- "cloudProvider": "azure" } - 400 - 403 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Redeploys the cluster and encrypts the disks with the newly associated customer-managed encryption key. Throws an error before redeploying the cluster if the customer-managed encryption key is inaccessible. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Removes the customer-managed encryption key associated with the cluster, which redeploys the cluster and removes any encryption on the disks. This does not delete the customer-managed encryption key itself since the same key could be used across clusters. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | cmekId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the KMS Key metadata. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Data API is a RESTful interface that allows users to access and manipulate data in your Couchbase Capella cluster. Enable or disable Data API on your cluster. Additional charges will be incurred when this feature is enabled. Enabling data API is an asynchronous call and can take several minutes depending on the CSP. You can also enable network peering when enabling Data API. If network peering is enabled, please complete setup by using commands returned in GET /networkPeers/{peerId} endpoint. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Manager - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | enableDataApi required | boolean Default: false enable or disable Data API for the cluster. | | enableNetworkPeering required | boolean Default: false enable or disable network peering when Data API is enabled. | - Payload Content type application/json `{`- "enableDataApi": true, - "enableNetworkPeering": true } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Get the status of Data API and network peering on your cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "enabled": true, - "state": "enabled", - "enabledForNetworkPeering": true, - "stateForNetworkPeering": "enabled", } Retrieve the command or script to be executed in order to create the private endpoint which will provides a private connection between the specified VPC and the specified Capella Data API Endpoint. An example for AWS: ``` aws ec2 create-vpc-endpoint \ --vpc-id vpc-1234 \ --region us-east-1 \ --service-name com.amazonaws.vpce.us-east-1.vpce-svc-1234 \ --vpc-endpoint-type Interface \ --subnet-ids subnet-1234 ``` An example for Azure: ``` az network private-endpoint create \ --connection-name connection-1 \ --name private-endpoint \ --private-connection-resource-id svc-1 \ --resource-group test-rg \ --subnet subnet-1 \ --group-id sites \ --vnet-name vnet-1 ``` In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | One of | vpcID required | string [ 12 .. 21 ] characters The ID of your virtual network | | subnetIDs required | Array of strings | - Payload Content type application/json Example `{`- "vpcID": "vpc-1234", - "subnetIDs": [ - "subnet-1234" ] } - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "command": "aws ec2 create-vpc-endpoint --vpc-id vpc-1234 --region us-east-1 --service-name com.amazonaws.vpce.us-east-1.vpce-svc-1234 --vpc-endpoint-type Interface --subnet-ids subnet-1234" } Returns a list of Data API private endpoints associated with your Capella cluster, along with the endpoint state. Each private endpoint connects a private network to Data API on a Capella cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Creator - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "privateEndpointDNS": "abcdef123456.pl.cloud.couchbase.com", - "endpoints": [ - { - "id": "vpce-000000000000aaaaa", - "serviceName": "com.amazonaws.vpce.us-east-1.vpce-svc-000000000000aaaaa", - "status": "linked" } ] } Accept a new private endpoint connection request so that it is associated with the Data API. Once accepted, the private endpoint is available for use. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | endpointId required | string Example: vpce-1234 The VPC endpoint ID. | - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Removes or disassociates the private endpoint. If the private endpoint connection has still not yet been accepted, the request is rejected. Turning off the cluster will not automatically remove any of the Data API Endpoints and the endpoints will be available when cluster is turned back on. If you remove the private endpoint before turning off a cluster, you must associate it back again with data api is turned back on. Retaining private endpoints when cluster is off does not result in any additional charges beyond the cost of enabling Data API. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | endpointId required | string Example: vpce-1234 The VPC endpoint ID. | - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Database credentials provide programmatic and application-level access to data on a database. Only database credentials can access data. Lists all the database credential information under a cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 429 - 500 Content type application/json `{`- "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } }, - "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "ReadInventory", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "access": [ - { - "privileges": [ - "data_reader", - "data_writer" ], - "resources": { - "buckets": [ - { - "name": "travel-sample", - "scopes": [ - { - "name": "inventory" } ] } ] } } ] } ] } Creates a new database credential under a cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner Valid fields to sort the results are: "id", "name". To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string [ 2 .. 128 ] characters Username for the database credential. The name should adhere to the following rules: The name must be between 2 & 128 characters. The name cannot contain spaces. The name cannot contain the following characters - `) ( > < , ; : " \ / ] [ ? = } {` The name cannot begin with `@` character. | | password | string >= 8 characters A password associated with the database credential. If this field is left empty, a password will be auto-generated. The password should adhere to the following rules: The password should have at least 8 characters. Characters used for the password should contain at least one uppercase (A-Z), one lowercase (a-z), one numerical (0-9), and one special character. The password must not contain any of the following characters: `< > ; . * & | £` | required | Array of objects (Access) Describes the access information of the database credential. | - Payload Content type application/json Example `{`- "name": "ReadWriteOnSpecificCollections", - "access": [ - { - "privileges": [ - "data_reader", - "data_writer" ], - "resources": { - "buckets": [ - { - "name": "travel-sample", - "scopes": [ - { - "name": "inventory", - "collections": [ - "airport", - "airline" ] } ] } ] } } ] } - 201 - 400 - 403 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "password": "P@ssw0rd!" } Fetches the details of a given cluster's database credential information. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the database credential. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "ReadInventory", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "access": [ - { - "privileges": [ - "data_reader", - "data_writer", - "read", - "write" ], - "resources": { - "buckets": [ - { - "name": "travel-sample", - "scopes": [ - { - "name": "inventory", - "collections": [ - "airlines", - "airport", - "tickets" ] } ] } ] } } ] } Updates an existing database credential. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the database credential. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | Array of objects (Access) Describes the access information of the database credential. | | | password | string The updated password of the database credential. | - Payload Content type application/json `{`- "access": [ - { - "privileges": [ - "data_reader", - "data_writer" ], - "resources": { - "buckets": [ - { - "name": "travel-sample", - "scopes": [ - { - "name": "inventory", - "collections": [ - "airport", - "airline", - "tickets" ] } ] } ] } } ] } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing cluster's database credential. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the database credential. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } The Eventing Service runs JavaScript code in response to data changes in a collection. You define OnUpdate and OnDelete handlers, and Couchbase invokes them whenever documents are created, modified, or deleted. It works like a database trigger which runs asynchronously on dedicated Eventing nodes. Retrieves the JavaScript code for the specified function. The code is not escaped. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `"function OnUpdate(doc, meta, xattrs) {\n log(\"Doc created/updated\", meta.id);\n}\n\nfunction OnDelete(meta, options) {\n log(\"Doc deleted/expired\", meta.id);\n}\n"` Update the JavaScript code for the specified function. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | string (UpdateFunctionCodeRequest) The JavaScript code of the eventing function that gets executed in response to document mutations. The eventing service compresses the code before storing it. The compressed code must not exceed 128 KiB (131072 bytes); code larger than this limit after compression is rejected. - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the full definition of an eventing function, including its JavaScript code, deployment configuration, runtime settings, and bindings. By default the response includes the current `status` of the function. Set the `export` query parameter to `true` to omit read-only fields (currently only `status` ) so that the response payload can be used directly as the body of a create request. This is useful for backing up an eventing function or for transferring it to a different cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | | export | boolean Default: false Example: export=true When set to | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "name": "my_function", - "description": "Replicates document mutations to a downstream collection.", - "status": "deployed", - "code": "function OnUpdate(doc, meta, xattrs) {\n log(\"Doc created/updated\", meta.id);\n}\n\nfunction OnDelete(meta, options) {\n log(\"Doc deleted/expired\", meta.id);\n}\n", - "eventSource": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "eventMetadataStorage": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "settings": { - "workerCount": 1, - "scriptTimeout": 30, - "sqlConsistency": "request", - "languageCompatibility": "7.2.0", - "feedBoundary": "everything", - "maxTimerContextSize": 1024, - "allowSyncDocuments": false, - "cursorAware": true }, - "bindings": { - "buckets": [ - { - "alias": "src", - "bucket": "travel-sample", - "scope": "*", - "collection": "*", - "permission": "readWrite" } ], - "urls": [ - { - "alias": "api", - "allowCookies": true, - "validateTLSCertificate": true, - "authentication": { - "type": "none" } } ], - "constants": [ - { - "alias": "maxRetries", - "value": "3" } ] } } Delete an eventing function. The function must be undeployed prior to deletion. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Applies a partial update to an existing eventing function on the specified cluster. Only the fields that are supplied in the request body are modified; any field that is omitted is left unchanged on the function. For nested objects (`eventSource` , `eventMetadataStorage` , `settings` ), the same rule applies recursively. For the binding lists under `bindings` , supplying a category replaces that list in full with the value provided, and omitting a category leaves it unchanged. Updates to `feedBoundary` only take effect when the function goes from undeployed to deployed. Other settings, code, and bindings changes are applied immediately. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Database Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | required | description | string The eventing function description. | | code | string The JavaScript code of the eventing function that gets executed in response to document mutations. The eventing service compresses the code before storing it. The compressed code must not exceed 128 KiB (131072 bytes); a function whose code is larger than this limit after compression is rejected. | object A reference to a Couchbase keyspace, identified by its bucket, scope, and collection. Every field is optional in an update request, and any field that is omitted is left unchanged on the function. | | object A reference to a Couchbase keyspace, identified by its bucket, scope, and collection. Every field is optional in an update request, and any field that is omitted is left unchanged on the function. | | object Runtime settings that control how the eventing function is executed. Every field is optional, and any field that is omitted is left unchanged on the function. | | object A binding is a construct that lets you separate environment-specific variables, like keyspace names, external endpoint URLs and credentials, and global constants, from the source code of the eventing function. A binding provides indirection between environment-specific artifacts and symbolic names, and helps move a function definition from a development to a production environment without changing the eventing code. Binding names must be valid JavaScript identifiers, and cannot conflict with built-in types. When a binding category ( Aliases must be unique across all three binding types. | - Payload Content type application/json `{`- "description": "Replicates document mutations to a downstream collection.", - "code": "function OnUpdate(doc, meta, xattrs) {\n log(\"Doc created/updated\", meta.id);\n}\n\nfunction OnDelete(meta, options) {\n log(\"Doc deleted/expired\", meta.id);\n}\n", - "eventSource": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "eventMetadataStorage": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "settings": { - "workerCount": 1, - "scriptTimeout": 30, - "sqlConsistency": "request", - "languageCompatibility": "7.2.0", - "feedBoundary": "everything", - "maxTimerContextSize": 1024, - "allowSyncDocuments": false, - "cursorAware": true }, - "bindings": { - "buckets": [ - { - "alias": "src", - "bucket": "travel-sample", - "scope": "*", - "collection": "*", - "permission": "readWrite" } ], - "urls": [ - { - "alias": "api", - "allowCookies": true, - "validateTLSCertificate": true, - "authentication": { - "type": "none" } } ], - "constants": [ - { - "alias": "maxRetries", - "value": "3" } ] } } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Creates a new eventing function on the specified cluster. The function is created in the `undeployed` state and must be deployed separately before it begins processing mutations. The cluster must have at least one eventing node available in order to create a function. The function includes its JavaScript code, the source and metadata keyspaces, runtime settings, and any bucket, URL, or constant bindings. Optional fields that are omitted from the payload are populated with the defaults documented on the request schema. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Database Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | required | name required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ The name of the eventing function. | | description | string or null The eventing function description. | | code | string Default: "function OnUpdate(doc, meta, xattrs) {\n // Add your mutation logic here\n}\n\nfunction OnDelete(meta, options) {\n // Add your delete handling logic here\n}\n" The JavaScript code of the eventing function that gets executed in response to document mutations. The eventing service compresses the code before storing it. The compressed code must not exceed 128 KiB (131072 bytes); a function whose code is larger than this limit after compression is rejected. | required | object A reference to a Couchbase keyspace, identified by its bucket, scope, and collection. | required | object A reference to a Couchbase keyspace, identified by its bucket, scope, and collection. | object (EventingFunctionSettings) Runtime settings that control how the function is executed. | | object (EventingFunctionBindings) A binding is a construct that lets you separate environment-specific variables, like keyspace names, external endpoint URLs and credentials, and global constants, from the source code of the Eventing Function. A binding provides indirection between environment-specific artifacts and symbolic names, and helps move a function definition from a development to a production environment without changing the eventing code. Binding names must be valid JavaScript identifiers, and cannot conflict with built-in types. An Eventing Function can have no bindings, one binding, or several bindings. Aliases must be unique across all three binding types. | - Payload Content type application/json `{`- "name": "my_function", - "description": "Replicates document mutations to a downstream collection.", - "code": "function OnUpdate(doc, meta, xattrs) {\n log(\"Doc created/updated\", meta.id);\n}\n\nfunction OnDelete(meta, options) {\n log(\"Doc deleted/expired\", meta.id);\n}\n", - "eventSource": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "eventMetadataStorage": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "settings": { - "workerCount": 1, - "scriptTimeout": 30, - "sqlConsistency": "request", - "languageCompatibility": "7.2.0", - "feedBoundary": "everything", - "maxTimerContextSize": 1024, - "allowSyncDocuments": false, - "cursorAware": true }, - "bindings": { - "buckets": [ - { - "alias": "src", - "bucket": "travel-sample", - "scope": "*", - "collection": "*", - "permission": "readWrite" } ], - "urls": [ - { - "alias": "api", - "allowCookies": true, - "validateTLSCertificate": true, - "authentication": { - "type": "none" } } ], - "constants": [ - { - "alias": "maxRetries", - "value": "3" } ] } } - 400 - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Lists the eventing functions on the cluster, including their status. You can optionally filter on status. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | status | Array of strings Items Enum: "deployed" "deploying" "undeployed" "undeploying" "paused" "pausing" Filter eventing functions by one or more status. When this query parameter is not set, all eventing functions will be returned no matter the state. Accepts a comma-separated list, or the same query parameter defined multiple times. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": [ - { - "name": "my_function", - "description": "Replicates document mutations to a downstream collection.", - "status": "deployed", - "code": "function OnUpdate(doc, meta, xattrs) {\n log(\"Doc created/updated\", meta.id);\n}\n\nfunction OnDelete(meta, options) {\n log(\"Doc deleted/expired\", meta.id);\n}\n", - "eventSource": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "eventMetadataStorage": { - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline" }, - "settings": { - "workerCount": 1, - "scriptTimeout": 30, - "sqlConsistency": "request", - "languageCompatibility": "7.2.0", - "feedBoundary": "everything", - "maxTimerContextSize": 1024, - "allowSyncDocuments": false, - "cursorAware": true }, - "bindings": { - "buckets": [ - { - "alias": "src", - "bucket": "travel-sample", - "scope": "*", - "collection": "*", - "permission": "readWrite" } ], - "urls": [ - { - "alias": "api", - "allowCookies": true, - "validateTLSCertificate": true, - "authentication": { - "type": "none" } } ], - "constants": [ - { - "alias": "maxRetries", - "value": "3" } ] } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } This endpoint allows the user to change the eventing function to a deployed, undeployed, or paused state. The mapping for this is as follows: - deploy: deploys an undeployed eventing function causing it to start processing events. - undeploy: undeploys a deployed or paused eventing function, causing it to stop processing any events. - pause: pauses a deployed eventing function, causing it to stop processing events with the ability to resume its current progress in the future. - resume: resumes a paused eventing function (back to deployed state), causing it to continue to process events from where it was paused. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | | state required | string Enum: "deploy" "undeploy" "pause" "resume" The action to take on the specified eventing function. | - Payload Content type application/json `{`- "state": "deploy" } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Returns the most recent 40960 bytes of application log messages for the specified function. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | functionName required | string [ 1 .. 100 ] characters ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ Example: my_eventing_function The name of the eventing function to target. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type text/plain 2026-05-07T18:39:00.742+00:00 [INFO] "Doc created/updated" "doc1" Events represent a trail of actions that users performs within Capella at an organization or project level Lists all the events information under a organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Creator - Project Owner - Project Manager - Project Viewer - Database Data Reader - Database Data Reader/Writer The results are always limited by the role and scope of the caller's privileges. Currently, only the `tags` filter is multi-valued; all other filters are single-valued. By default, `to` is set to the request time, and `from` is set to 24 hours before the request time. If 'to' is set and 'from' is not set, then 'from' is set to 24 hours before 'to'. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Items Enum: "timestamp" "severity" Example: sortBy=timestamp Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | userIds | Array of strings [ items ] Example: userIds=ffffffff-aaaa-1414-eeee-000000000000 Filter by user UUID. Default is to return events corresponding to all users. | | clusterIds | Array of strings [ items ] Example: clusterIds=ffffffff-aaaa-1414-eeee-000000000000 List of clusterIds to filter on. By default events corresponding to all clusters are returned. | | projectIds | Array of strings [ items ] Example: projectIds=ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of projects to filter on. By default, events corresponding to all projects are returned | | severityLevels | Array of strings Items Enum: "info" "warning" "critical" Filter by severity levels. Default is to return events corresponding to all supported severity levels. | | tags | Array of strings Items Enum: "availability" "billing" "maintenance" "performance" "security" "alert" Example: tags=availability&tags=billing&tags=maintenance&tags=performance&tags=security&tags=alert Filter by tags. Default is to return events corresponding to all supported tag. Tags are | | from | string Example: from=2024-04-24T12:53:59.000Z Start date in RFC3339 format. If not provided, events starting from last 24 hours are returned. | | to | string Example: to=2024-04-25T12:53:59.000Z End datetime in the last 24 hours, RFC3339 format. Defaults to Now. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000001", - "source": "System", - "key": "cluster_down", - "severity": "critical", - "timestamp": "2024-04-24T08:30:00Z", - "projectId": "ffffffff-aaaa-1414-eeee-000000000003", - "projectName": "example-project", - "clusterId": "ffffffff-aaaa-1414-eeee-000000000004", - "clusterName": "example-cluster", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000006", - "appServiceName": "example-appService", - "userId": "ffffffff-aaaa-1414-eeee-000000000008", - "userName": "John Doe", - "userEmail": "john.doe@example.com", - "sessionId": "ffffffff-aaaa-1414-eeee-000000000009", - "requestId": "ffffffff-aaaa-1414-eeee-000000000010", - "kv": { - "key1": "value1", - "key2": "value2" }, - "summary": "Cluster is down due to network outage.", - "incidentIds": [ - "ffffffff-aaaa-1414-eeee-000000000011" ], - "occurrenceCount": 3, - "alertKey": "cluster_down_example" } ] } Fetches the details of an event by ID. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Creator - Project Owner - Project Manager - Project Viewer - Database Data Reader - Database Data Reader/Writer The results are always limited by the role and scope of the caller's privileges. To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | eventId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The event ID of the event. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000001", - "source": "System", - "key": "cluster_down", - "severity": "critical", - "timestamp": "2024-04-24T08:30:00Z", - "projectId": "ffffffff-aaaa-1414-eeee-000000000003", - "projectName": "example-project", - "clusterId": "ffffffff-aaaa-1414-eeee-000000000004", - "clusterName": "example-cluster", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000006", - "appServiceName": "example-appService", - "userId": "ffffffff-aaaa-1414-eeee-000000000008", - "userName": "John Doe", - "userEmail": "john.doe@example.com", - "sessionId": "ffffffff-aaaa-1414-eeee-000000000009", - "requestId": "ffffffff-aaaa-1414-eeee-000000000010", - "kv": { - "key1": "value1", - "key2": "value2" }, - "summary": "Cluster is down due to network outage.", - "incidentIds": [ - "ffffffff-aaaa-1414-eeee-000000000011" ], - "occurrenceCount": 3, - "alertKey": "cluster_down_example" } Lists all the events information under a project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader - Database Data Reader/Writer The results are always limited by the role and scope of the caller's privileges. Currently, only the `tags` filter is multi-valued; all other filters are single-valued. By default, `to` is set to the request time, and `from` is set to 24 hours before the request time. If 'to' is set and 'from' is not set, then 'from' is set to 24 hours before 'to'. To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Items Enum: "timestamp" "severity" Example: sortBy=timestamp Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | userIds | Array of strings [ items ] Example: userIds=ffffffff-aaaa-1414-eeee-000000000000 Filter by user UUID. Default is to return events corresponding to all users. | | clusterIds | Array of strings [ items ] Example: clusterIds=ffffffff-aaaa-1414-eeee-000000000000 List of clusterIds to filter on. By default events corresponding to all clusters are returned. | | severityLevels | Array of strings Items Enum: "info" "warning" "critical" Filter by severity levels. Default is to return events corresponding to all supported severity levels. | | tags | Array of strings Items Enum: "availability" "billing" "maintenance" "performance" "security" "alert" Example: tags=availability&tags=billing&tags=maintenance&tags=performance&tags=security&tags=alert Filter by tags. Default is to return events corresponding to all supported tag. Tags are | | from | string Example: from=2024-04-24T12:53:59.000Z Start date in RFC3339 format. If not provided, events starting from last 24 hours are returned. | | to | string Example: to=2024-04-25T12:53:59.000Z End datetime in the last 24 hours, RFC3339 format. Defaults to Now. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000001", - "source": "System", - "key": "cluster_down", - "severity": "critical", - "timestamp": "2024-04-24T08:30:00Z", - "projectId": "ffffffff-aaaa-1414-eeee-000000000003", - "projectName": "example-project", - "clusterId": "ffffffff-aaaa-1414-eeee-000000000004", - "clusterName": "example-cluster", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000006", - "appServiceName": "example-appService", - "userId": "ffffffff-aaaa-1414-eeee-000000000008", - "userName": "John Doe", - "userEmail": "john.doe@example.com", - "sessionId": "ffffffff-aaaa-1414-eeee-000000000009", - "requestId": "ffffffff-aaaa-1414-eeee-000000000010", - "kv": { - "key1": "value1", - "key2": "value2" }, - "summary": "Cluster is down due to network outage.", - "incidentIds": [ - "ffffffff-aaaa-1414-eeee-000000000011" ], - "occurrenceCount": 3, - "alertKey": "cluster_down_example" } ] } Fetches the details of an event by ID within a project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader - Database Data Reader/Writer The results are always limited by the role and scope of the caller's privileges. To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | eventId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The event ID of the event. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000001", - "source": "System", - "key": "cluster_down", - "severity": "critical", - "timestamp": "2024-04-24T08:30:00Z", - "projectId": "ffffffff-aaaa-1414-eeee-000000000003", - "projectName": "example-project", - "clusterId": "ffffffff-aaaa-1414-eeee-000000000004", - "clusterName": "example-cluster", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000006", - "appServiceName": "example-appService", - "userId": "ffffffff-aaaa-1414-eeee-000000000008", - "userName": "John Doe", - "userEmail": "john.doe@example.com", - "sessionId": "ffffffff-aaaa-1414-eeee-000000000009", - "requestId": "ffffffff-aaaa-1414-eeee-000000000010", - "kv": { - "key1": "value1", - "key2": "value2" }, - "summary": "Cluster is down due to network outage.", - "incidentIds": [ - "ffffffff-aaaa-1414-eeee-000000000011" ], - "occurrenceCount": 3, - "alertKey": "cluster_down_example" } Endpoints to manage resources that are available with free tier plan. These resources are buckets, clusters and app services. Creates a free tier cluster. This is a 1 node cluster than only runs data, query, index and search services. You can have at most 1 free tier cluster per tenant. The following features are not available for free tier clusters: - backup/restore - private endpoint service - network peering - audit logs - alert integration - CMEK - on/off schedule Only cluster name, description, CSP, region and CIDR are configurable. There are limited regions available based on CSP: a. for AWS they are us-east-2, eu-west-1, ap-southeast-1 b. for GCP they are us-central1, europe-west1, asia-east1 c. for Azure they are eastus, swedencentral, koreacentral In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | name required | string <= 256 characters Name of the cluster (up to 256 characters). | | description | string <= 1024 characters Description of the cluster (up to 1024 characters). | required | object (CloudProvider) The cloud provider where the cluster will be hosted. For information about providers and supported regions, see: | - Payload Content type application/json `{`- "name": "Free-Tier-Cluster-1", - "description": "My first test AWS cluster for multiple services.", - "cloudProvider": { - "type": "aws", - "region": "us-east-2", - "cidr": "10.1.30.0/23" } } - 202 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Get details of the free tier cluster. While only cluster name, description, CSP, region and CIDR are configurable, other read only fields are retrieved. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "appServiceId": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Test Cluster", - "description": "Description of the cluster", - "configurationType": "multiNode", - "connectionString": "couchbases://cb.irxmynm6vekhe5.cloud.couchbase.com", - "cloudProvider": { - "type": "aws", - "region": "us-east-1", - "cidr": "10.1.30.0/23" }, - "couchbaseServer": { - "version": "7.1" }, - "serviceGroups": [ - { - "node": { - "compute": { - "cpu": 4, - "ram": 16 }, - "disk": { - "type": "gp3", - "storage": 50, - "iops": 3000 } }, - "numOfNodes": 3, - "services": [ - "data" ] } ], - "availability": { - "type": "single" }, - "support": { - "plan": "free", - "timezone": "ET" }, - "currentState": "deploying", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "cmekId": "ffffffff-aaaa-1414-eeee-000000000000", - "enablePrivateDNSResolution": true } Updates an existing free tier cluster. Only name and description are configurable. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | name required | string <= 256 characters The new name of the cluster (up to 256 characters). | | description required | string <= 1024 characters The new cluster description (up to 1024 characters). | - Payload Content type application/json `{`- "name": "My-New-Cluster", - "description": "The extended description of my new cluster." } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing free tier cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Turn free tier cluster on. It will also turn on the linked app services, if any. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 400 - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Turn free tier cluster off. Turning off your cluster turns off the compute for your cluster but the storage remains. All of the data, schema (buckets, scopes, and collections), and indexes remain, as well as cluster configuration, including users and allow lists. Turning off cluster will also turn off any linked app services. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 400 - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Creates a free tier App Service. This is a 1 node cluster which can only be linked to a free tier cluster. The following features are not available for free tier clusters: - audit logging - turn App Service off/on Free tier App Service can only be turned off/on when the linked free tier cluster is turned off/on. Only name a description are configurable. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string <= 256 characters Name of App Service. | | description | string <= 256 characters A short description of the App Service. | - Payload Content type application/json `{`- "name": "MyAppSyncService", - "description": "My app sync service." } - 202 - 400 - 403 - 404 - 409 - 412 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Fetches the details of the free tier App Service. While only name and description are configurable, other read only fields will be displayed. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "My App Service", - "description": "Description of the App Service.", - "cloudProvider": "aws", - "nodes": 2, - "compute": { - "cpu": 2, - "ram": 4 }, - "clusterId": "ffffffff-aaaa-1414-eeee-000000000000", - "currentState": "deploying", - "version": "3.141.5", - "plan": "free", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Updates an existing free tier App Service. Only name and description are configurable. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | name | string <= 256 characters Name of the App Service (up to 256 characters). | | description | string A short description of the App Service. | - Payload Content type application/json `{`- "name": "MyAppSyncService", - "description": "My app sync service." } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing free tier App Service. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | appServiceId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the appService. | - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Creates a new free tier bucket. This is a Couchbase bucket where only the name a memory quota is configurable. Other bucket properties use default values. The following features are not available for free tier buckets: - bucket flush - migrate to another storage engine like magma Note that you can only create a free tier bucket on a free tier cluster. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string <= 100 characters Name of the bucket. This field cannot be changed later. The name should adhere to the following rules: Characters used for the name should be in the ranges of A-Z, a-z, and 0-9; plus the underscore, period, dash, and percent characters. The name can be a maximum of 100 characters in length. The name cannot have 0 characters or empty. Minimum length of name is 1. The name cannot start with a `.` (period). | | memoryAllocationInMb | integer Default: 100 The bucket memory quota. It defaults to 100 MiB. | - Payload Content type application/json `{`- "name": "A-Free-Tier-Bucket", - "memoryAllocationInMb": 200 } - 201 - 400 - 403 - 422 - 429 - 500 Content type application/json `{`- "id": "dGVzdA" } Lists all buckets in the free tier cluster. While only name and memory quota are configurable for free tier buckets, the response will show additional read only bucket properties such as replicas, etc. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "dGVzdA", - "name": "My-First-Bucket", - "type": "string", - "storageBackend": "couchstore", - "vbuckets": 128, - "memoryAllocationInMb": 100, - "bucketConflictResolution": "string", - "durabilityLevel": "string", - "replicas": 0, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "evictionPolicy": "fullEviction", - "stats": { - "itemCount": 10, - "opsPerSecond": 0, - "diskUsedInMib": 17, - "memoryUsedInMib": 50 }, - "priority": 0 } ], - "clusterStats": { - "freeMemoryInMb": 640, - "totalMemoryInMb": 1040, - "maxReplicas": 2 } } Get bucket. While only name and memory quota are configurable for free tier buckets, the response will show additional read only bucket properties such as replicas, etc. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "dGVzdA", - "name": "My-First-Bucket", - "type": "string", - "storageBackend": "couchstore", - "vbuckets": 128, - "memoryAllocationInMb": 100, - "bucketConflictResolution": "string", - "durabilityLevel": "string", - "replicas": 0, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "evictionPolicy": "fullEviction", - "stats": { - "itemCount": 10, - "opsPerSecond": 0, - "diskUsedInMib": 17, - "memoryUsedInMib": 50 }, - "priority": 0 } Updates an existing free tier bucket. Only bucket memory quota is configurable. Once created bucket name cannot be changed. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | | memoryAllocationInMb required | integer The new amount of memory to allocate for the bucket memory in MiB. | | enableCrossClusterVersioning | boolean (EnableCrossClusterVersioning) This being enabled is a pre-requisite to a few XDCR features. When enabled, each document processed by XDCR will have additional metadata stored, called the Hybrid Logical Vector (HLV), in the document extended attributes (xattrs). The Cross Cluster Versioning setting cannot be disabled after it is enabled. By default, this value reflects what its current value is in the bucket, so omit this setting to leave it as it's current value. See the documentation for enableCrossClusterVersioning and the dependent features for important details on when to enable this setting. | - Payload Content type application/json `{`- "memoryAllocationInMb": 0, - "enableCrossClusterVersioning": true } - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing free tier bucket. To learn more about bucket configuration, see Buckets. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Network Peering enables you to configure a secure private network connection between the Virtual Private Cloud (VPC) hosting your applications and the VPC of your Couchbase Capella database. You can set a network peering connection from a Couchbase Capella database hosted with Amazon Web Services (AWS), Google Cloud (GCP) or Azure. Creates a network peering record for Capella. Capella does not support peering of networks between different cloud providers. For example, you cannot peer GCP VPC that hosts Capella cluster with an AWS VPC hosting an application. - Create configures a Couchbase Capella private networking with the cloud provider. Setting up a private network enables your application to interact with Couchbase Capella over a private connection by co-locating them through network peering. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string Name of the peering relationship. - The name of the peering relationship must be at least 2 characters long. - The name can not exceed 128 characters. | | providerType required | string Type of the cloud provider for which the peering connection is created. Which are- 1. aws 2. gcp 3. azure | required | AWSConfigData (object) or GCPConfigData (object) or AzureConfigData (object) The config data for a peering relationship for a cluster on AWS, GCP, or Azure. | - Payload Content type application/json Example `{`- "name": "VPCPeerTestAWS", - "providerType": "aws", - "providerConfig": { - "accountID": 123456789110, - "vpcId": "vpc-00ff00ff00ff0f", - "region": "us-east-1", - "cidr": "10.1.0.0/23" } } - 201 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the network peering records. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "VPCPeerTest", - "status": { - "state": "complete", - "reasoning": "sample_reasoning" }, - "providerConfig": { - "providerId": "pcx-000000fff000fff", - "AWSConfig": { - "accountId": "00000011123", - "vpcId": "vpc-141f0fffff141aa00", - "region": "us-east-1", - "cidr": "10.0.0.0/16" } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details of the network peering meta data based on the peerID provided. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | peerId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The ID of the network peer record. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "VPCPeerTest", - "status": { - "state": "complete", - "reasoning": "sample_reasoning" }, - "commands": [ - "string" ], - "providerConfig": { - "providerId": "pcx-000000fff000fff", - "AWSConfig": { - "accountId": "00000011123", - "vpcId": "vpc-141f0fffff141aa00", - "region": "us-east-1", - "cidr": "10.0.0.0/16" } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Deletes the network peering relationship. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | peerId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The ID of the network peer record. | - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Retrieves the role assignment command or script to be executed in the Azure CLI to assign a new network contributor role. It scopes only to the specified subscription and the virtual network within that subscription. Before using this API, please make sure that the *Admin consent granting*process has been completed through the Capella UI.This process to grant consent to the VNET peering service principal in the external Azure tenant needs to be done only once for the organization i.e. the first time when the VNET peering is created. Consenting to this permission request creates a service principal that grants Capella access to the Azure tenant to perform VNET peering. To complete the admin consent granting process, the Organization owner should follow the steps below - - Login to the Capella UI. - Deploy an Azure Cluster or open an existing one you want to peer with your application. - Click the Settings tab, in the navigation pane click VNET Peering. - Click Setup VNET Peering. - Confirm that you have a user with the Global Administrator Role. - Add the Azure configuration details to allow peering access. - Click Allow Peering Access - A new browser tab opens. Sign in to Azure if you have not already. - In Azure, accept Capella’s permissions request - The Azure permissions request page is open in the new browser tab and consent to the new permissions request. For more information refer [docs]- https://docs.couchbase.com/cloud/clouds/vpc-peering/peer-azure.html On accepting the new permission, you automatically return to the Capella VNET peering page. The Capella VNET peering page shows a notice indicating that peering access is successful. The Organization Owner should set this up once, then for network peering, use the public API - - Use this `Get Azure VNET Peering CLI Command` API to fetch the command. - Run the role assignment command in the Azure CLI. - Use the `Create VPC Peering` API to create the network peering. - Use this In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | tenantId required | string The Azure tenant ID. To find your tenant ID, see How to find your Azure Active Directory tenant ID. | | subscriptionId required | string Subscription ID is a GUID that uniquely identifies your subscription to use Azure services. To find your subscription ID, see Find your Azure subscription. | | resourceGroup required | string The resource group name holding the resource you’re connecting with Capella. | | vnetId required | string The VNet ID is the name of the virtual network in Azure. | | vnetPeeringServicePrincipal required | string The enterprise application object ID for the Capella service principal. You can find the enterprise application object ID in Azure by selecting Azure Active Directory -> Enterprise applications. Next, select the application name, the object ID is in the Object ID box. | - Payload Content type application/json `{`- "tenantId": "ffffffff-aaaa-1414-eeee-000000000000", - "subscriptionId": "ffffffff-aaaa-1414-eeee-000000000000", - "resourceGroup": "sample-resource-group", - "vnetId": "sample-vnet", - "vnetPeeringServicePrincipal": "ffffffff-aaaa-1414-eeee-000000000000" } - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "command": "az role assignment create \\ --assignee-object-id ffffffff-aaaa-1414-eeee-000000000000 \\ --role \"Network Contributor\" \\ --scope /subscriptions/ffffffff-aaaa-1414-eeee-000000000000/resourceGroups/cb-private-net-demo/providers/Microsoft.Network/virtualNetworks/vnet-test \\ --assignee-principal-type ServicePrincipal" } The On/Off Schedule endpoint enables you to schedule when your provisioned database should turn on or off to save costs. Turning off your database only turns off the compute; all of your data, schema (buckets, scopes, and collections), and indexes remain, as well as your cluster configuration, including users and allow lists. When you turn your provisioned database off, you will be charged the OFF amount for the database. You can turn the cluster and any linked app services on or off on demand using the cluster API. This provides the means to add a new cluster on/off schedule. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | timezone required | string (onOffTimezone) Enum: "Pacific/Midway" "US/Hawaii" "US/Alaska" "US/Pacific" "US/Mountain" "US/Central" "US/Eastern" "America/Puerto_Rico" "Canada/Newfoundland" "America/Argentina/Buenos_Aires" "Atlantic/Cape_Verde" "Europe/London" "Europe/Amsterdam" "Europe/Athens" "Africa/Nairobi" "Asia/Tehran" "Indian/Mauritius" "Asia/Karachi" "Asia/Calcutta" "Asia/Dhaka" "Asia/Bangkok" "Asia/Hong_Kong" "Asia/Tokyo" "Australia/North" "Australia/Sydney" "Pacific/Ponape" "Antarctica/South_Pole" Timezone for the schedule | required | Array of objects (Days) | - Payload Content type application/json Example `{`- "timezone": "US/Pacific", - "days": [ - { - "day": "monday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "tuesday", - "state": "custom", - "from": { - "hour": 21, - "minute": 30 }, - "to": { - "hour": 23, - "minute": 30 } }, - { - "day": "wednesday", - "state": "on" }, - { - "day": "thursday", - "state": "on" }, - { - "day": "friday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 15, - "minute": 30 } }, - { - "day": "saturday", - "state": "off" }, - { - "day": "sunday", - "state": "off" } ] } - 403 - 404 - 409 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Fetches the details of the cluster on/off schedule for the given cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "activationStatus": "active", - "timezone": "US/Pacific", - "days": [ - { - "day": "monday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "tuesday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "wednesday", - "state": "on" }, - { - "day": "thursday", - "state": "on" }, - { - "day": "friday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "saturday", - "state": "off" }, - { - "day": "sunday", - "state": "off" } ] } This provides the means to update an existing cluster on/off schedule. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | timezone required | string (onOffTimezone) Enum: "Pacific/Midway" "US/Hawaii" "US/Alaska" "US/Pacific" "US/Mountain" "US/Central" "US/Eastern" "America/Puerto_Rico" "Canada/Newfoundland" "America/Argentina/Buenos_Aires" "Atlantic/Cape_Verde" "Europe/London" "Europe/Amsterdam" "Europe/Athens" "Africa/Nairobi" "Asia/Tehran" "Indian/Mauritius" "Asia/Karachi" "Asia/Calcutta" "Asia/Dhaka" "Asia/Bangkok" "Asia/Hong_Kong" "Asia/Tokyo" "Australia/North" "Australia/Sydney" "Pacific/Ponape" "Antarctica/South_Pole" Timezone for the schedule | required | Array of objects (Days) | - Payload Content type application/json `{`- "timezone": "US/Pacific", - "days": [ - { - "day": "monday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "tuesday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "wednesday", - "state": "on" }, - { - "day": "thursday", - "state": "on" }, - { - "day": "friday", - "state": "custom", - "from": { - "hour": 12, - "minute": 30 }, - "to": { - "hour": 14, - "minute": 30 } }, - { - "day": "saturday", - "state": "off" }, - { - "day": "sunday", - "state": "off" } ] } - 403 - 404 - 409 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Deletes the cluster on/off schedule for the given cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Temporarily suspends the cluster on/off schedule without deleting its configuration. While paused, the cluster will not automatically start or stop based on the defined schedule. You can resume the schedule at any time using the corresponding unpause endpoint. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Unpause cluster on/off schedule In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 403 - 404 - 409 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Couchbase Capella uses an ordered hierarchy to help you keep all of your data organized and securely accessible. The entity at the top of the hierarchy is called an organization. Everything you do in Capella, whether it's creating a cluster or managing billing, happens within the scope of an organization. Fetches the details of an organization by ID. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Creator - Organization Member To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "My-Organization", - "subdomain": "abc", - "description": "The description of the organization.", - "preferences": { - "sessionDuration": 3600 }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Updates an existing organization configuration. Use this endpoint to add, update, and delete network subdomains. Subdomains are not automatically available. You must contact Couchbase support to enable this feature. To open a Support ticket, see Create a Support Ticket. Subdomains: - Can have a maximum of 30 alphanumeric characters. - Must be a unique string and not already in use in another tenant or organization. Empty strings are allowed. - Only affect new clusters. You cannot update existing clusters to include a new subdomain. In order to access this endpoint, the provided API key must have the following role: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | subdomain required | string <= 30 characters The new name of the subdomain for the organization. | - Payload Content type application/json Example `{`- "subdomain": "abc" } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Returns a list of all organizations the user has access to. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Creator - Organization Member To learn more, see Organization Roles. - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "My-Organization", - "subdomain": "abc", - "description": "The description of the organization.", - "preferences": { - "sessionDuration": 3600 }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ] } Private endpoint service allows you to access your Capella cluster from your private network, using private endpoints. This endpoint determines if the endpoint service is enabled or disabled on your cluster, and shows which routes are configured to use private endpoints. The REST route (port 18091) is used by XDCR, so enabling it allows XDCR to use private endpoints. The `routes` field is only present when private endpoint service is enabled (`enabled: true` ), showing the current state of each route (e.g., `xdcr: true` if enabled, `xdcr: false` if disabled). When private endpoint service is disabled (`enabled: false` ), the `routes` field is not included in the response. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "enabled": true, - "status": "enabled", - "routes": { - "xdcr": true, - "metrics": false } } Enable private endpoint service on your cluster. Supporting infrastructure is deployed and it may take a few minutes for private endpoints to be available. After it's enabled, you can create private endpoint in your network. You can do this using the cloud provider's CLI. For an example, use the POST privateEndpointService/endpointCommand endpoint to get the command. You can optionally enable routes such as REST API (port 18091) to use private endpoints at the time of enablement. Enabling the REST route allows XDCR to use private endpoints since XDCR uses the REST API. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Manager - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | object Routes configuration for private endpoints. Only present when private endpoint service is enabled ( | - Payload Content type application/json `{`- "routes": { - "xdcr": true, - "metrics": false } } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Update the configuration of routes to use private endpoints after private endpoint service has been enabled. This endpoint allows you to enable or disable private endpoint usage for routes. The REST route (port 18091) is used by XDCR, so enabling it allows XDCR to use private endpoints, while disabling it stops routing XDCR traffic via private endpoints. Setting a route to true routes traffic through private endpoints, while setting it to false stops routing that route's traffic via private endpoints. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Manager - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | required | object Routes configuration for private endpoints. Only present when private endpoint service is enabled ( | - Payload Content type application/json `{`- "routes": { - "xdcr": true, - "metrics": false } } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Disable private endpoint service on your cluster. Supporting infrastructure is removed and it may take a few minutes before private endpoints is disabled. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Returns a list of private endpoints associated with the endpoint service for your Capella cluster, along with the endpoint state. Each private endpoint connects a private network to the Capella cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Creator - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "privateEndpointDNS": "abcdef123456.pl.cloud.couchbase.com", - "endpoints": [ - { - "id": "vpce-000000000000aaaaa", - "serviceName": "com.amazonaws.vpce.us-east-1.vpce-svc-000000000000aaaaa", - "status": "linked" } ] } Retrieve the command or script to be executed in order to create the private endpoint which will provides a private connection between the specified VPC and the specified Capella private endpoint service. An example for AWS: ``` aws ec2 create-vpc-endpoint \ --vpc-id vpc-1234 \ --region us-east-1 \ --service-name com.amazonaws.vpce.us-east-1.vpce-svc-1234 \ --vpc-endpoint-type Interface \ --subnet-ids subnet-1234 ``` An example for Azure: ``` az network private-endpoint create \ --connection-name connection-1 \ --name private-endpoint \ --private-connection-resource-id svc-1 \ --resource-group test-rg \ --subnet subnet-1 \ --group-id sites \ --vnet-name vnet-1 ``` An example for GCP: ``` #!/bin/bash REGION='us-east1' NETWORK='psc-test' SUBNET='psc-test-1' CLUSTER='cluster-id' # Do not change BASE_DNS_NAME='private-endpoint.random.cloud.couchbase.com' SERVICE_ATTACHMENT=''projects/project-id/regions/us-east1/serviceAttachments/psc-id'' BOOTSTRAP_SERVICE=''projects/project-id/regions/us-east1/serviceAttachments/psc-bootstrap-id'' NETWORK_SHORT=${NETWORK:0:15} CLUSTER_SHORT=${CLUSTER:0:15} # Create private DNS zone gcloud dns managed-zones create $NETWORK_SHORT-$CLUSTER_SHORT --description="Private Endpoint for Capella cluster" --dns-name=$BASE_DNS_NAME --networks=$NETWORK --visibility=private gcloud dns record-sets transaction start --zone=$NETWORK_SHORT-$CLUSTER_SHORT # Create attachments and DNS records gcloud compute addresses create pe-address-$NETWORK_SHORT-$CLUSTER_SHORT --region=$REGION --subnet=$SUBNET IP_ADDRESS=$(gcloud compute addresses list --filter="name=pe-address-$NETWORK_SHORT-$CLUSTER_SHORT AND region:$REGION AND subnetwork:$SUBNET" --format="value(address)") gcloud compute forwarding-rules create endpoint-$NETWORK_SHORT-$CLUSTER_SHORT --region=$REGION --network=$NETWORK --address=pe-address-$NETWORK_SHORT-$CLUSTER_SHORT --target-service-attachment=$SERVICE_ATTACHMENT gcloud dns record-sets transaction add $IP_ADDRESS --name=pe.$BASE_DNS_NAME --type=A --ttl=300 --zone=$NETWORK_SHORT-$CLUSTER_SHORT gcloud compute addresses create pe-address-bootstrap-$NETWORK_SHORT-$CLUSTER_SHORT --region=$REGION --subnet=$SUBNET IP_ADDRESS=$(gcloud compute addresses list --filter="name=pe-address-bootstrap-$NETWORK_SHORT-$CLUSTER_SHORT AND region:$REGION AND subnetwork:$SUBNET" --format="value(address)") gcloud compute forwarding-rules create endpoint-bootstrap-$NETWORK_SHORT-$CLUSTER_SHORT --region=$REGION --network=$NETWORK --address=pe-address-bootstrap-$NETWORK_SHORT-$CLUSTER_SHORT --target-service-attachment=$BOOTSTRAP_SERVICE gcloud dns record-sets transaction add $IP_ADDRESS --name=private-endpoint.$BASE_DNS_NAME --type=A --ttl=300 --zone=$NETWORK_SHORT-$CLUSTER_SHORT # Execute transactions gcloud dns record-sets transaction execute --zone=$NETWORK_SHORT-$CLUSTER_SHORT ``` In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | One of | vpcID required | string [ 12 .. 21 ] characters The ID of your virtual network | | subnetIDs required | Array of strings | - Payload Content type application/json Example `{`- "vpcID": "vpc-1234", - "subnetIDs": [ - "subnet-1234" ] } - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "command": "aws ec2 create-vpc-endpoint --vpc-id vpc-1234 --region us-east-1 --service-name com.amazonaws.vpce.us-east-1.vpce-svc-1234 --vpc-endpoint-type Interface --subnet-ids subnet-1234" } Accept a new private endpoint connection request so that it is associated with the endpoint service. This means the private endpoint is available for use. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | endpointId required | string Example: vpce-1234 The VPC endpoint ID. | - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Removes the private endpoint associated with the endpoint service. This means the private endpoint is no longer able to connect to the private endpoint service. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | endpointId required | string Example: vpce-1234 The VPC endpoint ID. | - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Projects contain and allow access to Couchbase databases. Projects are used to organize and manage groups of Couchbase databases within organizations. An organization can contain any number of projects, and a project can contain any number of databases. Creates a new project under the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Creator To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | name required | string <= 128 characters The name of the project (up to 128 characters). | | description | string <= 256 characters A short description of the project (up to 256 characters). | - Payload Content type application/json `{`- "name": "My Project", - "description": "My awesome project" } - 201 - 400 - 403 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the projects under the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "description": "The description of my awesome project", - "name": "My-Awesome-Project", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details of the given project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "description": "The description of my awesome project", - "name": "My-Awesome-Project", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Update project name and or project description. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | name required | string <= 128 characters The new project name (up to 128 characters). | | description | string <= 256 characters The new project description (up to 256 characters). | - Payload Content type application/json `{`- "name": "My-New-Project", - "description": "The extended description of my awesome project." } - 400 - 403 - 404 - 412 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Used to manage primary and secondary indexes on your Capella cluster. You can CREATE/ALTER/DROP/BUILD indexes. It is recommended to use deferred index builds, especially for larger indexes. When creating indexes in bulk, we do not recommend sending requests to create all of them at once. Instead, we strongly recommend creating indexes in batches of 100 or less. CREATE/DROP/ALTER/BUILD primary and secondary indexes. To learn more about indexes please refer to the documentation. It is recommended to use deferred index builds, especially for larger indexes. When creating indexes in bulk, we do not recommend sending requests to create all of them at once. Instead, we strongly recommend creating indexes in batches of 100 or less. To access this endpoint the API key must have at least one of the following roles: - Organization Owner - Project Owner - Database Data Reader/Writer To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | definition required | string The index DDL statement. This can be a CREATE/DROP/ALTER/BUILD statement. Multiple delimited queries are not allowed. It is recommended to use deferred index builds, especially for larger indexes. When creating indexes in bulk, we do not recommend sending requests to create all of them at once. Instead, we strongly recommend creating indexes in batches of 100 or less. | - Payload Content type application/json Example `{`- "definition": "create index idx1 on `travel-sample`.inventory.route(airline, destinationairport, sourceairport) partition by hash(airline) where id in [1000,2000,3000]" } - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "errors": [ - { - "msg": "Index Not Found - cause: GSI index idx1 not found." } ] } Get index definitions in a keyspace. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucket required | string Example: bucket=bucket=travel-sample Specifies the bucket part of the key space. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | | scope | string Example: scope=scope=inventory Specifies the scope part of the key space. If unspecified, this will be the default scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | | collection | string Example: collection=collection=hotel Specifies the collection part of the key space. If unspecified, this will be the default collection. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "definitions": [ - { - "indexName": "def_icao", - "definition": "CREATE INDEX `def_icao` ON `travel-sample`(`icao`)" } ] } Get the index properties of a specified index in a keyspace. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | indexName required | string Example: def_city The name of the index. | | bucket required | string Example: bucket=bucket=travel-sample Specifies the bucket part of the key space. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | | scope | string Example: scope=scope=inventory Specifies the scope part of the key space. If unspecified, this will be the default scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | | collection | string Example: collection=collection=hotel Specifies the collection part of the key space. If unspecified, this will be the default collection. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "defnId": 14488149950011906000, - "indexName": "idx10", - "bucket": "travel-sample", - "scope": "inventory", - "collection": "airline", - "isPrimary": false, - "secExprs": [ - "destinationairport", - "sourceairport" ], - "where": "name is valued", - "numReplica": 1, - "status": "Ready" } Monitor the build status of an index. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | indexName required | string Example: def_city The name of the index. | | bucket required | string Example: bucket=bucket=travel-sample Specifies the bucket part of the key space. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | | scope | string Example: scope=scope=inventory Specifies the scope part of the key space. If unspecified, this will be the default scope. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | | collection | string Example: collection=collection=hotel Specifies the collection part of the key space. If unspecified, this will be the default collection. To learn more about scopes and collections, see Buckets, Scopes, and Collections. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "status": "Ready" } Replications (XDCR- Cross Data Center Replication) is a feature that allows you to replicate data across multiple Couchbase clusters. Cross Data Center Replication can protect against data-center failure, and also provide high-performance access to data for globally distributed mission-critical applications. Fetches the details of the given replication. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | replicationId required | string Example: aBc23DeFgHiJkLmNop6qRsTuVwX4yZaBcDeFgHiJk5LmNoPqRsTuVwXyZ1 The ID of the replication. | - 200 - 403 - 404 - 429 - 500 Content type application/json Example `{`- "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDEvdGVzdDI=", - "status": "running", - "changesLeft": 100, - "source": { - "project": { - "id": "44508406-5ef0-4b0b-be9f-f31dcc422ea0", - "name": "SourceProject" }, - "cluster": { - "id": "a86f56c2-c4b4-425c-8df6-fddd6e2c7ddb", - "name": "SourceCluster" }, - "bucket": { - "id": "dGVzdA", - "name": "SourceBucket", - "conflictResolutionType": "seqno" }, - "scopes": [ - { - "name": "source-scope-1", - "collections": [ - "source-collection-1", - "source-collection-2" ] }, - { - "name": "source-scope-2", - "collections": [ - "source-collection-3" ] } ] }, - "target": { - "project": { - "id": "55619517-6fg1-5c1c-cf0g-g42edd533fb1", - "name": "TargetProject" }, - "cluster": { - "id": "b95f56d2-d4c4-425c-8df6-eee7c2c8edab", - "name": "TargetCluster" }, - "bucket": { - "id": "dPVzdB", - "name": "TargetBucket", - "conflictResolutionType": "seqno" }, - "scopes": [ - { - "name": "target-scope-2", - "collections": [ - "target-collection-2", - "target-collection-4" ] }, - { - "name": "target-scope-3", - "collections": [ - "target-collection-5" ] } ] }, - "mappings": [ - { - "sourceScope": "source-scope-1", - "targetScope": "target-scope-2", - "collections": [ - { - "sourceCollection": "source-collection-1", - "targetCollection": "target-collection-2" }, - { - "sourceCollection": "source-collection-2", - "targetCollection": "target-collection-4" } ] }, - { - "sourceScope": "source-scope-2", - "targetScope": "target-scope-3", - "collections": [ - { - "sourceCollection": "source-collection-3", - "targetCollection": "target-collection-5" } ] } ], - "direction": "oneWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z" } } Deletes the specified replication. Note: Deleting an already-deleted replication returns a 404 Not Found. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | replicationId required | string Example: aBc23DeFgHiJkLmNop6qRsTuVwX4yZaBcDeFgHiJk5LmNoPqRsTuVwXyZ1 The ID of the replication. | - 400 - 401 - 403 - 404 - 409 - 422 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Update the configuration of an existing replication. **Update Behavior**: Only fields included in the request body will be updated. Omitted fields remain unchanged. **Note on Mappings**: When updating the mappings, you have three options: **Keep current settings**: Omit the`mappings` field &`allScopes` field entirely**Set explicit mappings**: Include`mappings` array with scope and/or collection definitions**Replicate full bucket**: Include`allScopes: true` instead of mappings You cannot specify both `mappings` and `allScopes: true` in the same request. **Note on Filter Expression Updates**: When the `filter.expressions.regEx` value is updated, the user must explicitly set `filter.expressions.skipRestream` to indicate the desired behavior: - If `skipRestream` is`false` (default), the replication will be saved and restarted to apply the new filter expression to all data. - If `skipRestream` is`true` , the new filter expression will apply**only to new mutations**, and the replication will not be restarted. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | replicationId required | string Example: aBc23DeFgHiJkLmNop6qRsTuVwX4yZaBcDeFgHiJk5LmNoPqRsTuVwXyZ1 The ID of the replication. | required | priority | string Default: "high" Enum: "low" "medium" "high" Priority represents the resource allocation to the replication. - low: Resource constraints are applied when competing with high priority replications - medium: Resource constraints are applied during initial processing when competing with high priority replications, then operates as high priority - high: No resource constraints are applied (default priority) | | networkUsageLimit | integer Default: 0 Network usage limit in MiB per second. Default is 0 meaning it is unlimited. | object (filter) Filter contains the replication settings which are passed to the Couchbase server API while creating a replication. | | | allScopes | boolean Default: false If true, all scopes will be replicated. If false, the scopes specified in the mappings field will be replicated. | Array of objects (mappings) Defines mappings from source to target scopes and collections. This field is only required if you are replicating specific scopes and collections. Note: If the collections array is empty or omitted, it implies all collections under that scope would be replicated. | - Payload Content type application/json Example `{`- "priority": "high", - "networkUsageLimit": 100, - "filter": { - "documentExcludeOptions": { - "deletion": false, - "expiration": false, - "ttl": false, - "binary": false }, - "expressions": { - "regEx": "REGEXP_CONTAINS(country, \"France\")", - "skipRestream": false } }, - "mappings": [ - { - "sourceScope": "source-scope-1", - "targetScope": "target-scope-1", - "collections": [ - { - "sourceCollection": "source-collection-1", - "targetCollection": "target-collection-1" }, - { - "sourceCollection": "source-collection-2", - "targetCollection": "target-collection-2" } ] } ] } - 400 - 401 - 403 - 404 - 409 - 422 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Fetches the details of the given replication job. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | jobId required | string Example: 3d4354af-6271-4ba3-aeba-469820d96d12 The ID of the job. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "jobId": "3d4354af-6271-4ba3-aeba-469820d96d12", - "state": "pending", - "retryNumber": 1, - "lastError": "fake error", - "replicationId": "UmlqdSBpcyBhd2Vzb21l", - "reverseReplicationId": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDEvdGVzdDI", - "lastUpdatedTimestamp": "2021-09-01T12:34:56Z" } Retrieves a paginated list of replications for the specified cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=status Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDEvdGVzdDI=", - "sourceCluster": "ClusterA", - "targetCluster": "ClusterB", - "status": "running", - "direction": "oneWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z" } }, - { - "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDMvdGVzdDQ=", - "sourceCluster": "ClusterA", - "targetCluster": "ClusterB", - "status": "paused", - "direction": "twoWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T13:45:30Z" } }, - { - "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDUvdGVzdDY=", - "sourceCluster": "ClusterA", - "targetCluster": "ClusterB", - "status": "pending", - "direction": "oneWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T15:10:22Z" } } ], - "cursor": { - "hrefs": { }, - "pages": { - "last": 1, - "page": 1, - "perPage": 5, - "totalItems": 3 } } } Creates a new replication between a source and a target cluster within the specified organization and project. Note: Replication is created from the perspective of the source cluster. The clusterId in the path should refer to the source cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | required | sourceBucket required | string The ID of the source bucket. | required | object Target contains all the metadata about a replication target. | | mode | string Default: "async" Enum: "async" "sync" This specifies the replication creation mode. | Array of objects (mappings) Defines mappings from source to target scopes and collections. This field is only required if you are replicating specific scopes and collections. Note: If the collections array is empty or omitted, it implies all collections under that scope would be replicated. | | | direction | string Default: "oneWay" Enum: "oneWay" "twoWay" Direction specifies the replication flow - whether it's oneWay (source to target only) or twoWay (also from target back to source). | | priority | string Default: "high" Enum: "low" "medium" "high" Priority represents the resource allocation to the replication. - low: Resource constraints are applied when competing with high priority replications - medium: Resource constraints are applied during initial processing when competing with high priority replications, then operates as high priority - high: No resource constraints are applied (default priority) | | networkUsageLimit | integer Default: 0 Network usage limit in MiB per second. 0 means unlimited. | object (filter) Filter contains the replication settings which are passed to the Couchbase server API while creating a replication. | - Payload Content type application/json Example `{`- "sourceBucket": "dGVzdA", - "target": { - "cluster": "b95f56d2-d4c4-425c-8df6-eee7c2c8edab", - "bucket": "dPVzdB" }, - "mappings": [ - { - "sourceScope": "source-scope-1", - "targetScope": "target-scope-1", - "collections": [ - { - "sourceCollection": "source-collection-1", - "targetCollection": "target-collection-1" }, - { - "sourceCollection": "source-collection-2", - "targetCollection": "target-collection-2" } ] } ] } - 201 - 202 - 400 - 401 - 403 - 404 - 409 - 422 - 500 Content type application/json `{`- "replicationId": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDEvdGVzdDI=", - "reverseReplicationId": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDEvdGVzdDI=" } Retrieves a paginated list of replications for the specified project. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=status Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | - 200 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDEvdGVzdDI=", - "sourceCluster": "ClusterA", - "targetCluster": "ClusterB", - "status": "running", - "direction": "oneWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z" } }, - { - "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDMvdGVzdDQ=", - "sourceCluster": "ClusterA", - "targetCluster": "ClusterB", - "status": "paused", - "direction": "twoWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T13:45:30Z" } }, - { - "id": "MDIwN23ewrerfetrmZmUzYzExYTcxMTA4MjJkYjJiNmYvdGVzdDUvdGVzdDY=", - "sourceCluster": "ClusterA", - "targetCluster": "ClusterB", - "status": "pending", - "direction": "oneWay", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T15:10:22Z" } } ], - "cursor": { - "hrefs": { }, - "pages": { - "last": 1, - "page": 1, - "perPage": 5, - "totalItems": 3 } } } Deactivates (pauses) a running replication. Note: Pausing a replication that is not in a valid state returns a 409 Conflict. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | replicationId required | string Example: aBc23DeFgHiJkLmNop6qRsTuVwX4yZaBcDeFgHiJk5LmNoPqRsTuVwXyZ1 The ID of the replication. | - 400 - 401 - 403 - 404 - 409 - 422 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Resumes a paused replication. Note: Resuming a replication that is not in a valid state returns a 409 Conflict. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | replicationId required | string Example: aBc23DeFgHiJkLmNop6qRsTuVwX4yZaBcDeFgHiJk5LmNoPqRsTuVwXyZ1 The ID of the replication. | - 400 - 401 - 403 - 404 - 409 - 422 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } The sampleBucket endpoint lets users easily create a bucket filled with sample data. This is a quick way for users to try out features and learn how things work with ready-to-use data. Loads predefined sample data into a cluster by selecting from three available options: - travel-sample - gamesim-sample - beer-sample Upon a successful request, a new bucket is created within the cluster, and populated with the chosen sample data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string Enum: "travel-sample" "gamesim-sample" "beer-sample" The name of the sample dataset to be loaded. The name has to be one of the following sample datasets. - travel-sample - gamesim-sample - beer-sample | - Payload Content type application/json `{`- "name": "travel-sample" } - 201 - 403 - 422 - 429 - 500 Content type application/json `{`- "bucketId": "dGVzdA", - "name": "travel-sample" } Lists all the sample buckets under the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "dGVzdA", - "name": "My-First-Bucket", - "type": "string", - "storageBackend": "couchstore", - "vbuckets": 128, - "memoryAllocationInMb": 100, - "bucketConflictResolution": "string", - "durabilityLevel": "string", - "replicas": 0, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "evictionPolicy": "fullEviction", - "stats": { - "itemCount": 10, - "opsPerSecond": 0, - "diskUsedInMib": 17, - "memoryUsedInMib": 50 }, - "priority": 0 } ], - "clusterStats": { - "freeMemoryInMb": 640, - "totalMemoryInMb": 1040, - "maxReplicas": 2 } } Fetches the configuration of the given bucket. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Database Data Reader/Writer - Database Data Reader To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "dGVzdA", - "name": "My-First-Bucket", - "type": "string", - "storageBackend": "couchstore", - "vbuckets": 128, - "memoryAllocationInMb": 100, - "bucketConflictResolution": "string", - "durabilityLevel": "string", - "replicas": 0, - "flush": false, - "flushEnabled": false, - "timeToLiveInSeconds": 100, - "enableCrossClusterVersioning": true, - "evictionPolicy": "fullEviction", - "stats": { - "itemCount": 10, - "opsPerSecond": 0, - "diskUsedInMib": 17, - "memoryUsedInMib": 50 }, - "priority": 0 } Deletes an existing bucket which was loaded with sample data. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | bucketId required | string Example: dGVzdA The ID of the bucket. It is the URL-compatible base64 encoding of the bucket name. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } To access an organization, your Couchbase Capella user account must be added to it. Accounts are added to an organization using email invitations sent from Capella by a user with the Organization Owner organization role. All organization users are given one or more organization roles that define what they can view and manage in their organization. Invites a new user under the organization. After making a REST API request, an invitation email is triggered and sent to the user. Upon receiving the invitation email, the user is required to click on a provided URL, which will redirect them to a page with a user interface (UI) where they can set their username and password. The modification of any personal information related to a user can only be performed by the user through the UI. Similarly, the user can solely conduct password updates through the UI. The "caller" possessing Organization Owner access rights retains the exclusive user creation capability. They hold the authority to assign roles at the organization and project levels. At present, our support is limited to the resourceType of "project" exclusively. In order to access this endpoint, the provided API key must have the following role: - Organization Owner To learn more, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | name | string <= 128 characters The name of the user. | | email required | string (Email) Email of the user. | | organizationRoles required | Array of strings (OrganizationRoles) Items Enum: "organizationOwner" "organizationMember" "projectCreator" | Array of objects (Resource) Default: [] | - Payload Content type application/json Example At present, our support is limited to the resourceType of "project" exclusively. Furthermore, the role designation is solely related to roles at the project level. `{`- "name": "John", - "email": "john.doe@example.com", - "organizationRoles": [ - "organizationMember" ], - "resources": [ - { - "id": "550e8400-e29b-41d4-a716-446655440000", - "type": "project", - "roles": [ - "projectViewer" ] }, - { - "id": "550e8400-e29b-41d4-a716-446655440000", - "type": "project", - "roles": [ - "projectDataReaderWriter" ] } ] } - 201 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Lists all the users in the organization and filter on the basis of projectId. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member - Project Creator The results are always limited by the role and scope of the caller's privileges. When retrieving a list of users through a GET request, if a user holds the organization owner role, the response will exclude project-level permissions for those users. This is because organization owners have full access to all resources within the organization, making project-level permissions irrelevant for them. To learn more about the roles, see Organization Roles and Project Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | projectId | string Example: projectId=ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json Example In the event that the API key holds "organizationOwner" access, information related to all projects within the organization will be returned. `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "John", - "email": "john.doe@example.com", - "status": "verified", - "inactive": false, - "organizationId": "ffffffff-aaaa-1414-eeee-000000000000", - "organizationRoles": [ - "organizationMember" ], - "lastLogin": "2023-07-17T07:05:39.116Z", - "region": "North America", - "timeZone": "(UTC +5:30) India Standard Time", - "enableNotifications": false, - "expiresAt": "2023-07-17T07:05:39.116Z", - "resources": [ - { - "id": "f98e6c87-41e3-4faa-9df4-906e8d4f1aaf", - "type": "project", - "roles": [ - "projectViewer" ] }, - { - "id": "b7c745ac-9fb8-4b63-a0e4-51230097a169", - "type": "project", - "roles": [ - "projectDataReaderWriter" ] }, - { - "id": "28b67422-63d5-46b1-9234-8ad4a1d2f7be", - "type": "project", - "roles": [ - "projectDataReaderWriter" ] }, - { - "id": "e3942eaa-0f52-43da-963d-87a5b6cb3805", - "type": "project", - "roles": [ - "projectDataReaderWriter" ] } ], - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56.000Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56.000Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Fetches the details of the given user. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Organization Member - Project Creator The results are always limited by the role and scope of the caller's privileges. When performing a GET request for a user with an organization owner role, the response will exclude project-level permissions for that user. This is because organization owners have access to all resources at the organization level, rendering project-level permissions unnecessary for them. To learn more about the roles, see Organization Roles and Project Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the control plane user. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "alex", - "email": "john.doe@example.com", - "status": "not-verified", - "inactive": false, - "organizationId": "ffffffff-aaaa-1414-eeee-000000000000", - "organizationRoles": [ - "projectCreator" ], - "lastLogin": "2023-07-17T07:05:39.116124897Z", - "region": "North America", - "timeZone": "(UTC -9:00) Alaska Standard Time", - "enableNotifications": true, - "expiresAt": "2023-07-17T07:05:39.116124897Z", - "resources": [ - { - "type": "project", - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "roles": [ - "projectManager" ] } ], - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Updates organizationRole and resources of the user. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner An Organization Owner API key can be utilized to update organizational-level roles and project-level roles for all projects within the organization. The Project Owner API key allows for updating project-level roles, solely within the projects where the API key holds the Project Owner role. The modification of any personal information related to a user, such as password updates, can only be performed by the respective user through the user interface (UI). The results are always limited by the role and scope of the caller's privileges. To learn more about the roles, see Organization Roles and Project Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the control plane user. | Array | op required | string Enum: "add" "remove" Type of operation. | | path required | string Path of resource that needs to be updated. Organization Roles: Resources: Resource Roles: | Array of OrganizationRoles (strings) or Array of ProjectRoles (strings) or Resource (object) | - Payload Content type application/json Example `[`- { - "op": "add", - "path": "/organizationRoles", - "value": [ - "projectCreator" ] } ] - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json Example `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "Jane", - "email": "jane.doe@example.com", - "status": "verified", - "inactive": false, - "organizationId": "ffffffff-aaaa-1414-eeee-000000000000", - "organizationRoles": [ - "organizationMember", - "projectCreator" ], - "lastLogin": "2023-07-17T07:05:39.116Z", - "region": "North America", - "timeZone": "(UTC +5:30) India Standard Time", - "enableNotifications": false, - "expiresAt": "2023-07-17T07:05:39.116Z", - "resources": [ - { - "id": "b7c745ac-9fb8-4b63-a0e4-51230097a169", - "type": "project", - "roles": [ - "projectViewer" ] }, - { - "id": "28b67422-63d5-46b1-9234-8ad4a1d2f7be", - "type": "project", - "roles": [ - "projectDataReaderWriter" ] } ], - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56.000Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56.000Z", - "version": 2 } } Removes user from the organization. In order to access this endpoint, the provided API key must have the following role: - Organization Owner To learn more about the roles, see Organization Roles. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | userId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the control plane user. | - 403 - 404 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Providers represents the integrations with external services that are required by AI Data Plane. These endpoints facilitate interactions with external services providers required by AI Data Plane. Lists all the Provider integrations configured a given organization. Use the `providerType` to filter on the type of Provider. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | providerType | string Enum: "awsS3" "openAI" "awsBedrock" Example: providerType=openAI Type of provider to filter on. By default all providers are returned. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "provider1-ffffffff-aaaa-1414-eeee-000000000000", - "name": "my-aws-s3-provider", - "type": "awsS3", - "configuration": { - "awsRegion": "string", - "bucket": "string", - "folderPath": "string" }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Creates a new OpenAI integration for a given organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | type required | string Enum: "awsS3" "openAI" "awsBedrock" The type of provider to create. | | name required | string <= 50 characters The name for the provider integration to create. | required | CreateS3ConfigurationRequest (object) or CreateOpenAIConfigurationRequest (object) or CreateBedrockConfigurationRequest (object) The configuration for the provider to create. | - Payload Content type application/json Example `{`- "type": "openAI", - "name": "provider1", - "configuration": { - "apiKey": "your-openai-key" } } - 201 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "provider1-ffffffff-aaaa-1414-eeee-000000000000" } Fetches the details of a specific provider. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | providerId required | string Example: provider1-ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the provider. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json Example `{`- "name": "provider1", - "type": "openAI", - "configuration": null, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Updates an existing provider. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | providerId required | string Example: provider1-ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the provider. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | required | UpdateS3ConfigurationRequest (object) or UpdateOpenAIConfigurationRequest (object) or UpdateBedrockConfigurationRequest (object) The configuration for the provider to update. | - Payload Content type application/json Example `{`- "configuration": { - "apiKey": "new-openai-api-key" } } - 400 - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Deletes an existing provider. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | providerId required | string Example: provider1-ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the provider. | - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Workflows can vectorize data stored either in Capella operational clusters or in external files. These workflows generate embeddings on the data using a specified AI model. **Workflow types:** `structuredDataProcessing` : For importing and vectorizing structured data in JSON format.`unstructuredDataProcessing` : For processing and vectorizing unstructured data in formats such as PDF, JPG, PNG, DOC, and DOCX.`vectorization` : For vectorizing JSON data stored in Capella operational clusters. Lists all the workflows for a specific cluster. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Data Reader - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "my-workflow-name", - "type": "structuredDataProcessing", - "configuration": { - "source": { - "name": "provider1", - "providerId": "provider1-ffffffff-aaaa-1414-eeee-000000000000" }, - "targetCouchbaseKeyspace": { - "bucket": "my-bucket", - "scope": "my-scope", - "collection": "my-collection" }, - "structuredDataProcessingConfig": { - "keyFieldName": "document_id", - "jsonType": "jsonlines" }, - "vectorizationConfig": { - "createIndexes": true, - "embeddingFieldMappings": { - "property1": { - "sourceFields": [ - "field1" ] }, - "property2": { - "sourceFields": [ - "field1" ] } }, - "embeddingModel": { - "external": { - "openAiIntegration": { - "name": "provider1", - "providerId": "provider1-ffffffff-aaaa-1414-eeee-000000000000" }, - "modelName": "text-embedding-3-small" } } } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Creates a new workflow based on the specified workflow type. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | name required | string The name of the workflow. | | type required | string Enum: "structuredDataProcessing" "unstructuredDataProcessing" "vectorization" The type of workflow. | required | CreateStructuredWorkflowRequest (object) or CreateUnstructuredWorkflowRequest (object) or CreateVectorizationWorkflowRequest (object) | - Payload Content type application/json Example `{`- "name": "my-structured-workflow", - "type": "structuredDataProcessing", - "configuration": { - "source": { - "providerId": "provider2-ffffffff-aaaa-1414-eeee" }, - "targetCouchbaseKeyspace": { - "bucket": "my-bucket", - "scope": "my-scope", - "collection": "my-collection" }, - "structuredDataProcessingConfig": { - "jsonType": "jsonlist" }, - "vectorizationConfig": { - "createIndexes": true, - "embeddingFieldMappings": { - "vectorEmbeddingField1": { - "sourceFields": [ - "field1", - "field2" ] }, - "vectorEmbeddingField2": { - "sourceFields": [ - "field3", - "field4" ] } }, - "embeddingModel": { - "capellaHosted": { - "id": "550e8400-e29b-41d4-a716-446655440000" } } } } } - 201 - 400 - 403 - 404 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Retrieves the details of a specific workflow. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Data Reader - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json Example `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000", - "name": "my-vectorization-workflow", - "type": "vectorization", - "configuration": { - "targetCouchbaseKeyspace": { - "bucket": "my-bucket", - "scope": "my-scope", - "collection": "my-collection" }, - "vectorizationConfig": { - "createIndexes": true, - "embeddingFieldMappings": { - "vectorEmbeddingField1": { - "sourceFields": [ - "field1", - "field2" ] } }, - "embeddingModel": { - "external": { - "openAiIntegration": { - "name": "my-openai-integration", - "providerId": "provider1-ffffffff-aaaa-1414-eeee-000000000000" }, - "modelName": "text-embedding-3-small" } } } }, - "audit": { - "createdAt": "2021-01-01T00:00:00Z", - "createdByUserID": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-01-01T00:00:00Z", - "modifiedByUserID": "ffffffff-aaaa-1414-eeee-000000000000", - "version": 1 } } Deletes an existing workflow. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | - 400 - 403 - 404 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Lists all the workflow runs for a specific workflow. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Data Reader - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "data": [ - { - "id": "string", - "status": "deploying", - "totalFiles": 0, - "processedFiles": 0, - "erroredFiles": 0, - "createdAt": "2021-01-01T00:00:00Z", - "createdByUserID": "string" } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Starts a specific workflow. On the first run, the workflow processes all files specified in the workflow configuration. On subsequent runs, it processes only new, updated, or previously failed files. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | - 202 - 400 - 403 - 404 - 409 - 500 Content type application/json `{`- "id": "ffffffff-aaaa-1414-eeee-000000000000" } Stops a workflow run that is in progress. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | - 400 - 403 - 404 - 409 - 500 Content type application/json `{`- "httpStatusCode": 400, - "code": 1000, - "message": "The request was malformed or invalid.", - "hint": "The request was malformed or invalid." } Retrieves the details of a specific workflow run. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Data Reader - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | | runId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow run. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "id": "123e4567-e89b-12d3-a456-426614174000", - "totalFiles": 100, - "processedFiles": 37, - "erroredFiles": 2, - "elapsedTime": 1234567890, - "status": "running", - "createdAt": "2021-01-01T00:00:00Z", - "createdByUserID": "123e4567-e89b-12d3-a456-426614174000" } Retrieves the processed files for a specific workflow run. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Project Manager - Project Viewer - Data Reader - Data Reader/Writer To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | workflowId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow. | | runId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The unique identifier of the AI workflow run. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | fileStatus | string Enum: "success" "failed" "skipped" Example: fileStatus=success The type of file status used for filtering. By default, all files are returned. | - 200 - 400 - 403 - 404 - 429 - 500 Content type application/json `{`- "cursor": { - "pages": { - "page": 1, - "last": 1, - "perPage": 25, - "totalItems": 3 }, - "hrefs": { } }, - "data": [ - { - "fileName": "file1.pdf", - "filePath": "documents/reports", - "fileStatus": "success" }, - { - "fileName": "file2.json", - "filePath": "data", - "fileStatus": "failed", - "error": { - "code": "INVALID_FORMAT", - "message": "Invalid JSON format: unexpected token at position 145" } }, - { - "fileName": "file3.docx", - "filePath": "uploads", - "fileStatus": "failed", - "error": { - "code": "SIZE_LIMIT_EXCEEDED", - "message": "File size exceeds the maximum allowed limit of 50MB" } } ] } Retrieves a list of supported external embedding models that can be used for vectorization. This endpoint allows you to see which models are available for use in your projects. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner - Project Owner - Cluster Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | projectId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the project. | | clusterId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the cluster. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | provider | string Enum: "openAI" "awsBedrock" Example: provider=openAI Type of external model provider to filter on. By default all providers are returned. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json Example `{`- "data": [ - { - "name": "text-embedding-3-small", - "provider": "openAI", - "dimensions": { - "supported": [ - 512, - 1536 ], - "default": 1536 }, - "contextWindowSize": 8192 }, - { - "name": "text-embedding-3-large", - "provider": "openAI", - "dimensions": { - "supported": [ - 256, - 1024, - 3072 ], - "default": 3072 }, - "contextWindowSize": 8192 }, - { - "name": "text-embedding-ada-002", - "provider": "openAI", - "dimensions": { - "supported": [ - 1536 ], - "default": 1536 }, - "contextWindowSize": 8192 }, - { - "name": "amazon.titan-embed-text-v1", - "provider": "awsBedrock", - "dimensions": { - "supported": [ - 1536 ], - "default": 1536 }, - "contextWindowSize": 8192 }, - { - "name": "amazon.titan-embed-text-v2:0", - "provider": "awsBedrock", - "dimensions": { - "supported": [ - 256, - 512, - 1024 ], - "default": 1024 }, - "contextWindowSize": 8192 } ], - "cursor": { - "pages": { - "page": 1, - "last": 1, - "perPage": 25, - "totalItems": 5 }, - "hrefs": { - "previous": "", - "next": "" } } } Couchbase Capella Model Services uses Bearer token authentication for secure access to the AI models. Each inference request to access the models must include a valid API key in the Authorization header. The Model API Keys endpoints enable users to manage (create, retrieve, update, and delete) API keys for the models of a specific region, ensuring secure and controlled access to the models during inferencing. The API keys created for a specific region can be used to access all the models available in that region. To send inference requests to your models and receive outputs, use the Model Service API. For more information, see Make an API Call with the Model Service API. Creates a new API Key for the specified region within an organization. API Key created for a region can be used to access all the models of that region for inferencing. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | required | name required | string <= 128 characters Name of the Language Model API Key. | | description | string <= 250 characters Description of the Language Model API Key. | | expiry required | number Expiry of the API key in number of days. Maximum value is 365 days. | | allowedCIDRs required | Array of strings List of IP addresses or CIDR blocks that are allowed to use this API key. | | allowedModels | Array of strings Default: ["*"] List of allowed model IDs for this API key. - If empty or omitted, defaults to "*" (all models in the region). - Can be set to ["*"] explicitly for all models. - Can contain specific model IDs to restrict access to those models only. | | region required | string The region where the API key will be created. The apikey created in a region can access all the models available in that region. | - Payload Content type application/json Example request for creating a new Language Model API Key with access to all models (allowedModels empty defaults to wildcard) `{`- "name": "MyLanguageModelAPIKey-AllModels", - "description": "API key for accessing all models in the region", - "expiry": 180, - "allowedCIDRs": [ - "192.168.1.0/24", - "10.0.0.0/8" ], - "allowedModels": [ ], - "region": "us-east-1" } - 201 - 400 - 401 - 403 - 404 - 422 - 500 Content type application/json `{`- "id": "60a95d98-8660-488c-a1e0-25b90e926a1e", - "token": "cb_api_sk_1234567890abcdef" } Lists all API keys for the given region in an organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | sortBy | Array of strings Example: sortBy=name Sets the order of how you would like to sort the results and the key you would like to order by. Valid fields to sort the results are: | | sortDirection | string Enum: "asc" "desc" Example: sortDirection=asc The order in which the items will be sorted. | | filterBy | string Example: filterBy=region:eq:us-east-1 Filter criteria in the format 'field:operator:value'. Supported operators are 'eq' (equals). Currently, only 'region' is supported as a filter field. Example: region:eq:us-east-1 | - 200 - 401 - 403 - 422 - 500 Content type application/json `{`- "data": [ - { - "keyId": "60a95d98-8660-488c-a1e0-25b90e926a1e", - "name": "MyLanguageModelAPIKey", - "description": "API key for accessing GPT-4 models", - "expiry": 180, - "allowedCIDRs": [ - "192.168.1.0/24", - "10.0.0.0/8" ], - "allowedModels": [ - { - "id": "5ca127fe-49da-4a6a-aef9-08393b97643f", - "name": "GPT-4" }, - { - "id": "6db238gf-50eb-5b7b-bfg0-09404c08754g", - "name": "Claude 3" } ], - "region": "us-east-1", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Returns an API Key for the given region in the organization by its ID. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | apiKeyId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 Unique identifier for the Language Model API key | - 200 - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "keyId": "60a95d98-8660-488c-a1e0-25b90e926a1e", - "name": "MyLanguageModelAPIKey", - "description": "API key for accessing GPT-4 models", - "expiry": 180, - "allowedCIDRs": [ - "192.168.1.0/24", - "10.0.0.0/8" ], - "allowedModels": [ - { - "id": "5ca127fe-49da-4a6a-aef9-08393b97643f", - "name": "GPT-4" }, - { - "id": "6db238gf-50eb-5b7b-bfg0-09404c08754g", - "name": "Claude 3" } ], - "region": "us-east-1", - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 } } Deletes an existing API Key for the given region in the organization. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | apiKeyId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 Unique identifier for the Language Model API key | - 401 - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "httpStatusCode": 401, - "code": 1001, - "message": "The request is unauthorized. Please ensure you have proper authentication credentials and try again.", - "hint": "The request is unauthorized. Please ensure you have proper authentication credentials and try again." } The Model Service endpoints allows you to deploy and manage your models - open LLMs like Llama3 and embedding models in Capella close to your data. The users can create, get, update, and delete language models. To send inference requests to your models and receive outputs, use the Model Service API. For more information about the Model Service API, see Manage Deployments with AI Data Plane APIs. Fetches the details of all the models. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | page | integer Sets the page you would like to view. | | perPage | integer Sets the number of results you would like to have on each page. | | modelStatus | string Enum: "pending" "deploying" "deployFailed" "healthy" "unhealthy" "pausing" "paused" "resuming" "pauseFailed" "resumeFailed" Filter by model status. All models are returned when set empty. | | modelKind | string Enum: "embedding-generation" "text-generation" Filter by model kind. All models are returned when this is set empty. | - 200 - 400 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "data": [ - { - "model": { - "id": "fffffffff-aaaa-1414-eeee-000000000000", - "name": "my-new-model", - "config": { - "catalogModelName": "meta-llama/Llama-3.1-8B-Instruct", - "type": "text-generation", - "provider": "meta", - "quantization": "fullPrecision", - "optimization": "latency", - "dimensions": 4096, - "caching": { - "enableStandard": true, - "enableConversational": false, - "semantic": { - "embeddingModel": "my-embedding-model-id", - "scoreThreshold": 0.75, - "dimensions": 4096, - "distanceMetric": "dot_product" }, - "defaultCache": "semantic", - "expiryTTL": 1000 }, - "enableBatching": true, - "keywordFiltering": [ - "harassment", - "murder" ] }, - "cloudConfig": { - "provider": "aws", - "region": "us-east-1", - "compute": { - "cpu": 4, - "gpuMemory": 48 } }, - "status": "deploying", - "usageMetrics": { - "tokens": { - "value": 345, - "trend": "increasing" }, - "requests": { - "value": 4094, - "trend": "increasing" } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "actions": [ - "delete" ] } } ], - "cursor": { - "pages": { - "page": 2, - "next": 3, - "previous": 1, - "last": 10, - "perPage": 10, - "totalItems": 10 }, - "hrefs": { } } } Create a new model deployment. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | required | name required | string Name of the model. | | catalogModelName required | string Name of the model deployed from the model catalog. | required | object (CloudConfig) The cloud configuration for the model. | | quantization | string Enum: "fp8" "fp16" "fullPrecision" Quantization options for the model. Options include 8-bit, 16bit, and full-precision. | | optimization | string Enum: "throughput" "latency" Optimization profile option for the model. | | dimensions | integer Dimensions specify the vector dimensions for the underlying embedding model. | | guardrails | Array of strings List of guardrail categories as plain text strings. These will be formatted into a template and base64-encoded internally. | object Jailbreak model information. | | object (Caching) Caching configuration for the model. Caching improves system efficiency by caching frequently accessed data, both at the conversational level (storing request-specific conversation history) and at the semantic level (saving the embeddings for queries and results), ensuring optimal performance while managing memory costs effectively. Supports multiple caching strategies for improved response times and reduced strain on backend LLM services. | | | enableBatching | boolean Option to enable batching. | | keywordFiltering | Array of strings Keywords in a comma-separated string to filter the input. | - Payload Content type application/json Example `{`- "name": "my-embedding-model", - "catalogModelName": "Snowflake/snowflake-arctic-embed-m-v2.0", - "cloudConfig": { - "provider": "aws", - "region": "us-east-1", - "compute": { - "cpu": 4, - "ram": 16 } }, - "quantization": "fullPrecision", - "optimization": "throughput" } - 202 - 400 - 401 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "id": "fffffffff-aaaa-1414-eeee-000000000000" } Fetches the details of the given model. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | modelId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the model. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{`- "model": { - "id": "fffffffff-aaaa-1414-eeee-000000000000", - "name": "my-new-model", - "config": { - "catalogModelName": "meta-llama/Llama-3.1-8B-Instruct", - "type": "text-generation", - "provider": "meta", - "quantization": "fullPrecision", - "optimization": "latency", - "dimensions": 4096, - "caching": { - "enableStandard": true, - "enableConversational": false, - "semantic": { - "embeddingModel": "my-embedding-model-id", - "scoreThreshold": 0.75, - "dimensions": 4096, - "distanceMetric": "dot_product" }, - "defaultCache": "semantic", - "expiryTTL": 1000 }, - "enableBatching": true, - "keywordFiltering": [ - "harassment", - "murder" ] }, - "cloudConfig": { - "provider": "aws", - "region": "us-east-1", - "compute": { - "cpu": 4, - "gpuMemory": 48 } }, - "status": "deploying", - "usageMetrics": { - "tokens": { - "value": 345, - "trend": "increasing" }, - "requests": { - "value": 4094, - "trend": "increasing" } }, - "audit": { - "createdBy": "ffffffff-aaaa-1414-eeee-000000000000", - "createdAt": "2021-09-01T12:34:56Z", - "modifiedBy": "ffffffff-aaaa-1414-eeee-000000000000", - "modifiedAt": "2021-09-01T12:34:56Z", - "version": 1 }, - "actions": [ - "delete" ] } } Destroys an existing model. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | modelId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the model. | - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Updates an existing model. Model updates may take up to a few minutes to take effect. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | modelId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the model. | | If-Match | string Example: 12 A precondition header that specifies the entity tag of a resource. | | name | string Name of the model. | object (Caching) Caching configuration for the model. Caching improves system efficiency by caching frequently accessed data, both at the conversational level (storing request-specific conversation history) and at the semantic level (saving the embeddings for queries and results), ensuring optimal performance while managing memory costs effectively. Supports multiple caching strategies for improved response times and reduced strain on backend LLM services. | | | enableBatching | boolean Option to enable batching. | | keywordFiltering | Array of strings Keywords in a comma-separated string to filter the input. | | guardrails | Array of strings List of guardrail categories as plain text strings. These will be formatted into a template and base64-encoded internally. | object Jailbreak model information. | - Payload Content type application/json Example `{`- "name": "my-updated-text-generation-model", - "caching": { - "enableStandard": true, - "enableConversational": true, - "semantic": { - "embeddingModel": "my-embedding-model-id", - "scoreThreshold": 0.8, - "dimensions": 4096, - "distanceMetric": "dot_product" }, - "defaultCache": "semantic", - "expiryTTL": 3600 }, - "enableBatching": true, - "keywordFiltering": [ - "violence", - "harassment", - "inappropriate" ], - "guardrails": [ - "hate speech", - "sexual content", - "violence" ], - "jailbreak": { - "scoreThreshold": 0.85 } } - 403 - 404 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Fetches the connection string to connect to the model. Use this connection string as the base URL in your Model Service API inference requests. For more information, see Make an API Call with the Model Service API. In order to access this endpoint, the provided API key must have at least one of the following roles: - Organization Member To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | modelId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the model. | - 200 - 403 - 404 - 422 - 429 - 500 Content type application/json `{` } Resumes the model or turns the model to On state. The connection URL remains unchanged when the model is turned on or off. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | modelId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the model. | - 403 - 404 - 409 - 412 - 422 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } Pauses the model or turns the model to off state. The connection URL remains unchanged when the model is turned on or off. In order to access this endpoint, the provided API key must have at least one of the roles referenced below: - Organization Owner To learn more, see Organization, Project, and Database Access Overview. | organizationId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the organization. | | modelId required | string Example: ffffffff-aaaa-1414-eeee-000000000000 The GUID4 ID of the model. | - 403 - 404 - 409 - 429 - 500 Content type application/json `{`- "httpStatusCode": 403, - "code": 1002, - "message": "Access Denied.", - "hint": "Your access to the requested resource is denied. Please make sure you have the necessary permissions to access the resource." } --- # Couchbase Mobile vs. Google Firebase Source: https://www.couchbase.com/comparing-couchbase-mobile-vs-firebase/ Last modified: 2026-06-30T14:11:38+00:00 Sample app ## Try the Couchbase Mobile sample app Couchbase Mobile demo app source code - Sync iOS, Android, web apps, and cloud. FEATURES The superior scale, flexibility, and offline-first capabilities of Couchbase Mobile support larger and more-complex use cases than Firebase. - What’s included - Cloud database - Offline-first embedded database - Comprehensive data sync - Edge deployment topologies - Scalability - Multicloud/on premises - Query language - Full-text search - On-device vector search - Distributed ACID transactions - Couchbase Mobile - Multi-directional, filters, channels, custom conflict resolution - 20K writes/sec and scales linearly with nodes - Complex SQL - Firebase - Two-way only, no filters, simple conflict resolution - Auto-scales, but per-document write limits require workarounds - Simple “SQL-like” CUSTOMERS FAQ Get quick answers to questions about how Couchbase Mobile compares to Firebase. Firebase offers basic local caching for brief outages but has no embedded database, delta sync, or peer-to-peer sync. It is not designed for true offline-first applications. Yes. Couchbase Mobile stores data locally on-device using an embedded database, syncs bidirectionally when connectivity returns, and supports peer-to-peer sync between devices. No. Firebase is hosted exclusively on Google Cloud with no support for AWS, Azure, on premises, or hybrid deployments. Couchbase Mobile runs across all major clouds and on premises. Firebase provides a limited SQL-like query language with no JOIN support. Couchbase Mobile uses SQL++, which supports JOINs, aggregations, and complex queries natively. Firebase does not have on-device vector search. For 100% on-device vector search, developers must pair the platform with a local edge database that supports vector search. --- # Couchbase vs. CouchDB: Differences Between Them Source: https://www.couchbase.com/comparing-couchbase-vs-couchdb/ Last modified: 2026-05-19T17:30:55+00:00 Report ## From CouchDB to Couchbase: Know Why? Couchbase excels over CouchDB: Caching, JSON, SQL++, DBaaS, Mobile Sync, & more. FEATURES - Developer agility - Data models - Consistency - Replication - Locking - Query language - Secondary indexes - Notifications - Services - Couchbase Server - JSON document, key-value - Strong, including distributed ACID transactions - Master-master - Optimistic and pessimistic - Yes, SQL++ (SQL for JSON) - Yes - Yes, database change protocol / eventing service - Data, query, index, full-text search, analytics, eventing, backup, mobile sync - Apache CouchDB - JSON document, key-value - Eventual - Master-master by default with optional clustering for quorum writes and reads - Optimistic with modified MVCC - Yes, using a limited find API derived from MongoDB™ - Yes - Yes, changes feeds - Data, query, index - Performance at scale - Storage (performance) - Integrated cache (performance) - Managed cache (performance) - Couchbase Server - Append-only B-tree - Yes - Yes - Apache CouchDB - Append-only B-tree - No - No - Manage with ease - Automatic failover (management) - Cross data center replication (management) - Couchbase Server - Yes - Yes - Apache CouchDB - Not by default; can be configured for quorum reads - Yes CUSTOMERS --- # DynamoDB vs. Couchbase | 4 Challenges of Using DynamoDB Source: https://www.couchbase.com/comparing-couchbase-vs-dynamodb/ Last modified: 2026-05-20T07:33:41+00:00 WHITEPAPER ## From DynamoDB to Couchbase: Know Why? Couchbase excels over DynamoDB: Caching, JSON, SQL++, DBaaS, Mobile Sync, & more. FEATURES - What’s included - Fast key-value access - JSON document support - Built-in caching - Row/document size limit - Unlimited table size - Unlimited global secondary indexes - SQL-friendly language - SQL joins and group by - Full-text search - Unlimited regional data replication - Tunable scaling of data access services (MDS) - Mobile database and sync - Cross-cloud and on-premises deployment - Low TCO - Couchbase - 20MB per document - DynamoDB - Limited - DAX is extra cost - 400 KB per row - 10TB max - 20 per table - 10TB per region - Serverless CUSTOMERS --- # Couchbase Mobile vs. MongoDB Atlas Device Sync Source: https://www.couchbase.com/comparing-couchbase-vs-mongodb-mobile/ Last modified: 2026-05-25T19:02:37+00:00 On-demand Webcast ## Couchbase Lite SDK to Atlas Device SDK Comparison Guide Understand differences in SDK functionalities and setup between MongoDB Atlas/Atlas Device SDK and Couchbase Mobile. FEATURES Unlike MongoDB Atlas Device Sync (Realm), Couchbase Mobile offers hosted or self-managed deployments, SQL support, peer-to-peer sync, embedded device support, and customizable conflict resolution. - What’s included - Offline support - Platform support - Flexible topologies - Peer-to-peer sync - Delta sync - Sync conflict resolution - SQL++ - On-premises/self-managed deployment - Vector search on-device - Couchbase - Mobile, IoT, and embedded device support - Comprehensive, customizable - MongoDB Atlas Device Sync (Realm) - Mobile platforms only - Basic, no customization CUSTOMERS All fields with an asterisk (*) must be filled out A Couchbase representative will be in touch with you shortly. Code snippet --- # Couchbase vs. MongoDB™: Performance & Scalability Compared Source: https://www.couchbase.com/comparing-couchbase-vs-mongodb/ Last modified: 2026-06-30T09:01:09+00:00 Report ## Dispelling NoSQL misconceptions Discover why Couchbase outperforms MongoDB for modern enterprise needs. FEATURES - What’s included - JSON flexibility - Mobile, edge, and peer-to-peer sync - SQL++ - Native full-text search - XDCR master-master replication - Automatic sharding - Masterless shared-nothing architecture - ACID transactions - Multi-dimensional scaling - Vector search on mobile - Real-time analytics engine - Multisource, zero-ETL ingestion - Write-back, real-time analytics to source cluster - Couchbase - MongoDB - BSON - Lucene-based and only available in Atlas Code snippet CUSTOMERS FAQ Get quick answers about how Couchbase and MongoDB compare in terms of performance, scalability, and more. Couchbase outperforms MongoDB on throughput and latency in independent benchmarks, including YCSB testing, due to its memory-first architecture and built-in caching layer. Couchbase Hyperscale Vector Index achieves 700+ QPS at billion-vector scale. MongoDB Atlas returned 2 QPS with 40-second latency in the same VectorDBBench test conditions. Couchbase uses SQL++, a superset of SQL that supports JOINs, aggregations, and complex queries on JSON. MongoDB uses a proprietary query language with no native JOIN support. Couchbase typically delivers lower TCO than MongoDB through built-in caching, fewer required add-ons, and more efficient cluster sizing, reducing infrastructure and licensing costs. Yes. Couchbase includes Couchbase Lite and Capella App Services for offline-first mobile and edge apps. MongoDB deprecated Atlas Device Sync in 2024, leaving mobile users without a replacement. --- # Couchbase vs. Oracle: Relational Database Alternative Source: https://www.couchbase.com/comparing-couchbase-vs-oracle/ Last modified: 2026-05-20T08:31:19+00:00 Whitepaper ## SQL to NoSQL: Migration Moving from Relational to NoSQL: How to get started from Oracle. FEATURES - What’s included - SQL - ACID transactions - Schema flexibility - Horizontal scaling - Automatic replication - Built-in caching - Multi-model support - Mobile and edge sync - Automatic sharding - Multi-dimensional scaling - Database logic - REST management API - Couchbase - Eventing, UDF - Oracle - Limited native sharding, complex - Sprocs, triggers, views CUSTOMERS Code snippet --- # Couchbase, Inc. · GitHub Source: https://github.com/couchbase # Couchbase, Inc. Couchbase. The Operational Data Platform for AI. ® - 416 followers - United States of America - https://www.couchbase.com/ - company/couchbase - @couchbase - c/CouchbaseServer - Couchbase - github@couchbase.com ## Popular repositories Loading - couchbase-lite-ios couchbase-lite-ios PublicLightweight, embedded, syncable NoSQL database engine for iOS and MacOS apps. - couchbase-lite-android couchbase-lite-android Public archiveLightweight, embedded, syncable NoSQL database engine for Android. ### Repositories Showing 10 of 259 repositories #### Top languages Loading… #### Most used topics Loading… --- # Introducing Couchbase Edge Server Source: https://docs.couchbase.com/couchbase-edge-server/current/introduction/intro.html # Introducing Couchbase Edge Server Couchbase Edge Server is a lightweight standalone database for resource-constrained edge, based on Couchbase Lite Core. With Couchbase Edge Server, you can perform scalable, offline-first data sync at the edge in resource constrained environments. The diagram above illustrates how Couchbase Edge Server builds on Couchbase Lite Core engine to deliver its foundational elements. Couchbase Edge Server provides a REST API for CRUD operations, SQL++ queries, and push notifications. It also supports remote sync with upstream Sync Gateway/App Services and edge sync with downstream Couchbase Lite applications. ## Why Use Couchbase Edge Server? - Resource efficiency: Compact ~10 MB codebase with typically < 50 MB RAM usage, perfect for edge environments. - Offline-first synchronization: Enables reliable data sync even in intermittent connectivity scenarios. - Flexible deployment: Functions as both a sync server for local Couchbase Lite clients and a sync client for upstream services, supporting various edge topologies. - Real-time updates: Push notifications for data changes reduce bandwidth and latency compared to polling. - High availability: Support for multiple Edge Server configurations including primary-backup setups for redundancy. ## Key Capabilities - REST API: RESTful interface for any HTTP client, including browser applications. - Remote Sync: Syncs data with upstream Sync Gateway/App Services via WebSockets replication protocol. - Edge Sync: Enables downstream Couchbase Lite applications to sync with Couchbase Edge Server. - Advanced querying: Supports SQL++ queries for complex data operations. - Flexible data handling: Serves existing Couchbase Lite database files or creates CRUD-based document access. - High Availability (HA): Connects multiple Edge Servers via upstream and downstream sync interfaces. | For more information about the latest changes to Couchbase Edge Server, see New In 1.1. | ## Getting Started Get started with Couchbase Edge Server, from installing to building and running the product. ## Configuration Learn how to configure Couchbase Edge Server to your specifications. ## REST Based Access Use Couchbase Edge Server REST API capabilities to perform CRUD operations, SQL++ queries, push notifications and more in your applications. ## Sync Sync data between Couchbase Edge Server and your application, Couchbase Lite, or Capella. ## Administer Perform administrative tasks with Couchbase Edge Server. ## Product Notes View supported platforms, product compatibility and more detailed release notes for Couchbase Edge Server. --- # Couchbase Examples · GitHub Source: https://github.com/couchbase-examples ## Pinned Loading ### Repositories - nodejs-quickstart Public Entry level Couchbase NodeJS tutorial/demo. Steps to build a REST API to manage user profile CRUD operations.. couchbase-examples/nodejs-quickstart’s past year of commit activity - python-quickstart-fastapi Public Entry level Couchbase Python FastAPI tutorial/demo. Steps to build a REST API to manage the travel-sample bucket. couchbase-examples/python-quickstart-fastapi’s past year of commit activity - couchbase-tutorials Public Welcome to the Couchbase Tutorials repository, a comprehensive collection of markdown files designed to help you master the power and versatility of Couchbase. Please find all tutorials available at couchbase.com/developers here. couchbase-examples/couchbase-tutorials’s past year of commit activity - vector-search-cookbook Public Cookbook containing recipes for using Couchbase Vector Search using different Embedding & Large Language Models couchbase-examples/vector-search-cookbook’s past year of commit activity - couchbase-lite-retail-demo Public Couchbase-lite-retail-demo for app services and p2p sync between Android<->Android, Android<->iOS, iOS<->iOS, and mobile to web via CBL app services. couchbase-examples/couchbase-lite-retail-demo’s past year of commit activity #### Top languages Loading… #### Most used topics Loading… --- # GitHub - couchbase/mcp-server-couchbase: MCP Server to interact with data in Couchbase Clusters · GitHub Source: https://github.com/couchbase/mcp-server-couchbase Couchbase MCP Server is a self-hosted MCP Server that allows AI agents to connect to and interact with data in Couchbase clusters, whether hosted on Capella or self-managed. It provides tools across categories including Cluster Health, Data Schema, Key-Value, Query, and Performance - with safety controls via read-only mode and fine-grained tool disabling. It supports both STDIO and Streamable HTTP transports. Couchbase MCP server is distributed as a Python Package Index (PyPI) package and via Docker. Enterprise support for Couchbase MCP Server is available by licensing Couchbase AI Data Plane, which also entitles use and enterprise support of Couchbase Agent Memory and Couchbase Agent Catalog. For full documentation, visit mcp-server.couchbase.com. | Tool Name | Description | |---|---| `get_server_configuration_status` | Get the server status and configuration without connecting to the cluster - reports read-only mode, disabled/confirmation-required tools, OAuth settings, and the resolved logging configuration | `test_cluster_connection` | Check the cluster credentials by connecting to the cluster | `get_cluster_health_and_services` | Get cluster health status and list of all running services | | Tool Name | Description | |---|---| `get_buckets_in_cluster` | Get a list of all the buckets in the cluster | `get_scopes_in_bucket` | Get a list of all the scopes in the specified bucket | `get_collections_in_scope` | Get a list of all the collections in a specified scope and bucket. Note that this tool requires the cluster to have Query service. | `get_scopes_and_collections_in_bucket` | Get a list of all the scopes and collections in the specified bucket | `get_schema_for_collection` | Get the structure for a collection | | Tool Name | Description | |---|---| `get_document_by_id` | Get a document by ID from a specified scope and collection | `upsert_document_by_id` | Upsert a document by ID to a specified scope and collection. Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | `insert_document_by_id` | Insert a new document by ID (fails if document exists). Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | `replace_document_by_id` | Replace an existing document by ID (fails if document doesn't exist). Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | `delete_document_by_id` | Delete a document by ID from a specified scope and collection. Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | | Tool Name | Description | |---|---| `list_indexes` | List all indexes in the cluster with their definitions, with optional filtering by bucket, scope, collection and index name. Set `return_raw_index_stats=true` to return the unprocessed index information. | `get_index_advisor_recommendations` | Get index recommendations from Couchbase Index Advisor for a given SQL++ query to optimize query performance | `run_sql_plus_plus_query` | Run a SQL++ query on a specified scope. Queries are automatically scoped to the specified bucket and scope, so use collection names directly (e.g., `SELECT * FROM users` instead of `SELECT * FROM bucket.scope.users` ).`CB_MCP_READ_ONLY_MODE` is `true` by default, which means that all write operations (KV and Query) are disabled. When enabled, KV write tools are not loaded and SQL++ queries that modify data are blocked. | `explain_sql_plus_plus_query` | Generate and evaluate an EXPLAIN plan for a SQL++ query. Returns query metadata, extracted plan, and plan evaluation findings. | | Tool Name | Description | |---|---| `get_longest_running_queries` | Get longest running queries by average service time | `get_most_frequent_queries` | Get most frequently executed queries | `get_queries_with_largest_response_sizes` | Get queries with the largest response sizes | `get_queries_with_large_result_count` | Get queries with the largest result counts | `get_queries_using_primary_index` | Get queries that use a primary index (potential performance concern) | `get_queries_not_using_covering_index` | Get queries that don't use a covering index | `get_queries_not_selective` | Get queries that are not selective (index scans return many more documents than final result) | - Python 3.10 or higher. - A running Couchbase cluster. The easiest way to get started is to use Capella free tier, which is fully managed version of Couchbase server. You can follow instructions to import one of the sample datasets or import your own. - uv installed to run the server. - An MCP client such as Claude Desktop installed to connect the server to Claude. The instructions are provided for Claude Desktop and Cursor. Other MCP clients could be used as well. The MCP server can be run either from the prebuilt PyPI package or the source using uv. We publish a pre built PyPI package for the MCP server. ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } } ``` or ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_CLIENT_CERT_PATH": "/path/to/client-certificate.pem", "CB_CLIENT_KEY_PATH": "/path/to/client.key" } } } } ``` Note: If you have other MCP servers in use in the client, you can add it to the existing `mcpServers` object. The MCP server can be run from the source using this repository. `git clone https://github.com/couchbase/mcp-server-couchbase.git` This is the common configuration for the MCP clients such as Claude Desktop, Cursor, Windsurf Editor. ``` { "mcpServers": { "couchbase": { "command": "uv", "args": [ "--directory", "path/to/cloned/repo/mcp-server-couchbase/", "run", "src/mcp_server.py" ], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } } ``` Note: `path/to/cloned/repo/mcp-server-couchbase/` should be the path to the cloned repository on your local machine. Don't forget the trailing slash at the end! Note: If you have other MCP servers in use in the client, you can add it to the existing `mcpServers` object. The server can be configured using environment variables or command line arguments: | Environment Variable | CLI Argument | Description | Default | |---|---|---|---| `CB_CONNECTION_STRING` | `--connection-string` | Connection string to the Couchbase cluster | Required | `CB_USERNAME` | `--username` | Username with access to required buckets for basic authentication | Required (or Client Certificate and Key needed for mTLS) | `CB_PASSWORD` | `--password` | Password for basic authentication | Required (or Client Certificate and Key needed for mTLS) | `CB_CLIENT_CERT_PATH` | `--client-cert-path` | Path to the client certificate file for mTLS authentication | Required if using mTLS (or Username and Password required) | `CB_CLIENT_KEY_PATH` | `--client-key-path` | Path to the client key file for mTLS authentication | Required if using mTLS (or Username and Password required) | `CB_CA_CERT_PATH` | `--ca-cert-path` | Path to server root certificate for TLS if server is configured with a self-signed/untrusted certificate. This will not be required if you are connecting to Capella | | `CB_MCP_READ_ONLY_MODE` | `--read-only-mode` | Prevent all data modifications (KV and Query). When enabled, KV write tools are not loaded. | `true` | `CB_MCP_TRANSPORT` | `--transport` | Transport mode: `stdio` , `http` , `sse` | `stdio` | `CB_MCP_HOST` | `--host` | Host for HTTP/SSE transport modes | `127.0.0.1` | `CB_MCP_PORT` | `--port` | Port for HTTP/SSE transport modes | `8000` | `CB_MCP_DISABLED_TOOLS` | `--disabled-tools` | Tools to disable (see Disabling Tools) | None | `CB_MCP_CONFIRMATION_REQUIRED_TOOLS` | `--confirmation-required-tools` | Tools that require explicit user confirmation before execution via MCP elicitation (see Elicitation/Confirmation Required Tools) | None | `CB_MCP_LOG_LEVEL` | `--log-level` | Logging level for the MCP server: `off` , `debug` , `info` , `warning` , `error` (see Logging) | `info` | `CB_MCP_LOG_SINKS` | `--log-sinks` | Comma-separated log destinations: `stderr` , `file` , or both (see Logging) | `stderr` | `CB_MCP_LOG_FILE` | `--log-file` | Base path for per-level log files (only used when the `file` sink is enabled) | `mcp_server.log` | `CB_MCP_LOG_MAX_BYTES` | `--log-max-bytes` | Maximum size in bytes per log file before it rotates | `1048576` (1 MB) | `CB_MCP_OAUTH_JWT_JWKS_URI` | `--oauth-jwks-uri` | JWKS endpoint of the identity provider used to verify bearer JWTs. Enables OAuth when set with the issuer and audience (see OAuth 2.1 Authorization) | None | `CB_MCP_OAUTH_JWT_ISSUER` | `--oauth-issuer` | Expected JWT `iss` claim. Required to enable OAuth | None | `CB_MCP_OAUTH_JWT_AUDIENCE` | `--oauth-audience` | Expected JWT `aud` claim. Required to enable OAuth | None | `CB_MCP_OAUTH_JWT_ALGORITHM` | `--oauth-algorithm` | JWT signing algorithm: one of `RS256/384/512` , `ES256/384/512` , `PS256/384/512` | `RS256` | `CB_MCP_OAUTH_MCP_BASE_URL` | `--oauth-mcp-base-url` | Public base URL of this server. When set, publishes RFC 9728 Protected Resource Metadata so PRM-aware clients can discover the IdP | None | ** CB_MCP_READ_ONLY_MODE** is the single switch controlling write operations: - When `true` (default): All write operations (KV and Query) are disabled. KV write tools (upsert, insert, replace, delete) are**not loaded**and will not be available to the LLM, and SQL++ queries that modify data or structure are blocked. - When `false` : KV write tools are loaded and SQL++ data/structure modification queries are allowed. This is the recommended safe default to prevent inadvertent data modifications by LLMs. Note: For authentication, you need either the Username and Password or the Client Certificate and key paths. Optionally, you can specify the CA root certificate path that will be used to validate the server certificates. If both the Client Certificate & key path and the username and password are specified, the client certificates will be used for authentication. You can disable specific tools to prevent them from being loaded and exposed to the MCP client. Disabled tools will not appear in the tool discovery and cannot be invoked by the LLM. **Comma-separated list:** ``` # Environment variable CB_MCP_DISABLED_TOOLS="upsert_document_by_id, delete_document_by_id" # Command line uvx couchbase-mcp-server --disabled-tools upsert_document_by_id, delete_document_by_id ``` **File path (one tool name per line):** ``` # Environment variable CB_MCP_DISABLED_TOOLS=disabled_tools.txt # Command line uvx couchbase-mcp-server --disabled-tools disabled_tools.txt ``` **File format (e.g., disabled_tools.txt):** ``` # Write operations upsert_document_by_id delete_document_by_id # Index advisor get_index_advisor_recommendations ``` Lines starting with `#` are treated as comments and ignored. **Using comma-separated list:** ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password", "CB_MCP_DISABLED_TOOLS": "upsert_document_by_id,delete_document_by_id" } } } } ``` **Using file path (recommended for many tools):** ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password", "CB_MCP_DISABLED_TOOLS": "/path/to/disabled_tools.txt" } } } } ``` Warning:Disabling tools alone does not guarantee that certain operations cannot be performed. The underlying database user's RBAC (Role-Based Access Control) permissions are the authoritative security control.For example, even if you disable `upsert_document_by_id` and`delete_document_by_id` , data modifications can still occur via the`run_sql_plus_plus_query` tool using SQL++ DML statements (INSERT, UPDATE, DELETE, MERGE) unless: - The `CB_MCP_READ_ONLY_MODE` is set to`true` (default), OR- The database user lacks the necessary RBAC permissions for data modification Best Practice:Always configure appropriate RBAC permissions on your Couchbase user credentials as the primary security measure. Use tool disabling as an additional layer to guide LLM behavior and reduce the attack surface, not as the sole security control. You can require explicit user confirmation for specific tools before execution (when the MCP client supports elicitation). `CB_MCP_CONFIRMATION_REQUIRED_TOOLS` / `--confirmation-required-tools` supports these formats: - Comma-separated list - File path (one tool name per line, `#` comments supported) **Example:** ``` # Environment variable CB_MCP_CONFIRMATION_REQUIRED_TOOLS="delete_document_by_id,replace_document_by_id" # Command line uvx couchbase-mcp-server --confirmation-required-tools delete_document_by_id,replace_document_by_id ``` When a listed tool is invoked: - If the client supports elicitation, the user is prompted to confirm. - If the client does not support elicitation, the tool executes without confirmation for backward compatibility. You can also check the version of the server using: `uvx couchbase-mcp-server --version` The MCP server logs to `stderr` by default. Logging is configured with the `CB_MCP_LOG_*` variables listed in Additional Configuration: - how much is logged:`CB_MCP_LOG_LEVEL` `info` (the default) logs lifecycle events and tool invocations,`debug` adds verbose internal detail, and`off` disables all logging.- where logs go:`CB_MCP_LOG_SINKS` `stderr` (the default), per-level rotating files (`file` ), or both. With`file` , one file is written per level (for example`mcp_server.info.log` and`mcp_server.error.log` ) at the path set by`CB_MCP_LOG_FILE` . ``` # Enable debug logging to both stderr and rotating per-level files uvx couchbase-mcp-server --log-level=debug --log-sinks=stderr,file ``` For more details, see the documentation. ## Claude Desktop Follow the steps below to use Couchbase MCP server with Claude Desktop MCP client - The MCP server can now be added to Claude Desktop by editing the configuration file. More detailed instructions can be found on the MCP quickstart guide. - On Mac, the configuration file is located at `~/Library/Application Support/Claude/claude_desktop_config.json` - On Windows, the configuration file is located at `%APPDATA%\Claude\claude_desktop_config.json` Open the configuration file and add the configuration to the `mcpServers` section. - On Mac, the configuration file is located at - Restart Claude Desktop to apply the changes. - You can now use the server in Claude Desktop to run queries on the Couchbase cluster using natural language and perform CRUD operations on documents. Logs The logs for Claude Desktop can be found in the following locations: - MacOS: ~/Library/Logs/Claude - Windows: %APPDATA%\Claude\Logs The logs can be used to diagnose connection issues or other problems with your MCP server configuration. For more details, refer to the official documentation. ## Cursor Follow steps below to use Couchbase MCP server with Cursor: - Install Cursor on your machine. - In Cursor, go to Cursor > Cursor Settings > Tools & Integrations > MCP Tools. Also, checkout the docs on setting up MCP server configuration from Cursor. - Specify the same configuration manually, or use the one-click Install in Cursor link. You may need to add the server configuration under a parent key of `mcpServers` .Note: The install link uses placeholder values from the configuration examples above. Update the connection string and credentials after installation. - Save the configuration. - You will see couchbase as an added server in MCP servers list. Refresh to see if server is enabled. - You can now use the Couchbase MCP server in Cursor to query your Couchbase cluster using natural language and perform CRUD operations on documents. For more details about MCP integration with Cursor, refer to the official Cursor MCP documentation. Logs In the bottom panel of Cursor, click on "Output" and select "Cursor MCP" from the dropdown menu to view server logs. This can help diagnose connection issues or other problems with your MCP server configuration. ## Windsurf Editor Follow the steps below to use the Couchbase MCP server with Windsurf Editor. - Install Windsurf Editor on your machine. - In Windsurf Editor, navigate to Command Palette > Windsurf MCP Configuration Panel or Windsurf - Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers. For more details on the configuration, please refer to the official documentation. - Click on Add Server and then Add custom server. On the configuration that opens in the editor, add the Couchbase MCP Server configuration from above. - Save the configuration. - You will see couchbase as an added server in MCP Servers list under Advanced Settings. Refresh to see if server is enabled. - You can now use the Couchbase MCP server in Windsurf Editor to query your Couchbase cluster using natural language and perform CRUD operations on documents. For more details about MCP integration with Windsurf Editor, refer to the official Windsurf MCP documentation. ## VS Code Follow the steps below to use the Couchbase MCP server with VS Code. - Install VS Code - Following are a couple of ways to configure the MCP server. - For a Workspace server configuration - Create a new file in workspace as .vscode/mcp.json. - Add the configuration and save the file. - For the Global server configuration: - Run **MCP: Open User Configuration**in the Command Palette (`Ctrl+Shift+P` or`Cmd+Shift+P` ) - Add the configuration and save the file. - Run - **Note**: VS Code uses`servers` as the top-level JSON property in mcp.json files to define MCP (Model Context Protocol) servers, while Cursor uses`mcpServers` for the equivalent configuration. Check the VS Code client configurations for any further changes or details. An example VS Code configuration is provided below.{ "servers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } } - - Once you save the file, the server starts and a small action list appears with `Running|Stop|n Tools|More..` . - Click on the options from the option list to `Start` /`Stop` /manage the server. - You can now use the Couchbase MCP server in VS Code to query your Couchbase cluster using natural language and perform CRUD operations on documents. Logs: In the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` ), - run **MCP: List Servers**command and pick the couchbase server - choose “Show Output” to see its logs in the Output tab. ## JetBrains IDEs Follow the steps below to use the Couchbase MCP server with JetBrains IDEs - Install any one of the JetBrains IDEs - Install any one of the JetBrains plugins - AI Assistant or Junie - Navigate to **Settings > Tools > AI Assistant or Junie > MCP Server** - Click "+" to add the Couchbase MCP configuration and click Save. - You will see the Couchbase MCP server added to the list of servers. Once you click Apply, the Couchbase MCP server starts and on-hover of status, it shows all the tools available. - You can now use the Couchbase MCP server in JetBrains IDEs to query your Couchbase cluster using natural language and perform CRUD operations on documents. Logs: The log file can be explored at **Help > Show Log in Finder (Explorer) > mcp > couchbase** The MCP Server can be run in Streamable HTTP transport mode which allows multiple clients to connect to the same server instance via HTTP. Check if your MCP client supports streamable http transport before attempting to connect to MCP server in this mode. Note: OAuth 2.1 authorization is supported on this transport. See OAuth 2.1 Authorization. Without OAuth configured, the HTTP endpoint is unauthenticated. By default, the MCP server will run on port 8000 but this can be configured using the `--port` or `CB_MCP_PORT` environment variable. ``` uvx couchbase-mcp-server \ --connection-string='' \ --username='' \ --password='' \ --read-only-mode=true \ --transport=http ``` The server will be available on http://localhost:8000/mcp. This can be used in MCP clients supporting streamable http transport mode such as Cursor. ``` { "mcpServers": { "couchbase-http": { "url": "http://localhost:8000/mcp" } } } ``` There is an option to run the MCP server in Server-Sent Events (SSE) transport mode. Note: SSE mode has been deprecated by MCP. We have support for Streamable HTTP. By default, the MCP server will run on port 8000 but this can be configured using the `--port` or `CB_MCP_PORT` environment variable. ``` uvx couchbase-mcp-server \ --connection-string='' \ --username='' \ --password='' \ --read-only-mode=true \ --transport=sse ``` The server will be available on http://localhost:8000/sse. This can be used in MCP clients supporting SSE transport mode such as Cursor. ``` { "mcpServers": { "couchbase-sse": { "url": "http://localhost:8000/sse" } } } ``` When running with `--transport=http` , the MCP server can act as an **OAuth 2.1 resource server**: it validates incoming bearer JWTs against your identity provider's JWKS. It is provider-agnostic (any OAuth 2.1 / OIDC provider that publishes a JWKS - Auth0, Okta, Keycloak, AWS Cognito, Microsoft Entra, etc.) and does **not** issue tokens or manage users. OAuth settings are ignored on `stdio` . OAuth is configured with the `CB_MCP_OAUTH_*` variables listed in Additional Configuration: - OAuth activates only when all three of `CB_MCP_OAUTH_JWT_JWKS_URI` ,`CB_MCP_OAUTH_JWT_ISSUER` , and`CB_MCP_OAUTH_JWT_AUDIENCE` are set; setting only some of them fails at startup. - Setting `CB_MCP_OAUTH_MCP_BASE_URL` additionally publishes RFC 9728 Protected Resource Metadata so PRM-aware clients can discover the authorization server. - Access is gated by two scopes read from the token's `scope` /`scp` claim:`couchbase-mcp:read` (read tools, including SQL++) and`couchbase-mcp:write` (KV mutation tools). Full access requires both. ``` uvx couchbase-mcp-server \ --connection-string='' \ --username='' \ --password='' \ --transport=http \ --oauth-jwks-uri='https://auth.example.com/.well-known/jwks.json' \ --oauth-issuer='https://auth.example.com/' \ --oauth-audience='couchbase-mcp-server' \ --oauth-mcp-base-url='' ``` For full details, see the documentation. The MCP server can also be built and run as a Docker container. Prebuilt images can be found on DockerHub or pulled via `docker pull docker.io/couchbase/mcp-server:latest` . Alternatively, we are part of the Docker MCP Catalog. `docker build -t mcp/couchbase-src .` ## Building with Arguments If you want to build with the build arguments for commit hash and the build time, you can build using:``` docker build --build-arg GIT_COMMIT_HASH=$(git rev-parse HEAD) \ --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ -t mcp/couchbase-src . ``` **Alternatively, use the provided build script:** ``` # Build with default image name (mcp/couchbase-src) ./build.sh # Build with custom image name ./build.sh my-custom/image-name ``` This script automatically: - Accepts an optional image name parameter (defaults to `mcp/couchbase-src` ) - Generates git commit hash and build timestamp - Creates multiple useful tags ( `latest` ,`` ) - Shows build information and results - Uses the same arguments as CI/CD builds **Verify image labels:** ``` # View git commit hash in image docker inspect --format='{{index .Config.Labels "org.opencontainers.image.revision"}}' mcp/couchbase-src:latest # View all metadata labels docker inspect --format='{{json .Config.Labels}}' mcp/couchbase-src:latest ``` The MCP server can be run with the environment variables being used to configure the Couchbase settings. The environment variables are the same as described in the Additional Configuration section. ``` docker run --rm -i \ -e CB_CONNECTION_STRING='' \ -e CB_USERNAME='' \ -e CB_PASSWORD='' \ -e CB_MCP_TRANSPORT='' \ -e CB_MCP_READ_ONLY_MODE='' \ -e CB_MCP_CONFIRMATION_REQUIRED_TOOLS='delete_document_by_id' \ -e CB_MCP_PORT=9001 \ -e CB_MCP_HOST=0.0.0.0 \ -p 9001:9001 \ mcp/couchbase-src ``` The `CB_MCP_PORT` and `CB_MCP_HOST` environment variables are only applicable in the case of HTTP transport modes like http and sse. The Docker image can be used in `stdio` transport mode with the following configuration. ``` { "mcpServers": { "couchbase-mcp-docker": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "CB_CONNECTION_STRING=", "-e", "CB_USERNAME=", "-e", "CB_PASSWORD=", "mcp/couchbase-src" ] } } } ``` Notes - The `couchbase_connection_string` value depends on whether the Couchbase server is running on the same host machine, in another Docker container, or on a remote host. If your Couchbase server is running on your host machine, your connection string would likely be of the form`couchbase://host.docker.internal` . For details refer to the docker documentation. - You can specify the container's networking using the `--network=` option. The network you choose depends on your environment; the default is`bridge` . For details, refer to network drivers in docker. - The use of large language models and similar technology involves risks, including the potential for inaccurate or harmful outputs. - Couchbase does not review or evaluate the quality or accuracy of such outputs, and such outputs may not reflect Couchbase's views. - You are solely responsible for determining whether to use large language models and related technology, and for complying with any license terms, terms of use, and your organization's policies governing your use of the same. - Ensure the path to your MCP server repository is correct in the configuration if running from source. - Verify that your Couchbase connection string, database username, password or the path to the certificates are correct. - If using Couchbase Capella, ensure that the cluster is accessible from the machine where the MCP server is running. - Check that the database user has proper permissions to access at least one bucket. - Confirm that the `uv` package manager is properly installed and accessible. You may need to provide absolute path to`uv` /`uvx` in the`command` field in the configuration. - Check the logs for any errors or warnings that may indicate issues with the MCP server. The location of the logs depend on your MCP client. - If you are observing issues running your MCP server from source after updating your local MCP server repository, try running `uv sync` to update the dependencies. We provide high-level MCP integration tests to verify that the server exposes the expected tools and that they can be invoked against a demo Couchbase cluster. - Export demo cluster credentials: `CB_CONNECTION_STRING` `CB_USERNAME` `CB_PASSWORD` - Optional: `CB_MCP_TEST_BUCKET` (a bucket to probe during the tests) - Run the tests: `uv run pytest tests/ -v` We welcome contributions from the community! Whether you want to fix bugs, add features, or improve documentation, your help is appreciated. If you need help, have found a bug, or want to contribute improvements, the best place to do that is right here - by opening a GitHub issue. If you're interested in contributing code or setting up a development environment: 📖 **See CONTRIBUTING.md** for comprehensive developer setup instructions, including: - Development environment setup with `uv` - Code linting and formatting with Ruff - Pre-commit hooks installation - Project structure overview - Development workflow and practices ``` # Clone and setup git clone https://github.com/couchbase/mcp-server-couchbase.git cd mcp-server-couchbase # Install with development dependencies uv sync --extra dev # Install pre-commit hooks uv run pre-commit install # Run linting ./scripts/lint.sh ``` We truly appreciate your interest in this project! This project is **Couchbase community-maintained**, which means it's **not officially supported** by our support team. However, our engineers are actively monitoring and maintaining this repo and will try to resolve issues on a best-effort basis. Our support portal is unable to assist with requests related to this project, so we kindly ask that all inquiries stay within GitHub. Your collaboration helps us all move forward together - thank you! --- # Couchbase Labs · GitHub Source: https://github.com/couchbaselabs # Couchbase Labs Couchbase. The Operational Data Platform for AI. ® - 173 followers - Santa Clara, California, USA - https://www.couchbase.com/developers/ ## Popular repositories Loading - TouchDB-iOS TouchDB-iOS Public archiveCouchDB-compatible mobile database; Objective-C version - iOS-Couchbase iOS-Couchbase Public archiveThis repository fork is obsolete; the project's been restructured and development is going on in other repos. Please follow the link below, or read the current README. - - TouchDB-Android TouchDB-Android Public archiveCouchDB-compatible mobile database; Android version - CouchCocoa CouchCocoa Public archiveObjective-C API for CouchDB on iOS and Mac OS - ### Repositories Showing 10 of 947 repositories - couchbase-cli-doc Public Forked from couchbase/couchbase-cli Command Line tools for Administering a Couchbase Cluster forked for doc preview couchbaselabs/couchbase-cli-doc’s past year of commit activity - TAF Public couchbaselabs/TAF’s past year of commit activity #### Top languages Loading… #### Most used topics Loading… --- # Agora - Customer Story Source: https://www.couchbase.com/customers/agora/ Last modified: 2026-06-30T12:02:46+00:00 ## About Agora As a pioneer and global leader in real-time engagement (RTE), Agora provides developers with flexible APIs and no-code tools to embed conversational AI, voice, video, and chat into apps and IoT devices. Building on a multiyear relationship, Agora is expanding its use of Couchbase beyond real-time messaging to support retrieval-augmented generation (RAG) for AI agents. This technology delivers the fast data retrieval needed to keep AI interactions natural while also broadening Agora’s enterprise use cases. ### Story highlights - Scaled its Couchbase footprint from messaging into RAG-powered conversational AI - Targets sub-half-second transactions to keep voice and chat agent responses seamless - Unlocked new enterprise use cases across customer service and outbound sales --- # Amadeus - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/amadeus/ Last modified: 2026-06-10T07:25:20+00:00 ## About Amadeus Amadeus is a leading provider of travel software and solutions for the travel industry, with airlines using the technology to board over 1.8 billion passengers a year. As the biggest processor of worldwide travel bookings, Amadeus manages a huge daily workload with no room for outages. To keep up with its rapid growth and highly demanding end users, Amadeus “boxes” its applications so they can be deployed on any private or public cloud. Amadeus uses Couchbase clusters and cross data center replication (XDCR) in all its data centers to ensure high availability, resiliency, and a single source of truth for bookings. ### Story highlights - Superior customer experience thanks to speeds of 50M operations/second and response times under 2.5 milliseconds - Multi-dimensional scaling adds improved agility with 180TB usable storage for a 17TB dataset - Easy cross data center replication between clusters improves reliability ### Key Results 50M operations per second <2.5ms response times 180TB usable storage for a 17TB dataset --- # BR-DGE - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/br-dge/ Last modified: 2026-05-20T09:44:53+00:00 ## About BR-DGE BR-DGE is a payments technology company that powers billions of monthly global transactions for e-merchants and their customers, and for the partners in their growing payments ecosystem. BR-DGE’s modular, independent payment orchestration platform is simple to integrate and adopt, enabling merchants to easily streamline payments, consolidate reporting, and speed up innovation. BR-DGE chose Couchbase to ensure they had the modern NoSQL capabilities they needed to harness vast volumes of sensitive financial data in near real time with high availability and scalability. ### Story highlights - NoSQL and SQL++ give BR-DGE the flexibility to handle a wide variety of data and optimize its structure for high efficiency and performance - XDCR protects against data center failure and provides high-performance data access for globally distributed applications ### Key results: 88% faster time to market 10-37% reduction in acquiring fees --- # BroadJump - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/broadjump/ Last modified: 2026-05-20T09:48:15+00:00 ## About BroadJump BroadJump is a healthcare sourcing analytics company that helps organizations gain better visibility and control over their expense management to lower costs, operate more efficiently, and improve quality of care. Using advanced pricing models, BroadJump enables customers to save millions by achieving true pricing transparency. BroadJump switched from Cosmos DB to the Couchbase multipurpose database in the Azure cloud to gain features, lower costs, integrate JSON analytics, and use familiar SQL queries. ### Story highlights - Improved query performance for complex queries by 500% - Massively parallel processing engine enables the execution of complex queries - Consolidated database management cuts development cycle times by over 25% ### Key results 50% reduction in overall storage needs 500% improvement in query performance >25% shorter development cycle times --- # BT - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/bt/ Last modified: 2026-05-20T10:48:41+00:00 ## About BT Multinational telecommunications company BT has operations in 180 countries and over 1.5 million subscribers. To keep their customers happy, the company needs to seamlessly deliver content whenever and wherever viewers want to access it. WIth Couchbase’s flexible data model, BT can accelerate delivery of new features across all platforms while easily scaling to maintain high performance regardless of spikes in demand. ### Story highlights - Flexible data model supports faster time to market for new products and enables cross-device IP streaming - Low latency and high throughput accommodate peaks in demand for superior viewer experiences - Easy maintenance and scaling lower capital and ops costs --- # Carnival - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/carnival/ Last modified: 2026-05-20T11:00:34+00:00 ## About Carnival Carnival Corporation is the world’s largest travel leisure company, with a fleet of over 100 cruise vessels across 10 brands. To deliver personalized experiences for every passenger, Carnival’s OceanMedallion system combines wearable IoT medallions, a mobile app, and IoT sensors throughout each vessel. By seamlessly handling massive volumes of real-time data from the system, Couchbase helps Carnival provide highly personalized services that build brand loyalty and generate additional upsell revenue. ### Story highlights - OceanMedallion system captures and matches behavior-based preferences of guests, increasing brand loyalty and upsells - Automatic syncing to AWS data centers provides real-time speed impervious to internet disruption - Guest profile and preference data is securely stored for future voyages ### Key results: 100 vessels across 10 cruise lines <5K passengers aboard the ships 100% uptime for ship operations --- # Carrefour Spain - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/carrefour/ Last modified: 2026-05-20T11:02:45+00:00 ## About Carrefour Carrefour is one of the world’s largest retailers with over 1,000 stores in Spain alone. Carrefour Spain also manages an online marketplace with over 1,500 vendors and 3 million products. When their monolithic e-commerce platform became too unwieldy to manage efficiently, Carrefour decided to transition to a microservices platform in the cloud. Couchbase’s multipurpose NoSQL database enables Carrefour to meet all their microservices objectives, including fast time to market, integrated cache and database, and no downtime during peak traffic. ### Story highlights - Couchbase’s cloud-first architecture makes it fast and easy to develop decoupled microservices and to scale applications independently - Applications sustain performance of 20K operations/second even under extreme load spikes of up to 4x normal workload ### Key results 20K operations per second 4x normal workload spikes supported <3ms average response time --- # CenterEdge Software - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/centeredge/ Last modified: 2026-04-17T07:04:57+00:00 ## About CenterEdge CenterEdge provides amusement parks and other family entertainment centers with software solutions for point-of-sale, online ticketing, and other essential business functions. First, CenterEdge used Couchbase to move its source of truth database to the cloud. Then they took advantage of Couchbase’s full-text search to give their clients lightning-fast search capabilities across millions of customer records. Couchbase also indexes data rapidly, so customers immediately see updates across all their applications. ### Story highlights - Full-text search accelerates search results, enhancing customer service and speeding up marketing efforts - Couchbase indexes data rapidly, so users see updates right away across applications - Full-text search indexes are automatically sharded across nodes, spreading workloads efficiently --- # Cisco - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/cisco/ Last modified: 2026-04-17T06:48:37+00:00 ## About Cisco Cable companies worldwide use Cisco’s VSRM (Videoscape Session Resource Manager) application to enable their broadcast, on-demand, and DVR video services for 100+ billion user sessions per year. When VSRM became overly complex to scale, Cisco decided to move the platform to a NoSQL database in the cloud. After assessing numerous databases, including Cassandra and MongoDB™, Cisco chose Couchbase for its strong data consistency, reliable low latency, and consistent 500-microsecond response times at massive scale. ### Story highlights - Cisco chose Couchbase over Cassandra and MongoDB for the strongest data consistency - High-performance architecture delivers reliable low latency and consistent 500-microsecond response times at massive scale - Multi-dimensional scaling allows Cisco to grow with precision as demands change ### Key results 100B+ user sessions per year 500 μs response times --- # CNAF - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/cnaf/ Last modified: 2026-05-20T11:11:10+00:00 ## About CNAF Caisse Nationale des Allocations Familiales (CNAF) is an essential operating service of the French social security system that supports families. The agency manages and distributes family allowance funds designed to reduce financial vulnerability and poverty for more than 33 million beneficiaries each year. When CNAF needed to reduce its guaranteed response time to 24 hours, it turned to Couchbase’s NoSQL solution to enable accurate real-time evaluations. ### Story highlights - Couchbase NoSQL environment instantly merges historical data with new information for combined analysis - Case workers are able to provide real-time decisions --- # Comcast - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/comcast/ Last modified: 2026-05-20T11:43:19+00:00 ## About Comcast Comcast, a leading provider of video, high-speed internet, and voice services, uses Couchbase to deliver better customer support across multiple lines of business. A key part of Comcast’s business model is to provide a customer experience that is always improving. Achieving that goal is complicated because customers interact with Comcast in many different ways - and building a single view of each customer became a challenge with relational technologies. With Couchbase, Comcast presents a complete picture of each customer when support receives a call, resulting in better, faster service for the company’s customers. ### Story highlights - Improved performance even as work volume increased - Single source of customer information improves the support experience - Multi-dimensional scaling allows cost-effective growth ### Key Results 40M+ documents 61K users --- # Coyote - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/coyote/ Last modified: 2026-05-20T11:46:51+00:00 ## About Coyote Coyote is Europe’s leading provider of real-time road information for drivers. When they wanted to provide personalized dashboards to increase membership and engagement, they also needed a new data platform that provided scalable real-time performance. And it had to work for millions of users who often had no internet connection while driving. Couchbase offered the end-to-end cloud-ready solution Coyote needed to launch their new service quickly and grow it seamlessly. ### Story highlights - Met a tight deadline for launching the new service - Gained scalable real-time performance to support 500 million documents - Sparked rapid adoption by 35% of members within three months ### Key results: 500M documents 5M users 13M alerts per day --- # Cvent - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/cvent/ Last modified: 2026-04-17T07:19:26+00:00 ## About Cvent As the company behind the industry’s leading event and meeting management platform, Cvent is constantly building new services for its customers. Over time, Cvent’s platform grew into a monolithic application that was increasingly difficult to scale. In order to improve scalability and simplify development, Cvent made the move to a microservices architecture. They chose Couchbase’s NoSQL database as the center of their new architecture because it’s uniquely able to provide the high performance, scalability, and flexibility required for continuous delivery. ### Story highlights - Couchbase scales easily and efficiently to hundreds of nodes - A built-in web admin console makes it easy to configure, manage, and monitor - Developers work on the fly using Couchbase’s schemaless database and SQL-based query language ### Key results 40K attendees --- # Develia - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/develia/ Last modified: 2026-04-17T07:40:33+00:00 ## About Develia Develia Srl is an Italian technology company specializing in software solutions for early childhood education. With a strong focus on digital innovation, Develia developed Kindertap, a comprehensive platform designed to help nurseries and kindergartens streamline administrative tasks, enhance communication with parents, and improve daily childcare management. By leveraging modern technology, Develia empowers educators to make early education more efficient, transparent, and engaging for both schools and families. ### Story highlights - Offline availability enables Develia to provide always-on access to 120,000 parents and teachers - Couchbase horizontal scaling makes it easy to expand - Capella DBaaS simplifies and automates administration, security, and maintenance ### Key Results 1,300+ schools supported 120,000+ users --- # DirecTV - NoSQL Customer Success and Case Studies Source: https://www.couchbase.com/customers/directv/ Last modified: 2026-06-10T11:01:11+00:00 ## About DirecTV DirecTV, a leader in digital entertainment serving over 38 million customers with 3,000+ channels, needed a flexible architecture to support multiple schemas, high scalability, and 100% uptime. They chose Couchbase because it provided everything they needed, including a SQL-based query language that simplified adoption. Couchbase also proved to be twice as fast as the closest competitor during proof-of-concept trials. ## STORY HIGHLIGHTS - Dynamic modeling with NoSQL and Node.js streamlines development - Cross data center replication delivers high availability - Couchbase’s NoSQL provides unmatched flexibility, scalability, and performance - SQL++ query language enables a nearly flat learning curve --- # Domino’s Pizza - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/dominos/ Last modified: 2026-06-10T10:46:07+00:00 ## About Domino’s Pizza Domino’s, the world’s largest pizza company with 18,000 stores in 90+ countries, is highly digital, generating over 70% of U.S. sales online. For their single platform supporting operational and analytical workloads, Domino’s chose Couchbase over Cassandra. They selected Couchbase’s multipurpose, high-performing database for its flexibility and built-in services like full-text search and analytics. ## STORY HIGHLIGHTS - Marketers can now create personalized ad hoc campaigns using unified real-time data - Domino’s plugged Couchbase directly into their e-commerce platform, eliminating legacy SQL components and increasing agility - Teams can pull information directly from a central repository without having to submit a request to a database team --- # FCBH - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/fcbh/ Last modified: 2026-05-20T11:55:50+00:00 ## About Faith Comes By Hearing Faith Comes By Hearing (FCBH) is a Bible ministry that works around the globe to record and provide free Audio Scripture in every language that needs it. Much of FCBH’s work is conducted in remote locations, which creates many unique challenges. As the organization’s mission grew, FCBH struggled with issues of scalability, data management, and offline sync. By migrating the database to Couchbase Capella™ DBaaS, FCBH gained the ability to sync and collaborate on data even without the internet and to scale quickly and cost-effectively at any time. ### Story highlights - Capella allows FCBH to scale incrementally at any time without relicensing or unplanned costs - Automated sync makes it easy to keep the database accurate and up to date across locations - Reliable peer-to-peer sync allows teams to collaborate smoothly in remote locations without internet ### Key Results 250+ projects and growing 10K audio files per project --- # FICO - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/fico/ Last modified: 2026-06-10T07:36:44+00:00 ## About FICO FICO’s Falcon Fraud Manager, powered by Couchbase and AI, is the #1 fraud detection platform, scoring 65% of the world’s credit/debit cards. To prevent downtime, which leads to fraud and lost revenue, FICO needed a multipurpose NoSQL database for high availability and transactional volume when providing credit checks and targeted offers for new telecommunications customers. Couchbase was chosen over Cassandra and MongoDB™ for speed, scalability, availability, and persistence to support large XML objects. ## STORY HIGHLIGHTS - Memory-first architecture allows <1 ms response times - Complete HA/DR solution delivers 24×365 application uptime - Neural networking algorithms run on Couchbase and access data as key-value pairs ### KEY RESULTS <1MS response times 24x365 application uptime --- # Foundries.io - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/foundries-io/ Last modified: 2026-06-10T11:09:08+00:00 ## About Foundries.io Foundries.io offers the first complete Edge-Platform-as-a-Service (EPaaS) for building, deploying, managing, and connecting edge and IoT devices. Use cases include robotic vacuums, electric scooters, and smart shipping containers. Facing rapid growth, Foundries.io realized its MariaDB database couldn’t scale fast enough. To avoid failure, Foundries.io switched to Couchbase for superior scalability, usability, performance, and ease of management. ### Story highlights - Couchbase delivered 100x better performance and scalability and error rate previously caused by database scale issues dropped significantly - An issue that was expected to take 6 months and $100K to address was solved much faster at a substantially lower cost - Engineers can now focus on building additional features instead of managing the database --- # General Electric - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/ge/ Last modified: 2026-06-10T10:43:15+00:00 ## About General Electric GE Vernova (formerly GE Digital) needed a high-performance mobile solution for field workers to analyze vast industrial data. To ensure high availability and performance despite poor connectivity, GE migrated its cloud-based Predix platform to Couchbase Mobile in just 30 days. Couchbase’s flexible model stores data directly on workers’ devices, enabling offline access and automatic syncing to the cloud for seamless field service. ## STORY HIGHLIGHTS - Integrates with existing customer systems, and data flows smoothly without impacting the user experience - Offline access and automatic syncing empower field workers regardless of location or connectivity - Flexible data management and processing options enable fast, easy support for a wide variety of customer applications --- # GroundHog Apps - NoSQL Customer Success and Case Studies Source: https://www.couchbase.com/customers/groundhogapps/ Last modified: 2026-06-10T11:10:54+00:00 ## About GroundHog Apps GroundHog Apps creates intuitive, reliable, and scalable apps for some of the world’s largest mining and oil companies. Its solutions are focused on solving complex business-critical problems and driving digital transformation. Because their clients often work in remote locations, GroundHog Apps relies on Couchbase for a robust and reliable platform that has built-in sync capabilities, provides a seamless experience with or without a network connection, and works in the cloud or on premises. ## STORY HIGHLIGHTS - Couchbase deploys and runs easily on bare metal and almost any cloud platform - Couchbase provides robust built-in sync capability - Couchbase captures data even without Wi-Fi or cellular service and syncs with the database when a connection becomes available --- # Jam City - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/jam-city/ Last modified: 2026-04-17T07:12:49+00:00 ## About Jam City Jam City is a leader in mobile entertainment, providing unique and deeply engaging games that appeal to broad global audiences. Its wildly popular puzzle game Cookie Jam won Facebook’s Game of the Year after scaling to meet the demand of 5 million users globally in under 8 months. Jam City and Couchbase teamed up in preparation for the huge spike in social and mobile hits once Cookie Jam had begun gaining traction, successfully avoiding downtime. Jam City leverages Couchbase on AWS for several of their most popular games, including Panda Pop and Juice Jam, among others. ### Story highlights - Scaled to meet the demand of 5 million users in under 8 months - Flexibility of JSON allows developers to define the data model and iterate without having to request and wait for schema changes - Flexible rebalance and failover help avoid downtime despite 37.5 million installs and 50K ops per second ### Key results: 5M users 37.5M installs 50K ops per second --- # Jinmu - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/jinmu/ Last modified: 2026-05-20T12:08:52+00:00 ## About Jinmu Jinmu Information is a professional IT data consulting and service provider committed to providing users with high-quality information products, consulting, and technical services. The company supports NoSQL database solutions across China, Hong Kong, and Singapore for clients in finance, insurance, gaming, e-commerce, and other industries. For its AI assistant project, Jinmu selected Couchbase over MongoDB for its vector search capabilities, SQL syntax support, and the ability to store and process time series data. ### Story highlights - The database supports query acquisition under high concurrency - Improved application performance and stability - The assistant can quickly and accurately retrieve relevant context from past exchanges by leveraging Couchbase’s Vector Search ### Key results 70M documents 8K operations per second 10ms response times --- # LinkedIn - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/linkedin/ Last modified: 2026-05-20T12:12:33+00:00 ## About LinkedIn LinkedIn is the world’s largest online professional network with over 1 billion members. After outgrowing Oracle and then Memcached, LinkedIn chose Couchbase over MongoDB™ and Redis to be the caching solution for its source-of-truth (SoT) data store. Thanks to its ease of use and extremely low latency, Couchbase’s multipurpose database quickly became popular with site reliability engineers across the organization. Today, LinkedIn has a Caching as a Service team that uses Couchbase to support over 50 use cases companywide. ### Story highlights - Couchbase is used for all in-memory storage in the data center, powering 10+ million queries per second - Tremendous performance at scale, averaging <4ms latency for over 2.5 billion items - Ease of use, built-in replication and cluster expansion, and automatic partitioning reduced operations costs ### Key results 10M+ queries per second <4MS avg latency for 2.5+ billion items ## Couchbase & LinkedIn: Innovating together See how Couchbase and LinkedIn drive innovation, scalability, and seamless user experiences, showcasing the power of cutting-edge technology and shared vision. --- # Lotum - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/lotum/ Last modified: 2026-05-20T12:13:42+00:00 ## About Lotum Founded in 2006, Lotum is one of the world’s leading providers of mobile games and apps for iOS, Android, and Facebook Messenger. Lotum prides itself on being a small but mighty team of 35 people whose creations bring joy to millions of users around the world every day. When Lotum needed a high performing database to meet their technical requirements and reduce operational costs, the team unanimously chose Couchbase Capella™. ### Story highlights - Increased performance, scalability, and app speed for most popular mobile game - A synchronized experience for users across all devices to ensure accurate scores are displayed - Offline-first capabilities ensure apps are always available and fast, even without internet connectivity ### Key results 800M downloads worldwide 10M+ monthly active users --- # Maccabi - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/maccabi/ Last modified: 2026-05-20T12:15:48+00:00 ## About Maccabi Healthcare Services Maccabi is the second-largest healthcare maintenance operator (HMO) in Israel, covering over 2.3 million beneficiaries (26% of market share). It operates both as an insurer of its members and as their care provider. It is a community-based healthcare provider that provides most of the care in the community. Maccabi leverages Couchbase for performance at scale, integrated caching, and mobile. ### Story highlights - Consolidated data across multiple systems into one easy to query database for mobile users - 2.5M customers manage their healthcare via a single mobile app - Ongoing 1,000 concurrent connections during daytime with zero slowdowns or offline periods have led to a 60% improvement in user ratings ### Key results 2.5M customers 1,000 concurrent connections 60% improvement in user ratings --- # Marriott - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/marriott/ Last modified: 2026-04-17T06:43:46+00:00 ## About Marriott To maintain its competitive edge in the digital economy, Marriott wanted to create personalized customer experiences, improve online reliability, and release new apps faster. After a technical and architectural evaluation, Marriott chose Couchbase to replace its legacy infrastructure. Couchbase had already proven itself in the industry, and Marriott’s solutions architects were impressed by Couchbase’s built-in cache, ease and flexibility for moving and adding cluster nodes, and easy disaster recovery. ### Story highlights - Data replicated to multiple geographic areas optimizes response times and improves availability - A scalable, flexible cloud-based model reduces application development costs and improves speed - Developers use SQL for JSON to deliver personalized customer experiences ### Key results 4,000 transactions per second 30+ million documents --- # McGraw-Hill Education - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/mcgraw-hill-education/ Last modified: 2026-06-10T11:16:46+00:00 ## About McGraw-Hill Education When McGraw-Hill Education (MHE) took its traditional media publishing company into the digital world, it needed to scale to millions of users while supporting open content, third-party metadata, and interactive apps. After studying similar use cases at advertising and social gaming companies, MHE realized that only Couchbase could support the massive scalability and rich, personalized user experiences they wanted to provide. With Couchbase at the core, MHE built a self-adapting learning portal that delivers fast, personalized results for every learner. ### Story highlights - Couchbase makes unlimited scalability quick, easy, and cost-effective - Users can search text, video, images, and metadata for lightning-fast access to personally tailored content - A schemaless NoSQL architecture easily incorporates diverse and changing types of data --- # MedicaSoft - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/medicasoft/ Last modified: 2026-05-20T12:19:00+00:00 ## About MedicaSoft MedicaSoft is an independent company that provides cloud-based, HIPAA-compliant software solutions and health IT services to healthcare providers, payors, and health information exchanges. Their flagship product, the NXT Platform, parses, cleans, normalizes, transforms, and enriches large volumes of clinical and claims data in real time. When MedicaSoft needed a database that could move data quickly to fulfill medical record requests, they turned to Couchbase for a highly secure, available, and scalable solution. ### Story highlights - Couchbase is the central solution, storing data as JSON documents to make it highly accessible via APIs - Capturing data accurately enables MedicaSoft’s customers to keep patient data safer, catch errors effectively, and protect the health and safety of each patient at a compelling price point ### Key Results >50 feeds of clinical data collected from hospitals 100B JSON documents across all clients --- # MOLO17 - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/molo17/ Last modified: 2025-01-07T13:33:36+00:00 ## About MOLO17 MOLO17 is a Couchbase partner that securely unlocks enterprise data potential with 100% uptime and uninterrupted business continuity. When the MOLO17 team was approached by Insiel SpA to build a location tracking and communication application for Barcolana, the world-renowned regatta in the Gulf of Trieste, they turned to Capella App Services on AWS to take advantage of Couchbase’s fully managed backend designed for mobile, IoT, and edge applications. ###### Story highlights - 200 app downloads and 10 boats rescued in minutes versus hours - Precise, one-tap location information from sailors leading to safer events and faster emergency response times - Streamlined information flow, offline availability, and near real-time synchronization ###### Key results - 200 downloads during event - 10 boats rescued ###### Story highlights - 200 app downloads and 10 boats rescued in minutes versus hours - Precise, one-tap location information from sailors leading to safer events and faster emergency response times - Streamlined information flow, offline availability, and near real-time synchronization ###### Key results - 200 downloads during event - 10 boats rescued --- # Nexon - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/nexon/ Last modified: 2026-05-20T12:23:55+00:00 ## About Nexon Nexon, a global leader in virtual world games and massively multiplayer online role-playing games (MMORPG), uses Couchbase Capella Database-as-a-Service (DBaaS) for greater developer agility. With Capella on AWS, Nexon achieved a faster time to market with its launch of Blue Archive, which was released worldwide in 2021. Capella’s high availability and distributed memory-first architecture delivers a consistent performance experience for players as game adoption grows. ### Story highlights - Flexible data model while still using SQL - Ability to launch new regions in approximately 20 minutes - Large reduction of management efforts with improved uptime - Controlled data replication, moving subsets of data with XDCR ### Key results 20min launch time for new regions --- # Nielsen - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/nielsen/ Last modified: 2026-04-17T07:20:31+00:00 ## About Nielsen Nielsen’s Answers on Demand (AOD) service delivers consumer data and analytics to businesses in over 100 countries. In order to track and report sales of fast-moving consumer goods, Nielsen needed a backend solution that could store user-generated data while providing extremely fast response times and low latency. Using Couchbase as a document store, Nielsen was able to sidestep many limitations of their Oracle database, simplify system management, and boost response time by 50%. ### Story highlights - Flexible data modeling and queries increased change management efficiency by 80% - Pre-indexing metadata helped boost response times by 50% - Easy scalability reduced operations costs - SQL++ for big data analytics enabled more granular insights ### Key results 80% increased change management efficiency 50% boost in response time --- # Nuance - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/nuance/ Last modified: 2026-05-20T12:24:51+00:00 ## About Nuance Whenever you receive a personalized text, email, or phone call such as a flight update or fraud alert, those automated communications are likely powered by Nuance. As their service expanded, Nuance’s applications became more complex, data volume increased, and their Oracle-powered system became too cumbersome and expensive to manage and scale. Nuance decided to switch to a NoSQL database for greater agility and scalability, and they chose Couchbase for its easy manageability and cross data center replication. ### Story highlights - Multi-dimensional scaling delivers easy, cost-effective growth on commodity hardware - XDCR provides simple bidirectional replication for better disaster recovery - Hadoop integration allows analysis of unstructured data and flexible schema enables agile response to changing data needs --- # PepsiCo - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/pepsico/ Last modified: 2026-06-10T10:37:54+00:00 ## About PepsiCo As a global leader in convenience foods and beverages, PepsiCo maintains a complex distribution system to keep thousands of stores stocked at all times. To make sure their field reps can access the system from anywhere, even without an internet connection, PepsiCo partnered with Couchbase to architect an offline-available solution that’s 5G compatible. The solution automatically syncs data between devices and the cloud while providing high flexibility for developers and operations. ## STORY HIGHLIGHTS - 30,000 users can now perform operations, including placing orders, merchandising stores, and managing sales in stores without disruption, even without an internet connection - Information is readily available to sales reps anywhere, and data is captured in the field on Couchbase’s embedded database and then auto synced with the server using Sync Gateway when there’s a reliable connection - Hundreds of thousands of documents are able to flow back and forth between the devices and the server --- # PG&E - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/pge/ Last modified: 2026-06-10T10:41:12+00:00 ## About PG&E Leading utility PG&E, with 16 million customers and 20,000 employees, must provide field inspectors with real-time data (account info, maps, safety) over a huge geographic area. Couchbase connects field teams to this data, online or offline, improving service and lowering visit costs. Cross data center replication (XDCR) adds resiliency, ensuring the application is always available at job sites. ## STORY HIGHLIGHTS - Quickly respond to service requests and easily coordinate field teams - Improved asset/risk management - Real-time, relevant info for improved safety/quality - Multi-channel customer support - Fast, easy mobile development - Automated business processes speed service, lower costs for field work ### KEY RESULTS 20K employees 16M customers 70K+ square mile service area --- # Probayes - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/probayes/ Last modified: 2026-05-20T12:30:29+00:00 ## About Probayes Probayes was founded in 2003 and became a subsidiary of the La Poste Group in 2016. With a team of 90 employees, the company manages over 100 projects annually. Specializing in artificial intelligence, Probayes creates tailored SaaS solutions to assist businesses across diverse industries, including automotive, defense, finance, insurance, supply chain, and retail. Among its range of products is FraudIA, a solution designed to help financial institutions detect fraud in credit and debit card transactions. ### Story highlights - Couchbase supports 4.2 billion online transactions from 30.8 million credit cards annually - Uses 900 indicators to assess the fraud potential of banking transactions - 450 banking transactions analyzed per second, with 30-50 ms processing power for each transaction ### Key Results 4.2B transactions annually 450 transactions per second ≤50ms processing time per transaction --- # Quantic - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/quantic/ Last modified: 2026-06-10T10:48:09+00:00 ## About Quantic Quantic is a fast-growing startup on a mission to help small and medium-sized businesses streamline their operations by using a full-featured cloud-based point of sale (POS) platform. When Quantic outgrew its original database, it turned to Couchbase Capella™ DBaaS for a simple yet powerful way to keep pace with an expanding number of customers, products, and features. Capella provides easy scalability along with automatic offline sync capabilities and an always-on experience for users. ## STORY HIGHLIGHTS - Capella’s powerful offline sync capabilities paired with the flexibility of JSON and SQL++ deliver an always-on, always-fast user experience - Quantic can provide instant updates and a seamless end-user experience while reducing query time by 50% - A fully managed DBaaS and significantly faster indexing lighten the workload for developers, saves time, and reduces costs --- # Rakuten - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/rakuten/ Last modified: 2026-04-17T07:23:36+00:00 ## About Rakuten Rakuten Group, Inc. is a global technology leader in services that empower individuals, communities, businesses, and society. Founded in Tokyo in 1997 as an online marketplace, Rakuten has expanded to offer services in e-commerce, fintech, digital content, and communications to 1.8 billion members around the world. The Rakuten Group has more than 30,000 employees, and operations in 30 countries and regions. ### Story highlights - Couchbase ensures nearly 100% availability, low read latency, and data backups - By consolidating databases, Rakuten enhanced cost-efficiency and reduced TCO by 20% - Couchbase’s multipurpose database, SQL for JSON, and rich features increased capabilities while reducing complexity 100% availability 20% reduction in TCO 475M catalog items --- # Seenit - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/seenit/ Last modified: 2026-06-10T11:05:26+00:00 ## About SeenIt Built with Couchbase Capella™, Seenit gives enterprises a highly innovative and collaborative employee-powered video platform that’s easy to use. After crowdsourcing video content from employees, fans, and customers, companies can quickly sort through thousands of videos to find the perfect clips. The powerful combination of Couchbase’s SQL++ and full-text search on top of machine learning in the cloud allows companies and their employees to build their brands using engaging storytelling videos. ## STORY HIGHLIGHTS - Full-text search allows sophisticated search for any combination of words, and sentiments in over 500,000 videos stored in Couchbase - Machine learning adds subtitles to videos and in-memory cache leads to fast response times for key-value lookup - The platform scales and upgrades with ease, enabling what would have been a 6-month upgrade project to be completed in under a month ### KEY RESULTS 500K+ videos stored 75K+ users 15K+ stories collected --- # Sky - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/sky/ Last modified: 2026-06-10T10:50:34+00:00 ## About Sky Sky, Europe’s largest media company and TV broadcaster, uses Couchbase to keep compelling content available during peak demand for over 22 million subscribers. Frustrated with the scalability and performance limitations of their legacy Oracle RDBMS, Sky started its digital transformation by migrating its identity platform to Couchbase for full sign-up and sign-in functionality. This move reduced sign-in response time by 50% and had huge implications for disaster recovery, dropping the recovery time from hours to minutes. ## STORY HIGHLIGHTS - Unmatchable performance at scale ensures superior user experience - Flexible data model supports faster time to market for new products - Ease of maintenance and scaling lowered capital and ops costs - XDCR transfers data to multiple datacenters, reducing sign-in time by 50% and dropping recovery time from hours to minutes --- # Staples - NoSQL Customer Success and Case Studies Source: https://www.couchbase.com/customers/staples/ Last modified: 2026-06-10T11:03:05+00:00 ## About Staples Office supply retailer Staples implemented a centralized inventory microservice on Couchbase to provide a responsive, consistent ordering experience across all sales channels. Using Couchbase’s memory-first architecture, Staples achieves database results within 50 milliseconds, ensuring customers receive accurate, consistent information in real time at checkout, regardless of the channel they use. This positive user experience is helping drive new revenues. ## STORY HIGHLIGHTS - Provided customers with real-time visibility into product availability and delivery estimates, consistent and accurate across all ordering channels - Increased customer retention, acquisition, and traffic by creating convenient and frictionless omnichannel experiences - Set the path for expanding a similar customer experience to the ordering channels of other business units of Staples, Inc. --- # SWARM Engineering - Capella Customer Story Source: https://www.couchbase.com/customers/swarm-engineering/ Last modified: 2026-06-10T10:56:07+00:00 ## About Swarm Engineering SWARM Engineering provides a SaaS platform that lets organizations in the agri-food industry optimize their supply chains using next-gen cognitive computing. SWARM makes it easy for business users to define problems and rapidly find solutions without any software coding or knowledge of advanced AI or machine learning. Customers using SWARM save millions of dollars, minimize waste, and reduce their environmental impact. ## STORY HIGHLIGHTS - Couchbase enables quick SQL implementation, unlimited scalability, fast prototype development, and allows data scientists to access all data from one place - Customers achieve 400% faster planning time with an average ROI of 3-10x - An AI-powered digital assistant interviews users to capture tribal knowledge, constraints, and key interdependencies, and helps users identify and benchmark critical challenges ### KEY RESULTS: 400% faster planning 3-10x ROI $1M+ savings per optimization --- # Synamedia - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/synamedia/ Last modified: 2026-05-20T12:57:50+00:00 ## About Synamedia Synamedia (formerly Cisco) is the largest global provider of video solutions for pay TV operators. To support its video platform technology, which enables broadcast, on-demand, and DVR video services, Synamedia needs high performance at scale to ensure it can accommodate over 100 billion user sessions per year. After assessing numerous NoSQL databases, including Cassandra and MongoDB™, the company chose Couchbase for very strong data consistency, reliable low latency of 500 microsecond response times at very large scale, and great scalability in a distributed system. ### Story highlights - High-performance architecture delivers reliable low latency, with consistent 500 microsecond response times at very large scale - Multi-dimensional scaling allows Synamedia to grow with precision as demand changes ### Key results 500μs response times >100B user sessions per year --- # NeuroSync - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/syncthink/ Last modified: 2026-04-17T06:58:20+00:00 ## About NeuroSync NeuroSync (formerly SyncThink) develops innovative technologies that improve concussion assessment and monitoring on the sports field or anywhere else. Using a virtual reality headset and a tablet, their EYE-SYNC platform can identify eye tracking impairment at the scene of an injury. The company requires a data platform that works even if there’s spotty connectivity, plus enterprise security to meet rigorous patient privacy regulations such as HIPAA. After evaluating a range of other data platforms, NeuroSync selected Couchbase for its mature, robust, and mobile-ready platform. ### Story highlights - Couchbase on AWS provides easily scalable performance for mobile applications - Fast, automatic sync speeds up concussion assessments after injury - Built-in enterprise security supports HIPAA compliance - Easy admin keeps dev team focused on product --- # Tesco - NoSQL Customer Success and Case Studies Source: https://www.couchbase.com/customers/tesco/ Last modified: 2026-05-20T12:59:58+00:00 ## About Tesco Couchbase powers catalog and inventory management at the third-largest retailer in the world measured by gross revenues, allowing Tesco to easily support tens of millions of products in-store and online for millions of customers. With Couchbase, Tesco can deliver a superior shopping experience, running price and promotions, stocking, shopping cart, supply chain, and new product apps with high performance and high availability. ### Story highlights - Easily and inexpensively scales to support 10M products and 35K requests per second as well as seasonal Black Friday traffic - Low-latency access to millions of documents for great customer experiences - JSON enables flexible schema for changing SKUs and support for SQL and text-based queries ### Key results 10M products supported 35K requests per second --- # Tikeasy - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/tikeasy/ Last modified: 2026-06-10T11:19:45+00:00 ## About Tikeasy Tikeasy was founded in France in 2008 to empower senior citizens by making it easier for them to access and use the internet. Tikeasy’s Ardoiz solution is a touchscreen tablet with a simplified interface, a custom family communication site, rich ad-free content, and dedicated phone support. Couchbase Mobile provides Ardoiz with a powerful database that works both online and offline, provides automatic and secure sync and backup, and supports Tikeasy’s ambitious goals for growth, scale, and commercial development. ### STORY HIGHLIGHTS - Improved performance, flexibility, and scalability of NoSQL deployments - Automatic synchronization and regular and encrypted backup - Easy and fast user profile and content recovery onto new devices ### Key results 100K+ tablets sold 87% of users active daily or weekly 15 content/service providers --- # Tommy Hilfiger - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/tommy-hilfiger/ Last modified: 2026-06-10T10:52:47+00:00 ## About Tommy Hilfiger Tommy Hilfiger, a global apparel and retail company with over 1,800 stores, revolutionized the fashion industry in 2015 with digital showrooms. Powered by Couchbase, these showrooms enable sales to wholesalers globally while minimizing the cost and time of producing and shipping physical samples. Couchbase ensures high performance, scalability, offline availability, and near real-time data synchronization for a flawless, immersive experience, even without internet connectivity. ## STORY HIGHLIGHTS - Faster time to market for new collections: buying trip duration reduced by 66% - Sample production cut by 80% - Anywhere, anytime engagement - Over 25 digital showroom deployments, and growing ### KEY RESULTS: 66% reduction in buying trip duration 80% cut in sample production 25+ digital showroom deployments --- # Tondo Smart - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/tondo-smart/ Last modified: 2026-04-17T06:53:46+00:00 ## About Tondo Smart Tondo Smart is a global leader in smart lighting and smart network infrastructures that are used to enable connected smart city applications. Tondo’s AI-native Smart City management cloud enables cities to measure and manage lighting, temperature, and energy consumption citywide in real time while avoiding information overload from massive amounts of telemetry data. ### Story highlights - With Couchbase, Tondo’s devices are always on and always connected - Able to scale quickly and easily to handle new customers and any amount of data without downtime or sacrificing performance - Couchbase’s SQL++ and developer-friendly tools let Tondo’s DevOps team hit the ground running ### Key results 60% reduction in operating costs 50% decrease in street and area lighting costs 40 cities using the Smart Lighting system --- # Trendyol - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/trendyol/ Last modified: 2026-05-20T13:04:13+00:00 ## About Trendyol Trendyol is one of the world’s leading e-commerce platforms with a multi-category offering that includes its own private label brand, Trendyol Collection. Founded in Turkey in 2010, Trendyol connects more than 250,000 sellers and brands with over 40 million customers on dedicated local language apps in Turkey, Germany, Azerbaijan, the Gulf States, and Central and Eastern Europe. The company also wholesales its Trendyol Collection brand to partner platforms in more than 100 countries around the world. ### Story highlights - Couchbase enables easy and cost-effective scaling without sacrificing high performance - Couchbase’s distributed database provides data storage and processing that spans clusters, regions, and cloud providers - Couchbase’s flexible JSON schema and familiar SQL++ enable developers to use their existing skill sets ### Key results: 75%+ improved query performance 10% increased coupon usage rate ## Couchbase & Trendyol: Powering E-Commerce excellence See how Couchbase helps Trendyol deliver seamless shopping for millions with improved query performance, scalable solutions, and e-commerce innovation. --- # Türk Telekom - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/turk-telekom/ Last modified: 2026-05-20T13:05:51+00:00 ## About Türk Telekom Türk Telekom, a 180-year-old state-owned telecommunications company, serves over 52 million subscribers across the 81 provinces in Turkey. The company provides communication and fiber infrastructure services across landline, cellular, internet, streaming, and digital services. To offer its customers innovative solutions, Türk Telekom must keep its technology infrastructure evolving, and this drove its transformation from a telecommunications to a technology company. ### Story highlights - 50% reduction in time and labor by consolidating databases - Couchbase’s distributed data architecture and XDCR automatically maintain data copies across multiple servers, minimizing the risk of information loss - 360-degree view of customers provides a faster and more reliable experience ### Key results: 50% reduction in time and labor 40% hardware savings 30% reduction in overall cost --- # United Airlines - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/united-airlines/ Last modified: 2026-04-17T06:41:24+00:00 ## About United Airlines United relies on a crew of 41,000+ pilots, flight attendants, and flight schedulers to operate over 1.6 million flights a year on a tight schedule. Because their crew scheduling application was cumbersome to use and difficult to change, United decided to modernize their technology using Couchbase Server and Couchbase Mobile. After they successfully streamlined work processes and simplified data management, United continued using Couchbase to update more of their business-critical applications, including their online and mobile booking apps. ### Story highlights - Simple, streamlined support for a highly mobile workforce - Multiple nodes support critical operations by preventing data loss and system outages - Cross data center replication provides out-of-the-box replication capabilities ### Key results >41,000 crew members >1.6M flights operated per year --- # Verizon - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/verizon/ Last modified: 2026-06-10T10:27:00+00:00 ## About Verizon Verizon operates America’s most reliable wireless network with 118 million connections. It provides communications and entertainment via mobile broadband and a premiere fiber network. For businesses, Verizon delivers integrated solutions worldwide. Its ThingSpace is an innovative IoT platform helping enterprises build and deploy solutions. Devices on ThingSpace can use services like connectivity and device management, reporting, analytics, security, and compliance. ## STORY HIGHLIGHTS - High performance at scale for billions of data points with automated sync between device and cloud - Ability to rapidly evolve schema as requirements change using JSON - Push-button scalability to support massive data volumes - XDCR enables the five-nines of high availability and disaster recovery --- # Viber - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/viber/ Last modified: 2026-06-10T10:30:32+00:00 ## About Viber The Viber app connects more than 1 billion users worldwide through high-quality audio and video calls, messaging, and more. To process up to 15 billion events per day, Viber needs scalable database performance. The company implemented Couchbase in a multi-layered AWS architecture. Couchbase updates user profiles in near-real time, delivering a responsive user experience. By replacing MongoDB™ and Redis with a single Couchbase database, Viber also reduced the number of servers from 300 to 120. ## STORY HIGHLIGHTS - Replaced Redis and MongoDB stack with Couchbase - Reduced total number of servers from 300+ to ~120 - Delivers a responsive experience with real-time user profile updates - Increased performance with ½ the database servers on AWS - Simplified management with a single Couchbase tier ### KEY RESULTS: 15B calling and messaging events per day 60% reduction in number of total servers --- # Vodafone - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/vodafone/ Last modified: 2026-06-10T11:07:33+00:00 ## About Vodafone Vodafone Spain serves over 14 million mobile and 3 million fixed-service customers, communicating with them through millions of emails, push notifications, and SMS messages annually. To eliminate redundancy, Vodafone developed a unified platform to manage all departmental communications and personalize the contact method based on customer preferences. Couchbase on AWS provides Vodafone Spain the necessary data security for GDPR compliance and the flexibility to scale on demand. ## STORY HIGHLIGHTS - Unified customer SMS, email, and push notifications onto one platform - XDCR facilitates easy scalability as users and data volume increase - Couchbase’s automatic failover raises a replica without losing data - Even at peak demand Couchbase does not exceed 10% of total capacity --- # Wallbid - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/wallbid/ Last modified: 2026-05-20T13:11:03+00:00 ## About Wallbid.io Wallbid is a world-class embedded insurance enabler. The Wallbid platform is a full-stack insurance distribution platform that integrates new-generation insurance products into any digital ecosystem, enriching the customer’s digital experience with easily accessible, personalized, and affordable insurance solutions in a matter of weeks, not months. The company’s disruptive, scalable technology is embedded into web apps, mobile apps, and in-store systems to deliver insurance products exactly when customers need them, in any country, language, or currency. ### Story highlights - Couchbase Capella™ provides the performance and scalability for a fast and seamless user experience - Thousands of requests per second are served almost instantly - Lowered TCO and reduced database management by consolidating the technology stack ### Key results <1s response times --- # Wells Fargo - NoSQL Customer Case Study Source: https://www.couchbase.com/customers/wells-fargo/ Last modified: 2026-06-10T10:22:33+00:00 ## About Wells Fargo Wells Fargo, the world’s second-largest bank by market cap and the fourth-largest in the U.S. by assets, uses FICO’s Falcon Fraud Manager and Couchbase’s NoSQL database for its fraud monitoring infrastructure. By applying machine learning to internal and third-party data, the bank adapts to sophisticated fraud attacks in real time. Today, 100% of transactions totaling 50+ million per day are processed for fraud in real time at less than 10 ms per operation. ## STORY HIGHLIGHTS - Now protects Debit PIN, Debit SIG, and Deposit vs. just Debit PIN - Processing 100% transactions in real time for fraud vs. 18% in previous system - 50M+ transactions per day vs. 4M+ in previous system - <10 ms for read or write operations for majority of transactions ### KEY RESULTS 50M+ transactions per day <10MS for read or write operations 100% of transactions processed in real time --- # Couchbase for Developers | Build Fast, Flexible NoSQL Apps Source: https://www.couchbase.com/developers/ Couchbase is fast, flexible, highly scalable, easy to use, and can be fully managed as Couchbase Capella™ DBaaS. Here’s how we solve tough challenges: Responsiveness is critical. We deliver in-memory speed and sub-millisecond response times for millions of users. Don’t choose between technologies. We provide flexibility and integration instead of compromise and complexity. We made offline sync a worry-free commodity. Get always-on availability at the edge for your mobile and IoT apps. We let you use your existing SQL skills, and we integrate easily with your favorite tools, IDEs, and frameworks. Your database should never force you to choose between SQL and JSON, key/value and search, or ACID and BASE. With Couchbase, you and your applications get seven integrated JSON-backed data services that don’t add any complexity to your architecture. Get Started With Full StackCoding apps that roam and sync is hard. Capella App Services and Couchbase Lite are easy. They provide an embeddable mobile JSON database and automatically sync your data. You don't have to worry about conflict resolution or network availability - you just focus on shipping your app. Start BuildingWhen you’re implementing business logic at scale, Couchbase eliminates complicated interactions by making all your data available from the same place. Backend developers can write code without having to integrate specialized solutions for scalability, consistency, acidity, and data models. Start BuildingWhy manage different databases for relational, document, search, and analytics when you can manage just one instead? Couchbase has only one type of node to install, observe, and scale. If you don't want to manage your database at all, choose Capella, and we’ll manage everything for you. Start DeployingBuild a basic REST API using Express and the Couchbase Node.js SDK EXPRESS Node REST API CRUD Get started with the Couchbase Lite Android SDK ANDROID JAVA Mobile Build a REST API with Couchbase's C# SDK and ASP.NET .NET REST API CRUD Learn how to install and configure Prometheus as a standalone instance Prometheus Monitoring Observability Configuration Inside Capella is Couchbase, the fast, feature-rich distributed NoSQL database that combines the flexibility of JSON documents with unmatched speed and scale in a modern cloud database platform. Learn More --- # Couchbase Capella for AI Developers Source: https://www.couchbase.com/developers/artificial-intelligence/ ### Add AI essentials like RAG and ML to dev workflow ##### Challenge Building agentic applications requires a new workflow for RAG, prompt design, and validation - all while keeping data secure and results accurate. ##### Solution Capella DBaaS unifies transactional, analytic, and AI data access. Developers can run RAG beside the database and add persistent Agent Memory so agents retain context across sessions. Access billion-scale vector indexing and SQL++ ANN queries for faster, smarter agentic pipelines. ### Ensure security in agentic applications ##### Challenge AI-powered applications often use sensitive data that requires robust security and compliance to protect data integrity and lower the risk of unauthorized publication. ##### Solution Capella delivers enterprise-grade encryption, RBAC, and auditing. Couchbase Server includes encryption at rest and key rotation for simpler compliance. Developers can host private models like Llama 3 and Mistral in Capella to train and embed vectors securely within enterprise environments. ### Integrate with AI tools ##### Challenge Integrating AI tools and frameworks with your database is often complex and time-consuming work. ##### Solution Capella integrates with agent frameworks like LangGraph, CrewAI, and LlamaIndex, LangChain, and Haystack to simplify AI orchestration and retrieval, making it easier to build with familiar tools and languages. 8.0 adds SQL++ ANN query support with both Hyperscale and Composite Indexes. ### Manage the backend without slowing down ##### Challenge Having a complex backend with separate systems for SQL, full-text, and vector search slows development and complicates high-performance search integration. ##### Solution Couchbase’s multi-model hybrid search reduces backend systems by unifying SQL++ queries, key-value, caching, full-text search, and hybrid and billion-scale search in one platform. By executing complex queries in one place, you can accelerate development, enhance flexibility, and cut infrastructure costs. --- # Couchbase Integrations | Frameworks, AI, Connectors Source: https://www.couchbase.com/developers/integrations/ Explore Couchbase integrations (both official and community supported) with top DevOps tools, frameworks, and select AI solutions to power your applications. This page highlights connectors that enable vector storage, document loading, data streaming, and caching. From infrastructure management with Terraform to data sync with Kafka and GlueSync, Couchbase brings performance and flexibility to your tech stack. - #### Join the community! We’re all hanging out on Discord and would love for you to join our conversations. - #### Access our docs Here’s everything you need to start building with Couchbase Capella™. - #### Get certified with Couchbase Academy Whether you’re managing Couchbase on premises, using Couchbase Autonomous Operator (CAO), using Couchbase Capella, or writing apps that use Couchbase, we have a certification for you. - #### Stay sharp with our blog News breaks first on our blog. Stay up to date on the Couchbase ecosystem and learn tips and tricks from our engineers, developer advocates, and partners. --- # LangChain Source: https://www.couchbase.com/developers/integrations/langchain/ Install the Couchbase LangChain package to integrate Couchbase capabilities into your applications. This allows for efficient vector storage, document loading, and caching of prompts and responses for LLMs. Semantic caching supports similarity-based retrieval and requires a search index and embeddings. Additionally, Couchbase can store chat message history for session management. Refer to the documentation for setup, examples, and API guidance for seamless implementation. Blogs - LLM + RAG integration with Couchbase - New features regarding LangChain/Capella - How to build faster LLM apps, and build LLM apps faster - #### What is Couchbase LangChain integration? It connects Couchbase with LangChain, allowing you to store and retrieve embeddings efficiently for AI and machine learning workflows. - #### Can I use Couchbase for both structured and unstructured data with LangChain? Yes, Couchbase supports multimodal data, allowing you to handle structured, semi-structured, and unstructured data alongside embeddings. - #### Does Couchbase require additional tools for similarity searches? No, Couchbase’s native Full-Text Search (FTS) can handle similarity searches, eliminating the need for external tools. - #### Is Couchbase with LangChain suitable for on-premises and cloud-based AI solutions? Yes, Couchbase offers flexibility to deploy both on-premises and across major cloud platforms, adapting to your infrastructure needs. - #### Join the community! We’re all hanging out on Discord and would love for you to join our conversations. - #### Access our docs Here’s everything you need to start building with Couchbase Capella™. - #### Get certified with Couchbase Academy Whether you’re managing Couchbase on premises, using Couchbase Autonomous Operator (CAO), using Couchbase Capella, or writing apps that use Couchbase, we have a certification for you. - #### Stay sharp with our blog News breaks first on our blog. Stay up to date on the Couchbase ecosystem and learn tips and tricks from our engineers, developer advocates, and partners. --- # LlamaIndex Source: https://www.couchbase.com/developers/integrations/llamaindex/ The CouchbaseReader integrates Couchbase with LlamaIndex, allowing data to be loaded from a Couchbase cluster into documents. Users can connect with or without a pre-configured client using connection strings and credentials. Data loading supports SQL++ queries and customizable fields for both text and metadata. Options for lazy or complete data loading provide flexibility, making it ideal for AI applications needing efficient data retrieval and integration. Docs **Data Loading from Couchbase:**Load documents into LlamaIndex using SQL++ queries to retrieve the required data from Couchbase.**Flexible Configuration Options:**Connect with Couchbase through credentials or an existing client instance.**Field Selection Control:**Specify text and metadata fields to structure the loaded documents as needed. Blogs - #### What does Couchbase integration with LlamaIndex enable? It allows users to fetch data from Couchbase using SQL++ queries and load it into LlamaIndex for processing and indexing. - #### How do I connect Couchbase to LlamaIndex? You can connect by providing Couchbase credentials or by passing an initialized Couchbase client to the CouchbaseReader. - #### Can I choose specific fields to include in the documents? Yes, you can specify which text fields and metadata fields to include when loading data from Couchbase into LlamaIndex. - #### Join the community! We’re all hanging out on Discord and would love for you to join our conversations. - #### Access our docs Here’s everything you need to start building with Couchbase Capella™. - #### Get certified with Couchbase Academy Whether you’re managing Couchbase on premises, using Couchbase Autonomous Operator (CAO), using Couchbase Capella, or writing apps that use Couchbase, we have a certification for you. - #### Stay sharp with our blog News breaks first on our blog. Stay up to date on the Couchbase ecosystem and learn tips and tricks from our engineers, developer advocates, and partners. --- # Couchbase Mobile SDKs Source: https://www.couchbase.com/developers/mobile-sdks/ ## Work locally or sync to the edge Couchbase Lite supports SQL, full-text search, and attachments (blobs). Sync data automatically with Capella App Services and via peer-to-peer. ### Start building with Android - ##### Get started with Kotlin Couchbase Lite for Android provides full idiomatic support for Kotlin apps. Develop using common Kotlin Patterns. - ##### Get started with Android Java Detailed step-by-step instructions for getting up and running with Couchbase Lite for Android Java. - ##### Docs Concept overviews and detailed step-by-step instructions for working with Couchbase Lite on Android. - ##### Tutorials for Android The Couchbase Developer Portal offers great resources to help you build fast and resilient Android applications. ### Start building with iOS - ##### Get started with Swift Coding with Couchbase Lite on Swift is straightforward. The Swift docs walk you through the process in detail. - ##### Get started with Objective-C Couchbase Lite can be embedded directly to iOS apps built on Objective-C. Learn how to install, query and sync. - ##### Docs Concept overviews and detailed step-by-step instructions for working with Couchbase Lite on iOS. - ##### Tutorials for iOS The Couchbase Developer Portal offers great resources to help you build fast and resilient iOS applications. ### Start building with C - ##### Get started with C Couchbase Lite on C is an ANSI C API for linking to C or C++ apps running on custom embedded IoT devices. - ##### Build applications Couchbase Lite on C is ideally suited for embedded devices running ARM SoCs with an MMU and minimal RAM. - ##### Docs The Couchbase on C API Reference lists all included modules and functions with details and syntax examples. - ##### Technical overview video Learn about the C API, platform compatibility, and how to create bindings to other languages like Python and Rust. ### Start building with .NET - ##### Get started with .NET Detailed step-by-step instructions for getting up and running quickly with Couchbase Lite on C#.NET. - ##### Build applications Get up to speed quickly on the Couchbase Lite .NET SDK with this learning path using a Xamarin Forms mobile app. - ##### Docs Get concept overviews and detailed step-by-step instructions for working with Couchbase Lite on C#.NET. - ##### Tutorials for .NET The Couchbase Developer Portal offers great resources to help you build fast and resilient .NET applications. ### Start building with Java - ##### Get started with Java Couchbase Lite on Java enables development and deployment of Couchbase Lite applications to a JVM environment. - ##### Build applications You can deploy “standalone” (Java Desktop/Console) apps or Web Apps using web app servers such as Apache Tomcat. - ##### Docs Concept overviews and detailed step-by-step instructions for working with Couchbase Lite on Java. - ##### Tutorial for Java This step-by-step tutorial guides you through working with Couchbase Lite embedded into a Travel application. ### Start building with JavaScript - ##### Get started with Ionic Ionic’s Couchbase Lite integration makes it easy for web developers to build high performance, offline-first apps. - ##### Get started with React Native Use Couchbase Lite as an embedded database within your React Native app using the NativeModule system. - ##### Docs Start here for information on building mobile or desktop applications with Couchbase Lite using JavaScript. - ##### Technical overview video Couchbase and Ionic discuss cross platform mobile development and the Ionic integration with Couchbase Lite. ### Start building with Flutter - ##### Getting started with Dart/Flutter The Dart SDK for Couchbase Lite is a community based project posted and maintained by the community on GitHub. - ##### Build applications Access the GitHub repository for the cbl-dart project, which implements Couchbase Lite for Dart and Flutter. - ##### Docs API references and step-by-step instructions for Installing, verifying and working with Couchbase Lite for Dart. - ##### Tutorials for Flutter The Couchbase Developer Portal offers resources to help you build fast and resilient applications using Flutter. ## Test-drive Couchbase yourself! Try Couchbase for free with zero friction and nothing to install - #### Couchbase Playground Test out Couchbase Lite code using language-specific samples and our SDKs without requiring any installation or significant time commitment. The playground includes a step-by-step process to learn basic CRUD operations on Couchbase Lite, including how to create, query, update, and delete documents. - #### Couchbase Capella App Services free tier Test-drive Couchbase Capella™ DBaaS and backend App Services and see how easy it is to build offline-first mobile apps with bidirectional data sync. The free tier includes tutorials with detailed step-by-step instructions for creating your first database and backend sync service. --- # Couchbase SDKs & Language Support for Modern App Development Source: https://www.couchbase.com/developers/sdks/ Couchbase Capella is made for developers to amplify their skills and increase productivity. Use Capella for **free** today ## SDKs by language Couchbase provides SDKs for many programming languages, offering broad SDK language support to fit your development needs. Choose your favorite, and we’ll show you how to get started, build applications, and get help. ### Start building with Java - ##### Getting started with Java Includes synchronous APIs, plus reactive and asynchronous equivalents to maximize flexibility and performance. - ##### Build applications Program interactions with Couchbase via the Data, Query, and Search Services. Use the new collections feature. - ##### Get help Share knowledge, ask questions, and connect with fellow coders in the Java forum. #### Java integrations The perfect match of Couchbase and Spring Data integration. Manage data and boost your development productivity with this essential integration for Couchbase Capella or Server and the familiar ease of Spring Data. This official plugin provides integrated support for Couchbase within the entire JetBrains ecosystems (RubyMine, PyCharm, Rider, etc.), making it easier to interact with your Couchbase databases directly from your IDE. Seamlessly integrate Couchbase with Quarkus for high-performance applications, featuring GraalVM native image generation for lightning-fast, cloud-native execution. ### Start building with Scala - ##### Getting started with Scala Includes synchronous APIs, plus reactive and asynchronous equivalents to maximize flexibility and performance. - ##### Build applications Learn to program with Couchbase Server using our Travel Sample App and data, query, and search services. - ##### Get help Forums to learn and share ideas on OOP, functional programming, and advanced concepts. ### Start building with .NET - ##### Getting started with .NET Interact with Couchbase from .NET using C# and other .NET languages. Asynchronous API is based on the TAP pattern. - ##### Build applications Try Couchbase .NET SDK and Travel Sample App. Launch with Docker Compose, explore backend, data model, and REST API. - ##### Get help Join the developer forum discussing Microsoft's framework and tools. ### Start building with C - ##### Getting started with C The Couchbase C SDK enables you to interact with a Couchbase Server cluster using the C language. - ##### Build applications Discover how to use Couchbase Server's C SDK using our Travel Sample App. - ##### Get help Discuss and solve programming problems, share code, and connect with other C enthusiasts. ### Start building with Node.js - ##### Getting started with Node.js Interact with a Couchbase Server or Capella cluster from the Node.js runtime, using TypeScript or JavaScript. - ##### Build applications Use our sample app code to start coding with the Couchbase Node.js SDK. - ##### Get help A forum for developers to discuss server-side JavaScript and solve issues. #### Node.js integrations Power your website with seamless Couchbase Capella integration on Netlify. Optimize your web applications effortlessly and increase productivity. Boost performance and scalability with the combination of Netlify and Couchbase. The official Couchbase extension for Visual Studio Code, offering a seamless integration with the powerful editor. Enhanced productivity and convenience, empowering Couchbase Capella and Server users to work within the familiar environment of VS Code. Ottoman is an ODM built for Couchbase and Node.js. The official Couchbase extension for Visual Studio Code, offering a seamless integration with the powerful editor. Enhanced productivity and convenience, empowering Couchbase Capella and Server users to work within the familiar environment of VS Code. ### Start building with PHP - ##### Getting started with PHP Connect to a Couchbase cluster using PHP. This native PHP extension uses the Couchbase C++ library. - ##### Build applications Start coding with the Couchbase PHP SDK using our Travel Sample App and sample data set. - ##### Get help Connect with other PHP developers, share code, and learn the ins and outs of this popular language. ### Start building with Python - ##### Getting started with Python Python applications can access a Couchbase cluster using traditional synchronous API, Twisted, and asyncio. - ##### Build applications Use the Python SDK for Couchbase to interact with data, query, and search services using our Travel Sample App. - ##### Get help Discuss Python programming language, share insights, and get help from the community. ### Start building with GO - ##### Getting started with Go Build Go applications that interact with Couchbase for data storage and retrieval. - ##### Build applications Build an interactive application with Couchbase using the Go SDK and the Travel Sample App. - ##### Get help Join the growing community of developers building systems with Go and share your expertise. ### Start building with Kotlin - ##### Getting started with Kotlin A Kotlin application running on the JVM can use the Couchbase Kotlin SDK to access a Couchbase cluster. - ##### Build applications Connect to a Couchbase Capella or Couchbase Server cluster using Kotlin SDK. - ##### Get help Join the community of Kotlin enthusiasts and discuss everything related to Kotlin and Couchbase. ### Start building with Ruby - ##### Getting started with Ruby The Ruby SDK includes native Ruby extensions for Couchbase’s binary protocols. - ##### Build applications Program interactions with Couchbase Server using our Travel Sample App and data, query, and search services. - ##### Get help Join the forum for Ruby developers, share code, and get help from experienced programmers. ## Browse by tool type Couchbase offers a range of tools that are designed to help users manage and work with Couchbase Capella and Couchbase Server more effectively. These tools include the Couchbase Shell, SDK Doctor, big data connectors, and SDK extension libraries. - #### Capella Playground Capella Playground is a web-based interface for exploring Couchbase Server features. You can use it to create and interact with sample data, test queries, and experiment with full-text search. It generates code snippets in multiple programming languages so you can learn, test, and prototype. - #### Couchbase Shell Couchbase Shell is a command-line interface for managing Couchbase Server that allows admins to perform tasks like cluster config, node monitoring, and data backup and restore. It supports scripting languages, automates common tasks, and is useful for tasks not easily accessible through the web UI. - #### Big data connectors Couchbase connectors for big data integrations include: •**Kafka**- for real-time data processing and analytics •**Elasticsearch**- for full-text search and indexing of data stored in Couchbase •**Tableau**- for visual analysis and reporting on Couchbase data •**Spark**- for efficient processing of large data sets - #### SDK Doctor Couchbase SDK Doctor is a command-line tool for Couchbase Server SDKs that diagnoses network connectivity issues, verifies configurations, and tests for common errors. It runs on Windows, macOS, and Linux to help developers and admins troubleshoot and ensure proper SDK usage. - #### SDK extension libraries Couchbase SDK extension libraries are add-ons that provide additional functionality to the Couchbase SDKs. Examples include Distributed ACID Transactions, Field Level Encryption, Response Time Observability, and Spring Data for Couchbase. --- # NoSQL Database Download Source: https://www.couchbase.com/downloads/ Last modified: 2026-06-30T13:25:59+00:00 - ##### Capella Couchbase as-a-service - ##### Server Couchbase locally - ##### Kubernetes Operator Cloud-native database - ##### Mobile & Edge Embedded NoSQL - ##### AI Data Plane Data for agents ## Couchbase Capella Build safer GenAI applications at scale faster with Capella. Get in-memory speeds for operational, analytic, vector search, and AI workloads. Simple and automated setup, management, maintenance, backups, and scaling - delivering security and high availability on AWS, GCP, and Azure. **Operational Services:**Get flexible JSON documents, built-in caching, SQL query, Search capabilities, and ACID transactions within a real-time architecture.**AI Data Plane:**Tackle GenAI trust issues and simplify the development, scaling, and governance, while streamlining RAG workflows at scale.**Mobile App Services:**Build always-on apps that work even without the internet - sync, store, query, search, and analyze at the edge.**Analytics Services:**Analyze in real time with zero ETL and operational write-back.**Data Access:**REST Data API, SQL++, AI code assistant, SDKs, APIs, and frameworks you’ll love. ## Couchbase Server A full-featured, multimodel distributed NoSQL database. Experience the unmatched flexibility, familiarity, and performance of NoSQL on the easiest platform to manage and scale, all risk-free as you transform your business with modern business-critical applications. The database platform for building and running powerful GenAI applications. Couchbase Server provides best-in-class vector search even at billion-scale, natural language querying, and advanced operational flexibility for your most demanding workloads. ## Couchbase Server - A binary package of Couchbase Community Edition, our free, source-available distribution of Couchbase Server. - Best suited for non-enterprise developers when basic education, availability, performance, tooling, and query is sufficient. - Our open source NoSQL database is available free of charge for both development and production, and supported by the Couchbase community forum. - Community Edition does not undergo the same “test, fix, and verify” quality assurance cycles as Enterprise. - To use some of the latest features in Server 8.0, you will need to download a recent SDK. See the SDK compatibility chart to learn more. - Note: Community Edition version 7.0 and higher is limited to five-node clusters. ## Enterprise Analytics - JSON-native, multi-source, zero ETL: Ingest complex JSON data in real time without defining schemas or creating indexes, making it instantly available for analysis. - Superior performance and scale: Leverage an advanced columnar storage format, compute-storage separation, massively parallel processing (MPP), and a cost-based optimizer for accelerated business insights. - Operational write-back capabilities: Directly write analytical findings back into your transactional data platform for real-time use within your applications. ## Couchbase Autonomous Operator ## Sync Gateway ## Sync Gateway ## Edge Server Edge Server is a lightweight database platform designed specifically for highly resource-constrained edge environments that lack the required compute, storage and memory to run Couchbase Server and Sync Gateway. It enables low-latency access, offline storage, and local data processing. It supports seamless offline-first sync with remote App Services or Sync Gateway, ensuring continuous operation even when disconnected. With a RESTful interface for easy data access and direct device-to-server sync for advanced use cases. ## Couchbase Lite Couchbase Lite is a standards-based embedded NoSQL JSON document database for edge devices running mobile, desktop, server, and IoT applications. The Enterprise Edition builds on the robust functionality included in the Community Edition, and includes features such as encryption, peer-to-peer inter-device sync, on-device failover, predictive query API for machine learning predictions, delta sync for optimized data transfer, and more. ## Couchbase Lite Couchbase Lite is a standards-based embedded NoSQL JSON document database for edge devices running mobile, desktop, server, and IoT applications. Designed around the world’s most popular embedded database (SQLite), Couchbase Lite’s robust query API has SQL-based semantics, indexing support, full-text search, and eventing, which enables developers to build and deploy robust applications on embedded platforms. ## Couchbase Lite JavaScript Couchbase Lite for JavaScript is an offline-first, standards-based embedded NoSQL JSON document database for browser based frontend apps. It delivers enterprise-grade local storage, encryption for fine-grained security, and automatic sync with Capella App Services or Sync Gateway and mobile apps. Designed for flexibility, it powers web apps built with React, Angular, and Vue, as well as PWAs and Electron applications. With a powerful query and indexing engine, a lightweight footprint, and edge-to-cloud flexibility, it brings the full power of Couchbase Mobile to the web. ## Couchbase Lite Hybrid ## Agent Memory Choose your platform to get started ## Couchbase MCP Server Couchbase MCP Server is a self-hosted MCP Server that allows AI agents to connect to and interact with data in Couchbase clusters, whether hosted on Capella or self-managed. It provides tools across categories including Cluster Health, Data Schema, Key-Value, Query, and Performance - with safety controls via read-only mode and fine-grained tool disabling. It supports both STDIO and Streamable HTTP transports. --- # Thank You for Your Interest Source: https://www.couchbase.com/downloads/trial-thankyou/ Last modified: 2026-06-29T20:55:55+00:00 ## Request Received Thank you for your interest in **Agent Memory**. We have received your request and our team is reviewing your details. We will have a team member review the request and follow up. Keep an eye on your inbox. Thank you for your interest in **Agent Memory**. We have received your request and our team is reviewing your details. We will have a team member review the request and follow up. Keep an eye on your inbox. Save up to 50% on services, training, and credits Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. Want to learn more about Couchbase offerings? Let us help. --- # Develop with Couchbase Source: https://docs.couchbase.com/home/developer.html # Develop with Couchbase The Developer Data Platform for Critical Applications in Our AI World. Couchbase is a multipurpose NoSQL database for transactional, analytical, mobile, and AI applications. Develop at the edge with offline-first Couchbase Lite, for transactional workloads with SDKs in a dozen popular programming languages, for real-time analytics, and build agentic apps. ## Development Choices for Your Use Cases ### Transactional Workloads - in the Cloud or your Datacenter Develop an app for Capella Operational, or a self-managed Couchbase Server - with Operational SDKs. Explore SQL++, or the fast CRUD interface of the Data Service. ### Real Time Analytics with Analytics SDKs Enterprise Analytics brings the power of NoSQL to the world of analytics. Self-managed Enterprise Analytics brings real-time adaptive applications to your datacenter or private cloud - or try this service fully-hosted as Capella Analytics, which integrates seamlessly with the Couchbase Capella cloud platform. Analytics SDKs support streaming APIs to handle large datasets. ### Develop for Mobile and the Edge Build your app with Couchbase Lite for offline-first connectivity, then sync to Couchbase Server with Capella App Services (or self-managed Sync Gateway) - or run peer-to-peer. - Couchbase Lite on C# .NET | Java | JavaScript - Ionic and React - Sync your data with App Services / self-managed SyncGateway / Edge Server - or run peer-to-peer. ### Develop RAG and Agentic AI Applications Our Vector Search Service facilitates RAG applications - and offers the ability to combine searches with our sophisticated Search API. Agentic Apps can be built with Agent Catalog. --- # Couchbase Documentation Source: https://docs.couchbase.com/home/index.html # Couchbase Documentation *Couchbase is the modern database for enterprise applications.* Couchbase is a distributed document database with a powerful search engine and in-built operational and analytical capabilities. It brings the power of NoSQL to the edge and provides fast, efficient bidirectional synchronization of data between the edge and the cloud. Find the documentation, samples, and references to help you use Couchbase and build applications. // List the schedule of flights from Boston // to San Francisco on JETBLUE SELECT DISTINCT airline.name, route.schedule FROM `travel-sample`.inventory.route JOIN `travel-sample`.inventory.airline ON KEYS route.airlineid WHERE route.sourceairport = "BOS" AND route.destinationairport = "SFO" AND airline.callsign = "JETBLUE"; ## Get Started Explore Couchbase Capella, our fully-managed database as a service offering. Take the complexity out of deploying, managing, scaling, and securing Couchbase in the public cloud. Store, query, and analyze any amount of data - and let us handle more of the administration - all in a few clicks. Capella Analytics is a real-time analytical database (RT-OLAP) for real time apps and operational intelligence. Capella Analytics is a standalone, cloud-only offering from Couchbase under the Capella family of products. Explore Couchbase Server, a modern, distributed document database with all the desired capabilities of a relational database and more. It exposes a scale-out, key-value store with managed cache for sub-millisecond data operations, purpose-built indexers for efficient queries, and a powerful query engine for executing SQL-like queries. Enterprise Analytics is a self-managed analytical database (RT-OLAP) for real time apps and operational intelligence. *Couchbase Mobile* brings the power of NoSQL to the edge. The combination of *Sync Gateway* and *Couchbase Lite* coupled with the power of *Couchbase Server* provides fast, efficient bidirectional synchronization of data between the edge and the cloud. Enabling you to deploy your offline-first mobile and embedded applications with greater agility on premises or in any cloud. The Couchbase AI Data Plane is a fully managed set of tools that help you build, deploy, and scale your agentic and retrieval-augmented generation (RAG) AI applications. These tools integrate seamlessly with the Couchbase Capella cloud platform, enabling you to develop your AI applications on the same platform as your data. ## Developer Tools Couchbase SDKs allow applications to access a Couchbase cluster and the big data Connectors enable data exchange with other platforms. Use the command-line interface (CLI) tools and REST API to manage and monitor your Couchbase deployment. A modern shell to interact with Couchbase Server and Capella, now available. ## More Developer Resources Explore a variety of resources - sample apps, videos, blogs, and more, to build applications using Couchbase. Explore extensive hands-on learning experiences through free, online courses or under the guidance of an in-person instructor. With open source roots, Couchbase has a rich history of collaboration and community. Connect with our developer community and get involved. ## Explore Products and Services | Cloud | Server | SDK and Connectors | Mobile | |---|---|---|---| ## Feedback and Contributions Provide feedback, and get help with any problem you may encounter. Couchbase Support provides online support for customers of Enterprise Edition who have a support contract. You can submit simple changes, such as typo fixes and minor clarifications directly on GitHub. Contributions are greatly encouraged. --- # Couchbase Source: https://discord.com/invite/sQ5qbPZuTh You need to enable JavaScript to run this app. --- # Couchbase for ISVs (Independent Software Vendors) Source: https://www.couchbase.com/isvs/ Last modified: 2025-02-18T08:03:28+00:00 ###### PARTNER ECOSYSTEM: ISVS # ISVs and Couchbase ## ISVs use Couchbase’s modern database to build AI powered applications, improve revenue, margins and time to market by offering greater performance, scalability, flexibility, and faster deployment. ## Build powerful apps with less complexity & cost Couchbase’s unique data platform helps ISVs succeed through faster product development, varied use case support and a highly scalable, memory first architecture to support growth cost effectively. Our platform includes a document store, built-in cache, full-text & vector search, offline mobile, analytics, & more. Build highly scalable modern applications with support for your Gen AI & predictive ML needs. ##### Overcome legacy database challenges Couchbase’s distributed, memory-first architecture ensures high performance, massive scalability, and low latency everyday. ##### Improve development agility and speed Bring new features to market faster with flexible schemas, multiple access methods & SQL++. Support Gen AI use cases with our high scale architecture, vector search & more. ##### Consolidate to save time, effort, and costs Our integrated data platform means less technologies to learn, code, integrate, secure, update, and support. ## Couchbase ISV stories “We looked at Cassandra, we looked at Mongo. We found that the replication technology across data centers for Couchbase was superior, especially for the large workloads.” **Claus Moldt,**CIO, FICO **<1ms**response times **24x365**application uptime “What Couchbase has done with SQL++ has been one of the most innovative things done in the database space in decades.” **Bill House,**VP of Engineering, SWARM Engineering **400%**faster planning **$1M+**savings per optimization “What we value a lot is that Couchbase was able to embrace with us our vision to the cloud, and the fact that we wanted to operate data stores directly on PaaS.” **Vincent Bersin,**Unit Manager, NoSQL Solutions, Amadeus **20M**operations per second **<2.5ms**response times “Switching to Capella enabled us to offload support, upgrades, and management to the Couchbase team. This has been a no-brainer from my point of view.“ **Ian Merrington,**CTO, SeenIt **500K+**videos stored **75K+**users “Capella’s impressive price performance and unique edge capabilities give our developer team a more agile experience and allow our clients’ applications to remain synced.” **Vigyan Kaushik,**Co-founder and CEO, Quantic **50%**reduction in query time ## Explore related resources ###### Why NoSQL databases for AI-powered apps? An architect guide ###### Get productive fast ###### Reduce software, infrastructure, and operational costs ##### Start building Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. ##### Use Capella free Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. ##### Get in touch Want to learn more about Couchbase offerings? Let us help. --- # Learning Paths Source: https://developer.couchbase.com/learn/ Curated learning paths for deeper dives into specific areas of Couchbase technologies. Couchbase and the Java Client SDK - Learn how to use Couchbase's Java Client SDK - Explore real examples and demos along the way - Learn how to use transactions with Couchbase via the Java SDK Couchbase and the Node Client SDK - Take a deep dive on how to use Couchbase's Node.js Client SDK - Explore real examples and demos, including fully built sample applications Couchbase and Python SDK - Deep dive on how to use Couchbase's Python SDK with real examples and demos - Tutorials on Key Value Operations, Indexing, SQL++ Querying, Full Text Search, and Distributed Transactions using Python Couchbase Lite with Java for Android Developers - Take a deep dive into Couchbase Lite's Android Java SDK - View real examples and demos - Learn about QueryBuilder and Sync Gateway Couchbase Lite and Capella App Services with Kotlin and JetPack Compose - Deep dive on how to use Couchbase Lite Android Kotlin SDK with Capella App Services - Explore real examples and demos Couchbase Lite and Sync Gateway with Kotlin and JetPack Compose - Deep dive on how to use Couchbase Lite Android Kotlin SDK with Sync Gateway - Explore real examples and demos Couchbase Lite and Capella App Services with Dart and Flutter - Deep dive on how to use the community Dart SDK for Couchbase Lite with Capella App Services - Explore real examples and demos Couchbase Lite with Swift for iOS UIKit Developers - Take a deep dive into Couchbase Lite's Swift SDK - View real examples and demos - Learn about QueryBuilder and Sync Gateway JSON Data Modeling Guide - Learn about core elements used to handle data in Couchbase Server - Explore best practices for how to store documents from a Couchbase SDK - A well-thought-out data model can play a big role in ensuring your application performs as expected Couchbase Support Guide - This learning path describes how to best interact with Couchbase Technical Support - Explore how to provide your own internal tier 1 support - Learn how to contact support and open a ticket JSON Document Management Guide - Learn how to manage and adapt to change within your data model - Explore best practices for structuring documents - View illustrative examples and conceptual implementations N1QL Performance Best Practices Guide - View all the different ways to improve query performance in Couchbase Server - Explore different indexing options and view illustrative examples - Learn about best practices for fast querying Couchbase Lite with .NET for Xamarin Forms Developers - Take a deep dive into Couchbase Lite's .NET SDK with Xamarin - View real examples and demos - Learn about QueryBuilder and Sync Gateway --- # Capella MCP Server Source: https://docs.couchbase.com/mcp-server/intro.html # Capella MCP Server - concept Couchbase MCP Server is a self-hosted MCP Server that allows AI agents to connect to and interact with data in Couchbase clusters, whether hosted on Capella or self-managed. It provides tools across categories including Cluster Health, Data Schema, Key-Value, Query, and Performance - with safety controls via read-only mode and fine-grained tool disabling. It supports both `STDIO` and Streamable HTTP transports. Couchbase distributes MCP Server as a Python Package Index (PyPI) package and via Docker. A Couchbase AI Data Plane license provides enterprise support for Couchbase MCP Server, and also includes use and enterprise support of Couchbase Agent Memory and Couchbase Agent Catalog. | For the complete MCP Server Documentation, see https://mcp-server.couchbase.com/. | ## Tools The server exposes several tools across multiple categories. See the Tools page for full details. | Category | Tools | |---|---| Cluster Setup & Health | | Data Model & Schema Discovery | | Document KV Operations | | Query and Indexing | | Query Performance Analysis | | ## Releases The latest release is available on PyPI and Docker Hub. See the Release Notes for version history and details. --- # Memcached Replacement Alternatives + How to Pronounce Source: https://www.couchbase.com/memcached-replacement/ Last modified: 2026-05-21T07:22:16+00:00 Whitepaper ## Ephemeral buckets Memory-only storage comparable to Memcached with the scaling benefits of Couchbase. FEATURES Compare Couchbase and Memcached to see how Couchbase adds persistence, replication, querying, and scalability beyond simple key-value caching. - What’s included - In-memory caching - Scaling/sharding/clustering - Persistent storage option - Data access: SQL - Data access: text search - Data access: vector - Mobile capabilities - Role-based access control - Cross data center replication (XDCR) - Couchbase - Memcached CUSTOMERS FAQ's Common questions and answers about memcached and Couchbase Nothing. “memcache” is the software, “memcached” is the daemon program name. Most people now just say “memcached” for both due to naming convention and common usage. Is it memcached (as in “I just cached it”) or is it memcache-dee? Both are used widely in technical circles, but if you hold to its UNIX roots, you would pronounce it “memcache-dee. Couchbase once supported memcached-compatible buckets - still possible, but now deprecated and not recommended for new projects. If you want memory-only storage, use an Ephemeral bucket. If you want memory-first with persistence to disk, use a Couchbase bucket. --- # Redis + MongoDB vs. Couchbase Performance Benchmark Source: https://www.couchbase.com/mongodb-redis/ Last modified: 2026-05-21T07:28:57+00:00 DOWNLOAD ## DBaaS performance report See how Redis and MongoDB Atlas compare to Couchbase Capella™. FEATURES - What’s included - Built-in cache - JSON flexibility - Automatic mobile sync and peer-to-peer sync - Masterless architecture - Full SQL querying - Multi-master geographic replication - Analytics - Automatic sharding/partitioning - Database logic - Built-in full-text search - Data structures (queue, set, etc.) - Multi-dimensional scaling - Couchbase - Eventing, UDFs - Redis + MongoDB - Redis only - Requires RedisJSON module - MongoDB only - Redis is Lua only CUSTOMERS CODE SNIPPET --- # Multi-Dimensional Scaling (MDS): Database Technology Source: https://www.couchbase.com/multi-dimensional-scalability-overview/ Last modified: 2026-04-30T09:38:13+00:00 WHITEPAPER ## Database scalability Explore database scalability, its challenges, and how Couchbase scales. Couchbase MDS improves performance and reduces costs by letting you scale your query, index, and data services separately. This separation eliminates resource conflicts, wasted hardware, and unnecessary rebalancing. Plus, you can assign each service to the best hardware for its job - CPUs for queries, SSDs for indexes, and RAM for data. Your apps run faster, customers get a better experience, and your system is easier to manage. Queries run faster on dedicated nodes and don’t slow down reads or writes by hogging CPU. Indexes on dedicated nodes search faster and don’t slow down writes by overloading disk I/O. More nodes mean more data capacity. With isolated data nodes memory use goes up, CPU/disk needs go down, and read/write speed stays consistent. Couchbase lets you assign services to specific nodes, maximizing CPU and RAM usage through efficient resource distribution. Dedicated query nodes ensure fast processing without slowing down reads or writes. By isolating query operations, you avoid CPU contention with other services, and you can scale query nodes without rebalancing data. This makes queries consistently fast, even under heavy loads. Index services benefit from SSDs and operate best when isolated. This keeps writes fast since disk I/O isn’t shared with other services. You can scale indexing independently and create as many indexes as needed without affecting data distribution or write performance. When data nodes are isolated from query and index workloads, reads and writes stay fast and predictable. You don’t have to rebalance queries or indexes to scale the data layer, and you can prioritize memory while using more modest CPU and disk resources. --- # NoSQL Comparison: MongoDB vs. DynamoDB vs. Couchbase Source: https://www.couchbase.com/nosql-database-cloud-comparison/ Last modified: 2026-06-30T14:32:39+00:00 REPORT ## Compare Couchbase vs. MongoDB Couchbase excels in ease of use, versatility, scalable performance, and mobile. FEATURES - What’s included - Built-in session caching for performance at scale - Semantic caching for AI models - AI model hosting with NVIDIA - Built-in conversion of unstructured data to vectors - Tracking AI agent interactions - Billion-scale vector search - Memory-first replication and sync - Programmatic key-value access - Active-active clustering - SQL query with joins - Patented distributed ACID transactions for JSON - Index service scaling - Full-text search - Eventing service - Multi-dimensional scaling - Embeddable mobile DBMS - Peer-to-peer sync - Time-series data - Columnar storage - Real-time analytics, dedicated engine - Multisource, zero ETL for JSON - Write-back to operational database - Couchbase - MongoDB - DynamoDB - Extra cost - Extra cost - Redis - Cosmos DB - DataStax - Oracle CUSTOMERS FAQ Get quick answers about key NoSQL cloud database features to help you identify the right solution for your needs. Couchbase leads enterprise NoSQL with SQL++ querying, multicloud deployment, mobile/edge sync, and built-in vector search - capabilities that MongoDB and DynamoDB don’t fully match. MongoDB offers a flexible document model with rich querying; DynamoDB prioritizes speed and AWS-native scalability but has limited query flexibility and no multicloud support. DynamoDB offers PartiQL, a SQL-compatible language, but lacks full JOIN support and complex query capabilities. Couchbase and MongoDB both offer richer query languages natively. Couchbase runs across AWS, Azure, and GCP with no vendor lock-in. MongoDB Atlas supports multicloud clusters. DynamoDB is AWS-only with no native multicloud deployment option. Couchbase outperforms MongoDB on TCO, mobile/edge support, and vector search at billion-scale. MongoDB has a larger developer community and broader ecosystem of third-party tools. --- # Helm Deployment Source: https://docs.couchbase.com/operator/current/helm-setup-guide.html # Helm Deployment Use the official Couchbase Helm Chart to deploy multiple components, including the Kubernetes Operator, Admission Controller, Couchbase clusters, and Sync Gateway. Helm is a tool that streamlines the installation and management of applications on Kubernetes platforms. The official Couchbase Helm Chart can help you easily set up the Couchbase Kubernetes Operator and deploy Couchbase clusters. This page describes how to use the Couchbase Helm Chart to create various deployments of the Kubernetes Operator, Admission Controller, Couchbase clusters, and Sync Gateway. The Couchbase Helm Chart is primarily intended to make it easy to deploy with the defaults to get a working system in an empty cluster. For more complex scenarios, make sure to refer to the operator documentation as well, particularly the operator architecture and reference architecture. A particular use case that is complex is upgrading so make sure to cover all the Kubernetes Operator upgrade and Couchbase Server upgrade sections. The recommendation, for more complex scenarios, is to manage the operator directly rather than relying on Helm to do it as the operator provides a lot more direct control and this approach simplifies the upgrade process. | The official Couchbase Helm Chart may only be used with Enterprise Edition products, such as Couchbase Server Enterprise Edition and Sync Gateway Enterprise Edition. | ## Install Helm Helm 3.1+ is required when installing the official Couchbase Helm Chart. Follow Helm’s official steps for installing `helm` on your particular operating system. ## Add the Chart Repository Before you can start using the Couchbase Helm Chart, you’ll need to add the chart repository to your `helm` installation: `helm repo add couchbase https://couchbase-partners.github.io/helm-charts/` Finish by updating the repository index: `helm repo update` ## Install the Couchbase Helm Chart Use the following commands to install the default Couchbase Helm Chart. The default chart deploys the Kubernetes Operator, the Admission Controller, and a Couchbase cluster. - Kubernetes - OpenShift `helm install --set cluster.name= couchbase/couchbase-operator` - Create an image pull secret for retrieving images from the Red Hat Container Catalog: `oc create secret docker-registry rh-catalog \ --docker-server=registry.connect.redhat.com \ --docker-username= \ --docker-password= \ --docker-email=` - Create a file named `openshift_values.yaml` with the following custom override values:`couchbaseOperator: image: repository: registry.connect.redhat.com/couchbase/operator tag: 2.9.0 imagePullSecrets: - rh-catalog admissionController: image: repository: registry.connect.redhat.com/couchbase/admission-controller tag: 2.8.1 imagePullSecrets: - rh-catalog cluster: image: registry.connect.redhat.com/couchbase/server:7.6.6-1` - Install the chart using the custom override values: `helm install -f openshift_values.yaml couchbase/couchbase-operator` Installing the default chart provides a quick way to try out using the Kubernetes Operator for managing Couchbase Server on Kubernetes platforms. However, for more involved development and production use-cases, you will need to customize the installation to better your needs. ## Customize the Installation The Couchbase Helm Chart can be installed as-is for previewing Kubernetes Operator functionality. However, customizing the installation with your own configuration will be necessary for production environments. Customizing the chart installation allows you to do two things: - Specify which components will be deployed - Configure the deployed components The Couchbase Helm Chart is capable of installing and configuring the Kubernetes Operator, Admission Controller, Couchbase cluster, and Sync Gateway. Enabling and configuring each component is accomplished by overriding the default values in the Couchbase Helm Chart’s `values.yaml` file. There are two methods for specifying overrides during chart installation: `--values` and `--set` . - --values - --set The `--values` option is the preferred method because it allows you to keep your overrides in a YAML file, rather than specifying them all on the command line. - Create a YAML file and add your overrides to it. Here’s an example called `myvalues.yaml` :`couchbaseOperator: imagePullPolicy: Always` - Specify your overrides file when you install the chart: `helm install my-release --values myvalues.yaml couchbase/couchbase-operator` The values in your overrides file ( `myvalues.yaml` ) will override their counterparts in the chart’s`values.yaml` file. Any values in`values.yaml` that weren’t overridden will keep their defaults. If you only need to make minor customization, you can specify them on the command line by using the `--set` option. For example: `helm install my-release --set cluster.servers.default.size=5 couchbase/couchbase-operator` This would translate to the following in the `values.yaml` of the chart: ``` cluster: servers: default: size: 5 ``` Any values in `values.yaml` that weren’t overridden will keep their defaults. | As stated above, Helm works by override-only, with the chart providing various defaults. If you want to override a whole key in the chart, or replace it with another key, then you must For example, a default bucket is created unless you configure one or otherwise set For additional information, refer to the Helm documentation on deleting a default key. | ### Selective Deployment In many cases you may only want to install a single component, such as a Couchbase cluster, or an instance of Sync Gateway. Specific components may be enabled/disabled by overriding the default values in the `install` section of the chart: ``` # Select what to install install: # install the couchbase operator couchbaseOperator: true # install the admission controller admissionController: true # install couchbase cluster couchbaseCluster: true # install sync gateway syncGateway: false ``` For example, if you wanted to have a Helm release that exclusively managed the Kubernetes Operator and Admission Controller, then you would override the value for `couchbaseCluster` with a value of `false` , leaving only `couchbaseOperator: true` and `admissionController: true` , and all others `false` . Likewise, if you already had the Kubernetes Operator and Admission Controller deployed in your environment, and you just wanted to deploy a Couchbase cluster, then you would override the values for `couchbaseOperator` and `admissionController` with a value of `false` , leaving only `couchbaseCluster: true` , and all others `false` . Even though the Couchbase Helm Chart has full configuration parameters for each component, if a component is disabled in the `install` section, then that component’s configuration parameters are ignored. ### Users By default, when creating a custom user, the corresponding Group resource is automatically created and bound. ``` users: developer: # When autobind is 'true' then the user is # created and automatically bound to a group named 'developer'. autobind: true # password to use for user authentication # (alternatively use authSecret) password: password # optional secret to use containing user password authSecret: # domain of user authentication authDomain: local # roles attributed to group roles: - name: bucket_admin bucket: default ``` To manually configure the corresponding Group resource, set `users..autobind` to `false` and specify the `groups` and `rolebindings` resources. ## Deploying Sync Gateway Sync Gateway is disabled by default in the Couchbase Helm Chart. To install the chart with Sync Gateway *enabled*, you will need to customize the installation to include it. To use TLS with Sync Gateway, you will need to consider certificate generation or bringing your own. To install Sync Gateway with TLS disabled: `helm install mobile --set install.syncGateway=true --set syncGateway.config.use_tls_server=false couchbase/couchbase-operator` By default, Sync Gateway is only exposed to the internal Kubernetes network with a `ClusterIP` service. To change the type of service that is used to expose Sync Gateway, you can specify an override for `syncGateway.exposeServiceType` during installation: `helm install mobile --set install.syncGateway=true --set syncGateway.config.use_tls_server=false --set syncGateway.exposeServiceType=LoadBalancer couchbase/couchbase-operator` For more information about using Sync Gateway with the Kubernetes Operator, you can refer to the Sync Gateway Tutorial. ## Production Considerations ### TLS Encryption Production deployments should enable TLS to encrypt traffic between the Kubernetes Operator and the Couchbase cluster. TLS certificates can be auto-generated, or provided by the user. #### Auto-Generated Certificates Install the chart with `tls` enabled: `helm install my-release --set tls.generate=true couchbase/couchbase-operator` The Kubernetes Operator will create the certificates and then configure them as Kubernetes Secrets for the cluster. | There is an issue (K8S-1900) that may cause a certificate error when using the Helm chart to upgrade the Kubernetes Operator: certificate cannot be verified for zone This issue is caused by the certificate not having the necessary subject alternative names (SANs) required by the new version of the Kubernetes Operator. To resolve this issue, start by regenerating the Secrets from the new chart version: The The Kubernetes Operator should now pick up the new certificates and proceed through the upgrade process. | #### Bring Your Own Certificates Create a file named `tls_values.yaml` with the following custom override values for the Couchbase Helm Chart: ``` cluster: tls: static: operatorSecret: tls-operator-secret serverSecert: my-tls-server-secret ``` Install the chart using the custom override values. `helm install my-release -f tls_values.yaml couchbase/couchbase-operator` ### Deploying Multiple Chart Instances (Releases) The example installation commands on this page assume the default namespace is used (these commands don’t specify the `-n` option). This is important to note because the Couchbase Helm Chart deploys both the Kubernetes Operator and the Admission Controller by default, *and these components should not be deployed more than once in the same namespace*. *The Admission Controller should only be deployed once per Kubernetes cluster* as indicated in Selective Deployment and in the operator architecture. To prevent deployment of the Admission Controller by the Couchbase Helm Chart, you can set the `install.admissionController=false` parameter either in the values file or on the command line: `helm install my-release --set install.admissionController=false couchbase/couchbase-operator` If you install the default Couchbase Helm Chart multiple times in the same namespace, then you’ll end up with multiple instances of the Kubernetes Operator and the Admission Controller, which will cause errors in your deployments. In addition, the example installation commands on this page also specify `my-release` as the name for the chart release. If you plan to use Helm to install multiple instances (releases) of the Couchbase Helm Chart, you should consider giving each release a unique name to help you more easily identify the resources that are associated with each release. If you want Helm to generate a name for you, you can run any of the example installation commands on this page using the `-g` option instead of the name parameter: `helm install -g couchbase/couchbase-operator` ### Chart Versions | It is | The `helm install` command will always pull the highest version of a chart. To list the versions of the Couchbase Helm Chart that are available for installation, you can use the `helm search` command: `helm search hub couchbase` ``` NAME CHART VERSION APP VERSION DESCRIPTION https://hub.helm.sh/charts/couchbase/couchbase-... 2.1.0 2.1.0 A Helm chart to deploy the Couchbase Autonomous... ``` Here, the `CHART VERSION` is **2.1.0**, and the `APP VERSION` (the Kubernetes Operator version) is **2.1.0**. To install a specific version of the Couchbase Helm Chart chart, include the `--version` argument during installation: `helm install my-release --version 2.1.0 couchbase/couchbase-operator` | If you’re having trouble finding or installing a specific version of a chart, use the | --- # Introduction Source: https://docs.couchbase.com/operator/current/overview.html # Introduction The integration of Couchbase Server with cloud-native technologies, facilitated by the Couchbase Kubernetes (Autonomous) Operator provides a truly cloud-native database solution. This integration empowers organizations to build and run scalable stateful applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. ## What Does it Support? The Operator can deploy and manage: - Couchbase Server Enterprise Edition The Operator is certified on the following platforms: - Amazon EKS - Google GKE - Microsoft AKS | For more information on supported platforms and versions see the system requirements documentation. | ## How Does it Work? The Operator extends Kubernetes by defining types that represent Couchbase clusters and resources. These types are declarative; they define what the cluster should look like. The Operator monitors Kubernetes for Couchbase resources, creating or updating Couchbase clusters to match the declarative specification. | For more information on what the Operator does, its behavior and its architecture see the Operator architecture concepts documentation. | ## What Features Does it Provide? The goal of the Operator is to fully manage one or more Couchbase deployments so that you don’t need to worry about the operational complexities of running Couchbase. The following is a list of the management tasks that are currently supported: - Cluster life-cycle - Cluster auto-recovery - Cluster configuration ## Essential Reading Kubernetes and the Operator are complex systems - you shouldn’t go in unprepared. The following is a selection of documentation that should be read and understood fully before continuing: - Best practices - understand the best way to deploy Couchbase clusters - System requirements - understand supported platforms, software and resource requirements - Public cloud prerequisites - understand how to prepare public clouds to run the Operator - Custom resource label selection - understand how Couchbase cluster specifications are built - Network architectures - understand how to correctly configure networking for the best experience ## Getting Started Once you have read the essential guides, you are ready to install the Operator and create your first Couchbase cluster. ## Finding Your Way Around The documentation is organized into easy to navigate sections that are targeted to specific users. The sections are defined as follows: - Getting Started - Important platform information and best practice guidelines must be read before proceeding. This section is also the home of quick-start installation guides. - Learn - High level architectural documentation and feature descriptions. This section should be read if you wish to correctly plan and size your Couchbase clusters before deployment. - Manage - Simple how-to guides. This section documents how to configure your Couchbase cluster resources with simple copy and paste style tutorials. - Reference - Detailed resource and component guides. This section details low-level functionality of all the resources and fields exposed to the user, their formats and constraints. Individual Operator containers and tools are fully documented with detailed command line argument manuals. - Tutorials - How to integrate with and configure 3rd party components. The Operator itself can provision and manage simple clusters for most use cases. In more complex situations that involve complex networking or interaction with other, external services, we need to provide guidance on how to integrate. These tutorial are provided as-is and may become inaccurate as 3rd party dependencies evolve. ### Conventions - Resource Names - Kubernetes resources names, such as `Service` or`CouchbaseCluster` , will be rendered verbatim. These are distinguished by the use of bumpy-capitals, or camel-case, with an upper case first character. These are the names of resources when specified as`kind` in a resource’s YAML definition. - Attribute Paths - Resources contain attributes, such as `spec.security.authSecret` will be rendered verbatim. These are distinguished by the use of bumpy-capitals, or camel-case, with a lower case first character. Paths are based on the JSON path specification, and consecutive elements are separated by periods (`.` ).Where attribute paths are used in the documentation, they have been prefixed with the resource name, and can be used directly with `kubectl explain` to access online documentation. --- # Amazon Web Services (AWS) Partner Source: https://www.couchbase.com/partners/amazon/ Last modified: 2026-05-21T07:51:31+00:00 MARKETPLACE ## Trusted by the world's largest companies ## Integrations with Couchbase and AWS Couchbase integrates seamlessly with a range of AWS services including, but not limited to, EKS for managing Kubernetes applications, Lambda for serverless computing, and IAM for secure access management. This deep integration enhances functionality and allows businesses to leverage advanced AWS features effortlessly within their Couchbase deployments. ### Bringing database performance and flexibility to your apps with AWS and Couchbase Capella™ ### Couchbase Capella on Amazon Web Services ### Can I use Couchbase Capella with AWS? Yes, Couchbase Capella on AWS Marketplace provides one of the fastest and easiest ways to get up and running on Amazon Web Services (AWS). ### Can I buy Couchbase Capella in AWS Marketplace? Yes, AWS Marketplace provides one of the simplest methods for deploying and licensing Couchbase Server on AWS VMs. ### What is Couchbase Capella? Capella DBaaS is Couchbase’s cloud database platform for modern applications, including mobile and IoT application services. It’s the easiest and fastest way to begin with Couchbase and to eliminate ongoing database management efforts. ### What is the Couchbase Developer Community? Whether you’re new to Couchbase or a longtime user, our Community Team and hundreds of developers are here to accompany you on your Couchbase journey! Find out more here. --- # Cdata Partner Source: https://www.couchbase.com/partners/cdata/ Last modified: 2026-04-24T08:22:29+00:00 Blog ## Trusted by the world's largest companies ## Couchbase and CData integrations CData provides comprehensive drivers and connectors that enable real-time access to Couchbase data from various BI, analytics, ETL, and custom applications. ### Robust Data Connectivity ### Real-Time BI Integration ### What applications can I connect to Couchbase using CData? CData supports integration with BI tools like Power BI, Tableau, Excel, and more. ### Is real-time data access possible with CData connectors? Yes, CData provides real-time connectivity to Couchbase data across various platforms. ### Are there security features in place for data integration? CData’s connectors offer robust authentication and security capabilities for secure data access. ### Can I use CData connectors with cloud-based applications? Absolutely, CData supports cloud-to-cloud integration, including with Couchbase Capella. ### Is there support for low-code/no-code platforms? Yes, CData Connect Cloud enables integration with platforms like Microsoft Power Apps --- # Confluent Partner Source: https://www.couchbase.com/partners/confluent/ Last modified: 2026-04-24T08:27:10+00:00 Blog ## Execute applications in real time Couchbase and Confluent Cloud simplify real-time data pipelines by combining the power of cloud-native data streaming with flexible storage for faster insights and data-driven applications. ### Improved operational efficiencies ### Integrate, synchronize, and distribute data ### What is Confluent versus Kafka? Apache Kafka is an open source distributed event streaming platform. Built by the original creators of Kafka, Confluent Cloud is a cloud-native and complete data streaming platform available everywhere businesses need in-in the cloud, across cloud, on-premises, and hybrid environments. ### What problem does Confluent solve? Confluent Cloud handles all aspects of data streaming infrastructure management, including provisioning, scaling, monitoring, and maintenance so users don’t have to manage Kafka clusters themselves. Beyond Kafka, Confluent provides 120+ pre-built source and sink connectors, serverless Apache Flink® stream processing, stream governance, enterprise-grade security controls, and more. ### Who uses Confluent? The flexibility, scalability, and reliability of Confluent Cloud makes it suitable for a wide range of industries and use cases where real-time data streaming and processing are essential. ### What are the benefits of using Confluent Cloud? Confluent Cloud offers a fully managed and complete data streaming platform, proven to lower the total cost of ownership for Kafka by up to 60% (Forrester TEI) and accelerate developer productivity when working with real-time data. ### Does Confluent Cloud support Apache Flink? Confluent Cloud provides a cloud-native, serverless service for Flink that enables simple, scalable, and secure stream processing that integrates seamlessly with Apache Kafka-offered as unified services on one platform. ### Does Confluent provide stream governance capabilities? Confluent provides stream governance capabilities, including schema registry for schema management, a platform-wide stream catalog, and stream lineage visualizations. --- # Google Cloud Partner Source: https://www.couchbase.com/partners/google/ Last modified: 2026-05-21T18:15:29+00:00 Event ## Trusted by the world's largest companies ## Integrations with Couchbase and Google Cloud Couchbase and the Google Cloud team continue to co-innovate and develop solutions that prioritize seamless user experiences. Our collaboration leverages the strengths of each technology to build better cutting-edge solutions for our customers. ### Learn about our Google API Connector ### Customer 360 with Couchbase and Google ### Can I use Couchbase with Google Cloud? Absolutely. Customers have been able to deploy Couchbase Server and Capella on Google Cloud for years, and Google is a key Couchbase partner. ### How do I run Couchbase on Google Cloud? Couchbase Capella, our Database-as-a-Service, can be deployed on Google Cloud in over 30 regions. Customers can also self-manage Couchbase Server within their Google Cloud environment. ### How do I access Couchbase on Google Cloud? The fastest and easiest way to set up and access Couchbase on Google Cloud is through Capella. In the free trial, select Google Cloud and your region of choice during deployment. If you’ve purchased credits, do the same when spinning up your cluster. ### Is Couchbase free on Google Cloud? Couchbase Capella provides a 30-day free trial that can be deployed on Google Cloud. ### What is Couchbase Capella? Couchbase Capella is a fully managed Database-as-a-Service (DBaaS) offering by Couchbase, providing easy-to-use, scalable, and secure cloud-native database management for modern applications. It’s a multipurpose database that supports many workloads and use cases, including vector search and mobile synchronization. Capella delivers millisecond data response at scale with industry-leading DBaaS price-performance. ### Can I buy Couchbase Capella in the Google Cloud Marketplace? Yes. You can purchase credits for Couchbase Capella and license other Couchbase software in the Google Cloud Marketplace. --- # Infosys Partner Source: https://www.couchbase.com/partners/infosys/ Last modified: 2025-09-03T10:11:36+00:00 ## Modernize with Infosys and Couchbase Working together, Couchbase and Infosys provide customers with innovative and cost-efficient solutions for legacy and mainframe database modernization, centers of excellence, cloud-native architecture, and infrastructure as code. Couchbase delivers the ideal platform for modern systems and applications through a single database that fuses together the greatest strengths of relational and NoSQL. Infosys partners closely with Couchbase to ensure that your integration is optimized with best practices for your specific use cases and timeline. ## Featured resources As a global leader in technology services and consulting, Infosys helps organizations in over 50 countries develop and execute their strategies for digital transformation. They enable clients to identify and solve their most critical challenges across engineering, application development, knowledge management, and business process management. "Couchbase is a strategic partner for Infosys and plays a significant role in our Modernization practice. The Infosys Modernization Suite (IMS), part of Infosys Cobalt offerings, leverages the power of Couchbase to modernize our clients' legacy monoliths into scalable, high performance microservices-based applications. We participated in the Couchbase Server 7 beta program and have developed a set of advanced database migration toolsets that leverage new features such as scopes and collections and enhanced SQL transactions to offer our mutual clients an accelerated and lower cost path to digital transformation." "Infosys partners closely with Couchbase to power new digital transformation initiatives at our Fortune 1000 clients." --- # Microsoft Azure - Featured Partners Source: https://www.couchbase.com/partners/microsoft/ Last modified: 2026-04-24T08:30:15+00:00 MARKETPLACE ## Trusted by the world's largest companies ## Couchbase and Microsoft Azure integrations ### Seamless and secure access with support for Azure Private Link ### Simplify access with Couchbase Capella™ Azure AD integration ### Secure and reliable connectivity with support for Azure Private Networks ### Can I use Couchbase on Azure? Absolutely. Customers can purchase and deploy Couchbase Server and/or Capella on Azure. Microsoft is a key Couchbase partner. ### Is Couchbase free on Azure? Couchbase offers a free trial on Azure, allowing you to experience the full capabilities of Couchbase Capella without any upfront costs. ### What is Couchbase Capella? Couchbase Capella is a fully managed Database-as-a-Service (DBaaS) that delivers industry-leading NoSQL technology with the ease and simplicity of a cloud database. ### How do I run Couchbase on Azure? Running Couchbase on Azure is straightforward. You can deploy Couchbase Server or Capella directly from the Azure Marketplace and follow the guided setup to get started. ### How do I access Couchbase on Azure? Once deployed, you can access Couchbase through the Azure portal where you can manage and monitor your databases, set up clusters, and perform administrative tasks. ### Can I buy Couchbase Capella in the Azure Marketplace? Yes, Couchbase Capella is available for purchase in the Azure Marketplace. You can also choose different licensing options based on your business needs. ### Is Azure Stack HCI supported by Couchbase? Yes, Couchbase supports Azure Stack HCI, enabling you to deploy Couchbase in a hybrid cloud environment with consistent management and security across on-premises and Azure deployments. ### Is Couchbase Capella AI-ready? Absolutely. Couchbase Capella is AI-ready, providing real-time data processing and analytics capabilities essential for AI applications. This makes it easy to integrate and use AI tools to get actionable insights from your data. --- # MOLO17 Partner Source: https://www.couchbase.com/partners/molo17/ Last modified: 2026-04-24T08:23:52+00:00 Case Study ## Trusted by the world's largest companies ## Couchbase and MOLO17 integrations Couchbase and MOLO17 help organizations deploy resilient, always-on mobile and edge solutions using Couchbase Mobile and MOLO17’s edge-ready expertise. ### Couchbase Mobile & Sync Gateway ### MOLO17 edge solutions ### What is MOLO17’s expertise? MOLO17 specializes in building offline-first applications using Couchbase for industries like healthcare, maritime, and defense. ### What is Couchbase Mobile? Couchbase Mobile includes embedded database and sync gateway technology to ensure data access and synchronization at the edge. ### Can MOLO17 build custom apps? Yes, MOLO17 provides custom development services tailored for edge and mobile applications using Couchbase. ### Is the solution compliant with regulations? Yes, solutions can be configured to meet GDPR, HIPAA, and other regulatory standards. ### Do these solutions work offline? Absolutely. These solutions are specifically designed for offline-first environments. --- # Become a Partner With the PartnerEngage Program Source: https://www.couchbase.com/partners/partner-with-couchbase/ Last modified: 2026-04-27T16:54:06+00:00 #### Disable Tracking Protection In order to access this resource, we need you to fill out a form. To do so tracking protection must be disabled. Learn How Product innovation and strategic partnerships are behind Couchbase’s strong customer interest and adoption. PartnerEngage has been built to provide value to our worldwide ecosystem of partners. PartnerEngage is built on a foundation of training and resources so you can deliver an excellent experience for your customers while achieving profitable growth for your business. Apply today to join the program. --- # Soracom Partner Source: https://www.couchbase.com/partners/soracom/ Last modified: 2026-04-24T08:19:27+00:00 Video ## Trusted by the world's largest companies ## Couchbase and Soracom integrations Soracom’s cloud-native multicarrier cellular network combined with Couchbase’s distributed NoSQL database offers a robust solution for IoT applications that require reliable connectivity and efficient data management. ### Global IoT connectivity ### Edge data management ### How does Soracom enhance IoT connectivity? Soracom offers global cellular connectivity with IoT SIM and eSIM solutions to ensure devices remain connected across various networks. ### What benefits does Couchbase provide for IoT applications? Couchbase’s offline-first architecture and efficient data synchronization make it ideal for managing data from edge devices in IoT deployments. ### Can I integrate Soracom and Couchbase in existing systems? Yes, both platforms are designed for seamless integration, allowing you to enhance your current IoT infrastructure with minimal disruption. ### Is the solution scalable for large IoT deployments? Absolutely. The combined solution supports scalability to accommodate a growing number of devices and increases in data volume. --- # Couchbase Pricing for Capella, Server + Mobile Subscriptions Source: https://www.couchbase.com/pricing/ Last modified: 2026-06-30T11:45:50+00:00 ## Plans & Pricing #### A faster, better DBaaS for transactions, search, and edge applications ##### Buy now: Couchbase or AWS, GCP, Azure. - #### Free Use Capella for free###### Free capabilities - SQL++ (Capella iQ) & key value - Search (vector, FTS, geo, ...) - Mobile App Services - RBAC; scopes & collections - 1 node - 8GB Start for free###### Support - Forum support - ###### Basic capabilities - SQL++, search, and indexing - RBAC; scopes & collections - Single-cluster availability zone - 1-node minimum - Cross data center replication (XDCR) - 24-hour backup interval - Analytics, Eventing - Billion-scale vector search with flexible indexing Request a Quote###### Support - Forum support - 99.5% uptime SLA (multi-node clusters) - ###### Basic capabilities, plus - 1-node minimum - Multiple cluster availability zones (3 nodes) - Up to 1-hour backup interval Request a Quote###### Support - 8-hour response, 24x7* - 99.99% uptime SLA (multi-node clusters) - ###### Basic capabilities, plus - 3-node cluster minimum - Multiple cluster availability zones - Up to 1-hour backup interval - Cluster & App Services auditing - Customer-managed encryption keys (KMIP) Request a Quote###### Support - 30-minute response time, 24x7* - 99.99% uptime SLA | Node Count | vCPU/Node | RAM/Node | Credits/hr | Basic $/hr | Dev Pro $/hr | Enterprise $/hr | | 1 | 4 | 32 | 0.49 | N/A | $0.61 | N/A | | 1 | 8 | 32 | 0.76 | N/A | $0.95 | N/A | | 1 | 8 | 64 | 0.96 | N/A | $1.20 | N/A | | 1 | 16 | 64 | 1.51 | N/A | $1.89 | N/A | | 1 | 16 | 128 | 1.92 | N/A | $2.40 | N/A | | 2 | 4 | 32 | 0.98 | N/A | $1.23 | $1.72 | | 2 | 8 | 32 | 1.52 | N/A | $1.90 | $2.66 | | 2 | 8 | 64 | 1.92 | N/A | $2.40 | $3.36 | | 2 | 16 | 64 | 3.02 | N/A | $3.78 | $5.29 | | 2 | 16 | 128 | 3.84 | N/A | $4.80 | $6.72 | | Measurement | Service | Credits | Basic $ | Dev Pro $ | Enterprise $ | | | Storage, Backup & Restore | GB/Month | Primary | 0.07 | N/A | $0.09 | $0.12 | | Storage, Backup & Restore | GB/Month | Backup | 0.14 | N/A | $0.18 | $0.25 | | Storage, Backup & Restore | GB Restored | Restore | 0.06 | N/A | $0.08 | $0.11 | **AWS N. Virginia (us-east-1) region (pricing may vary by region)** **Data Transfer Fees** For most customers, data transfer fees will be less than 10% of their bill, but will vary based on usage. **Storage and Backup Services** Capella Analytics primary storage is charged at a rate of .07/GB credits per month (in the N.Virginia region). Backups are configured by the customer and then fully managed. Backup charges will vary based on data volume, backup frequency, and retention at a rate of 0.14/GB credits per month. Restores cost .06/GB credits based on the amount of data restored. | Node Count | vCPU/Node | RAM/Node | Credits/hr | Basic $/hr | Dev Pro $/hr | Enterprise $/hr | | 1 | 4 | 32 | 0.49 | N/A | $0.62 | N/A | | 1 | 8 | 32 | 0.77 | N/A | $0.97 | N/A | | 1 | 8 | 64 | 0.96 | N/A | $1.20 | N/A | | 1 | 16 | 64 | 1.53 | N/A | $1.92 | N/A | | 1 | 16 | 128 | 1.91 | N/A | $2.39 | N/A | | 2 | 4 | 32 | 0.98 | N/A | $1.23 | $1.72 | | 2 | 8 | 32 | 1.54 | N/A | $1.93 | $2.70 | | 2 | 8 | 64 | 1.93 | N/A | $2.42 | $3.38 | | 2 | 16 | 64 | 3.06 | N/A | $3.83 | $5.36 | | 2 | 16 | 128 | 3.83 | N/A | $4.79 | $6.71 | | Measurement | Service | Credits | Basic $ | Dev Pro $ | Enterprise $ | | | Storage, Backup & Restore | GB/Month | Primary | 0.06 | N/A | $0.08 | $0.11 | | Storage, Backup & Restore | GB/Month | Backup | 0.14 | N/A | $0.18 | $0.25 | | Storage, Backup & Restore | GB Restored | Restore | N/A | N/A | N/A | N/A | **GCP S. Carolina (us-east1) region (pricing may vary by region)** **Data Transfer Fees** For most customers, data transfer fees will be less than 10% of their bill, but will vary based on usage. **Storage and Backup Services** Capella Analytics primary storage is charged at a rate of .06/GB credits per month (in the S. Carolina region). Backups are configured by the customer and then fully managed. Backup charges will vary based on data volume, backup frequency, and retention at a rate of 0.14/GB credits per month. | Node Count | vCPU/Node | RAM/Node | Credits/hr | Basic $/hr | Dev Pro $/hr | Enterprise $/hr | | 1 | 4 | 32 | 0.48 | N/A | $0.60 | N/A | | 1 | 8 | 32 | 0.74 | N/A | $0.93 | N/A | | 1 | 8 | 64 | 0.93 | N/A | $1.17 | N/A | | 1 | 16 | 64 | 1.44 | N/A | $1.80 | N/A | | 1 | 16 | 128 | 1.83 | N/A | $2.29 | N/A | | 2 | 4 | 32 | 0.96 | N/A | $1.20 | $1.68 | | 2 | 8 | 32 | 1.47 | N/A | $1.84 | $2.58 | | 2 | 8 | 64 | 1.86 | N/A | $2.33 | $3.26 | | 2 | 16 | 64 | 2.89 | N/A | $3.62 | $5.06 | | 2 | 16 | 128 | 3.67 | N/A | $4.59 | $6.43 | | Measurement | Service | Credits | Basic $ | Dev Pro $ | Enterprise $ | | | Storage, Backup & Restore | GB/Month | Primary | 0.05 | N/A | $0.07 | $0.09 | | Storage, Backup & Restore | GB/Month | Backup | 0.14 | N/A | $0.18 | $0.25 | | Storage, Backup & Restore | GB Restored | Restore | N/A | N/A | N/A | N/A | - Azure Virginia (East US 2) region (pricing may vary by region) **Data Transfer Fees** For most customers, data transfer fees will be less than 10 percent of their bill, but will vary based on usage. **Storage and Backup Services** Capella Analytics primary storage is charged at a rate of .06/GB credits per month (in the Virginia region). Backups are configured by the customer and then fully managed. Backup charges will vary based on data volume, backup frequency, and retention at a rate of 0.14/GB credits per month. ### Couchbase Enterprise #### Enterprise clusters run in your cloud ##### from $0.66/hr per node via cloud marketplaces - Full-featured Couchbase Server 8 - SQL++ for JSON documents - Natural language query with SQL++ for developers - Billion-scale vector search with 3 index types - Cross data center replication (XDCR) - Search and indexing - Eventing services - Support for scopes & collections - Backup and recovery service - Advanced security (RBAC, auditing, encryption at rest, KMIP) - Advanced operations (dynamic topology, auto-failover) - Silver or Gold-level support - Professional Services available ### Enterprise Analytics #### Real-time operational analytics for JSON ##### from $0.67/hr per node via cloud marketplaces - Memory and compute separation - Zero ETL for JSON - Multi-source ingestion - Operational write-back - Lightning-fast analytics - RBAC access - Silver or Gold-level support - Professional Services available ### Couchbase Mobile #### Embedded, offline-first NoSQL database with native sync - Sync Gateway license - Couchbase Lite - No data syncing fees - Offline-first design - Peer-to-peer syncing - SQL++ and full-text search (FTS) - Global mobile sync from any data center - Vector search - Audit logging - Indexing, eventing, and analytics - Backup and recovery - Silver or Gold-level support - Professional Services available | Node Count | vCPU/Node | RAM/Node | Storage/Node | Credits/hr | Basic $/hr | Dev Pro $/hr | Enterprise $/hr | | 1 | 2 | 8 | 50 | 0.15 | $0.15 | $0.19 | N/A | | 1 | 4 | 16 | 50 | 0.29 | $0.29 | $0.37 | N/A | | 3 | 4 | 16 | 80 | 0.98 | $0.98 | $1.23 | $1.72 | | 3 | 8 | 32 | 160 | 2.33 | $2.33 | $2.92 | $4.08 | | 3 | 8 | 64 | 320 | 3.68 | $3.68 | $4.60 | $6.44 | | 3 | 16 | 64 | 320 | 4.8 | $4.80 | $6.00 | $8.40 | | 3 | 16 | 128 | 640 | 7.3 | $7.30 | $9.13 | $12.78 | | 3 | 32 | 128 | 640 | 9.55 | $9.55 | $11.94 | $16.71 | | 3 | 32 | 256 | 1280 | 14.33 | $14.33 | $17.92 | $25.08 | | 3 | 64 | 256 | 1280 | 18.85 | $18.85 | $23.57 | $32.99 | | 3 | 48 | 384 | 1920 | 19.72 | $19.72 | $24.65 | $34.51 | **AWS N. Virginia (us-east-1) region, (pricing may vary by region)** **Data Transfer Fees** For most customers, data transfer fees will be less than 10 percent of their bill, but will vary based on usage. **Backup Services** Capella backups are configured by the customer and then fully managed. Backup schedules are set at the bucket (database) level and securely archived. Restores can be performed at the bucket or collection level. Backup costs $0.07/GB per month (in the N. Virginia region). Backup charges will vary based on data volume, backup frequency, and retention. Additionally, Capella also offers Cloud Provider Snapshots for cluster level backups, at a cost of 0.14/GB credits per month. Snapshot charges will vary based on the data volume, backup frequency, and retention. | Node Count | vCPU/Node | RAM/Node | Storage/Node | Credits/hr | Basic $/hr | Dev Pro $/hr | Enterprise $/hr | | 1 | 2 | 8 | 50 | 0.17 | $0.17 | $0.22 | N/A | | 1 | 4 | 16 | 50 | 0.3 | $0.30 | $0.38 | N/A | | 3 | 4 | 16 | 80 | 0.83 | $0.83 | $1.04 | $1.46 | | 3 | 8 | 32 | 160 | 1.61 | $1.61 | $2.02 | $2.83 | | 3 | 8 | 64 | 320 | 2.52 | $2.52 | $3.15 | $4.41 | | 3 | 16 | 64 | 320 | 3.17 | $3.17 | $3.97 | $5.55 | | 3 | 16 | 128 | 640 | 4.98 | $4.98 | $6.23 | $8.72 | | 3 | 32 | 128 | 640 | 6.29 | $6.29 | $7.87 | $11.01 | | 3 | 32 | 256 | 1280 | 9.90 | $9.90 | $12.38 | $17.33 | | 3 | 64 | 256 | 1280 | 12.52 | $12.52 | $15.65 | $21.91 | | 3 | 48 | 384 | 1920 | 14.82 | $14.82 | $18.53 | $25.94 | **GCP Iowa (US-Central) region, (pricing may vary by region)** For most customers, data transfer fees will be less than 10 percent of their bill, but will vary based on usage. **Backup Services** Capella backups are configured by the customer and then fully managed. Backup schedules are set at the bucket level and securely archived. Restores can be performed at the bucket or collection level. Backup costs $0.06/GB credits per month (in the N. Virginia region) Backup charges will vary based on data volume, backup frequency, and retention. Additionally, Capella also offers Cloud Provider Snapshots for cluster level backups, at a cost of 0.14/GB credits per month. Snapshot charges will vary based on the data volume, backup frequency, and retention. | Node Count | vCPU/Node | RAM/Node | Storage/Node | Credits/hr | Basic $/hr | Dev Pro $/hr | Enterprise $/hr | | 1 | 2 | 8 | 50 | 0.23 | $0.23 | $0.29 | N/A | | 1 | 4 | 16 | 50 | 0.39 | $0.39 | $0.49 | N/A | | 3 | 4 | 16 | 128 | 1.15 | $1.15 | $1.44 | $2.02 | | 3 | 8 | 32 | 256 | 2.23 | $2.23 | $2.79 | $3.90 | | 3 | 8 | 64 | 512 | 3.40 | $3.40 | $4.25 | $5.95 | | 3 | 16 | 64 | 512 | 4.37 | $4.37 | $5.47 | $7.65 | | 3 | 16 | 128 | 1024 | 6.64 | $6.64 | $8.30 | $11.61 | | 3 | 32 | 128 | 1024 | 8.60 | $8.60 | $10.75 | $15.04 | | 3 | 32 | 256 | 2048 | 13.11 | $13.11 | $16.39 | $22.94 | | 3 | 64 | 256 | 2048 | 17.05 | $17.05 | $21.31 | $29.84 | | 3 | 48 | 384 | 2048 | 17.85 | $17.85 | $22.32 | $31.24 | **Azure Virginia (East US) region, (pricing may vary by region)** **Data Transfer Fees** For most customers, data transfer fees will be less than 10 percent of their bill, but will vary based on usage. **Backup Services** Capella backups are configured by the customer and then fully managed. Backup schedules are set at the bucket level and securely archived. Restores can be performed at the bucket or collection level. Backup costs $0.06/GB credits per month (in the N. Virginia region) Backup charges will vary based on data volume, backup frequency, and retention. Additionally, Capella also offers Cloud Provider Snapshots for cluster level backups, at a cost of 0.14/GB credits per month. Snapshot charges will vary based on the data volume, backup frequency, and retention. ## Pricing FAQ Get answers to questions about plans and pricing for Couchbase Capella, Server, and Mobile subscriptions. - ###### How do Capella and Server pricing differ? Capella uses a consumption-based model in which teams are charged per node per hour. Server follows a traditional subscription model based on the total number of nodes used in production. - ###### What are the available Couchbase pricing tiers? Couchbase offers Free, Basic, Developer Pro, and Enterprise tiers. Each tier provides different levels of performance, features, and support. - ###### How does the Capella credit system work? Teams purchase credits to cover the varying costs of Data, Query, and Search services. This allows you to scale resources up or down dynamically while only drawing from your pre-paid credit balance. - ###### What is included in the Capella free tier? The Capella free tier offers a fully managed NoSQL DBaaS with credits, sample data, SQL++ queries, search, mobile sync, and a small cluster (≈1 node, ~8GB) for prototyping - no credit card required. - ###### Does node size affect the hourly cost? Yes. Pricing scales based on the vCPU and RAM allocated to each node. Larger instance types consume more credits per hour to account for the increased compute and memory capacity. ## Have more questions about pricing? Talk to us about pricing and subscription options. --- # Release Notes Source: https://mcp-server.couchbase.com/product-notes/release-notes # Release Notes Full release details are published on the GitHub Releases page. ## Version History ### v1.0.0 (30 June 2026) #### New Features - **OAuth Authentication**- Secure the Streamable HTTP endpoint with OAuth 2.1 JWT token verification and scope-based authorization (`couchbase-mcp:read` /`couchbase-mcp:write` ), with optional Protected Resource Metadata (PRM) for Dynamic Client Registration. See OAuth. - **Logging**- Configurable structured logging with log levels (`CB_MCP_LOG_LEVEL` ), multiple output sinks (`CB_MCP_LOG_SINKS` - console and/or file), and file output (`CB_MCP_LOG_FILE` ). See Logging. #### Enhancements *None in this release.* #### Bug Fixes *None in this release.* #### Deprecations *None in this release.* #### Removals - **Removed**- The previously deprecated read-only query mode has been removed. Use`CB_MCP_READ_ONLY_QUERY_MODE` `CB_MCP_READ_ONLY_MODE` instead, which blocks all write operations (KV and SQL++). See Read-Only Mode. - **Removed SSE transport**- The previously deprecated Server-Sent Events (SSE) transport has been removed. Use the Streamable HTTP transport (`CB_MCP_TRANSPORT=http` ) instead. ### v0.8.0 (27 May 2026) - **Python 3.14 Support**- The Couchbase MCP Server is now compatible with Python 3.14, allowing users to take advantage of the latest features and improvements in the Python ecosystem. - **List Indexes Tool**- List indexes tool will be powered by SQL++ for Couchbase Server versions 8.0 and above. Users can set`return_raw_index_stats=true` to return the unprocessed index information. - **Migrate to FastMCP SDK**- The server has been updated to use the native FastMCP SDK instead of the native MCP SDK. - **Docker Base Image Update**- The base images for the prebuilt Docker images have been updated to`python:3.13-slim-trixie` for security and performance improvements. ### v0.7.1 (9 April 2026) **Fix for test_cluster_connection Tool**- Resolved an issue where the`test_cluster_connection` tool could cause an exception with the latest Couchbase SDK (4.6.0). The tool now accurately reflects the connection status in its response.**Update Development Dependencies**- Updated development dependencies for pytest and pytest-asyncio to latest versions. ### v0.7.0 (1 April 2026) - **Explain Query Tool**- New`explain_sql_plus_plus_query` tool returns query execution plans for LLM analysis and optimization. - **Elicitation for Tool Calls**- New`CB_MCP_CONFIRMATION_REQUIRED_TOOLS` setting enables user confirmation prompts for specified tools before execution. **Note:** The tool call for `test_cluster_connection` has a bug with the Couchbase Python SDK 4.6.0. The solution is to downgrade the SDK version in the MCP server to 4.5.0 or upgrade the MCP server to version 0.7.1. ### v0.6.1 (6 February 2026) - **Read-Only Mode**- New`CB_MCP_READ_ONLY_MODE` setting disables all write operations (KV write tools not loaded, SQL++ write queries blocked). Enabled by default for safety. - **Tool Disabling**- Disable individual tools via`CB_MCP_DISABLED_TOOLS` (comma-separated list or file path). - **Expanded CRUD Support**- Added`insert_document_by_id` ,`replace_document_by_id` , and`delete_document_by_id` tools in addition to existing get and upsert operations. - **IDE Support**- Added support for VS Code and JetBrains IDEs (AI Assistant and Junie plugins). ### v0.5.3 (10 December 2025) **Query Performance Analysis**- Added 7 tools for identifying slow-running queries, frequently executed queries, primary index usage, non-covering indexes, non-selective queries, large response sizes, and large result counts. ### v0.5.2 (13 November 2025) **MCP Registry Support**- MCP server added to the MCP Registry for easier discovery and installation by clients. ### v0.5.1 (3 November 2025) - **List Indexes**- New`list_indexes` tool with optional filtering by bucket, scope, collection, and index name. - **Index Recommendations**- New`get_index_advisor_recommendations` tool leveraging the Couchbase Index Advisor. - **Cluster Health**- New`get_cluster_health_and_services` tool for monitoring cluster status and service latency. ## Upcoming Features **Search-Based Tools**- Tools for Full Text Search (FTS). ## Checking Your Version `uvx couchbase-mcp-server --version` ## Installation Channels | Channel | Update Method | |---|---| PyPI | `uvx couchbase-mcp-server` always runs the latest version | Docker Hub | Pull the latest tag: `docker pull couchbase/mcp-server:latest` | Source | `git pull` and `uv sync` | --- # AI Data Plane for Production Agents (formerly AI Services) Source: https://www.couchbase.com/products/ai-services/ Last modified: 2026-06-30T14:49:35+00:00 Video AGENT MEMORY TRIAL Couchbase AI Data Plane gives production AI agents persistent memory, governed data access, tool and prompt visibility, and fast context retrieval across cloud, self-managed, hybrid, edge, and air-gapped environments. It brings Agent Memory, MCP Server, and Agent Catalog together on Couchbase, helping teams avoid scattered agent infrastructure and move from pilots to production-ready systems faster. Keep prompts, tools, traces, memory, and operational data in one governed data layer so teams can inspect agent behavior with SQL++. Maintain short-term, long-term, semantic, profile, and conversational memory across sessions, restarts, users, and frameworks. Give agents standardized access to Couchbase operational data, vectors, documents, tools, prompts, traces, and cache. Reduce redundant LLM calls with exact and semantic caching while keeping cache, vectors, documents, and operational data together. Production agents need access to memory, tools, prompts, operational data, traces, and context, but those assets often live in scattered systems. Couchbase keeps them in one governed data layer, giving teams visibility into what an agent used, which prompt version was involved, and what data shaped the response. Production agents need fast access to current context across operational data, vectors, documents, memory, and cache. Couchbase keeps those assets close together, reducing data hops and helping agents respond quickly across cloud, self-managed, hybrid, edge, and air-gapped environments. Couchbase’s advanced vector search delivers billion-scale storage and search with exceptional performance. It enables rich context across text and images while ensuring scalability, security, and seamless AI tool integration. Move from prototype to production with three indexing options tailored to any use case. Organizations often overlook unstructured data that could enhance AI. Couchbase automates data ingestion, vectorization, and indexing converting text, PDFs, and images into JSON and vectors. It automatically re-vectorizes updates to streamline workflows and give models richer context. Couchbase provides the data foundation for critical AI apps and agents, helping teams store LLM interactions, connect agents to governed operational data, reduce custom memory and retrieval code, cut latency and token costs, and run across cloud, self-managed, hybrid, edge, and air-gapped environments. Build with leading AI, data, and observability partners while keeping agent memory, context, tools, traces, and cache secured on Couchbase. Get quick answers about agent memory, governed data access, LLM caching, security, and production AI agents. Couchbase AI Data Plane provides production AI agents with one governed data layer for memory, context, tools, traces, operational data, and cache. Agent Memory maintains short-term and long-term memory across sessions, restarts, users, and frameworks while keeping memory close to operational data. Couchbase keeps prompts, tools, traces, memory, and operational data in one governed data layer so teams can inspect what agents used and why they responded. Agent Catalog manages prompt metadata, tool metadata, and end-to-end traces so teams can inspect, reuse, and govern agent behavior across applications. Agent Memory reduces token costs by reusing persistent, cumulative context instead of resending conversations each turn, while co-located data and caching cut redundant inference calls. Yes, AI Services has officially rebranded to AI Data Plane as of June 2026. The product has evolved under the AI Data Plane identity to support new features. --- # Couchbase Analytics: Real-Time JSON Analytics Database Source: https://www.couchbase.com/products/analytics/ Last modified: 2026-06-30T15:03:31+00:00 Paper Video Modern applications rely on operational data to create next-generation experiences, but enhancing them with dynamic analytics data makes them more personalized. Couchbase bridges the difficult data insight gap by converging operational data and real-time analytics in one platform that enables teams to build critical applications that drive real-time experiences, insights, and actions. As part of the operational data platform for AI, Couchbase Analytics brings that intelligence to everyone acting on your data -the people building experiences and the AI agents working alongside them. Seamlessly perform real-time analysis on JSON data. Combine data from multiple databases and flat files for broader analysis. Perform ad hoc analysis faster, without overwhelming the BI team. Enhance experiences via derived data and real-time context for smarter AI responses and the agents acting on them. Zero ETL means teams can make informed decisions faster, reacting swiftly to application changes and reducing risk. SQL++ based JSON querying solves the challenges teams have with analytics in relational database management systems. Developers perform ad hoc analysis faster without needing to define schema and in a conversational manner with Capella iQ. Utilize real-time metrics to drive action, improve applications, and enhance user experiences. The only JSON-native data platform for both operations and real-time analytics services. Build robust apps faster, while saving time and costs. Get quick answers to questions about Couchbase’s real-time JSON analytics database. Couchbase Analytics is a real-time, JSON-native analytics engine built into Couchbase Capella. It queries operational data directly with no ETL pipelines, schemas, or separate infrastructure required. No. Couchbase Analytics ingests and queries JSON data in real time without ETL pipelines or predefined schemas, making operational data instantly available for analysis. Yes. Couchbase Analytics supports real-time write-back, allowing analytical findings to flow directly into the operational data store for immediate use in live applications. Couchbase Analytics connects to Tableau, Power BI, and Looker through native JDBC and ODBC connectors, enabling visualization of operational JSON data in familiar BI tools. Couchbase Analytics uses columnar storage, massively parallel processing, and compute-storage separation to deliver accelerated query performance across large, complex datasets. Couchbase Enterprise Analytics (self-managed) queries Apache Iceberg tables. Run SQL++ on lakehouse data in place with zero ETL. --- # Operational Database Platform for AI Source: https://www.couchbase.com/products/capella/ Last modified: 2026-06-30T11:31:14+00:00 Service Demo We started with a belief that a database should empower variety, agility, performance, scale, and innovation. That’s why we’re poised to be the leader in AI. Couchbase’s operational data platform for AI is a scalable foundation for enterprise operational, analytical, mobile, and AI workloads that replaces legacy infrastructure and data services. Building a roadmap for AI is a major endeavor, one that comes with risks and costs without proper planning. Here’s how we help you stay ahead: Users abandon slow experiences. Reduce churn by providing an experience that never stops. Keep your teams ready to respond to new market changes and customer expectations. Provide a shared source of truth that is accurate in real time. AI needs more systems and more people. Plan for more complexity and higher TCO. Try Couchbase today. Our high-touch service and passion for your success means you’ll get a hands-on, personalized onboarding experience. Choose the pricing plan that fits your needs - from a free Database-as-a-Service tier to full enterprise readiness. Capella’s flexible pricing supports everything from startup launches to modernizing legacy systems. For POCs, prototyping, and learning Couchbase. Start today! Ideal for early design, development, and testing phases in a single AZ. For non-mission-critical apps that still need great speed. For premium-level performance, service, security, and support. Get quick answers to questions about Couchbase’s operational data platform for AI. Couchbase Capella is a fully managed, multicloud NoSQL database-as-a-service (DBaaS) that provides high-performance key-value, SQL query, and search data access. Capella uses a pricing model where teams pay for the specific compute, storage, and data transfer resources they utilize. Charges are calculated per node per hour across three distinct service tiers. Couchbase Capella is a fully managed cloud service that automates setup, scaling, and backups. Couchbase Server is self-managed, with users handling deployment and maintenance. Yes. Capella supports mobile and edge deployments through Capella App Services, which provides a managed gateway for data synchronization. Capella supports AI with vector search and automated data vectorization. Its AI Data Plane adds model hosting, RAG automation, semantic caching, and governance to streamline agent development. --- # Fully Managed Backend for Mobile Apps | Capella App Services Source: https://www.couchbase.com/products/capella/app-services/ Last modified: 2026-06-30T14:42:30+00:00 SAMPLE APP Whitepaper App Services is the enterprise-class backend managed cloud database and sync layer for Couchbase Mobile - an end-to-end data platform that keeps mission-critical apps fully functional and always synchronized, regardless of network conditions, from cloud to edge to device. Apps work offline and sync automatically when connectivity returns. No outages, no lost transactions, no lost revenue. Bi-directional cloud-to-edge sync with delta updates and automatic conflict resolution. No custom replication to build or maintain. Secure data with field-level encryption, granular access control, and auto-purge. HIPAA-ready for highly regulated environments. Enable on-device AI, semantic search, and RAG using SQL++. Securely power smart apps from cloud to edge without internet roundtrips. A complete mobile data platform - embedded database (Couchbase Lite), managed sync (App Services), SQL++ queries, full-text search, and on-device vector search - in a single SDK across Swift, Kotlin, .NET, React Native, C, C++, Java, and JavaScript. Skip months of building and maintaining a custom sync layer. Build offline-first apps that always work, with cloud-to-device and peer-to-peer replication handled by the platform. Star, hierarchical, mobile peer-to-peer, chained edge servers, or hybrid - design the architecture your use case demands from a single platform. Capella App Services in the cloud, Couchbase Server or Edge Server at the edge, and Couchbase Lite on the device. Each tier operates autonomously when disconnected and reconciles automatically when connectivity returns. One vendor, one data model, end to end. PepsiCo, PG&E, Shop.com, Princess Cruises, Emirates, and more rely on Couchbase Mobile for guaranteed speed and business uptime for their most critical applications. Couchbase Mobile provides an end-to-end, enterprise-grade mobile data platform with proven scale and time-tested resilience. Get answers to questions about how Capella App Services helps applications remain functional and synchronized. Capella App Services is a fully managed BaaS that syncs data between Couchbase Capella and mobile, IoT, desktop, and web apps - with no backend servers to set up or manage. Yes. Capella App Services pairs with the embedded Couchbase Lite database, so apps can store and access data locally and remain fully functional even without an internet connection. Capella App Services supports Basic, OIDC, OAuth 2.0, and custom authentication providers, with TLS encryption and fine-grained, row- and field-level access control. Yes. Capella App Services includes audit logging that tracks all system activity, supporting HIPAA-ready infrastructure for healthcare and other regulated industries. App Services syncs with apps on iOS, Android, Linux, Windows, embedded systems, and web browsers, supporting a wide range of mobile, IoT, and edge deployment scenarios. --- # Cloud Trust Center - Capella Source: https://www.couchbase.com/products/capella/trust/ Last modified: 2026-04-30T10:02:07+00:00 Product ## Learn security best practices for Capella Protect your data from attacks with auditing, encryption, and authentication. Couchbase security is a team effort. It begins with top-down policies from management and extends to the development of secure products by our engineers, management of governance and compliance by our information security team, and shared responsibilities across all our business units. Role-based access controls ensure only authorized users or applications have access to data. Enforcement of least privilege access is applied to all credentials and secrets, ensuring strict access controls to sensitive data and actions. To prevent potential breaches, Capella implements a managed cloud intrusion detection system that involves 24×7 monitoring. Capella is built using modern DBaaS principles and secure development practices. Couchbase is committed to being transparent about how we collect, use, and protect data received and stored by our products and services. See the Couchbase Privacy Policy for more information. Couchbase’s architecture interweaves many technology elements to ensure reliability, disaster tolerance, and industry-leading high availability at scale on a global basis. Although much of the security framework is in place and automated, customers are responsible for some initial configuration and ongoing security administration. See our Shared Responsibility Model to learn more. --- # Information Responsive to Hébergeur de Données de Santé (HDS) Requirement No. 31 Source: https://www.couchbase.com/products/capella/trust/HDSReq31/ Last modified: 2025-12-04T14:35:16+00:00 Business name of the actor | Role in the hosting service | HDS certified? | SecNumCloud 3.2 qualified? | Hosting activities involving the actor | Access to personal health data from countries outside the European Economic Area, by the Host or one of its processors | Host or processor subject to a risk of access to personal health data from countries outside the European Economic Area, imposed by the legislation of a third country in breach of EU law | |---|---|---|---|---|---|---| | Couchbase, Inc. | Host: Couchbase Capella is a cloud-based NoSQL Database-as-a-Service that leverages Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure to host customer database contents, including any personal health data that customers may upload to and host in the Capella Cloud Service. | Yes | No | Activities 3-4 | Please see Question 6 in our Frequently Asked Privacy Questions about Couchbase Capella (https://www.couchbase.com/capella-privacy-faq/), which explains limited circumstances under which data stored in the European Economic Area (EEA) may be accessed or transferred outside of the EEA. Depending on a customer’s selections, when requesting Couchbase technical support, limited personal data may be accessed by Couchbase personnel in one of the locations listed in Section 1 (Couchbase Affiliates) of the Couchbase Cloud Service Subprocessor List found at https://info.couchbase.com/cloud-subprocessors.html/ (including Australia, Canada, France, Germany, India, Israel, Japan, Saudi Arabia, Singapore, Spain, United Arab Emirates, United Kingdom, or United States). | Yes. The Couchbase Capella Control Plane is hosted from the United States. But as stated under Question 9 in our in our Frequently Asked Privacy Questions about Couchbase Capella (https://www.couchbase.com/capella-privacy-faq/), Couchbase offers Capella users supplementary measures to mitigate the risk of unauthorized data access, including technical controls to manage access to and encryption of data stored in Capella and contractual commitments to give customers reasonable notice of law enforcement demands to allow customers to seek protective orders. | | Amazon Web Services (AWS) | Processor of the Host: Provider of public cloud hosting services | Yes | No | Activities 1-4, 6 | Couchbase Capella customers select the Cloud Service Provider region(s) in which their personal health data will be hosted. See AWS supported regions linked here. | Yes. The Couchbase Capella Control Plane is hosted from the United States. But as stated under Question 9 in our in our Frequently Asked Privacy Questions about Couchbase Capella (https://www.couchbase.com/capella-privacy-faq/), Couchbase offers Capella users supplementary measures to mitigate the risk of unauthorized data access, including technical controls to manage access to and encryption of data stored in Capella and contractual commitments to give customers reasonable notice of law enforcement demands to allow customers to seek protective orders. | | Google Cloud Platform (GCP) | Processor of the Host: Provider of public cloud hosting services | Yes | No | Activities 1-4, 6 | Couchbase Capella customers select the Cloud Service Provider region(s) in which their personal health data will be hosted. See GCP supported regions linked here. | Yes. The Couchbase Capella Control Plane is hosted from the United States. But as stated under Question 9 in our in our Frequently Asked Privacy Questions about Couchbase Capella (https://www.couchbase.com/capella-privacy-faq/), Couchbase offers Capella users supplementary measures to mitigate the risk of unauthorized data access, including technical controls to manage access to and encryption of data stored in Capella and contractual commitments to give customers reasonable notice of law enforcement demands to allow customers to seek protective orders. | | Microsoft Azure | Processor of the Host: Provider of public cloud hosting services | Yes | No | Activities 1-4, 6 | Couchbase Capella customers select the Cloud Service Provider region(s) in which their personal health data will be hosted. See Azure supported regions here. | Yes. The Couchbase Capella Control Plane is hosted from the United States. But as stated under Question 9 in our in our Frequently Asked Privacy Questions about Couchbase Capella (https://www.couchbase.com/capella-privacy-faq/), Couchbase offers Capella users supplementary measures to mitigate the risk of unauthorized data access, including technical controls to manage access to and encryption of data stored in Capella and contractual commitments to give customers reasonable notice of law enforcement demands to allow customers to seek protective orders. | --- # Autonomous Operator: DevOps Automation for Kubernetes & More Source: https://www.couchbase.com/products/cloud/kubernetes/ Last modified: 2026-01-27T07:34:27+00:00 Video Self-managed Couchbase for Kubernetes # Autonomous Operator Autonomous Operator makes it easy to manage and scale Couchbase, a stateful database that stores and tracks your important data across cloud environments. With seamless integration with popular platforms like Kubernetes, it enables businesses to run reliable, high-performance applications alongside modern microservices, supporting hybrid and multi-cloud strategies without vendor lock-in. --- # SDK & Connector Compatibility Source: https://www.couchbase.com/products/developer-sdk/compatibility/ Last modified: 2026-03-13T15:07:28+00:00 ### Start building Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. | SDK | Recommended Version | Available Features | |---|---|---| | Java | 3.3 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. | | .NET | 3.3 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. | | GO | 2.5 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. | | C | 3.3 | Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. Standalone C++ transactions library with KV support. | | Node.js | 4.1 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. | | Python | 4.0 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. | | Scala | 1.3 | Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Management API for Eventing, Index Management for Scopes & Collections, and more. | | Ruby | 3.3 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Index Management for Scopes & Collections, and more. | | PHP | 4.0 | KV and SQL++ Transactions support. Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Index Management for Scopes & Collections, and more. | | Kotlin | 1.0 | Server side Kotlin SDK Platform support for Linux Alpine OS, Apple M1, and AWS Graviton2. Index Management for Scopes & Collections, and more. | | Connectors | Version | Available Features | |---|---|---| | Spark | 3.2 | Support for Spark 3.0 & 3.1. RDD, Spark SQL, and Analytics support. Scope and collection level configurations and other features. | | Elasticsearch | 4.3 | Easy deployment on Kubernetes scope and collection level configurations and other features. | | Kafka | 4.1 | Enhanced durability, scope and collection level configurations, and other features. | | Tableau | 1.0 | Provides integration between high-performance Couchbase Server tabular views and the Tableau interactive data visualization platform. | --- # Lightweight Database for Apps at the Edge Source: https://www.couchbase.com/products/edge-server/ Last modified: 2026-06-30T09:24:15+00:00 Video ## Couchbase Edge Server reference app See how Edge Server can power your edge apps - get the reference app source code. Aircraft, retail stores, factory floors, warehouses - even retailers in the middle of a major city - struggle to run apps under degraded, intermittent, or no internet connectivity. Networks fail everywhere, all the time, and when they do, business stops. Edge Server was built for resource-constrained edge locations where a full server cluster isn’t practical, so mission-critical apps stay fast and always-on. Runs on resource-constrained edge hardware with as little as 1GB RAM - where a full Couchbase Server cluster isn’t practical. Mission-critical edge apps stay fully functional when the network drops, and reconcile automatically the moment connectivity returns. REST API for browser and HTTP clients, plus WebSocket sync for Couchbase Lite apps running on devices at the edge. Bidirectional sync to Capella in the cloud and Couchbase Lite on devices - from cloud to edge to device, one unified platform. Edge Server exposes a simple HTTP-based RESTful interface, so any downstream HTTP client - including browser applications and lightweight services - can read and write data, run queries, and listen to change feeds. It also supports the same WebSocket-based replication protocol used across the Couchbase Mobile platform, so downstream Couchbase Lite apps sync efficiently with version-vector conflict resolution and delta sync. Two access patterns, one node - no custom middleware required to bridge web and mobile clients at the edge. Edge Server runs on the smallest footprint - single-board computers, in-vehicle compute, kiosks, ruggedized industrial gateways - where space, power, and logistics rule out a full database server. It slots into any topology an architect needs: a layered hierarchy with Couchbase in the cloud, Edge Server in retail stores or on aircraft, and Couchbase Lite on devices; a chained edge-to-edge architecture; or a hybrid combination. Get quick answers to questions about Couchbase’s lightweight NoSQL database server. Couchbase Edge Server is a lightweight NoSQL database server built for resource-constrained edge hardware. It runs on as little as 1GB RAM and exposes a REST API for local app access. Couchbase Lite is an embedded database inside a single app. Edge Server is a database server that multiple apps and clients on the same local network can access via REST API. Yes. Edge Server stores data locally and keeps apps running during outages. It syncs automatically with Couchbase in the cloud when connectivity is restored. Edge Server runs on resource-constrained hardware with as little as 1GB RAM, making it suitable for retail kiosks, restaurant terminals, warehouse systems, and connected vehicles. Apps connect to Edge Server via a REST API, allowing any client application or programming language to read and write data without requiring a Couchbase-specific SDK. --- # Couchbase Enterprise vs. Community Edition vs. Couchbase Capella Source: https://www.couchbase.com/products/editions/ Last modified: 2025-10-09T14:29:27+00:00 ###### COMPARE ## Couchbase updates and support - Software updates and support - Community contribution and GitHub repository access - Frequent releases with quality improvements - Worldwide 24x7 support - Patches and maintenance updates - Professional services - Proactive security monitoring - SOC 2 Type II, PCI, HIPAA compliance - Couchbase Capella - Enterprise Edition - Community Edition --- # Couchbase Mobile Enterprise Edition vs. Community Edition vs. Couchbase Capella App Services Source: https://www.couchbase.com/products/editions/mobile/ Last modified: 2026-06-30T09:26:31+00:00 ###### COMPARE ## Couchbase Lite - Data Access Service - Support for iOS, Android, Java (desktop/server), C, C++, JavaScript, and .NET (UWP and MAUI) - Support for React Native - Asynchronous event notifications - Query (QueryBuilder and SQL++) - Scopes and collections - Full-text search (FTS) - Peer-to-peer synchronization - Predictive queries - Vector search - Enterprise Edition - Community Edition - Yes (community supported) - High Availability and Disaster Recovery - Automatic conflict resolution - Custom conflict resolution - Device-side replicas - Enterprise Edition - Community Edition - Security - Data transport over TLS - On-device data encryption - Client side field-level encryption - Enterprise Edition - Community Edition - Sync - Sync via WebSockets - Delta sync - Enterprise Edition - Community Edition COMPARE ## Sync Gateway - Configuration - Centralized persistent configuration - Database configuration groups - Capella App Services - Not Applicable - Enterprise Edition - Community Edition - Data Access Service - Data integration APIs, including REST, stream, batch, and event - Scopes and collections - Capella App Services - Enterprise Edition - Community Edition - High Availability and Disaster Recovery - Built-in high availability of import processing - High availability of Sync Gateway replications - Capella App Services - Enterprise Edition - Community Edition - Security - User authentication in Sync Gateway - Fine-grained access control for client access - Fine-grained RBAC controls for Sync Gateway admin access - User-defined extended attributes (XATTRs) for storing access grants - Data transport over TLS for client access - Data transport over TLS for Server access - Sync Gateway log redactions - Audit logging - Capella App Services - Enterprise Edition - Community Edition - Sync - Sync via WebSockets - Delta sync - Inter-Sync Gateway replication - Automatic conflict resolution - Advanced conflict resolution support in inter-Sync Gateway replication - Eventing support - Capella App Services - Enterprise Edition - Community Edition - Performance and Scaling - Advanced Sync Gateway cache configuration - Linear scaling of import processing - Enhanced write scaling - Load balancing of Sync Gateway replications - Performance tuning of Sync Gateway replications - Capella App Services - Not Applicable - Not Applicable - Not Applicable - Enterprise Edition - Community Edition - Observability - Log streaming - Capella App Services - Enterprise Edition - Community Edition ###### CUSTOMERS ## What customers are saying - “Couchbase offered an end-to-end cloud-ready solution that enabled us to launch quickly and put the service into production by the deadline.” **Matthieu Brun-Bellut,**Chief Information Officer, Coyote**5**million users**500**million documents - “Our digital showroom concept completely reimagines the traditional buying approach and establishes a new fashion industry benchmark for sales.” **Daniel Grieder,**CEO, Tommy Hilfiger**80%**cut in sample production**25+**digital showroom deployments - “We penetrate more than 95% of households with our products, so we need to have a robust supply chain as well as a good frontline sales application.” **Madhav Mekala,**Director of Mobile App Development, PepsiCo**30k**users ## Couchbase Mobile Editions FAQ Get quick answers to questions about different editions of Couchbase Mobile. - ###### What is Couchbase Lite Community Edition? Couchbase Lite Community Edition is a free, open-source embedded NoSQL database for mobile and edge apps. It includes core data access, SQL++ queries, and full-text search. - ###### What does Enterprise Edition add over Community? Enterprise Edition adds database encryption, peer-to-peer sync, vector search, predictive queries, and access to Couchbase enterprise support. - ###### Does Community Edition support vector search? No. Vector search is only available in Couchbase Lite Enterprise Edition. It enables on-device semantic search and RAG features for AI-powered mobile and edge applications. - ###### What is Capella App Services? Capella App Services is the fully managed, cloud-hosted alternative to self-managed Sync Gateway. It provides the same sync capabilities with no infrastructure to deploy or operate. - ###### Which edition is right for my app? Community Edition suits development and open-source projects. Enterprise Edition adds encryption, advanced sync, and AI features. Capella App Services removes infrastructure management entirely. --- # Enterprise Edition vs. Community Edition vs. Couchbase Capella Source: https://www.couchbase.com/products/editions/server/ Last modified: 2026-06-30T09:27:24+00:00 ###### COMPARE ## Operational Data Platform for AI - AI Data Plane - Model Service - Data Processing Service - Agent Catalog - AI Functions - Agent Memory - MCP Server - Couchbase Capella - Enterprise Edition - Community Edition - Search - Hyperscale vector index - Composite vector index - Search Vector Index (vector, text, geospatial, ...) - Full-Text Search (FTS) Service - SQL++ and FTS integration - Support for scopes and collections - FTS Index replica - Couchbase Capella - Enterprise Edition - Community Edition - Data Access Service - Key-value interface (read/write) - High-density storage engine, Magma - Change data capture streamed to Kafka - Distributed ACID transactions - Tunable query consistency - Consistent metadata - Tunable durability - Ephemeral buckets - Netlify - Visual Studio Code integration - Couchbase Capella - Enterprise Edition - Community Edition - Query Service - Query Service via SQL++ (SQL-based queries) - Support for ACID transactions in SQL++ - Time-series array support with import and un-nest functions - Graphical explain plan - Built-in query editor - Built-in schema browser - SQL++ common table expression (CTE) - ANSI joins support in SQL++ - Unlimited query concurrency - Cost-based optimizer (CBO) - Window functions - SQL++ request auditing - SQL++ aggregate pushdown - Query monitoring UI - Query monitoring & profiling - Query workload snapshots - Query user-defined functions (UDF) with inline functions - Query user-defined functions (UDF) with JavaScript functions - Couchbase Capella - Enterprise Edition - Community Edition - Index Service - Hyperscale vector index - Composite vector index - Index Service - Global Secondary Indexes (GSI) - Index Service failover - Index pushdown - Composite Array indexes - Adaptive indexes - Flex Index using FTS indexing - Index partitioning - Index advisor - Plasma - high-performance storage engine for indexes - Index replicas and swap rebalance - Memory-optimized indexes - Index auto-move - Couchbase Capella - Enterprise Edition - Community Edition - Analytics - Native columnar storage - Separation of compute and data storage - ZeroETL from Couchbase - Multisource, ZeroETL from other databases - Capella iQ integration - Write-back to Capella + Couchbase Server - Write data back to external stores - BI tool integration - SQL++ - Cost-based query optimizer - Data processing - Query external stores in place - Availability - Capella Analytics - Yes. AWS S3/GCS - Tableau, PowerBI, Superset native - MPP - AWS, GCP - Enterprise Analytics - Yes. AWS S3 - Tableau, PowerBI, Superset native - MPP - On-prem, AWS - Couchbase Server Analytics Service - Tableau native driver, CData - MPP - On-prem, AWS, GCP, Azure - Eventing Service - Eventing Service - Serverless compute - Distributed DCP consumer - Data Service integration - Query Service integration - External REST integration - Couchbase Capella - Enterprise Edition - Community Edition - Backup Service - Automated backup - Cloud-native backups - Couchbase Capella - Enterprise Edition - Community Edition - Development and Administration Tools - Web-based UI - Robust SDKs for Node.js, .NET, Python, Java, Scala, Go, PHP, C, C++, and Ruby - Aggregate SDK client metrics - Import and export tools - REST API - Command line tools - Web-based Data Import UI - Actionable alerts - Auto update of statistics - Add/remove services on non-KV existing nodes without adding new nodes - Non-root install and upgrade - OpenShift integration - Couchbase Capella - Not applicable - Not applicable - Enterprise Edition - Community Edition - High Availability and Disaster Recovery - Intra-cluster replication - Automatic failover - Online rebalancing - High-performance enterprise backup and restore tools - Bucket-level backup and restore - Downloadable buckets - Collection-level backup and restore - Backup to AWS S3 - Automatic failover of disk failures, multi-nodes, and server group - Auto-failover for non-responsive disks - Auto-failover for ephemeral buckets w/ no replica - Rack/availability zone awareness - Couchbase Capella - Enterprise Edition - Not applicable - Community Edition - Not applicable - Cross Data Center Replication - Cross data center replication (XDCR) - XDCR filtering and throttling - XDCR advanced filtering - XDCR timestamp-based conflict resolution - XDCR - prioritization of replication - XDCR - conflict logging - XDCR - interoperability w/ Mobile - Couchbase Capella - Enterprise Edition - Community Edition - Security - Native encryption - Single sign-on - Authentication - Authorization - Role-based access control (RBAC) - LDAP integration - LDAP group support - LDAP support for client certificates - Encrypted at rest, Data Service - Encrypted network access - Encrypted private keys - Multiple certificate authorities within cluster - x.509 CA certificates for TLS - x.509 CA certificates for data service authentication - Integration to key management systems for TLS private key passphrase - Auditing - Log redactions - Client-side field-level encryption - Node-to-node encryption - Cipher management - Couchbase Capella - Not applicable - - - Not applicable - Enterprise Edition - Community Edition - Performance and Scaling - Automated scaling - Homogeneous scaling (by node) - Multi-dimensional scaling (MDS) (by service) - Fast failover - Multi-node, concurrent failover protection - Cluster hibernation - End-to-end compression (client to server and XDCR) - ARM processor support - Couchbase Capella - Not Applicable - Enterprise Edition - Community Edition ###### CUSTOMERS ## What customers are saying - “We said, 'Wouldn't it be nice to have a data store where we could go from the Java object to the database and back without lots of overhead?' Well, this is it.” **Thomas Vidnovic,**Solutions Architect, Marriott**30**million documents - “Couchbase is a highly scalable, distributed data store that plays a critical role in LinkedIn’s caching systems.” **Michael Kehoe,**Senior Staff Site Reliability Engineer, LinkedIn**10+**million queries per second**<4**ms avg latency for 2.5+ billion items - “What we value a lot is that Couchbase was able to embrace with us our vision to the cloud, and the fact that we wanted to operate data stores directly on PaaS.” **Vincent Bersin,**Unit Manager, NoSQL Solutions, Amadeus**20**million operations per second**<2.5**response times ## Couchbase Product Feature Comparison FAQ Get quick answers to questions about how Couchbase products compare. - ###### What's the difference between editions? Capella is a fully managed DBaaS. Enterprise Edition is self-managed with full features. Community Edition is free and open source but lacks enterprise security, XDCR, eventing, and support. - ###### Is Community Edition free to use in production? Yes, Community Edition is free with no license cost, but it ships without SLA-backed support, automated backup, cross data center replication, or advanced security features. - ###### Which edition supports vector search for AI? Capella and Enterprise Edition both support vector, hybrid, and full-text search. Community Edition only includes basic full-text search and lacks vector indexing capabilities. - ###### Can I upgrade from Community to Enterprise? Yes. Couchbase supports migration from the Community Edition to the Enterprise Edition. Upgrading unlocks XDCR, eventing, advanced security, automated backup, and enterprise support SLAs. - ###### Does Capella include all Enterprise features? Capella includes all core Enterprise capabilities plus AI Data Plane, automated scaling, and cloud-native backups. Some self-managed-specific features, like non-root install, don’t apply. --- # Eventing Service: Features and Capabilities Source: https://www.couchbase.com/products/eventing/ Last modified: 2026-04-30T09:12:28+00:00 DOCUMENTATION # Eventing Service From Couchbase Couchbase Eventing is a highly available, performant, and scalable service that enables user-defined business logic to be triggered in real time on the server when application interactions create changes in data. Eventing makes it easy to develop, deploy, and maintain data-driven business logic via a centralized platform. Natively integrated with Couchbase, it requires no third-party solutions to license or new DataOps skills to manage. --- # Full-Text Search Database for Apps | FTS Index Service Platform Source: https://www.couchbase.com/products/full-text-search/ Last modified: 2026-04-30T09:06:26+00:00 ## What is full-text search (FTS)? Full-text search makes it easy to find content in your database by using criteria such as text, latitude, longitude, and vector embeddings to scan indexes for matches. FTS indexes are pre-organized to make retrieval faster than traditional field-based database scanning. Integrated JSON full-text search on Couchbase provides powerful search tooling with multi-language and SQL++ query support. Find documents by using simple or complex terms and phrases, geolocation, and vector search, without the need for any third-party software. --- # Couchbase Lite: Embedded NoSQL Database for Offline-First Apps Source: https://www.couchbase.com/products/lite/ Last modified: 2026-06-30T14:39:46+00:00 Sample app # Couchbase Lite Couchbase Lite embeds a database in your app, syncs data from cloud-to-edge and peer-to-peer, and keeps working when the network doesn’t. Support for iOS, Android, Java, .NET, JavaScript, C/C++ and cross-platform frameworks - with SQL, full-text search, and on-device vector search built in. Pair it with Sync Gateway/App Services for cloud-to-edge sync. --- # Database Platform for Mobile Applications With Auto Sync Source: https://www.couchbase.com/products/mobile/ Last modified: 2026-06-30T15:02:20+00:00 ### What is Couchbase Mobile? Couchbase Mobile is an embedded NoSQL database for network resilient iOS, Android, IoT, and web apps with built-in cloud-to-edge sync and on-device vector search. ### Does Couchbase Mobile work offline? Couchbase Mobile is built for apps that must be fast and reliable. It stores data locally on the device so users stay productive without an internet connection, then syncs when connectivity returns. ### What platforms does Couchbase Mobile support? Couchbase Mobile supports iOS, Android, Windows, .NET, Java, and web via JavaScript, plus embedded edge devices through a C++ and C-API. It also supports cross-platform frameworks like React Native. --- # SQL++ Database Language: ANSI SQL for JSON Source: https://www.couchbase.com/products/n1ql/ Last modified: 2026-04-30T08:47:41+00:00 DOCS # SQL++: ANSI SQL for JSON SQL++ is Couchbase’s powerful database language that combines structured query language (SQL) with the flexibility of JavaScript Object Notation (JSON). Meeting the American National Standards Institute (ANSI) syntax guidelines and designed for developers, SQL++ allows you to leverage existing skills to build modern applications with speed, consistency, and efficiency --- # Autonomous Operator: DevOps Automation for Kubernetes & More Source: https://www.couchbase.com/products/operator/ Last modified: 2026-06-30T14:37:12+00:00 Video Self-managed Couchbase for Kubernetes # Autonomous Operator Autonomous Operator makes it easy to manage and scale Couchbase, a stateful database that stores and tracks your important data across cloud environments. With seamless integration with popular platforms like Kubernetes, it enables businesses to run reliable, high-performance applications alongside modern microservices, supporting hybrid and multi-cloud strategies without vendor lock-in. --- # One Governed Data Layer for Production AI Agents - AI Data Plane Source: https://www.couchbase.com/products/releases/ Last modified: 2026-06-30T15:04:38+00:00 ### Give agents memory Maintain short- and long-term memory across sessions, restarts, users, and frameworks. 82.3% Agent Memory score on the LoCoMo benchmark 94% 94% recall on LongMemEval-M single session 69.4% Overall score on LongMemEval-S Advancements in key Couchbase Operational Data Platform features. Choose AWS Bedrock or OpenAI, governed by org-level provider policies. Now an enterprise-supported component for discoverable, governed agent tooling. Rolling upgrades, faster large-dataset resync, and system metadata isolation. Client-level access control, CORS, credential rotation, and Windows/ARM support. Cross data center replication over private connectivity, off the public internet. Enterprise-supported, self-managed MCP server for standardized Model Context Protocol integration. Production agents need memory, tools, prompts, operational data, traces, and context, but those assets often live in scattered systems. Couchbase keeps them in one governed data layer, giving teams visibility into what an agent used, which prompt version was involved, and what data shaped the response. Keep prompts, tools, traces, memory, and operational data together and query them with SQL++ to see exactly what an agent used and why it responded. The Couchbase MCP Server gives agents standardized access to operational data, documents, and cache without a separate integration tier. Agent Catalog makes prompts, tools, and end-to-end traces discoverable so teams can inspect, reuse, and govern agent behavior across applications. Agent Memory works across LangGraph, CrewAI, and LlamaIndex, so teams can switch or combine frameworks without rebuilding memory infrastructure. In this webcast and demo, we’ll show you how to ensure your AI agent doesn’t join the graveyard of pilots that never ship. You’ll learn how: - AI Data Plane unifies memory, governed data access, and agent observability into one layer - Agent Memory gives agents persistent recall, making them smarter and more personalized over time - Agent Catalog, with agentic app tracing, makes every prompt, tool call, and decision inspectable and auditable Learn why enterprise AI initiatives routinely stall in the pilot phase due to foundational data challenges. - Discover how the Couchbase AI Data Plane collapses scattered data services into a single governed layer running natively across cloud, self-managed, and edge architectures. - Deep dive into the three pillars making production-grade agents possible: framework-agnostic Agent Memory, standards-based MCP Server data connectivity, and an auditable Agent Catalog. - Find out how integrating semantic caching at the data layer slashes response times and controls costs. Try Agent Memory and see how AI agents can retain context across sessions, users, and frameworks, while reducing custom memory, retrieval, and access-control logic. --- # Enterprise Data Security: Authentication, Encryption, Auditing Source: https://www.couchbase.com/products/security/ Last modified: 2026-04-30T08:35:17+00:00 Documentation Product Page Couchbase Server has a full suite of data security features for authentication, authorization, encryption, enterprise key management, and auditing to meet the needs of your most critical and sensitive database workloads. information is safe Use centrally managed controls to keep data access aligned with your shifting business priorities. Ensure your database meets your security needs as it scales. Integrate Couchbase’s logging data and monitoring capabilities into your daily tools. Couchbase Capella DBaaS delivers SOC 2, HIPAA, GDPR, PCI DSS, and ISO 27001. Couchbase Server’s secure authentication protocols and role-based access controls (RBAC) let you align groups of users in a centrally managed system to control access and permissions. Enforce strong password policies and manage local accounts to further harden access. Administrators can use granular controls to minimize risk exposure. Multiple levels of high-strength encryption protect data at rest natively, in transit, and in process to meet a wide range of regulatory requirements. Integrate with your enterprise key management infrastructure via KMIP to centralize control over encryption keys. Our key security features are available across the entire Couchbase Server set of services to support key-value, transaction, and analytic use cases both on premises and when using our Capella DBaaS. Collect and integrate security-related information from Couchbase Server into a corporate SIEM system using a secure REST API and standard JSON data formats. Monitor key system configuration changes and respond to incidents or perform forensic analysis. --- # Enterprise Database Server | High-Performance, Flexible NoSQL Source: https://www.couchbase.com/products/server/ Last modified: 2026-06-30T14:30:34+00:00 ## What makes our enterprise database server different? Built as an original multipurpose distributed NoSQL database, Couchbase Server delivers unparalleled performance at any scale, run on premises or in the cloud. It fuses the strengths of relational databases such as SQL and ACID transactions with JSON’s versatility, with a foundation that is extremely fast and scalable. Developers get the benefits of flexible JSON documents and object models, with SQL and key-value access, and hybrid vector and text search all built in - to build features faster. Our AI-powered coding assistant will help you get started, even querying your data with natural language. For architects and application owners, our sophisticated in-memory, active-active architecture delivers low latency around the globe - for high speed, no downtime, and happy users. --- # Sync Gateway: Cloud-to-Edge-to-Device Sync for Mobile Apps Source: https://www.couchbase.com/products/sync-gateway/ Last modified: 2026-06-30T14:44:03+00:00 Sample app # Sync Gateway **Sync without building sync.** Sync Gateway is the self-hosted sync engine that connects Couchbase Server to Couchbase Lite, with Couchbase Edge Server and additional Sync Gateway tiers in between. Architect any topology - star, hierarchical, or hybrid - with bidirectional replication, conflict resolution, precise routing, and granular access control built in. No custom replication code, no homegrown sync stack to build and maintain. access. --- # Vector Search Database - Scalable, Enterprise-Level Solutions Source: https://www.couchbase.com/products/vector-search/ Last modified: 2026-06-30T14:35:37+00:00 ## What is vector search used for in a database? Vector search delivers nearest-neighbor results without needing a direct match. Text, images, audio, and video are converted to mathematical representations and used for semantic searching or overcoming GenAI challenges using the retrieval-augmented generation (RAG) framework. At the enterprise level, vector search is commonly used for powerful, natural language chatbots, sophisticated search that delivers a hybrid search combining range, text, and vector predicates, and data analysis spotting similarity and anomalies. In Couchbase 8.0, we introduce Hyperscale and Composite vector indexes to improve RAG accuracy at scale without hurting performance or cost of operations. --- # One Governed Data Layer for Production AI Agents - AI Data Plane Source: https://www.couchbase.com/products/whats-new/ Last modified: 2025-09-03T12:13:58+00:00 ### Give agents memory Maintain short- and long-term memory across sessions, restarts, users, and frameworks. 82.3% Agent Memory score on the LoCoMo benchmark 94% 94% recall on LongMemEval-M single session 69.4% Overall score on LongMemEval-S Advancements in key Couchbase Operational Data Platform features. Choose AWS Bedrock or OpenAI, governed by org-level provider policies. Now an enterprise-supported component for discoverable, governed agent tooling. Rolling upgrades, faster large-dataset resync, and system metadata isolation. Client-level access control, CORS, credential rotation, and Windows/ARM support. Cross data center replication over private connectivity, off the public internet. Enterprise-supported, self-managed MCP server for standardized Model Context Protocol integration. Production agents need memory, tools, prompts, operational data, traces, and context, but those assets often live in scattered systems. Couchbase keeps them in one governed data layer, giving teams visibility into what an agent used, which prompt version was involved, and what data shaped the response. Keep prompts, tools, traces, memory, and operational data together and query them with SQL++ to see exactly what an agent used and why it responded. The Couchbase MCP Server gives agents standardized access to operational data, documents, and cache without a separate integration tier. Agent Catalog makes prompts, tools, and end-to-end traces discoverable so teams can inspect, reuse, and govern agent behavior across applications. Agent Memory works across LangGraph, CrewAI, and LlamaIndex, so teams can switch or combine frameworks without rebuilding memory infrastructure. In this webcast and demo, we’ll show you how to ensure your AI agent doesn’t join the graveyard of pilots that never ship. You’ll learn how: - AI Data Plane unifies memory, governed data access, and agent observability into one layer - Agent Memory gives agents persistent recall, making them smarter and more personalized over time - Agent Catalog, with agentic app tracing, makes every prompt, tool call, and decision inspectable and auditable Learn why enterprise AI initiatives routinely stall in the pilot phase due to foundational data challenges. - Discover how the Couchbase AI Data Plane collapses scattered data services into a single governed layer running natively across cloud, self-managed, and edge architectures. - Deep dive into the three pillars making production-grade agents possible: framework-agnostic Agent Memory, standards-based MCP Server data connectivity, and an auditable Agent Catalog. - Find out how integrating semantic caching at the data layer slashes response times and controls costs. Try Agent Memory and see how AI agents can retain context across sessions, users, and frameworks, while reducing custom memory, retrieval, and access-control logic. --- # Cross Data Center Replication (XDCR) Source: https://www.couchbase.com/products/xdcr/ Last modified: 2026-04-30T16:58:24+00:00 WHITEPAPER # Cross Data Center Replication Cross data center replication (XDCR) is an automatic feature of Couchbase that replicates data across data centers, cloud regions, and even cloud providers. XDCR is bidirectional and includes built-in conflict resolution. It’s designed to provide high availability and global distribution of data, enabling the best possible performance for enterprise applications. --- # Couchbase Professional Services | Migration, Scaling & Training Source: https://www.couchbase.com/professional-services/ Last modified: 2026-05-29T08:54:27+00:00 Guide Product Accelerate success with expert guidance for assessment and migration, plus hands-on support and training. We provide in-depth evaluations to ensure your Couchbase setup is optimized for success. Effortlessly transition to Couchbase Capella™ or Couchbase Server Enterprise with expert guidance. Partner with dedicated solution architects and operational residents for hands-on support. Upskill your team with expert-led training and certification programs. Migrate seamlessly to Couchbase from another NoSQL database or upgrade within the Couchbase ecosystem. Embed dedicated Couchbase experts on your team for hands-on support and best practices that will optimize your performance, stability, and operational efficiency. A Couchbase expert can guide your team on database architecture, query tuning, and scalability. They help design best-fit solutions and ensure long-term success. A dedicated Couchbase specialist provides ongoing database support, performance tuning, and operational guidance to maximize efficiency and prevent issues before they arise. Empower your team with expert-led Couchbase training. Whether you need structured coursework or customized private sessions, we help your team develop essential skills for database optimization, migration, and performance tuning. Need hands-on training for your team? We tailor private customized sessions to your organization’s unique use case to make sure your team is prepared to maximize Couchbase’s potential. Have questions about Couchbase Professional Services? Explore our frequently asked questions to understand how our team can support your success. We provide assessments, migration support, operational assistance, and training to help you maximize your Couchbase investment. Simply reach out through our **Contact Us** form, and we’ll tailor a training program for your needs. Our Migration Pack ensures a smooth transition to Couchbase Capella or Enterprise to minimize downtime and maximize efficiency. Yes! Our Accompany services provide Solution Architects and Operational Residents for ongoing guidance. Use this Contact Us form to connect with our team, or download our PDFs to learn more about our: All fields with an asterisk (*) must be filled out Build hands-on expertise with training tailored to developers and administrators. - CD212: Learn NoSQL data modeling, SQL++ querying, search, and analytics. - CS300: Master Couchbase Server operations, security, and cluster management. - Flexible formats: Available as instructor-led or self-paced online training. - Certification prep: Courses align with Couchbase certification objectives. --- # agentc · PyPI Source: https://pypi.org/project/agentc/ The front-facing package for the Couchbase Agent Catalog project. ## Project description # Couchbase Agent Catalog Couchbase Agent Catalog is a toolkit for managing the moving parts of an AI agent. Its tools and prompts become versioned, discoverable, monitored assets rather than strings buried in your application code. The Agent Catalog ships as a Python SDK and a companion command-line tool, and uses Couchbase Enterprise or a Couchbase Capella cluster as the backing store for your catalog and agent activity logs. It is framework-agnostic. Use it with LangChain, LangGraph, LlamaIndex, or your own orchestration layer, alongside whichever LLM you prefer. See the Agent Catalog documentation for more information. Couchbase Agent Catalog is distributed as a Python Package Index (PyPI) package. Enterprise support for Couchbase Agent Catalog is available by licensing Couchbase AI Data Plane, which also entitles use and enterprise support of Couchbase Agent Memory and Couchbase MCP Server. ## Production-ready agentic apps Most agents in the wild are assembled from loosely coupled parts: prompts live in one file, tool definitions in another, traces are logged inconsistently (if at all), and there's no clean way to answer "which prompt or tool produced this behavior?" That makes agents hard to debug, hard to evolve, and hard to trust in production. Agent Catalog addresses that by giving you one place to: **Define tools and prompts as managed records**. Author them locally, then index and publish them to your Couchbase cluster as versioned assets - no more hardcoded prompt strings that can't be tracked or rolled back.**Discover tools semantically at runtime**. Instead of wiring every tool into every agent by hand, search a catalog of hundreds of tools by the question you're trying to answer. This keeps an agent's working tool set small, which improves accuracy and lowers token cost.**Observe what your agent actually did**. Capture structured traces of agent activity so you can analyze prompt and tool usage, debug decisions, and measure quality over time - queryable with SQL++ directly in Couchbase.**Version everything with your code**. Catalog records are tied to your Git state, so a published catalog corresponds to a known commit. ## What's in the box - Tool & prompt catalog: Versioned, centralized, reusable definitions shared across teams. - Semantic Discovery: Search large tool/prompt sets by intent rather than wiring them manually. - Agent Tracing: Structured, queryable activity logs for debugging and evaluation. - Framework Integrations: First-class helpers for LangChain, LangGraph, and LlamaIndex. - CLI + SDK: Manage the catalog from the command line; consume it from Python. To develop with LangChain, LangGraph or LlamaIndex, please refer to the instructions here. ## Project details ## Release history Release notifications | RSS feed ## Download files Download the file for your platform. If you're not sure which to choose, learn more about installing packages. ### Source Distributions ### Built Distribution Filter files by name, interpreter, ABI, and platform. If you're not sure about the file name format, learn more about wheel file names. Copy a direct link to the current filters ## File details Details for the file `agentc-1.1.2-py3-none-any.whl` . ### File metadata - Download URL: agentc-1.1.2-py3-none-any.whl - Upload date: - Size: 4.0 kB - Tags: Python 3 - Uploaded using Trusted Publishing? No - Uploaded via: twine/6.2.0 CPython/3.12.3 ### File hashes | Algorithm | Hash digest | | |---|---|---| | SHA256 | `33867113b02b244680bee8006b30eae529e419945a9debee377989b68729dd17` | | | MD5 | `8dddc3a8d87387cc9f4d4c83e90fefd3` | | | BLAKE2b-256 | `1b70c17cd23d6b01654b255138a2ccee14d87eedcf87e2606d03106f710093a2` | --- # couchbase-mcp-server · PyPI Source: https://pypi.org/project/couchbase-mcp-server/ Couchbase MCP Server - Enable AI agents to connect to and interact with Couchbase clusters. ## Project description # Couchbase MCP Server Couchbase MCP Server is a self-hosted MCP Server that allows AI agents to connect to and interact with data in Couchbase clusters, whether hosted on Capella or self-managed. It provides tools across categories including Cluster Health, Data Schema, Key-Value, Query, and Performance - with safety controls via read-only mode and fine-grained tool disabling. It supports both STDIO and Streamable HTTP transports. Couchbase MCP server is distributed as a Python Package Index (PyPI) package and via Docker. Enterprise support for Couchbase MCP Server is available by licensing Couchbase AI Data Plane, which also entitles use and enterprise support of Couchbase Agent Memory and Couchbase Agent Catalog. For full documentation, visit mcp-server.couchbase.com. ## Features/Tools ### Cluster setup & health tools | Tool Name | Description | |---|---| `get_server_configuration_status` | Get the server status and configuration without connecting to the cluster - reports read-only mode, disabled/confirmation-required tools, OAuth settings, and the resolved logging configuration | `test_cluster_connection` | Check the cluster credentials by connecting to the cluster | `get_cluster_health_and_services` | Get cluster health status and list of all running services | ### Data model & schema discovery tools | Tool Name | Description | |---|---| `get_buckets_in_cluster` | Get a list of all the buckets in the cluster | `get_scopes_in_bucket` | Get a list of all the scopes in the specified bucket | `get_collections_in_scope` | Get a list of all the collections in a specified scope and bucket. Note that this tool requires the cluster to have Query service. | `get_scopes_and_collections_in_bucket` | Get a list of all the scopes and collections in the specified bucket | `get_schema_for_collection` | Get the structure for a collection | ### Document KV operations tools | Tool Name | Description | |---|---| `get_document_by_id` | Get a document by ID from a specified scope and collection | `upsert_document_by_id` | Upsert a document by ID to a specified scope and collection. Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | `insert_document_by_id` | Insert a new document by ID (fails if document exists). Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | `replace_document_by_id` | Replace an existing document by ID (fails if document doesn't exist). Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | `delete_document_by_id` | Delete a document by ID from a specified scope and collection. Disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | ### Query and indexing tools | Tool Name | Description | |---|---| `list_indexes` | List all indexes in the cluster with their definitions, with optional filtering by bucket, scope, collection and index name. Set `return_raw_index_stats=true` to return the unprocessed index information. | `get_index_advisor_recommendations` | Get index recommendations from Couchbase Index Advisor for a given SQL++ query to optimize query performance | `run_sql_plus_plus_query` | Run a SQL++ query on a specified scope. Queries are automatically scoped to the specified bucket and scope, so use collection names directly (e.g., `SELECT * FROM users` instead of `SELECT * FROM bucket.scope.users` ).`CB_MCP_READ_ONLY_MODE` is `true` by default, which means that all write operations (KV and Query) are disabled. When enabled, KV write tools are not loaded and SQL++ queries that modify data are blocked. | `explain_sql_plus_plus_query` | Generate and evaluate an EXPLAIN plan for a SQL++ query. Returns query metadata, extracted plan, and plan evaluation findings. | ### Query performance analysis tools | Tool Name | Description | |---|---| `get_longest_running_queries` | Get longest running queries by average service time | `get_most_frequent_queries` | Get most frequently executed queries | `get_queries_with_largest_response_sizes` | Get queries with the largest response sizes | `get_queries_with_large_result_count` | Get queries with the largest result counts | `get_queries_using_primary_index` | Get queries that use a primary index (potential performance concern) | `get_queries_not_using_covering_index` | Get queries that don't use a covering index | `get_queries_not_selective` | Get queries that are not selective (index scans return many more documents than final result) | ## Prerequisites - Python 3.10 or higher. - A running Couchbase cluster. The easiest way to get started is to use Capella free tier, which is fully managed version of Couchbase server. You can follow instructions to import one of the sample datasets or import your own. - uv installed to run the server. - An MCP client such as Claude Desktop installed to connect the server to Claude. The instructions are provided for Claude Desktop and Cursor. Other MCP clients could be used as well. ## Configuration The MCP server can be run either from the prebuilt PyPI package or the source using uv. ### Running from PyPI We publish a pre built PyPI package for the MCP server. #### Server Configuration using Pre built Package for MCP Clients #### Basic Authentication ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } } ``` or #### mTLS ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_CLIENT_CERT_PATH": "/path/to/client-certificate.pem", "CB_CLIENT_KEY_PATH": "/path/to/client.key" } } } } ``` Note: If you have other MCP servers in use in the client, you can add it to the existing `mcpServers` object. ### Running from Source The MCP server can be run from the source using this repository. #### Clone the repository to your local machine ``` git clone https://github.com/couchbase/mcp-server-couchbase.git ``` #### Server Configuration using Source for MCP Clients This is the common configuration for the MCP clients such as Claude Desktop, Cursor, Windsurf Editor. ``` { "mcpServers": { "couchbase": { "command": "uv", "args": [ "--directory", "path/to/cloned/repo/mcp-server-couchbase/", "run", "src/mcp_server.py" ], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } } ``` Note: `path/to/cloned/repo/mcp-server-couchbase/` should be the path to the cloned repository on your local machine. Don't forget the trailing slash at the end! Note: If you have other MCP servers in use in the client, you can add it to the existing `mcpServers` object. ### Additional Configuration for MCP Server The server can be configured using environment variables or command line arguments: | Environment Variable | CLI Argument | Description | Default | |---|---|---|---| `CB_CONNECTION_STRING` | `--connection-string` | Connection string to the Couchbase cluster | Required | `CB_USERNAME` | `--username` | Username with access to required buckets for basic authentication | Required (or Client Certificate and Key needed for mTLS) | `CB_PASSWORD` | `--password` | Password for basic authentication | Required (or Client Certificate and Key needed for mTLS) | `CB_CLIENT_CERT_PATH` | `--client-cert-path` | Path to the client certificate file for mTLS authentication | Required if using mTLS (or Username and Password required) | `CB_CLIENT_KEY_PATH` | `--client-key-path` | Path to the client key file for mTLS authentication | Required if using mTLS (or Username and Password required) | `CB_CA_CERT_PATH` | `--ca-cert-path` | Path to server root certificate for TLS if server is configured with a self-signed/untrusted certificate. This will not be required if you are connecting to Capella | | `CB_MCP_READ_ONLY_MODE` | `--read-only-mode` | Prevent all data modifications (KV and Query). When enabled, KV write tools are not loaded. | `true` | `CB_MCP_TRANSPORT` | `--transport` | Transport mode: `stdio` , `http` , `sse` | `stdio` | `CB_MCP_HOST` | `--host` | Host for HTTP/SSE transport modes | `127.0.0.1` | `CB_MCP_PORT` | `--port` | Port for HTTP/SSE transport modes | `8000` | `CB_MCP_DISABLED_TOOLS` | `--disabled-tools` | Tools to disable (see Disabling Tools) | None | `CB_MCP_CONFIRMATION_REQUIRED_TOOLS` | `--confirmation-required-tools` | Tools that require explicit user confirmation before execution via MCP elicitation (see Elicitation/Confirmation Required Tools) | None | `CB_MCP_LOG_LEVEL` | `--log-level` | Logging level for the MCP server: `off` , `debug` , `info` , `warning` , `error` (see Logging) | `info` | `CB_MCP_LOG_SINKS` | `--log-sinks` | Comma-separated log destinations: `stderr` , `file` , or both (see Logging) | `stderr` | `CB_MCP_LOG_FILE` | `--log-file` | Base path for per-level log files (only used when the `file` sink is enabled) | `mcp_server.log` | `CB_MCP_LOG_MAX_BYTES` | `--log-max-bytes` | Maximum size in bytes per log file before it rotates | `1048576` (1 MB) | `CB_MCP_OAUTH_JWT_JWKS_URI` | `--oauth-jwks-uri` | JWKS endpoint of the identity provider used to verify bearer JWTs. Enables OAuth when set with the issuer and audience (see OAuth 2.1 Authorization) | None | `CB_MCP_OAUTH_JWT_ISSUER` | `--oauth-issuer` | Expected JWT `iss` claim. Required to enable OAuth | None | `CB_MCP_OAUTH_JWT_AUDIENCE` | `--oauth-audience` | Expected JWT `aud` claim. Required to enable OAuth | None | `CB_MCP_OAUTH_JWT_ALGORITHM` | `--oauth-algorithm` | JWT signing algorithm: one of `RS256/384/512` , `ES256/384/512` , `PS256/384/512` | `RS256` | `CB_MCP_OAUTH_MCP_BASE_URL` | `--oauth-mcp-base-url` | Public base URL of this server. When set, publishes RFC 9728 Protected Resource Metadata so PRM-aware clients can discover the IdP | None | #### Read-Only Mode Configuration ** CB_MCP_READ_ONLY_MODE** is the single switch controlling write operations: - When `true` (default): All write operations (KV and Query) are disabled. KV write tools (upsert, insert, replace, delete) are**not loaded**and will not be available to the LLM, and SQL++ queries that modify data or structure are blocked. - When `false` : KV write tools are loaded and SQL++ data/structure modification queries are allowed. This is the recommended safe default to prevent inadvertent data modifications by LLMs. Note: For authentication, you need either the Username and Password or the Client Certificate and key paths. Optionally, you can specify the CA root certificate path that will be used to validate the server certificates. If both the Client Certificate & key path and the username and password are specified, the client certificates will be used for authentication. ### Disabling Tools You can disable specific tools to prevent them from being loaded and exposed to the MCP client. Disabled tools will not appear in the tool discovery and cannot be invoked by the LLM. #### Supported Formats **Comma-separated list:** ``` # Environment variable CB_MCP_DISABLED_TOOLS="upsert_document_by_id, delete_document_by_id" # Command line uvx couchbase-mcp-server --disabled-tools upsert_document_by_id, delete_document_by_id ``` **File path (one tool name per line):** ``` # Environment variable CB_MCP_DISABLED_TOOLS=disabled_tools.txt # Command line uvx couchbase-mcp-server --disabled-tools disabled_tools.txt ``` **File format (e.g., disabled_tools.txt):** ``` # Write operations upsert_document_by_id delete_document_by_id # Index advisor get_index_advisor_recommendations ``` Lines starting with `#` are treated as comments and ignored. #### MCP Client Configuration Examples **Using comma-separated list:** ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password", "CB_MCP_DISABLED_TOOLS": "upsert_document_by_id,delete_document_by_id" } } } } ``` **Using file path (recommended for many tools):** ``` { "mcpServers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password", "CB_MCP_DISABLED_TOOLS": "/path/to/disabled_tools.txt" } } } } ``` #### Important Security Note Warning:Disabling tools alone does not guarantee that certain operations cannot be performed. The underlying database user's RBAC (Role-Based Access Control) permissions are the authoritative security control.For example, even if you disable `upsert_document_by_id` and`delete_document_by_id` , data modifications can still occur via the`run_sql_plus_plus_query` tool using SQL++ DML statements (INSERT, UPDATE, DELETE, MERGE) unless: - The `CB_MCP_READ_ONLY_MODE` is set to`true` (default), OR- The database user lacks the necessary RBAC permissions for data modification Best Practice:Always configure appropriate RBAC permissions on your Couchbase user credentials as the primary security measure. Use tool disabling as an additional layer to guide LLM behavior and reduce the attack surface, not as the sole security control. ### Elicitation/Confirmation for Tool Calls You can require explicit user confirmation for specific tools before execution (when the MCP client supports elicitation). `CB_MCP_CONFIRMATION_REQUIRED_TOOLS` / `--confirmation-required-tools` supports these formats: - Comma-separated list - File path (one tool name per line, `#` comments supported) **Example:** ``` # Environment variable CB_MCP_CONFIRMATION_REQUIRED_TOOLS="delete_document_by_id,replace_document_by_id" # Command line uvx couchbase-mcp-server --confirmation-required-tools delete_document_by_id,replace_document_by_id ``` When a listed tool is invoked: - If the client supports elicitation, the user is prompted to confirm. - If the client does not support elicitation, the tool executes without confirmation for backward compatibility. You can also check the version of the server using: ``` uvx couchbase-mcp-server --version ``` ### Logging The MCP server logs to `stderr` by default. Logging is configured with the `CB_MCP_LOG_*` variables listed in Additional Configuration: - how much is logged:`CB_MCP_LOG_LEVEL` `info` (the default) logs lifecycle events and tool invocations,`debug` adds verbose internal detail, and`off` disables all logging.- where logs go:`CB_MCP_LOG_SINKS` `stderr` (the default), per-level rotating files (`file` ), or both. With`file` , one file is written per level (for example`mcp_server.info.log` and`mcp_server.error.log` ) at the path set by`CB_MCP_LOG_FILE` . ``` # Enable debug logging to both stderr and rotating per-level files uvx couchbase-mcp-server --log-level=debug --log-sinks=stderr,file ``` For more details, see the documentation. ### Client Specific Configuration ## Claude Desktop Follow the steps below to use Couchbase MCP server with Claude Desktop MCP client - The MCP server can now be added to Claude Desktop by editing the configuration file. More detailed instructions can be found on the MCP quickstart guide. - On Mac, the configuration file is located at `~/Library/Application Support/Claude/claude_desktop_config.json` - On Windows, the configuration file is located at `%APPDATA%\Claude\claude_desktop_config.json` Open the configuration file and add the configuration to the `mcpServers` section. - On Mac, the configuration file is located at - Restart Claude Desktop to apply the changes. - You can now use the server in Claude Desktop to run queries on the Couchbase cluster using natural language and perform CRUD operations on documents. Logs The logs for Claude Desktop can be found in the following locations: - MacOS: ~/Library/Logs/Claude - Windows: %APPDATA%\Claude\Logs The logs can be used to diagnose connection issues or other problems with your MCP server configuration. For more details, refer to the official documentation. ## Cursor Follow steps below to use Couchbase MCP server with Cursor: - Install Cursor on your machine. - In Cursor, go to Cursor > Cursor Settings > Tools & Integrations > MCP Tools. Also, checkout the docs on setting up MCP server configuration from Cursor. - Specify the same configuration manually, or use the one-click Install in Cursor link. You may need to add the server configuration under a parent key of `mcpServers` .Note: The install link uses placeholder values from the configuration examples above. Update the connection string and credentials after installation. - Save the configuration. - You will see couchbase as an added server in MCP servers list. Refresh to see if server is enabled. - You can now use the Couchbase MCP server in Cursor to query your Couchbase cluster using natural language and perform CRUD operations on documents. For more details about MCP integration with Cursor, refer to the official Cursor MCP documentation. Logs In the bottom panel of Cursor, click on "Output" and select "Cursor MCP" from the dropdown menu to view server logs. This can help diagnose connection issues or other problems with your MCP server configuration. ## Windsurf Editor Follow the steps below to use the Couchbase MCP server with Windsurf Editor. - Install Windsurf Editor on your machine. - In Windsurf Editor, navigate to Command Palette > Windsurf MCP Configuration Panel or Windsurf - Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers. For more details on the configuration, please refer to the official documentation. - Click on Add Server and then Add custom server. On the configuration that opens in the editor, add the Couchbase MCP Server configuration from above. - Save the configuration. - You will see couchbase as an added server in MCP Servers list under Advanced Settings. Refresh to see if server is enabled. - You can now use the Couchbase MCP server in Windsurf Editor to query your Couchbase cluster using natural language and perform CRUD operations on documents. For more details about MCP integration with Windsurf Editor, refer to the official Windsurf MCP documentation. ## VS Code Follow the steps below to use the Couchbase MCP server with VS Code. - Install VS Code - Following are a couple of ways to configure the MCP server. - For a Workspace server configuration - Create a new file in workspace as .vscode/mcp.json. - Add the configuration and save the file. - For the Global server configuration: - Run **MCP: Open User Configuration**in the Command Palette (`Ctrl+Shift+P` or`Cmd+Shift+P` ) - Add the configuration and save the file. - Run - **Note**: VS Code uses`servers` as the top-level JSON property in mcp.json files to define MCP (Model Context Protocol) servers, while Cursor uses`mcpServers` for the equivalent configuration. Check the VS Code client configurations for any further changes or details. An example VS Code configuration is provided below.{ "servers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } } - - Once you save the file, the server starts and a small action list appears with `Running|Stop|n Tools|More..` . - Click on the options from the option list to `Start` /`Stop` /manage the server. - You can now use the Couchbase MCP server in VS Code to query your Couchbase cluster using natural language and perform CRUD operations on documents. Logs: In the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` ), - run **MCP: List Servers**command and pick the couchbase server - choose “Show Output” to see its logs in the Output tab. ## JetBrains IDEs Follow the steps below to use the Couchbase MCP server with JetBrains IDEs - Install any one of the JetBrains IDEs - Install any one of the JetBrains plugins - AI Assistant or Junie - Navigate to **Settings > Tools > AI Assistant or Junie > MCP Server** - Click "+" to add the Couchbase MCP configuration and click Save. - You will see the Couchbase MCP server added to the list of servers. Once you click Apply, the Couchbase MCP server starts and on-hover of status, it shows all the tools available. - You can now use the Couchbase MCP server in JetBrains IDEs to query your Couchbase cluster using natural language and perform CRUD operations on documents. Logs: The log file can be explored at **Help > Show Log in Finder (Explorer) > mcp > couchbase** ## Streamable HTTP Transport Mode The MCP Server can be run in Streamable HTTP transport mode which allows multiple clients to connect to the same server instance via HTTP. Check if your MCP client supports streamable http transport before attempting to connect to MCP server in this mode. Note: OAuth 2.1 authorization is supported on this transport. See OAuth 2.1 Authorization. Without OAuth configured, the HTTP endpoint is unauthenticated. ### Usage By default, the MCP server will run on port 8000 but this can be configured using the `--port` or `CB_MCP_PORT` environment variable. ``` uvx couchbase-mcp-server \ --connection-string='' \ --username='' \ --password='' \ --read-only-mode=true \ --transport=http ``` The server will be available on http://localhost:8000/mcp. This can be used in MCP clients supporting streamable http transport mode such as Cursor. ### MCP Client Configuration ``` { "mcpServers": { "couchbase-http": { "url": "http://localhost:8000/mcp" } } } ``` ## SSE Transport Mode There is an option to run the MCP server in Server-Sent Events (SSE) transport mode. Note: SSE mode has been deprecated by MCP. We have support for Streamable HTTP. ### SSE: Usage By default, the MCP server will run on port 8000 but this can be configured using the `--port` or `CB_MCP_PORT` environment variable. ``` uvx couchbase-mcp-server \ --connection-string='' \ --username='' \ --password='' \ --read-only-mode=true \ --transport=sse ``` The server will be available on http://localhost:8000/sse. This can be used in MCP clients supporting SSE transport mode such as Cursor. ### SSE: MCP Client Configuration ``` { "mcpServers": { "couchbase-sse": { "url": "http://localhost:8000/sse" } } } ``` ## OAuth 2.1 Authorization When running with `--transport=http` , the MCP server can act as an **OAuth 2.1 resource server**: it validates incoming bearer JWTs against your identity provider's JWKS. It is provider-agnostic (any OAuth 2.1 / OIDC provider that publishes a JWKS - Auth0, Okta, Keycloak, AWS Cognito, Microsoft Entra, etc.) and does **not** issue tokens or manage users. OAuth settings are ignored on `stdio` . OAuth is configured with the `CB_MCP_OAUTH_*` variables listed in Additional Configuration: - OAuth activates only when all three of `CB_MCP_OAUTH_JWT_JWKS_URI` ,`CB_MCP_OAUTH_JWT_ISSUER` , and`CB_MCP_OAUTH_JWT_AUDIENCE` are set; setting only some of them fails at startup. - Setting `CB_MCP_OAUTH_MCP_BASE_URL` additionally publishes RFC 9728 Protected Resource Metadata so PRM-aware clients can discover the authorization server. - Access is gated by two scopes read from the token's `scope` /`scp` claim:`couchbase-mcp:read` (read tools, including SQL++) and`couchbase-mcp:write` (KV mutation tools). Full access requires both. ``` uvx couchbase-mcp-server \ --connection-string='' \ --username='' \ --password='' \ --transport=http \ --oauth-jwks-uri='https://auth.example.com/.well-known/jwks.json' \ --oauth-issuer='https://auth.example.com/' \ --oauth-audience='couchbase-mcp-server' \ --oauth-mcp-base-url='' ``` For full details, see the documentation. ## Docker Image The MCP server can also be built and run as a Docker container. Prebuilt images can be found on DockerHub or pulled via `docker pull docker.io/couchbase/mcp-server:latest` . Alternatively, we are part of the Docker MCP Catalog. ### Building Image ``` docker build -t mcp/couchbase-src . ``` ## Building with Arguments If you want to build with the build arguments for commit hash and the build time, you can build using:``` docker build --build-arg GIT_COMMIT_HASH=$(git rev-parse HEAD) \ --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ -t mcp/couchbase-src . ``` **Alternatively, use the provided build script:** ``` # Build with default image name (mcp/couchbase-src) ./build.sh # Build with custom image name ./build.sh my-custom/image-name ``` This script automatically: - Accepts an optional image name parameter (defaults to `mcp/couchbase-src` ) - Generates git commit hash and build timestamp - Creates multiple useful tags ( `latest` ,`` ) - Shows build information and results - Uses the same arguments as CI/CD builds **Verify image labels:** ``` # View git commit hash in image docker inspect --format='{{index .Config.Labels "org.opencontainers.image.revision"}}' mcp/couchbase-src:latest # View all metadata labels docker inspect --format='{{json .Config.Labels}}' mcp/couchbase-src:latest ``` ### Running The MCP server can be run with the environment variables being used to configure the Couchbase settings. The environment variables are the same as described in the Additional Configuration section. #### Independent Docker Container ``` docker run --rm -i \ -e CB_CONNECTION_STRING='' \ -e CB_USERNAME='' \ -e CB_PASSWORD='' \ -e CB_MCP_TRANSPORT='' \ -e CB_MCP_READ_ONLY_MODE='' \ -e CB_MCP_CONFIRMATION_REQUIRED_TOOLS='delete_document_by_id' \ -e CB_MCP_PORT=9001 \ -e CB_MCP_HOST=0.0.0.0 \ -p 9001:9001 \ mcp/couchbase-src ``` The `CB_MCP_PORT` and `CB_MCP_HOST` environment variables are only applicable in the case of HTTP transport modes like http and sse. #### Docker: MCP Client Configuration The Docker image can be used in `stdio` transport mode with the following configuration. ``` { "mcpServers": { "couchbase-mcp-docker": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "CB_CONNECTION_STRING=", "-e", "CB_USERNAME=", "-e", "CB_PASSWORD=", "mcp/couchbase-src" ] } } } ``` Notes - The `couchbase_connection_string` value depends on whether the Couchbase server is running on the same host machine, in another Docker container, or on a remote host. If your Couchbase server is running on your host machine, your connection string would likely be of the form`couchbase://host.docker.internal` . For details refer to the docker documentation. - You can specify the container's networking using the `--network=` option. The network you choose depends on your environment; the default is`bridge` . For details, refer to network drivers in docker. ### Risks Associated with LLMs - The use of large language models and similar technology involves risks, including the potential for inaccurate or harmful outputs. - Couchbase does not review or evaluate the quality or accuracy of such outputs, and such outputs may not reflect Couchbase's views. - You are solely responsible for determining whether to use large language models and related technology, and for complying with any license terms, terms of use, and your organization's policies governing your use of the same. ## Troubleshooting Tips - Ensure the path to your MCP server repository is correct in the configuration if running from source. - Verify that your Couchbase connection string, database username, password or the path to the certificates are correct. - If using Couchbase Capella, ensure that the cluster is accessible from the machine where the MCP server is running. - Check that the database user has proper permissions to access at least one bucket. - Confirm that the `uv` package manager is properly installed and accessible. You may need to provide absolute path to`uv` /`uvx` in the`command` field in the configuration. - Check the logs for any errors or warnings that may indicate issues with the MCP server. The location of the logs depend on your MCP client. - If you are observing issues running your MCP server from source after updating your local MCP server repository, try running `uv sync` to update the dependencies. ## Integration testing We provide high-level MCP integration tests to verify that the server exposes the expected tools and that they can be invoked against a demo Couchbase cluster. - Export demo cluster credentials: `CB_CONNECTION_STRING` `CB_USERNAME` `CB_PASSWORD` - Optional: `CB_MCP_TEST_BUCKET` (a bucket to probe during the tests) - Run the tests: ``` uv run pytest tests/ -v ``` ## 👩💻 Contributing We welcome contributions from the community! Whether you want to fix bugs, add features, or improve documentation, your help is appreciated. If you need help, have found a bug, or want to contribute improvements, the best place to do that is right here - by opening a GitHub issue. ### For Developers If you're interested in contributing code or setting up a development environment: 📖 **See CONTRIBUTING.md** for comprehensive developer setup instructions, including: - Development environment setup with `uv` - Code linting and formatting with Ruff - Pre-commit hooks installation - Project structure overview - Development workflow and practices ### Quick Start for Contributors ``` # Clone and setup git clone https://github.com/couchbase/mcp-server-couchbase.git cd mcp-server-couchbase # Install with development dependencies uv sync --extra dev # Install pre-commit hooks uv run pre-commit install # Run linting ./scripts/lint.sh ``` ## 📢 Support Policy We truly appreciate your interest in this project! This project is **Couchbase community-maintained**, which means it's **not officially supported** by our support team. However, our engineers are actively monitoring and maintaining this repo and will try to resolve issues on a best-effort basis. Our support portal is unable to assist with requests related to this project, so we kindly ask that all inquiries stay within GitHub. Your collaboration helps us all move forward together - thank you! ## Project details ## Release history Release notifications | RSS feed ## Download files Download the file for your platform. If you're not sure which to choose, learn more about installing packages. ### Source Distribution ### Built Distribution Filter files by name, interpreter, ABI, and platform. If you're not sure about the file name format, learn more about wheel file names. Copy a direct link to the current filters ## File details Details for the file `couchbase_mcp_server-1.0.0.post1.tar.gz` . ### File metadata - Download URL: couchbase_mcp_server-1.0.0.post1.tar.gz - Upload date: - Size: 315.3 kB - Tags: Source - Uploaded using Trusted Publishing? Yes - Uploaded via: twine/6.1.0 CPython/3.13.13 ### File hashes | Algorithm | Hash digest | | |---|---|---| | SHA256 | `bd619cb69e5ee3809fdeb7d456941d42a452c6722ab34662e1399ec6f0644b2e` | | | MD5 | `18abe07909d1d7ed40fbf8139242ace4` | | | BLAKE2b-256 | `03e1c594166e53e39245743d4effda3370b272d7193163c7d50f7fd188ed1e14` | ### Provenance The following attestation bundles were made for `couchbase_mcp_server-1.0.0.post1.tar.gz` : Publisher: `release.yml` on couchbase/mcp-server-couchbase *Values shown here reflect the state when the release was signed and may no longer be current.* - Statement: - Statement type: `https://in-toto.io/Statement/v1` - Predicate type: `https://docs.pypi.org/attestations/publish/v1` - Subject name: `couchbase_mcp_server-1.0.0.post1.tar.gz` - Subject digest: `bd619cb69e5ee3809fdeb7d456941d42a452c6722ab34662e1399ec6f0644b2e` - Sigstore transparency entry: 2020714523 - Sigstore integration time: - Permalink: `couchbase/mcp-server-couchbase@02e488a45380b16595ff48aee4dd8eacf2704c7f` - Branch / Tag: `refs/tags/v1.0.0.post1` - Owner: https://github.com/couchbase - Access: `public` - Token Issuer: `https://token.actions.githubusercontent.com` - Runner Environment: `github-hosted` - Publication workflow: `release.yml@02e488a45380b16595ff48aee4dd8eacf2704c7f` - Trigger Event: `push` - Statement type: ## File details Details for the file `couchbase_mcp_server-1.0.0.post1-py3-none-any.whl` . ### File metadata - Download URL: couchbase_mcp_server-1.0.0.post1-py3-none-any.whl - Upload date: - Size: 68.6 kB - Tags: Python 3 - Uploaded using Trusted Publishing? Yes - Uploaded via: twine/6.1.0 CPython/3.13.13 ### File hashes | Algorithm | Hash digest | | |---|---|---| | SHA256 | `347ba3712dedecf0ef64d69630774a6f2177f62ba631274f3b34e07d60355bf7` | | | MD5 | `513cc9b5f6d6034a77431037b3e8f4bb` | | | BLAKE2b-256 | `5628b2b4a668b3cb060fb51bff943a921a833ed170760098a9707a090579070f` | ### Provenance The following attestation bundles were made for `couchbase_mcp_server-1.0.0.post1-py3-none-any.whl` : Publisher: `release.yml` on couchbase/mcp-server-couchbase *Values shown here reflect the state when the release was signed and may no longer be current.* - Statement: - Statement type: `https://in-toto.io/Statement/v1` - Predicate type: `https://docs.pypi.org/attestations/publish/v1` - Subject name: `couchbase_mcp_server-1.0.0.post1-py3-none-any.whl` - Subject digest: `347ba3712dedecf0ef64d69630774a6f2177f62ba631274f3b34e07d60355bf7` - Sigstore transparency entry: 2020714633 - Sigstore integration time: - Permalink: `couchbase/mcp-server-couchbase@02e488a45380b16595ff48aee4dd8eacf2704c7f` - Branch / Tag: `refs/tags/v1.0.0.post1` - Owner: https://github.com/couchbase - Access: `public` - Token Issuer: `https://token.actions.githubusercontent.com` - Runner Environment: `github-hosted` - Publication workflow: `release.yml@02e488a45380b16595ff48aee4dd8eacf2704c7f` - Trigger Event: `push` - Statement type: --- # Terraform Registry Source: https://registry.terraform.io/providers/couchbasecloud/couchbase-capella/latest Registry Please enable Javascript to use this application --- # What Is an Agentic AI Data Foundation? | Concepts Source: https://www.couchbase.com/resources/concepts/agentic-ai-data-foundation/ Last modified: 2026-06-30T09:40:08+00:00 ###### SUMMARY An agentic AI data foundation is the unified data infrastructure that enables AI agents to perceive, remember, reason, and act reliably across production environments. It provides the persistent memory, governed data access, fast context retrieval, and deployment flexibility that autonomous agents require to move beyond prototypes and deliver real business value at scale. As enterprises accelerate their investments in agentic AI, the data foundation has emerged as the critical differentiator between pilots that fail and systems that run in production. ## What is an agentic AI data foundation? An agentic AI data foundation is a purpose-built data infrastructure designed to support AI agents operating autonomously in production environments. Unlike traditional databases optimized for human-driven transactional workloads, an agentic AI data foundation is built around the unique data requirements of autonomous agents: persistent memory, real-time context retrieval, governed tool access, and stateful operation across multi-agent workflows. The term reflects a shift in how enterprises must think about data infrastructure as AI moves from passive, request-response interactions to active, goal-directed systems. A generative AI application that answers a question needs fast read access to relevant context. An agentic AI system that books a hotel, adjusts an order, or coordinates a multistep workflow needs more; it has to remember what it’s already done, know what it’s authorized to do, retrieve the most relevant past interactions in real time, and write back observations as it acts. An agentic AI data foundation meets all of these requirements as a unified, production-grade system, not as a collection of point solutions assembled with custom glue code. The content below discusses why standard data architectures are insufficient for agentic workflows, the components every production foundation requires, and how Couchbase delivers a purpose-built solution through the Couchbase AI Data Plane. - Why agentic workflows require a specialized data foundation - Core components of an agentic AI data foundation - How agentic AI data foundations differ from traditional databases - The role of agent memory in agentic workflows - How Couchbase delivers an agentic AI data foundation - Key takeaways and related resources - FAQs ## Why agentic workflows require a specialized data foundation Gartner predicts that 40% of enterprise applications will include integrated AI agents by the end of 2026, up from less than 5% in 2025. Yet the same research notes that over 40% of agentic AI projects will be canceled by the end of 2027 due to escalating costs, unclear business value, or inadequate risk controls. The gap between those two statistics is almost entirely a data infrastructure problem. And that problem is largely due to four agentic workflow data challenges that traditional architectures can’t reliably address: ### 1. Stateful, persistent memory In a stateless system, each new session starts from scratch, so agents without persistent memory treat each user as a stranger every time. These agents can’t build on previous interactions, and they force users to repeat context they’ve already provided. At scale, this destroys the user experience that makes agentic AI valuable in the first place. An agentic AI data foundation solves this problem by storing and retrieving conversational history, user preferences, and long-term semantic observations across sessions. ### 2. Real-time context retrieval Agents make decisions based on the current prompt plus retrieved context. To remain within the latency budget of a live interaction, the context retrieval must happen in milliseconds. Traditional data lakes and batch pipelines can’t react this quickly because they’re optimized for analysis, not for real-time agent inference. An agentic AI data foundation uses vector search and key-value retrieval together to return the most semantically relevant context the moment an agent needs it. ### 3. Governed data access Agents that can take real-world actions (e.g., sending messages, updating records, triggering processes) require strict controls on what data and tools they can access. Without governance built into the data layer, agentic systems become unpredictable and ungovernable at enterprise scale. An agentic AI data foundation enforces role-based access control, field-level permissions, and audit logging at the infrastructure level, not as an afterthought. ### 4. Multi-agent coordination As enterprises deploy multi-agent systems in which specialized agents hand off work to one another, shared state becomes the connective tissue. Without a common data foundation, agents duplicate work, drop context at handoff points, and clash on objectives. A shared agentic AI data foundation provides the persistent, structured memory that multi-agent systems need to coordinate reliably without custom state management between every pair of agents. ## Core components of an agentic AI data foundation An agentic AI data foundation isn’t a single database product. It’s a set of integrated capabilities that together enable agents to operate reliably in production. The following components are present in every mature implementation: | Component | What it provides | |---|---| | Agent memory | Stores short-term conversational context, long-term semantic observations, and user profile memory. Retrieves the most relevant memories in real time to inform every agent response. Supports configurable retention policies, such as time to live (TTL), for right-to-be-forgotten compliance. | | Vector store / RAG | Enables semantic similarity search across large knowledge corpora, enabling agents to retrieve the most contextually relevant information for any query, not just exact-match results. A vector store is the foundation of retrieval-augmented generation (RAG) in agentic systems. | | Agent catalog | A governed registry of tools, prompts, and agentic functions that agents can discover and invoke at runtime. Ensures agents use validated and versioned tools, enables reuse across agent deployments, and provides the visibility required for enterprise governance. | | LLM cache | Stores and reuses LLM responses for identical or semantically similar prompts to reduce token costs and latency. Essential for production agentic systems in which repeated reasoning steps for similar inputs are common. | | MCP server | Implements the Model Context Protocol (MCP) standard, providing a secure, structured interface for AI models to connect to tools, data sources, and external systems. Reduces integration complexity and enforces consistent access controls. | | Audit & governance layer | Tracks all agent actions, data accesses, and tool invocations with full lineage. Enables organizations to answer the questions, “What did the agent do, with what data, and why?” These answers are required for regulated industries and enterprise compliance. | ## How agentic AI data foundations differ from traditional databases Traditional databases were designed for applications controlled by human users or deterministic business logic. An agentic AI data foundation is designed for systems where the agent itself is the primary consumer of data. Agents read, write, and reason with the data continuously and autonomously at a pace that traditional architectures weren’t built to support. | Attribute | Traditional database | Agentic AI data foundation | |---|---|---| | | Human users or deterministic application code | | | | Stateless request/response | | | | Exact-match query (SQL, key-value) | | | | Application-driven at defined times | | | | Access control at the database/table level | | | | Not designed for agent coordination | | | | Cloud or on premises | | | | Compute + storage | | ## The role of agent memory in agentic workflows Agent memory is the most fundamental component of an agentic AI data foundation. Without it, every agent interaction is effectively the first - there is no continuity, no personalization, and no ability to build on previous work. With a properly structured memory layer, agents can maintain context across sessions, recognize returning users, act on long-term preferences and observations, and coordinate with other agents without losing state at handoff points. Agent memory typically operates at three levels, each serving a distinct function in production agentic workflows: - Short-term memory stores the current conversational context, including the active session, recent exchanges, and the working state. It gives the agent immediate awareness of the ongoing interaction without requiring retrieval from a persistent store. - Long-term semantic memory stores observations, facts, and user history that should persist across sessions. This data is typically stored as vector embeddings to enable semantic retrieval. An agent finds the most relevant past information for the current context, not just an exact match. - Profile memory stores structured user attributes such as preferences, loyalty status, access rights, and explicit instructions the agent should always be aware of. This information is stored as structured key-value data for deterministic, low-latency retrieval. In production systems, these three memory types must be unified under a single API that handles storage, retrieval, and lifecycle management. A fragmented implementation with separate storage systems for each memory type will degrade agent reliability in production by introducing synchronization complexity, governance gaps, and latency. ## How Couchbase delivers an agentic AI data foundation The Couchbase AI Data Plane is a unified agentic AI data foundation built on Couchbase’s JSON-native, scale-out, memory-first data platform. It’s designed for enterprises building production agentic applications that require persistent memory, governed data access, tool and prompt visibility, and fast context retrieval across cloud, self-managed, hybrid, and edge environments. The AI Data Plane combines four integrated components: **Agent Memory** - Short-term conversational context, long-term semantic memory, and profile memory through a single API. Every memory block is stored as a structured JSON document shaped for instant retrieval with an embedding vector, summary, context, timestamp, and configurable TTL. Agent memory deploys wherever Couchbase runs and scales with the cluster. **MCP Server** - A Model Context Protocol-compliant interface that connects AI models to Couchbase data, tools, and external systems in a structured, governed way. MCP reduces integration complexity and enforces consistent access controls across all agent interactions. **Agent Catalog** - A governed registry for storing, discovering, and reusing agentic tools, prompts, and functions. The agent catalog ensures that agents across an enterprise deployment use validated, versioned capabilities rather than ad hoc integrations. It also provides the auditability required for enterprise governance. **LLM Cache** - Stores and reuses LLM responses for identical or semantically similar prompts. This reduces token costs and inference latency at scale, directly addressing one of the fastest-growing infrastructure costs in production AI deployments. The AI Data Plane lets enterprises choose the deployment model best suited to their needs. It runs on Couchbase Capella, a fully managed DBaaS available on AWS, Azure, and GCP. And it also runs in self-managed and hybrid configurations. The same agentic AI data foundation that powers a cloud-native application can also power a mobile or edge deployment using Couchbase Mobile to extend agent memory and context to environments without reliable internet connectivity. ## Key takeaways and related resources An agentic AI data foundation is the infrastructure layer that separates agentic AI prototypes from production systems. As autonomous agents take on more consequential roles in enterprise workflows, the data foundation they depend on must be purpose-built, not assembled from tools designed for a different era of computing. **Key takeaways:** - An agentic AI data foundation is a unified infrastructure that gives AI agents persistent memory, governed data access, fast context retrieval, and deployment flexibility across cloud and edge environments. - Agentic workflows require stateful, real-time data access that traditional data lakes, APIs, and transactional databases weren’t designed to provide. - Agent memory operates at three levels (short-term conversational context, long-term semantic memory, and user profile memory) and must be unified under a single API for production reliability. - An agent catalog provides a governed registry of tools and prompts that ensures agents use validated, versioned capabilities. It also enables enterprise-scale auditability. - LLM caching is an operational necessity at scale. Reusing responses for identical or similar prompts directly reduces token costs and inference latency. - The Model Context Protocol is emerging as the standard interface for connecting AI models to tools and data. A production data foundation should implement it natively. - The Couchbase AI Data Plane delivers the critical agentic AI data foundation capabilities in a single system. It includes agent memory, an MCP server, an agent catalog, and an LLM cache, all running on Couchbase’s JSON-native, scale-out platform. - Codelab: Building an AI Agent With Couchbase AI Services & Agent Catalog - Optimizing Multi-Agent AI Systems With Couchbase - Speed, Context, and Savings: Mastering Caching in the Capella AI Model Service **Related resources:** ## FAQs **What is an agentic AI data foundation?** An agentic AI data foundation is the unified data infrastructure that enables AI agents to perceive, remember, reason, and act reliably in production environments. It provides persistent agent memory, governed data access, fast context retrieval, and the ability to operate across cloud, self-managed, and edge environments. **Why do agentic workflows require a specialized data foundation?** Agentic workflows require stateful, real-time data access that traditional architectures can’t reliably provide. Agents need persistent memory across sessions, low-latency context retrieval, governed access to tools and data sources, and the ability to write back observations as they act. A purpose-built data foundation meets all these requirements in a unified, production-grade system. **What are the core components of an agentic AI data foundation?** The core components are: (1) persistent agent memory for short-term conversational context, long-term semantic memory, and user profile memory, (2) a vector store for semantic retrieval and RAG, (3) governed data access with role-based controls and audit logging, (4) an agent catalog for tool and prompt governance, (5) an LLM cache for cost and latency optimization, and (6) support for deployment across cloud, self-managed, hybrid, and edge environments. **How is an agentic AI data foundation different from a traditional database?** Traditional databases are optimized for transactional reads and writes by human-driven applications. An agentic AI data foundation is designed for autonomous agents that need to continuously read and write memory, retrieve semantically relevant context in real time, enforce governance at the action level, and maintain state across multi-agent handoffs. These capabilities require a purpose-built, AI-native data infrastructure. **What is the Couchbase AI Data Plane?** The Couchbase AI Data Plane is a unified agentic AI data foundation built on Couchbase’s JSON-native, scale-out, memory-first platform. It combines agent memory, MCP Server, agent catalog, and LLM cache into a single deployable system that runs across cloud, self-managed, hybrid, and edge environments. It gives AI agents persistent memory, governed data access, and fast context retrieval in production. **What role does agent memory play in agentic workflows?** Agent memory gives AI agents continuity across sessions and interactions. Without memory, agents treat every user as a stranger, repeat completed work, and fail at multi-agent handoff points. A proper memory layer stores short-term conversational context, long-term semantic observations, and user profile data. It retrieves the most relevant memories in real time to inform every agent response. **What is an agent catalog, and why does it matter for agentic workflows?** An agent catalog is a governed registry of tools, prompts, and agent functions that agents can discover and invoke at runtime. It ensures that agents use validated and versioned tools rather than ad hoc integrations, enables reuse across agent deployments, and provides the visibility and auditability required for enterprise governance of agentic systems. --- # What Is an AI Data Plane? | Concepts Source: https://www.couchbase.com/resources/concepts/ai-data-plane/ Last modified: 2026-06-30T09:42:57+00:00 ###### SUMMARY As organizations move from AI experiments to production, the model is rarely the bottleneck - data, memory, and integration are. An AI data plane addresses this by providing a consistent, governed layer for agent memory, retrieval-augmented generation (RAG), tool orchestration, and governance, extending all the way from the cloud to edge and mobile devices. Understanding what it is, how it fits into the AI stack, and how it differs from traditional data infrastructure helps teams design AI strategy more intentionally and avoid architectural choices that limit what their agents can do. ## What is an AI data plane? An AI data plane is the data layer that provides AI agents with persistent memory, governed access to tools and data, and consistent context from the cloud to the edge. It sits at the intersection of large language models (LLMs), tools, and operational data, enabling agents to be more useful, reliable, and production-ready. More precisely, it’s the part of an architecture that manages what AI agents need to do their jobs well: storing and retrieving long-term memory, connecting agents to structured and unstructured data, managing the tools and APIs they can call, and enforcing governance, security, and consistency across all of those interactions. Think of it as the nervous system for AI applications. The model provides reasoning and language - the AI data plane provides the senses and memory: the real-world information, history, and tools that make the model useful. Without an AI data plane, most AI agents are short-lived, stateless prompts. They may understand language well, but they forget context, have shallow access to data, are difficult to govern, and are hard to scale across production environments. Keep reading to learn the reasons why AI needs a data plane, more details about what it does, how it fits into the AI stack, how it compares to traditional data infrastructure, and the use cases it supports. - Why AI needs a data plane - What an AI data plane does - How an AI data plane fits into the stack - AI data plane vs. traditional data infrastructure - Example use cases - Why define the concept now? - Key takeaways and related resources - FAQs ## Why AI needs a data plane Enterprises are learning that moving from AI demos to production is less about the model and more about data, memory, and integration. Four recurring problems explain why a dedicated data plane matters. **Stateless interaction:**Agents respond to a prompt but don’t remember what happened five minutes ago, let alone last week. That makes them brittle in real workflows where continuity matters.**Fragmented data and tools:**Each AI experiment typically connects to different databases, APIs, and internal systems in bespoke ways, creating silos and duplication and resulting in a patchwork architecture that’s hard to maintain.**Inconsistent truth:**Agents can see different versions of the truth depending on which system they query and when, undermining trust in the output and eroding confidence in the system over time.**Governance gaps:**Controlling what data an agent can see, what tools it can use, and how those choices are audited becomes especially important in regulated or customer-facing environments - and nearly impossible without a central layer. An AI data plane addresses all four of these issues by providing a consistent, governed, and persistent layer for data, tools, and memory. Instead of wiring each agent directly into every system, teams connect agents to the AI data plane and manage complexity there. ## What an AI data plane does A mature AI data plane typically handles five core responsibilities: ### Persistent agent memory Agents become far more capable when they can remember past interactions, decisions, and outcomes. That memory lets them build long-term profiles of customers, assets, or processes, avoiding repeated questions, improving recommendations over time, and sharing relevant history across channels and devices. ### Context and retrieval for LLMs Modern AI systems rely heavily on retrieval-augmented generation (RAG), pulling relevant data from enterprise systems into the prompt so the model can reason over it. The AI data plane indexes operational and analytical data for fast retrieval, supports hybrid search, and provides a unified retrieval path for different agents rather than bespoke connectors for every use case. ### Tools, actions, and orchestration Agents aren’t just chatbots. They take actions like updating systems, triggering workflows, calling APIs, or coordinating other agents. The AI data plane provides an organized way to register tools, describe them in a way models can understand, control which agents can invoke them, and log those actions for safety and compliance. ### Governance, security, and observability As AI systems mature, these concerns become non-negotiable. The AI data plane is where access control, policy enforcement, auditing, data lineage, and monitoring can be centralized - so those rules do not have to be rebuilt in every agent or application that gets deployed. ### Cloud-to-edge consistency Many of the most valuable AI applications live at the edge: on mobile devices, in retail stores, on factory floors, or in vehicles. The AI data plane synchronizes data and memory across cloud, data center, and edge locations, easily handles offline or intermittent connectivity, and enforces security and governance policies even when agents run close to the user. ## How an AI data plane fits into the stack A modern AI architecture can be understood as three distinct layers, each with a different job. Understanding where the AI data plane sits, and why it occupies that position, explains much of its value. ### The model layer At the top sits the model layer: the foundation models, fine-tuned variants, and prompt templates that provide reasoning and language capabilities. This is what most people picture when they think about AI - the intelligence. But models on their own are stateless. They process what they’re given, generate a response, and retain nothing. Every interaction starts from zero unless something external supplies the context. ### The application and agent layer At the other end sits the application and agent layer: the user-facing experiences, domain-specific agents, and automated workflows that make AI useful in practice. This is where business logic lives - the customer service assistant, the field technician’s mobile tool, the internal knowledge agent. These applications define what AI should do and for whom, but they depend entirely on having access to the right data and memory to do it well. ### The AI data plane: the layer in between The AI data plane occupies the middle. It’s the connective layer that makes the other two work together. Upward, it supplies models with the retrieved context, memory, tool schemas, and data they need to generate useful, grounded responses. Downward, it receives the events, state updates, new memories, and actions agents and applications produce, and it stores and governs them so that they’re available for the next interaction. Without this middle layer, every agent has to wire itself directly to every data source, tool, and system it needs, resulting in bespoke integrations that are fragile, hard to govern, and impossible to reuse. With the AI data plane in place, that complexity is managed once, in one place, and shared across all agents and applications that need it. This separation also creates meaningful flexibility. Teams can swap or upgrade models without rewiring data sources, because the AI data plane provides a stable interface that models consume. They can deploy new agents and user experiences without rebuilding data access logic from scratch, because the data plane already handles retrieval, memory, and tool access. And they can enforce consistent security, privacy, and governance policies across all AI experiences, rather than implementing them separately for each agent or workflow. ## AI data plane vs. traditional data infrastructure It’s natural to compare an AI data plane with a data warehouse, a data lake, or a database. Those systems are essential, but they’re not designed primarily with agents and models as first-class consumers. Traditional data infrastructure is built for applications and human queries. The AI data plane is built specifically to serve agents. It combines memory, retrieval, tools, and governance in ways that match AI workloads, and is optimized for RAG, tool use, and agent orchestration patterns rather than business intelligence (BI) reporting or transactional record-keeping. | Feature | Traditional data infrastructure | AI data plane | |---|---|---| | | Applications and human analysts | AI agents and models | | | No native concept of agent memory | Persistent, governed agent memory is first-class | | | SQL queries, batch exports, dashboards | Hybrid search, vector retrieval, RAG pipelines | | | Not applicable | Registered tool registry with access control and logging | | | Role-based access, query logs | Policy enforcement, action auditing, data lineage for AI workloads | | | Limited or not prioritized | Native sync, graceful reconnect | | | Throughput, storage efficiency, query speed | Low-latency retrieval, context richness, agent reliability | You can assemble something resembling an AI data plane from existing technologies, but the key is to treat it as a coherent layer with clear responsibilities, rather than a collection of disconnected components stitched together with custom code. ## Example use cases The AI data plane is most valuable when AI agents need to operate across real-world complexity: multiple data sources, persistent context, live integrations, and environments where connectivity or governance can’t be taken for granted. Three scenarios illustrate what that looks like in practice. ### Customer support copilot A global enterprise wants an AI assistant that helps support agents handle customer inquiries across web chat, email, and phone. Without a shared data layer, each channel operates in isolation: the agent on chat has no idea what was discussed on last week’s phone call, and the AI has no access to the customer’s current order status or account history. With an AI data plane, the copilot has a persistent, unified view of every customer: past conversations, open tickets, purchase history, and resolved issues, regardless of which channel they came through. When a customer makes contact, the AI retrieves the relevant context in milliseconds, surfaces it to the support agent, and can take actions (e.g., updating an order, scheduling a callback, escalating a case) through a governed tool registry. Regional privacy rules are enforced at the data plane level, so the AI only surfaces what it’s permitted to surface in each jurisdiction. Over time, the outcomes of each interaction become part of the customer’s long-term memory profile, making every future interaction more accurate. ### Field service application A technician is dispatched to service industrial equipment at a remote site with unreliable network connectivity. Their mobile AI assistant needs access to equipment maintenance history, known failure patterns, sensor readings, and step-by-step repair procedures - but a live cloud connection can’t be guaranteed. An AI data plane with edge synchronization solves this by prepositioning the relevant data and memory on the device before the technician arrives. The assistant works fully offline: answering questions, guiding repairs, and flagging anomalies based on locally available context. As the technician captures notes, photos, and observations, those are stored as new events and memories on the device. When connectivity returns, the AI data plane syncs everything back to the central system, keeping the enterprise record consistent and up to date without any manual reconciliation from the technician. ### Enterprise knowledge agent A large organization wants an internal AI agent that employees can use to find policies, procedures, project documentation, and institutional knowledge that’s currently scattered across wikis, shared drives, ticketing systems, and email archives. The challenge isn’t building the agent, it’s ensuring the agent retrieves accurate, current information and respects who’s allowed to see it. The AI data plane handles both. It indexes content from multiple internal systems into a unified retrieval layer that the agent can query using hybrid search, combining keyword matching, semantic similarity, and structured filters, to surface the most relevant result for each question. Access control policies are enforced at the data plane level: a contractor asking about compensation bands gets a different answer than an HR manager asking the same question, not because the agent was individually programmed that way, but because the underlying data layer enforces those rules consistently for every request. ## Why define the concept now? As organizations move from pilot to production, the architectural patterns that succeed tend to become standards. “AI data plane” is useful as a term because it provides teams with a shared language for a critical yet often implicit part of the stack. Naming the layer helps separate concerns between models, data, and applications. It encourages investment in persistent memory, governance, and edge capabilities rather than one-off prototypes. It also provides a framework for evaluating platforms based on how well they support these needs, rather than how many features they list on a spec sheet. Explicitly defining the AI data plane helps teams design their AI strategy more intentionally and avoid architectural choices that limit what their agents can do in the future. ## Key takeaways and related resources - An AI data plane is the governed data and memory layer that connects AI agents to the right information, tools, and context across cloud and edge environments. - It handles five core responsibilities: persistent agent memory, LLM retrieval and RAG, tool and action orchestration, governance and observability, and cloud-to-edge consistency. - Unlike traditional data infrastructure, it’s designed with agents and models as first-class consumers, not applications and human analysts. - A well-designed AI data plane is model-agnostic and vendor-neutral; its value comes from standardizing how agents interact with data and tools. - For organizations moving AI into production, treating the AI data plane as a coherent architectural layer rather than a patchwork of custom integrations enables agents to scale reliably. **Related resources:** Visit our concepts hub to learn more about the AI data plane and related topics. ## FAQs **How does an AI data plane affect time to production for enterprise AI?** It significantly reduces it. Rather than building bespoke data integrations for each agent, teams connect once to the AI data plane and inherit memory, retrieval, tool access, and governance across every AI application they deploy. **How is an AI data plane different from a data platform?** A data platform manages storage, processing, and analytics for applications and human analysts. An AI data plane focuses specifically on how agents and models consume and produce data. The distinction is the consumer: traditional data platforms serve people and apps; the AI data plane serves agents and models. **Do you need an AI data plane for every AI project?** No. For early-stage prototypes with a single data source and a stateless use case, existing infrastructure is often sufficient. But once an organization wants agents that remember, act across multiple systems, and integrate with production workflows, the AI data plane becomes a distinct and valuable architectural layer rather than an optional add-on. **Is an AI data plane tied to a specific model or vendor?** No. A well-designed AI data plane is model-agnostic and supports multiple models and providers over time. Its value comes from standardizing how agents interact with data and tools, regardless of which model sits behind them. This model independence also makes it easier to adopt new models as they improve without rewiring the rest of the architecture. **How does an AI data plane support edge and mobile AI?** It gives agents running on devices and at the edge local, synchronized access to the data and memory they need, enabling decision-making even without a live cloud connection. When connectivity returns, the AI data plane handles reconciliation and sync while enforcing the same security and governance policies that apply in the cloud. --- # Batch Processing | Concepts Source: https://www.couchbase.com/resources/concepts/batch-processing/ Last modified: 2024-12-09T13:33:12+00:00 ## What is batch processing? Batch processing is a data processing method where a group of transactions is collected over a period and processed as a single batch. This approach contrasts with real-time processing, where each transaction is processed individually and immediately. Batch processing is particularly suited for operations that don’t require immediate results because it can be scheduled to run during off-peak hours to reduce the load on computational resources. In batch processing, transactions or data points are accumulated until a certain threshold is met, which could be a specific quantity of data or a scheduled time. Once the threshold is reached, the entire batch is processed together. This method is highly efficient for tasks that require heavy lifting, like data analysis, updating databases, processing customer transactions, and generating reports. Since the process is automated and can be run without continuous oversight, it allows for better utilization of system resources and can lead to significant time and cost savings. This page covers: ## Batch processing vs. stream processing Batch processing and stream processing are two fundamental approaches to data processing. Batch processing involves processing data in large blocks or “batches.” This method is ideal when dealing with large volumes of data that don’t require immediate action. It’s a traditional data processing method where data is collected over a period and then processed all at once. Think of it as doing laundry; you wait until you have enough dirty clothes to make up a full load before running the washing machine (or you wait until a designated time each week to run the washing machine). On the other hand, stream processing is designed to process data in real time as it arrives. This approach is ideal for applications that need to act on data immediately, such as fraud detection systems or real-time analytics. Stream processing can be likened to washing a dish as soon as it’s used; you deal with each item immediately rather than waiting. Attribute | Batch Processing | Stream Processing | |---|---|---| | Data processing method | Accumulate then process | Process as it arrives | | Data processing time | Scheduled intervals | Real time | | Data volume | High - processed in batches | Continuous - processed one record at a time | | Typical use cases | - Data warehousing - Batch ETL operations - Generating reports | - Real-time analytics - Fraud detection - Monitoring and alerting | The key difference between these two approaches lies in their handling of data velocity and volume. Batch processing is efficient for high-volume processing tasks that are less time sensitive, and it can enable more complex analysis and reporting on large datasets. Stream processing is better for scenarios that require quick, incremental data processing and immediate insights. ## Examples of batch processing Batch processing is a powerful method for handling large volumes of data where transactions are collected over a period and processed all at once. This approach is highly efficient for operations that do not require immediate feedback. Here are three examples: **Financial transaction processing:** Banks and financial institutions often use batch processing for end-of-day transactions such as processing checks, bank transfers, and credit card transactions. The transactions are accumulated throughout the day and processed in a single batch during off-peak hours to update account balances and generate reports. **Data backup and synchronization:** Many organizations perform routine data backups using batch processing. This process might involve copying files from active servers to backup locations overnight. Similarly, data synchronization between systems, such as updating a central warehouse with data from satellite locations, is often performed as a batch process to minimize impact on network resources during peak usage times. **Batch data analytics and reporting:** Businesses frequently use batch processing for complex analytics and reporting. Large datasets are processed to generate reports, perform business intelligence analysis, or feed into machine learning models for training. These processes are scheduled during low-usage times to avoid disrupting other operations and ensure efficient use of computational resources. *Batch data analytics and reporting workflow (read top left, to top right, to bottom left, to bottom right)* ## How to monitor batch processing Monitoring batch processing is crucial for ensuring the reliability of batch jobs. It involves tracking the performance of batch processes, including their execution time, resource usage, and failure rates. Effective monitoring can help identify bottlenecks, optimize resource allocation, find troublesome data, and improve overall system performance. To monitor batch processing, focus on these key metrics: 1. **Execution time:** Measure how long each batch job takes to complete. This helps identify jobs that take longer than expected, which might indicate issues with the data, code, or underlying infrastructure. 2. **Resource usage:** Monitor the CPU, memory, and disk I/O consumed by batch jobs. High resource usage could signal inefficiencies in the code, the need for hardware upgrades, or corrupted data. 3. **Error rates and types:** Track the number and types of errors encountered during batch processing. Analyzing errors can help pinpoint systemic issues, improve data quality, and fix bugs. 4. **Throughput:** Measure the amount of data processed in a given time frame. This can help assess the performance impact of changes to the batch process. To visualize and manage these metrics, you might employ dashboards that aggregate data from various sources, providing a real-time overview of the health and performance of batch processes. Tools like Grafana, Prometheus, Datadog, and Splunk are commonly used to monitor batch processes. Additionally, setting up alerts for anomalies or thresholds can help address issues proactively. ## Advantages and disadvantages of batch processing Batch processing offers several advantages and disadvantages that teams should consider when determining their data processing strategies. ### Advantages **Efficiency at scale:**Batch processing is highly efficient for large volumes of data. By grouping similar tasks, it reduces the overhead of starting and executing each task individually, leading to significant time and resource savings.**Resource optimization:**Batch processing allows for the optimal use of resources since it can be scheduled during off-peak hours to reduce the impact on operational systems and ensure that resources are available for critical tasks during peak times.**Consistency and reliability:**Processing large datasets in batches ensures consistency and reliability in data handling. This is especially important in situations where data integrity is critical, such as financial transactions or inventory management. ### Disadvantages **Latency:**One of the main drawbacks of batch processing is the inherent delay between data collection and processing. This latency can be a significant issue for applications requiring real-time data analysis or immediate action based on data insights.**Complexity in error handling:**Errors in batch jobs can be more complex to identify and resolve due to the bulk nature of processing. If a batch job fails, diagnosing the issue might require sifting through large volumes of data to find the cause.**Inflexibility:**Batch processing systems can be less flexible in accommodating changes or integrating new data sources because modifications may require significant changes to the batch jobs or schedules. ## Alternatives to batch processing Alternatives to batch processing require less overhead and focus on real-time processing, on-demand analytics, and scalability. Understanding these alternatives can help you decide the best fit for specific use cases, especially when real-time insights and efficiency are paramount. **Real-time processing: ** Unlike batch processing, real-time processing analyzes data as it arrives. This approach is beneficial for applications requiring instant decision-making, such as fraud detection or live user interaction analysis. **Event-driven architecture:** This model waits for specific events to occur, and then responds and communicates between decoupled services in real time. It’s highly scalable and flexible, making it suitable for complex, distributed systems where immediate responsiveness is crucial. Tools like Kafka enable scalable data streaming between components. **Couchbase Capella™ columnar services:** For those exploring alternatives to traditional batch processing, especially for analytical workloads, Capella columnar services presents a compelling option. Its real-time capabilities eliminate the need for extensive ETL pipelines and simplify data architecture. The SQL++ query language enhances accessibility and manipulation of data, offering a seamless transition for those familiar with SQL. And the lack of ETL maintenance and real-time data analysis capabilities makes it an attractive choice for dynamic, data-driven environments. ## Conclusion Batch processing is a powerful approach for handling large volumes of data where immediacy is not critical. It’s particularly useful for tasks that can be executed without immediate user interaction, making it useful for some data analysis situations, non-time-sensitive reporting, and system updates. When deciding between batch and stream processing, consider the nature of your data, the need for real-time processing, and the complexity of the processing tasks. Alternatives like stream processing are better for scenarios requiring immediate data handling. Always choose the method that aligns with your project requirements, taking into consideration the performance, complexity, and scalability trade-offs. To learn more about concepts related to batch processing, explore our hub. --- # Cloud Containers | Concepts Source: https://www.couchbase.com/resources/concepts/cloud-containers/ Last modified: 2025-12-04T14:37:24+00:00 **SUMMARY** Cloud containers package applications and their dependencies into portable, self-contained units that run consistently across any environment. By isolating applications from underlying infrastructure, they solve compatibility issues and streamline development and deployment. Containers come in two main types: application containers for microservices and system containers for legacy workloads, each serving distinct needs. Their lightweight, scalable design enables them to be faster and more efficient than traditional virtual machines (VMs). With the support of orchestration tools like Kubernetes, containers have become a foundation for modern, cloud-native development. ## What are containers in cloud computing? In cloud computing, a container is a portable package that bundles an application with its dependencies (code, runtime, libraries, settings), allowing it to run across different environments. This isolates applications from their environment, ensuring consistent operation across any deployment, from local machines to public clouds. By bundling dependencies, containers solve the “it works on my machine” problem, streamlining development and deployment. Continue reading this resource to learn the basics of cloud containers, including their types, technical functions, and common use cases. You’ll also learn about their benefits, how they differ from virtual machines, and the tools available for container management and orchestration. - Types of cloud containers - How do cloud containers work? - What are containers used for? - What benefits do cloud containers provide? - Containers vs. virtual machines - Container management tools - Key takeaways and related resources - FAQs ## Types of cloud containers All containers use OS-level virtualization, but they primarily fall into two types: application containers and system containers. Each serves a distinct purpose, making understanding their differences critical for selecting the right tool. ### Application containers Application containers, popularized by Docker, are the most common type of container. Their main goal is to package and run a single application or process. They’re lightweight, stateless, and immutable, bundling an application’s code and all its dependencies into one executable package. This functionality ensures consistent performance across environments. They also allow independent deployment and scaling of services, making them ideal for microservices architectures. #### Key characteristics **Single-process focus:**Runs one application or service.**Lightweight and fast:**Starts quickly without booting a full OS.**Immutable:**Unchanged after creation; updates involve replacing the container.**Stateless:**Data is managed externally (e.g., volumes, databases).**Popular technologies:**Docker, containerd, CRI-O. ### System containers System containers emulate a full VM with the efficiency of a container. Unlike application containers, they run a complete operating system with multiple services and processes, including an init system like systemd. This makes them suitable for legacy or monolithic applications that expect a traditional OS environment, allowing “lift and shift” to containerized infrastructure without major refactoring. Although heavier than application containers, they’re more resource efficient than VMs because they share the host OS kernel. #### Key characteristics **Multi-process environment:**Runs a full boot process and multiple services.**Behaves like a VM:**Offers a persistent, mutable environment for installations and configurations.**Legacy application support:**Ideal for monolithic applications requiring a traditional OS.**Stateful:**Can manage internal state, similar to a standard server.**Popular technologies:**LXD (Linux Container Daemon), OpenVZ. Choosing between application and system containers depends on the workload. Application containers are standard for modern, microservices-based applications. In contrast, system containers offer a bridge for migrating legacy monolithic systems to containerized infrastructure. ## How do cloud containers work? Cloud containers use OS-level virtualization. Unlike traditional virtual machines that require a full guest operating system for each instance, containers share the host OS kernel, making them lightweight, fast, and efficient. This is achieved using two key Linux kernel features: namespaces and control groups (cgroups). ### Core components of containerization **Namespaces:** Namespaces partition kernel resources, creating isolated workspaces for containers. Each container has its own network stack, process ID space, mount points, and user ID space. From inside, it appears as a standalone OS, though it shares the host kernel with other containers. This isolation ensures containers don’t interfere with each other. **Control groups (cgroups):** Cgroups manage and limit container resource usage, such as CPU, memory, and bandwidth. They prevent any single container from overloading the host system, ensuring stable and predictable performance for all containers. ### Container workflow Container creation and operation rely on two main elements: images and runtimes. **Container images:** These immutable files serve as blueprints that contain the code, libraries, dependencies, and configurations needed to run the application. Built in layers (e.g., starting with a minimal Linux distribution), images are efficient to update and share. **Container runtime:** The runtime pulls container images and runs them on the host system. It unpacks the image and uses namespaces and cgroups to create isolated processes. The runtime handles the full container life cycle, from creation to termination. When you run a command like docker run, the runtime retrieves the image (if needed), creates the container, allocates resources, and isolates it. The application then runs in a sandboxed environment as a process on the host OS. ## What are containers used for? Containers are essential for modern software development due to their flexibility, portability, and efficiency. Here are the most common use cases: Use cases for containers **Microservices architectures:**Containers are ideal for breaking applications into small, independent services. Each service runs in its own container, simplifying updates, improving fault isolation, and allowing teams to use different technology stacks.**Application modernization and migration:**Containers simplify the “lift and shift” of legacy applications to modern infrastructure, eliminating the need for major code changes and enabling a gradual transition from monolithic to microservices-based architecture.**Consistent development and testing environments:**By packaging applications with all their dependencies into a single image, containers ensure identical environments across development, testing, and production, which reduces bugs and deployment failures.**CI/CD and DevOps enablement:**Containers integrate seamlessly with CI/CD pipelines, allowing for automated builds, tests, and deployments. This speeds up delivery cycles and improves reliability.**Hybrid and multicloud strategies:**Containers can run on any infrastructure, supporting hybrid and multicloud deployments that reduce vendor lock-in and enable easy workload migration.**Scalability and high-density deployments:**The lightweight nature of containers enables high-density deployments for better resource utilization. When combined with orchestration tools like Kubernetes, containers can scale automatically to handle spikes in demand, supporting cost-efficient, high availability applications. ## What benefits do cloud containers provide? Cloud containers change how applications are built, deployed, and managed. By separating applications from the underlying infrastructure, they offer flexibility and efficiency, addressing common development challenges for faster delivery, more reliable systems, and better resource utilization. **Unmatched portability and flexibility:**Containers bundle applications and dependencies into self-contained units that run consistently across any environment, whether in the cloud or on premises. This simplifies migration and avoids vendor lock-in.**Enhanced scalability and performance:**Because containers are lightweight and share the host operating system, they can start in just a few seconds. This speed enables quick, automated scaling with tools like Kubernetes, helping manage sudden traffic increases and keeping applications available.**Greater resource efficiency and cost savings:**Containers allow more applications to run on less hardware by sharing the host OS, leading to higher density than with VMs. This reduces infrastructure costs and lowers cloud bills.**Faster deployment and development cycles:**Containers help maintain consistent environments, eliminating the “it works on my machine” problem. This streamlines CI/CD pipelines for more frequent and predictable deployments, boosting developer productivity.**Improved consistency and reliability:**Immutability prevents configuration drift, ensuring stable and predictable systems. Updating means replacing containers with new images, simplifying rollbacks, and troubleshooting. ## Containers vs. virtual machines While both containers and virtual machines allow applications to run in isolated environments, they do so in very different ways. VMs emulate entire operating systems, providing strong isolation but requiring more resources, while containers share the host OS kernel, making them lightweight, faster to start, and easier to scale. Here’s how the two compare: Feature | Containers | Virtual machines | |---|---|---| Architecture | Share the host OS kernel; package only the app and dependencies | Run a full guest OS on top of a hypervisor | Resource usage | Lightweight, minimal overhead | Heavier, more resource intensive | Startup time | Near instant | Minutes, depending on the OS | Scalability | Easily scaled up or down | Scaling requires more time and resources | Portability | Highly portable across environments | Portable but requires compatible hypervisors | Isolation | Process-level isolation | Strong OS-level isolation | Use cases | Microservices, CI/CD, cloud-native apps | Legacy apps, full OS environments, stronger isolation needs | In practice, many organizations use both containers and VMs depending on their workload needs. Containers are ideal for speed and scalability, while VMs remain a strong choice for running legacy applications or workloads that demand higher isolation. When combined, they contribute to a flexible and efficient infrastructure strategy. ## Container management tools As organizations scale their use of containers, managing them manually becomes impractical. Container management tools help automate deployment, orchestration, scaling, and monitoring, ensuring that applications remain reliable and efficient across complex environments. These platforms also add features for security, networking, and integration with cloud services. **Docker:**A widely used platform that simplifies building, packaging, and running containers across environments.**Kubernetes:**An open-source orchestration system that automates the deployment, scaling, and management of containerized applications.**Red Hat OpenShift:**A Kubernetes-based platform that adds developer-friendly features, enterprise-grade security, and multicloud support.**Amazon Elastic Kubernetes Service (EKS):**A managed Kubernetes service from AWS that reduces the overhead of running Kubernetes clusters.**Google Kubernetes Engine (GKE):**Google’s managed Kubernetes offering, designed for scalability and integration with Google Cloud services.**Azure Kubernetes Service (AKS):**Microsoft’s managed Kubernetes platform, offering deep integration with Azure services. Choosing the right container management tool often depends on your existing infrastructure, level of expertise, and whether you prefer a fully managed service or more control over configurations. ## Key takeaways and additional resources Cloud containers have become fundamental to modern application development because they bring consistency, portability, and efficiency to every stage of the software life cycle. By isolating applications from their environments, they solve deployment challenges while supporting scalability, automation, and innovation. Whether used for microservices, application modernization, or hybrid cloud strategies, containers continue to help organizations build and deliver software at scale. Here are the most important takeaways from this resource: ### Key takeaways **Containers package applications with all dependencies**, ensuring consistent operation across environments.**They come in two types**, with application containers used for microservices and system containers used for legacy or monolithic apps.**Containers rely on Linux features**, such as namespaces and cgroups, for isolation and resource management.**Images and runtimes form the foundation of container workflows**, powering the creation, scaling, and updates of applications.**Compared to VMs, containers are lighter, start faster, and are more efficient**, making them ideal for cloud-native use cases.**Container management tools**such as Docker, Kubernetes, and OpenShift**streamline orchestration, scaling, and monitoring**.**Adoption of containers supports DevOps practices**, accelerates CI/CD pipelines, and reduces infrastructure costs. To learn more about containers, you can visit our concepts hub and review the resources listed below: ### Additional resources - Container Security - Concepts - Container Orchestration - Concepts - Pod vs. Container: What Are the Key Differences? - Blog - Cloud-Native vs. Cloud-Agnostic: Which Approach Is the Best Fit? - Blog ## FAQs **What is the difference between cloud containers and Kubernetes?** Cloud containers are lightweight packages that bundle an application with its dependencies, while Kubernetes is an orchestration platform that automates the deployment, scaling, and management of containers. **Can containers be used in hybrid or multicloud environments?** Yes, containers are highly portable and can run across on-premises, hybrid, and multi-cloud environments without requiring changes to the application. **What are the challenges of managing containers at scale?** At scale, challenges include orchestrating thousands of containers, ensuring security, managing networking, and maintaining visibility into performance and resource usage. **How do cloud containers support DevOps practices?** Containers provide consistent environments, enable rapid deployments, and integrate seamlessly with CI/CD pipelines, making them ideal for supporting DevOps workflows. **Are cloud containers secure for sensitive workloads?** Containers can be secure when paired with best practices such as image scanning, access controls, and runtime monitoring, although they rely on the shared host OS, which requires additional hardening. **What is the difference between containerization and serverless computing? **Containerization packages applications and dependencies into portable units, while serverless computing abstracts away infrastructure entirely, letting developers run functions on demand without managing servers. --- # Cloud Deployment Models | Concepts Source: https://www.couchbase.com/resources/concepts/cloud-deployment-models/ Last modified: 2024-12-09T13:35:36+00:00 ## What is a cloud deployment model? A cloud deployment model refers to the specific approach or strategy an organization uses to deploy and manage its cloud computing services. The five main cloud deployment models are **public cloud, private cloud, hybrid cloud, multicloud, and community cloud**. Hybrid clouds, multiclouds, and community clouds are all formed using public and private clouds. Each cloud deployment model has unique characteristics that impact its suitability for specific use cases or requirements, and each model also comes with its own set of advantages and challenges. The primary distinctions between different cloud deployment models are: **Infrastructure ownership and location -** The physical cloud components can be owned and operated by the cloud user, by a third party (or parties), or by a combination of the two. Likewise, the physical infrastructure can be located on the user’s premises, off premises, or distributed across locations. **Resource sharing -** Resources such as servers, storage, and networking can be shared among multiple users and organizations, or they can be dedicated to a single organization. **Scalability and elasticity -** Public clouds have more extensive resources, allowing them to offer high scalability (for long-term needs) and elasticity (for short-term needs). The scalability of private clouds depends on the capacity of the underlying infrastructure, so scaling often requires additional investments. **Security and compliance -** In public clouds, security measures are implemented by the cloud provider, and users share responsibility for securing their data and applications. Private clouds offer greater control over security measures and compliance requirements for organizations with strict security needs. **Cost and pricing model -** Public clouds typically follow a pay-as-you-go or subscription-based pricing model, offering cost-effective options based on resource usage. Private clouds require upfront investment in infrastructure and have ongoing maintenance and scaling costs. The rest of this page covers: - Types of cloud deployment models - Benefits and challenges of cloud deployment models - Comparison of cloud deployment models - Which cloud deployment model do you choose? - Key takeaways and additional resources Keep reading to learn more about cloud deployment models. ## Types of cloud deployment models ### Public cloud In a public cloud deployment model, cloud services are provided by third-party vendors over the internet. These services are available to the general public, and resources such as servers, storage, and applications are shared among multiple users. Public clouds offer scalability, flexibility, and cost-effectiveness but generally provide less control and customization compared to private clouds. The three biggest global cloud service providers (CSPs) are Amazon Web Services (AWS), Microsoft Azure, and Google Cloud. **AWS** is known for its extensive services portfolio and a large ecosystem of partners, third-party integrations, and developer tools. **Azure** is popular for its seamless integration with Microsoft products and services and for its comprehensive solutions for large industries such as healthcare, finance, manufacturing, and government. **Google Cloud** is known for its advanced data and analytics services, its embrace of open source, and its large and fast global network infrastructure. Couchbase’s NoSQL database is designed to run easily on AWS, Azure, and Google Cloud. At the basic level, a public cloud provides an infrastructure-as-a-service (IaaS), but managed cloud services also include Platform-as-a-Service (PaaS), Software-as-a-Service (SaaS), Storage-as-a-Service (STaaS), and Database-as-a-Service (DBaaS) such as Couchbase Capella™ DBaaS. ### Private cloud A private cloud deployment model involves hosting cloud services within a private network, typically owned and operated by a single organization. Private clouds offer greater control, security, and customization compared to public clouds. They’re especially suitable for organizations with strict security and compliance requirements or those handling sensitive data. ### Hybrid cloud A hybrid cloud deployment model combines elements of both public and private clouds. It allows organizations to leverage the scalability and cost-effectiveness of public clouds while retaining control over sensitive data and critical applications in private clouds. Hybrid clouds facilitate seamless data and application portability between environments. In a hybrid cloud architecture, certain workloads and data are hosted in private cloud infrastructure, while others are deployed in public cloud environments. These environments are interconnected through networking technologies, such as virtual private networks (VPNs) or dedicated connections, enabling secure communication and data exchange between public and private cloud resources. Organizations can use the scalability, flexibility, and cost-effectiveness of public clouds for less sensitive workloads while maintaining control, security, and compliance requirements in private cloud environments for mission-critical applications and sensitive data. ### Multicloud A multicloud deployment model uses multiple public cloud service providers to meet different business needs or to avoid vendor lock-in. In a multicloud architecture, organizations distribute their workloads across different CSPs such as AWS, Azure, and Google Cloud to leverage the relative strengths and capabilities of each provider to meet specific business requirements. Multicloud deployments can be managed centrally through orchestration and management tools, enabling organizations to optimize performance, scalability, cost, and resilience by selecting the most suitable cloud services from different providers for each workload or application. Multicloud architectures provide organizations with flexibility, redundancy, and vendor independence, allowing them to mitigate risks, avoid vendor lock-in, and maximize innovation and agility in the cloud. Hybrid clouds and multiclouds are often combined to gain the benefits of both, and this sometimes leads to confusion between the two. Here’s a deeper dive into a comparison of multicloud versus hybrid cloud. ### Community cloud In a community cloud deployment model, cloud infrastructure is shared among several organizations with common concerns such as regulatory compliance, industry-specific requirements, or shared missions. Community clouds enable collaboration and resource sharing while addressing specific needs within a particular community or industry. ## Benefits and challenges of cloud deployment models ### Public cloud #### Benefits **Cost-effective:**Public clouds operate on a pay-as-you-go model, allowing organizations to minimize upfront costs and only pay for the resources they use. This model is especially beneficial for startups and small businesses with limited budgets.**Scalability:**Public clouds offer virtually limitless scalability for both long-term and short-term needs. Organizations can easily scale up resources during peak demand and scale down during quieter periods. They can also quickly and easily adapt to changing needs as they grow without investing in additional infrastructure.**Accessibility:**Public cloud services are accessible from anywhere with an internet connection, enabling remote access to applications and data. This accessibility fosters collaboration among distributed teams and supports remote work arrangements. #### Challenges **Security concerns:**Public clouds share infrastructure among multiple users, raising concerns about data security and privacy. Organizations must rely on the cloud provider’s security measures and may face increased risks of data breaches or unauthorized access.**Limited control:**Users have limited control over the underlying infrastructure and are subject to the policies and limitations imposed by the cloud provider. This lack of control can be problematic for organizations with strict compliance requirements or specific customization needs.**Dependency on internet connectivity:**Public cloud services require reliable internet connectivity for access. Organizations may experience disruptions in service or reduced productivity in areas with poor internet connectivity. ### Private cloud #### Benefits **Greater control:**Private clouds offer organizations greater control over customization, security, and compliance compared to public clouds. This control is essential for organizations with specialized workloads or strict regulatory requirements.**Security and compliance:**Private clouds provide a dedicated environment for sensitive data and critical applications, reducing the risk of data breaches or compliance violations. This level of security and compliance assurance is particularly valuable for industries such as healthcare, finance, and government.**Performance:**Private clouds can offer better performance and reliability for mission-critical applications due to dedicated resources and infrastructure. This performance assurance ensures consistent access to applications and minimizes downtime. #### Challenges **Higher upfront costs:**Private clouds require significant upfront investment in infrastructure and ongoing maintenance, resulting in higher initial costs compared to public clouds. This investment may be prohibitive for small businesses or startups with limited budgets.**Limited scalability:**Private clouds may have limited scalability depending on the capacity of the underlying infrastructure. Scaling resources beyond the initial capacity may require additional investment in hardware upgrades or expansion.**Resource underutilization:**If capacity exceeds demand, private clouds may underuse their infrastructure, resulting in wasted resources and higher costs. Organizations must carefully plan resource allocation to optimize usage and minimize waste. ### Hybrid cloud #### Benefits **Flexibility:**Hybrid clouds offer organizations the flexibility to leverage the benefits of both public and private clouds, allowing them to deploy different workloads based on specific requirements. This flexibility enables organizations to optimize performance, cost, and security for each workload.**Data control:**Hybrid clouds enable organizations to retain control over sensitive data and critical applications by keeping them within private cloud environments. At the same time, organizations can leverage the scalability and cost-effectiveness of public clouds for less sensitive workloads.**Disaster recovery:**Hybrid clouds provide options for disaster recovery and business continuity by distributing workloads across multiple environments. Organizations can replicate data and applications across public and private clouds to ensure resilience and minimize downtime. #### Challenges **Complexity:**Managing multiple cloud environments can be complex and may require additional expertise and resources. Organizations must invest in robust management tools and processes to ensure seamless integration and interoperability between public and private clouds.**Integration challenges:**Integrating and managing workloads across different cloud environments can be challenging, requiring careful planning and coordination. Organizations must address compatibility issues, data synchronization, and security considerations to ensure smooth operation across hybrid environments.**Security concerns:**Hybrid clouds introduce additional security risks because data and applications are distributed across multiple environments. Organizations must implement comprehensive security measures and protocols to protect sensitive information and mitigate the risk of data breaches or cyberattacks. ### Multicloud #### Benefits **Avoid vendor lock-in:**Multicloud environments enable organizations to avoid vendor lock-in by distributing workloads across multiple cloud providers. This flexibility gives organizations greater leverage when negotiating pricing and services. It can also be easier for an organization to move workloads to a different CSP if they’re already up and running on a different cloud.**Best-of-breed solutions:**Multicloud environments enable organizations to leverage the strengths and capabilities of different cloud providers for specific workloads or requirements. By selecting the most suitable services from each provider, organizations can achieve superior performance, scalability, and innovation with the necessary level of security at the lowest cost.**Risk mitigation:**Multicloud environments reduce the risk of service disruptions and data loss by spreading workloads across multiple providers and environments. This redundancy ensures resilience and business continuity, even in the event of provider outages, service degradation, or security incidents. #### Challenges **Complexity:**Managing multiple cloud environments can be complex and may require additional tools, skills, and resources. Organizations must invest in robust management and orchestration capabilities to ensure seamless integration, interoperability, and governance across multicloud environments.**Integration challenges:**Integrating and managing workloads across different cloud environments can be challenging, requiring careful planning, coordination, and execution. Organizations must address compatibility issues, data synchronization, and security considerations to ensure smooth operation and consistent performance across environments.**Cost management:**Multicloud environments introduce additional complexity to cost management, as organizations must track and optimize expenses across multiple providers. Without proper monitoring and governance, organizations can incur unexpected costs from usage spikes, redundant services, or inefficient resource allocation. ### Community cloud #### Benefits **Collaboration:**Community clouds facilitate collaboration and resource sharing among organizations with common concerns or requirements, such as regulatory compliance or industry standards. By pooling resources and expertise, community members can achieve economies of scale and accelerate innovation.**Cost sharing:**Community clouds enable organizations to share infrastructure costs, resulting in potential cost savings for all members. This cost-sharing model allows organizations to access advanced technologies and services that may be cost prohibitive to deploy individually.**Customization:**Community clouds can be customized to meet the specific needs and requirements of the community, providing tailored solutions and services. This customization ensures that community members can address their unique challenges and achieve their business objectives effectively. #### Challenges **Limited scalability:**Community clouds may have limited scalability, depending on the capacity and resources shared among community members. Rapid growth or changes in demand may strain shared resources and impact performance.**Governance challenges:**Community clouds require robust governance mechanisms to manage shared resources and ensure fair and equitable access for all community members. Organizations must establish clear policies, procedures, and governance structures to promote collaboration, resolve conflicts, and maintain trust within the community.**Dependency on community dynamics:**The success of community clouds depends on the participation and engagement of community members. Changes in community dynamics or member priorities may affect the availability and quality of shared resources. ## Comparison of cloud deployment models The following chart gives you a quick way to compare the relative strengths and weaknesses of the various cloud deployment models. Three stars indicates a strong benefit - if a particular characteristic is extremely important to your deployment, you should seriously consider the three-star models. Two stars indicates that a model provides the benefit to a lesser degree or that only one component of the model provides a strong benefit. For example, the private cloud component of a hybrid cloud provides strong security and compliance, but the public cloud component doesn’t. A single star indicates that a model can provide that benefit to some degree, but it is not a primary strength. No stars indicates that a model is not a good choice to achieve that particular requirement. **Public cloud****Private cloud****Hybrid cloud****Multicloud****Community cloud** Cost-effectiveness Scalability Accessibility Greater control Security and compliance Performance Flexibility Data control Disaster recovery Avoid vendor lock-in Best-of-breed solutions Risk mitigation Collaboration Cost-sharing Customization To avoid possible confusion with terminology, it’s worth making a quick mention of the cloud computing model known as serverless architecture. Serverless architecture might sound like another way to say cloud computing, but it actually refers to a specific way of using the cloud to support distinct functions of microservices. Here’s a basic comparison of serverless computing versus cloud computing. ## Which cloud deployment model do you choose? Choosing the right cloud deployment model requires careful consideration of various factors such as security requirements, scalability needs, compliance considerations, budget constraints, and organizational preferences. Here’s a step-by-step evaluation process to help you make the right decision: 1. **Assess your business needs:** Understand your organization’s specific requirements, including security, compliance, performance, and budgetary constraints. 2. **Evaluate deployment models:** Compare the pros and cons of the different cloud deployment models, starting with the information we’ve provided. 3. **Consider workload characteristics:** Analyze the nature of your workloads, such as sensitivity of data, scalability and elasticity requirements, and regulatory compliance. 4. **Evaluate cost implications:** Assess the cost implications of each deployment model, including upfront investment, ongoing maintenance, and operational expenses. 5. **Consider integration and interoperability:** Evaluate how each deployment model integrates with your existing IT infrastructure and applications to ensure interoperability across environments. 6. **Assess security and compliance:** Consider security measures, compliance requirements, and data protection mechanisms offered by each deployment model. 7. **Factor in scalability and flexibility:** Determine the scalability and flexibility offered by each deployment model to accommodate short-term work spikes, future growth, and changing business needs. 8. **Evaluate vendor capabilities:** Assess the capabilities and reputation of cloud service providers offering each deployment model, including reliability, support, and service-level agreements. 9. **Consider organizational culture and expertise:** Evaluate your organization’s culture, expertise, and readiness for adopting cloud technologies, including staff training and change management considerations. 10. **Develop a cloud strategy:** Develop a comprehensive cloud strategy that aligns with your organization’s goals, addresses specific business needs, and ensures optimal use of cloud resources. ## Key takeaways and additional resources Cloud computing is a critical resource for organizations of all types and sizes because it offers many unique benefits in terms of scalability, flexibility, cost-effectiveness, and access to a wide range of services. By migrating to the cloud, organizations can scale their resources up or down based on demand, optimize costs through pay-as-you-go pricing models, and access advanced technologies and services without the need for upfront investment in infrastructure. Choosing the right cloud deployment model is crucial, as each has its own unique characteristics, advantages, and challenges. Public clouds provide cost-effective scalability and accessibility but may raise security concerns. Private clouds offer greater control and security but require higher upfront costs and may limit scalability. Hybrid clouds combine the benefits of public and private clouds, enabling flexibility and control but requiring careful management of integration and security. Multicloud deployments offer flexibility, redundancy, and vendor independence but require careful planning and management. Community clouds can facilitate collaboration and cost-sharing between organizations but may present governance and scalability challenges. Ultimately, organizations need to carefully assess their specific requirements, consider factors such as security, compliance, scalability, and cost, and choose the cloud deployment model that best aligns with their business objectives and IT needs. **These resources can help you make the right choice:** How to plan your cloud migration How the cloud migration process works Best practices for cloud optimization Should you take a cloud-native or cloud-agnostic approach? How to build a cloud-based application Hybrid cloud services and computing models Run Couchbase multicloud across AWS, Azure, and Google Cloud Choose from Couchbase deployment options --- # Elasticity in Cloud Computing: What It Is, Types, & More Source: https://www.couchbase.com/resources/concepts/cloud-elasticity/ Last modified: 2026-01-23T14:26:32+00:00 ## What is Elasticity in Cloud Computing? Cloud elasticity is the ability of a cloud computing system to adjust its resources to match current and future demands. This means that the system can increase its resources during high usage periods and decrease them when demand is low. This flexibility helps ensure that applications run smoothly without wasting resources, incurring unnecessary costs, or affecting end users. For example, an online store might experience a surge in traffic on Black Friday. With elastic cloud computing, the store’s system can handle the increased traffic by temporarily adding more servers. Once the traffic returns to normal, the extra servers are no longer needed and can be removed. These adjustments are made possible by technologies like virtualization and automation, which enable quick changes in resource allocation without manual intervention. Cloud elasticity is essential for maintaining performance and availability, especially in dynamic environments where workloads change rapidly. The rest of this page covers: - Elasticity vs. scalability? - How does cloud elasticity work? - Types of elasticity in cloud computing - Components of elastic computing - What is the benefit of elasticity in the cloud? - Use cases for cloud elasticity - Effective cloud elasticity practices - Conclusion and additional resources Keep reading to learn more about elasticity in cloud computing. ## Elasticity vs. Scalability? Elasticity and scalability are often used interchangeably but have distinct meanings. Elasticity refers to a system’s ability to adjust its resources based on current demand. This means adding or removing resources like CPU, memory, and storage in real time as the workload changes. Elasticity ensures that applications have the necessary resources during peak times and can scale down during low usage periods, optimizing performance and cost. Scalability, on the other hand, is the ability of a system to handle increased workload by adding resources, either vertically or horizontally. Vertical scaling (or scaling up) involves adding more power to an existing machine, such as upgrading the CPU or memory. Horizontal scaling (or scaling out) involves adding more machines to a system, like adding more servers to a web application. Adjustment of resources based on demand (often automatic or automated) Capability to handle increased workload by adding resources Real time, dynamic Pre-planned, can be a combination of both horizontal and vertical (i.e., multi-dimensional scaling) Add or remove resources as needed Add or remove resources by scaling up or out Scaling resources both up and down Prepares resources for future growth Variable workloads Anticipated growth or large projects Often automatic or requires automation tools Manual or automated, could involve infrastructure changes **Feature ****Elasticity****Scalability** **Definition** **Adjustment type** **Resource management** **Cost efficiency** **Use case** **Implementation** While scalability provides the capacity to grow, elasticity ensures that the system can dynamically adjust to real-time changes in demand. Scalability is often planned and implemented in advance, whereas elasticity is a more dynamic, real-time feature. ## How Does Cloud Elasticity Work? Cloud elasticity dynamically adjusts the amount of computational resources based on current demand. This process can rely heavily on automation and monitoring. Here are some examples of tools and techniques: **1. Real-Time Monitoring:** The system continuously monitors CPU, memory, network traffic, and other performance indicators, helping to determine when to adjust resources. **2. Automated Scaling:** Based on the monitored metrics, the system uses rules or machine learning algorithms to decide when to add or remove resources. For example, additional virtual machines or containers can be provisioned automatically if CPU usage exceeds a certain threshold. **3. Virtualization:** Virtualization technologies allow multiple virtual instances to run on a single physical server. This flexibility makes it easier to allocate and reallocate resources as needed without physical hardware changes and is often the basis of cloud providers like AWS, Azure, and Google Cloud. **4. Orchestration Tools:** Tools like Kubernetes manage the deployment, scaling, and operation of containerized applications. These tools help automate the process of adding or removing resources based on real-time demand. **5. Load Balancing:** Load balancers, or load balancing techniques like sharding, distribute incoming traffic across multiple servers to ensure no single server becomes overwhelmed. This helps maintain performance and availability as resources scale up or down. Through these mechanisms, cloud elasticity ensures that applications always have the right number of resources, improving performance and reducing costs by avoiding over-provisioning or under-provisioning. ## Types of Elasticity in Cloud Computing Cloud elasticity can be categorized into several types, each serving different needs and scenarios: **1. Horizontal Elasticity:** This involves adding or removing instances of resources, such as virtual machines or containers, to match the demand. For example, additional servers can be added to a Couchbase cluster to handle the load. When the traffic decreases, these servers can be decommissioned. Horizontal elasticity is commonly used in scenarios where the workload can be distributed across multiple instances. **2. Vertical Elasticity:** This type of elasticity focuses on increasing or decreasing the capacity of a single resource, such as upgrading the CPU, memory, or storage of a virtual machine to meet the increased demand. Vertical elasticity is useful when scaling out is impossible or when the application requires more powerful individual resources rather than more instances. **3. Temporal Elasticity:** This involves scheduling resources based on predictable usage patterns. For example, a business might provision extra resources during business hours and scale down during off-hours. Temporal elasticity helps optimize resource usage and cost based on time-based patterns. **4. Workload Elasticity:** This type is specific to the nature of the workload. For example, batch processing jobs might require significant resources during execution but none when idle. Elasticity can adjust resources specifically for these job types, ensuring efficiency. **5. Rapid Elasticity:** This refers to the ability to quickly scale resources up or down to match real-time demand. It requires complete automation and real-time monitoring to adjust resources. By applying these types of elasticity, cloud systems can be more flexible, responsive, and cost-effective, catering to various workloads and business requirements. ## Components of Elastic Computing Elastic computing relies on several key tools. Some examples include: **Virtualization:**Tools like VMware and Hyper-V enable multiple virtual instances to run on a single physical server, providing flexibility in resource allocation without needing physical hardware changes.**Automation and Orchestration Tools:**Kubernetes and Docker manage the deployment, scaling, and operation of containerized applications.**Real-Time Monitoring:**Tools like Prometheus and Datadog continuously monitor system metrics such as CPU usage, memory usage, and network traffic.**Load Balancers:**NGINX and HAProxy distribute incoming traffic across multiple servers, ensuring no single server is overwhelmed and maintaining performance and availability. For load balancing, Couchbase uses a built-in hashing technique.**Resource management Policies:**Auto-scaling tools provided by AWS Auto Scaling, Azure Autoscale, and Google Cloud Autoscaler help guide automated scaling decisions based on predefined rules, ensuring efficient resource adjustments. ## What is The Benefit of Elasticity in The Cloud? By adjusting resources based on demand, elasticity ensures that applications have the necessary resources during peak times and scale down when demand is low, reducing waste and saving money. **1. Cost efficiency:** Elasticity minimizes costs by scaling resources up or down as needed, avoiding the expense of over-provisioning or the performance issues of under-provisioning. **2. Improved performance:** By dynamically adjusting resources, elasticity helps maintain optimal latency, even during sudden spikes in usage, ensuring a consistent user experience. **3. Scalability and flexibility:** Elasticity allows for quick response to changing workloads, making it easier to handle growth and adapt to new business needs. **4. Cloud spend management:** Businesses can track and manage their cloud spend more effectively, aligning resource usage with budget constraints. Overall, the benefits of elasticity in cloud computing include enhanced efficiency, performance, cost management, and cloud spend, making it a vital feature for modern cloud computing environments. ## Use Cases for Cloud Elasticity Cloud elasticity can be helpful for various applications and industries. Here are some common use cases: **E-commerce Platforms:**Retailers like Tesco experience fluctuating traffic, especially during sales events or holidays. Elasticity allows these platforms to scale up resources during peak periods and scale down afterward, ensuring smooth operations and cost savings.**Streaming Services:**Video and music streaming services see varying demand based on time of day and new content releases. Elasticity helps maintain seamless streaming quality by adjusting resources to match user demand.**Software as a Service (SaaS):**Elasticity allows SaaS providers to handle varying user loads efficiently. For example, LinkedIn can dynamically allocate resources to manage increased user activity during business hours.**Financial Services:**Banks and trading platforms require high performance during market hours and can scale down after. Elasticity ensures they meet these demands without over-provisioning.**Healthcare Systems:**Elasticity helps manage varying loads in telemedicine platforms, ensuring reliable service during peak usage times, such as public health emergencies. These use cases demonstrate how cloud elasticity enhances performance, cost efficiency, and scalability across diverse industries. ## Effective Cloud Elasticity Practices For effective cloud elasticity, consider these key strategies: **Automate Scaling:**Use tools like AWS Auto Scaling, Azure Autoscale, and Google Cloud Autoscaler to automatically adjust resources based on demand. Automation reduces manual intervention and ensures timely scaling.**Monitor Performance:**Monitor system performance using tools like Prometheus, Datadog, and CloudWatch. Real-time insights help make informed scaling decisions and identify potential bottlenecks.**Set Clear Policies:**Define scaling policies and thresholds that align with your application’s needs. Establish parameters for when to scale up or down to ensure resources are used efficiently.**Optimize Costs:**Regularly review and adjust your resource usage to avoid over-provisioning. Cost management tools like AWS Cost Explorer, Azure Cost Management, and Google Cloud’s cost tools can help you track expenses and identify savings opportunities.**Test Scaling Scenarios:**Regularly test your scaling configurations to ensure they work as expected under different load conditions. This helps in validating the reliability and effectiveness of your elasticity setup. These strategies will enhance the efficiency, performance, and cost-effectiveness of your cloud infrastructure, making the most out of cloud elasticity. ## Conclusion and Additional Resources Cloud elasticity is essential for optimizing resource usage and managing costs in dynamic computing environments. By understanding the differences between elasticity and scalability, applying key tools, and implementing correct strategies, businesses can ensure their applications perform reliably and efficiently. For further reading and tools to help implement cloud elasticity, check out these resources: --- # Container Orchestration | Concepts Source: https://www.couchbase.com/resources/concepts/container-orchestration/ Last modified: 2026-02-09T08:50:55+00:00 ## What is container orchestration? To understand what container orchestration is, let’s use an example. Imagine you have a website that needs to handle different tasks, like user logins, content display, and payment processing. Each task can be packaged into individual containers. Now, instead of manually starting and stopping these containers or worrying about the underlying infrastructure and how they communicate with each other, container orchestration tools (like Kubernetes) automatically manage this for you. They ensure all containers are running correctly, can scale up if more users come in, and even restart any that fail without you lifting a finger. This resource will further expand on how container orchestration works, what it’s used for, its benefits and challenges, and some popular tools you can use to manage and automate containerized applications. - How does container orchestration work? - What is container orchestration used for? - Container orchestration benefits - Container orchestration challenges - Container orchestration tools - Conclusion and additional resources ## How does container orchestration work? Container orchestration automates the management of containerized applications to ensure they run efficiently and reliably. Here’s a more detailed look at how it operates: When you deploy an application, you provide the orchestration tool with a configuration file that specifies the number of containers needed, their resource requirements, and how they should be distributed. The tool then handles the deployment by launching containers on your servers according to these instructions. As traffic or usage changes, the orchestration tool adjusts the number of containers. For example, if your application experiences a sudden increase in users, the tool automatically starts more containers to handle the load. When the demand decreases, the number of containers is scaled down to save resources. The tool also manages networking between containers, ensuring they can communicate with each other and with external services properly. It handles tasks like service discovery (finding where other containers are) and load balancing (distributing traffic evenly across containers). The orchestration tool continuously monitors the containers to maintain your application’s health. If a container fails or encounters issues, the tool automatically restarts or replaces it to keep the application running smoothly. Overall, container orchestration simplifies the deployment, scaling, and maintenance of containerized applications, making it easier to manage complex systems. ## What is container orchestration used for? Container orchestration is used to manage and automate the deployment, scaling, and operation of containerized applications. Here’s how it’s commonly applied: **Managing microservices**: In a microservices architecture, applications are divided into smaller, independent services. Container orchestration tools manage these services, ensuring they’re deployed, scaled, and maintained efficiently. For example, if one microservice experiences high traffic, the orchestration tool can automatically scale up the containers running that service to handle the increased load. **Scaling applications:** Container orchestration automatically adjusts the number of container instances based on demand. For instance, during a sale on an e-commerce site, the orchestration tool can increase the number of containers to handle the spike in traffic and then scale down when traffic returns to normal. **Automating deployment:** Orchestration tools streamline the deployment process, allowing you to deploy updates or new versions of applications with minimal manual intervention. For example, when a new version of an application is released, the orchestration tool can automatically roll out the update across all containers, ensuring a smooth transition. **Load balancing:** These tools distribute incoming traffic evenly across containers to prevent any single container from becoming overwhelmed. For example, a container orchestration tool might balance requests between several web application instances to ensure all users experience consistent performance. **Maintaining high availability**: Container orchestration helps ensure applications remain available and resilient. If a container fails, the orchestration tool can automatically restart or replace it, minimizing downtime and maintaining service continuity. **Managing resource utilization:** Orchestration tools optimize the use of resources across a cluster of servers. They allocate resources based on current demand and ensure containers are efficiently distributed to avoid overloading any single server. **Simplifying configuration and networking:** Orchestration tools handle the configuration and networking of containers, ensuring that they can communicate with each other as needed. This ability simplifies the process of setting up complex applications consisting of multiple interdependent containers. ## Container orchestration benefits Container orchestration offers several key benefits that make managing applications easier and more efficient. These include: **Automation:**It automates the deployment, scaling, and management of containers, saving time and reducing the need for manual intervention.**Scalability:**Orchestration tools automatically adjust the number of containers based on demand, ensuring that applications can handle more traffic when needed and reduce resources when traffic is low.**High availability:**If a container fails, the orchestration tool quickly restarts or replaces it, helping to keep applications running with minimal downtime.**Security:**Orchestration tools help manage security by isolating containers from one another and enforcing policies that control access to sensitive data, reducing the risk of security breaches.**Efficiency and consistency:**Container orchestration optimizes the distribution of containers across servers, ensuring resources are used effectively. It also ensures applications run consistently across different environments (development, testing, and production), simplifying the process of moving applications between them without issues. ## Container orchestration challenges Container orchestration offers many benefits, but it also comes with challenges. These include: **Complexity:**Setting up and managing an orchestration system can be complex. For example, configuring Kubernetes to handle different workloads and services requires a deep understanding of its components and their interaction. This complexity can lead to a steep learning curve and increased operational overhead.**Resource overhead:**Orchestration tools consume system resources. For instance, running Kubernetes requires additional CPU and memory to manage the orchestration. This overhead needs to be balanced with the benefits of orchestration, as it can impact the performance of your applications if not managed properly.**Security concerns:**While orchestration tools enhance security through isolation and policy enforcement, they also introduce new security considerations. For example, a misconfigured Kubernetes cluster might expose sensitive data or services to unauthorized access. Ensuring the security of the orchestration system itself is crucial to protecting your applications.**Monitoring and troubleshooting:**Managing numerous containers and their interactions can be challenging. For example, if a web service fails, pinpointing the exact container or configuration issue that caused the problem requires effective monitoring and specialized tools. Without these tools, identifying and resolving issues can be time-consuming and difficult.**Integration complexity:**Integrating orchestration tools with existing systems can be tricky. For instance, connecting Kubernetes with your current CI/CD pipeline or legacy systems might require custom solutions and careful planning to ensure smooth operation and compatibility. Addressing these challenges is crucial for successfully implementing and maintaining container orchestration, ensuring you can fully leverage its benefits while mitigating potential issues. ## Container orchestration tools Several tools are available to help manage and automate containerized applications. Each tool has its strengths and is suited to different needs and environments. Here are some of the most popular container orchestration tools: **Kubernetes:** Often abbreviated as K8s, Kubernetes is the most widely used container orchestration platform. It provides a robust set of features for automating the deployment, scaling, and management of containerized applications. For example, Kubernetes can manage a large number of containers across multiple servers, ensuring that applications are resilient and can scale according to demand. **Docker Swarm:** A native clustering and orchestration tool that simplifies the deployment and management of Docker containers in a cluster of machines. Docker Swarm integrates seamlessly with Docker, making it a good choice if you already use it and need basic orchestration capabilities. **Apache Mesos:** A distributed systems kernel that can manage resources across a cluster of machines. It can work with containerized and non-containerized applications and supports a variety of orchestration frameworks, including Marathon, for managing containers. Mesos is known for its scalability and flexibility in handling large clusters. **Amazon Elastic Container Service (Amazon ECS):** A fully managed container orchestration service provided by Amazon Web Services (AWS). It integrates with other AWS services and simplifies running containerized applications on the AWS cloud. ECS offers features like automatic scaling and load balancing, making it a popular choice for AWS users. **Google Kubernetes Engine (GKE):** A managed Kubernetes service offered by Google Cloud that provides a fully managed environment for running Kubernetes clusters, with built-in support for scaling, monitoring, and upgrading. GKE is well suited for users who want to leverage Google’s cloud infrastructure and Kubernetes expertise. **Red Hat OpenShift:** An enterprise Kubernetes platform developed by Red Hat that includes additional features and tools for application development, such as a developer-friendly interface and integrated CI/CD pipelines. OpenShift is designed to provide a secure and scalable environment for enterprise applications. Each of these tools offers unique features and benefits, and the best choice depends on your specific needs, existing infrastructure, and the scale of your containerized applications. ## Conclusion and additional resources Container orchestration plays a crucial role in managing modern applications by automating container deployment, scaling, and maintenance. It helps ensure that applications run smoothly, handle varying traffic levels, and remain resilient despite problems. By simplifying complex tasks and optimizing resource use, container orchestration tools make it easier to manage and operate containerized applications effectively. For those looking to dive deeper into container orchestration, there are many valuable resources available: **Kubernetes documentation:**The official Kubernetes documentation offers comprehensive guides and tutorials for getting started and mastering Kubernetes.**Docker Swarm overview:**Learn more about Docker Swarm, its features, and how it integrates with Docker.**Apache Mesos documentation:**Explore the official documentation for Apache Mesos, including setup and management.**Amazon ECS documentation:**AWS provides detailed information on using ECS for container management.**Google GKE overview:**Discover how to use GKE to manage Kubernetes clusters on Google Cloud.**Red Hat OpenShift documentation:**Red Hat offers guides and tutorials for using OpenShift in enterprise environments. To learn more about concepts related to container orchestration from Couchbase, you can visit our blog and concepts hub. --- # Container Security | Concepts Source: https://www.couchbase.com/resources/concepts/container-security/ Last modified: 2026-02-09T08:49:00+00:00 ## What is container security? Container security refers to protecting container-based applications and their infrastructure from threats. Containers are units of software that bundle code and its dependencies, offering consistency across different environments. They allow for faster deployment, easier scaling, and improved portability, making them essential for modern DevOps and cloud-native systems. To ensure container security, a range of measures are needed throughout the container’s lifecycle, including development, deployment, and runtime. This page covers: - Why is container security necessary? - Container security threats - Container security tools - Container security challenges - Container security best practices - Key takeaways and related resources ## Why is container security necessary? Containers provide security advantages by separating applications, but they also create new pathways for attackers to exploit. The risks include: **Increased attack surface:**Containerization often leads to a larger number of smaller deployments compared to traditional monolithic applications. This creates a wider surface for malicious attackers to exploit.**Vulnerability in the software supply chain:**Container images are often built from layers, and vulnerabilities in any layer can introduce risk. Additionally, malicious attackers may target container registries to inject vulnerabilities into widely used images.**Misconfiguration risks:**Improper configurations of container images and runtime environments can create security vulnerabilities. For instance, containers with unnecessary privileges or overly permissive network policies become prime targets for attackers.**Runtime exploits:**Even secure images can be exploited at runtime if attackers gain access to the container host or container orchestration platform. A successful attack on a containerized application can have serious consequences. Attackers can gain access to sensitive data, disrupt critical services, or launch further attacks on your infrastructure. We’ll discuss more about what these attacks entail in the next section. ## Container security threats There are a variety of ways malicious attackers can exploit vulnerabilities in containerized environments. These threats can target different stages of the container lifecycle from image creation to runtime. Here’s a breakdown of some common threats to containers: **Vulnerability exploits:**Traditional software vulnerabilities still pose a significant risk in containers. Attackers can take advantage of unpatched vulnerabilities within container images or the underlying host system to gain unauthorized access to containers or the entire host machine. They can achieve this through remote code execution (RCE) exploits.**Image hijacking:**Container registries, which store container images, can become targets for attackers. Malicious attackers can inject malware or vulnerabilities into the images, and when developers unknowingly pull and deploy the compromised images, their applications become vulnerable.**Denial-of-service (DoS) attacks:**Containers with improperly configured resource limitations are susceptible to DoS attacks. Attackers can exploit this weakness by launching attacks that consume excessive resources within the container, impacting performance or even crashing the container and potentially affecting other applications running on the same host.**Privilege escalation:**Containers should ideally run with the least privilege principle in mind, but misconfigurations can lead to containers having unnecessary privileges. Attackers can exploit these elevated privileges and potentially gain control of the entire host system.**Container escape:**In some cases, attackers can exploit vulnerabilities in the container runtime environment or the container itself to break free from the isolation boundaries. This allows them to access the host system or other containers running on the same host, potentially compromising the entire environment. By understanding these threats and implementing robust security measures throughout the container lifecycle, organizations can significantly reduce the attack surface and protect their containerized applications. ## Container security tools Several container security tools can be used to address different aspects of securing your containerized environment. Here’s a breakdown of some recommended tools categorized by their functionality: ### Image scanning tools **Aqua Trivy:**Open source vulnerability scanner for container images that identifies known vulnerabilities and misconfigurations.**Snyk Container:**Cloud-based vulnerability scanner that detects vulnerabilities in container images and suggests remediation steps. ### Runtime security tools **Sysdig Secure:**Provides runtime threat detection and protection for containers and Kubernetes environments.**Falco:**Open source runtime security tool that detects and responds to anomalous activity within containers. ### Container registries **Notary:**Open source tool that enables trust and transparency in container image distribution by providing image signing and verification capabilities.**Harbor:**Enterprise-grade container registry that offers built-in vulnerability scanning, image signing, and access control features. ### Container orchestration tools **NeuVector:**Provides comprehensive security for containerized environments, including vulnerability scanning, workload protection, and network security.**CIS Kubernetes Benchmark:**A set of best practices for securing Kubernetes clusters that aids in managing configurations and reducing security risks. The tools you choose will depend on your specific needs and environment. Larger and more complex deployments might require a more comprehensive platform like Aqua Trivy or Sysdig Secure. Open source tools offer a cost-effective option but may require more technical expertise to implement and maintain. ## Container security challenges Now that you’re aware of potential threats and tools you can use to mitigate threats let’s discuss some obstacles you may face when securing your containerized environments: **Insecure secrets management:**Containerized applications often rely on sensitive data like API keys and passwords. Storing these secrets within the container image or using inadequate access controls increases the risk that they’ll be stolen and used to compromise the application.**Data leakage:**Insecure container configurations or runtime environments can lead to data leakage or unauthorized access to sensitive information stored within containers.**DevSecOps integration:**Integrating security practices throughout the development lifecycle can be challenging. Developers might not have the required security expertise, and security teams may struggle to keep pace with the rapid development cycles associated with containers.**Monitoring complexity:**Monitoring a large number of containerized deployments for suspicious activity can be complex. Identifying and responding to potential threats in a timely manner requires robust monitoring tools and skilled personnel.**Compliance challenges:**Organizations must comply with various industry regulations and legal requirements regarding data security. Implementing and maintaining container security controls that meet these compliance standards is an ongoing process. ## Container security best practices Container security challenges highlight the importance of a comprehensive container security strategy. Implementing container security best practices throughout the container lifecycle is crucial for mitigating challenges and ensuring the secure operation of your containerized environments. Here are some key practices to follow: ### Secure image management **Use trusted base images:**Start with official or trusted base images from reputable sources like Docker Hub to minimize the risk of using images with known vulnerabilities.**Image scanning:**Implement automated vulnerability scanning tools to regularly scan container images for known vulnerabilities and security threats before deployment.**Image signing:**Digitally sign container images to verify their authenticity and integrity, ensuring only trusted images are deployed in production environments. ### Harden container hosts **Apply security updates:**Regularly update and patch container hosts, including the operating system, kernel, and container runtime, to address known security vulnerabilities and mitigate potential risks.**Implement host security controls:**Configure host-level security controls, such as firewalls, SELinux profiles, and least privilege access, to restrict access and minimize the attack surface. ### Enforce least privilege **Container privileges:**Run containers with the least privileges required to perform their intended tasks. This minimizes the risk of privilege escalation attacks and unauthorized access to host resources.- Role-based access control (RBAC): Implement RBAC policies based on the principle of least privilege to restrict user and application access to sensitive resources within containerized environments. ### Network segmentation and isolation **Container network policies:**Define policies to control traffic and isolate container communication based on application requirements. This reduces the risk of lateral movement and unauthorized access.**Container firewalls:**Deploy container-aware firewalls or network security solutions that monitor and control network traffic between containers and external networks and enforce security policies and traffic filtering rules. ### Implement secure configuration **Container runtime security:**Configure container runtimes with secure defaults and enable security features such as seccomp or SELinux to enforce runtime restrictions and protect against malicious activities.**Secure container orchestration:**Securely configure container orchestration platforms (e.g., Kubernetes) by enabling authentication, authorization, encryption, and network policies to control access and secure communication between cluster components. ### Continuous monitoring and logging **Container logging:**Enable logging for containers to capture runtime events, audit trails, and security-related activities. This will provide visibility into container behavior and potential security threats.**Security monitoring:**Enable timely incident response and remediation by implementing continuous security monitoring tools that detect anomalous behavior, suspicious activities, and potential threats within containerized environments. ## Key takeaways and related resources Although containers provide many benefits such as faster deployment and higher portability, they also make it easier for bad actors to gain access via multiple entry points. To secure your containerized environment, it’s important to deploy image scanning tools, runtime security tools, container orchestration tools, and container registries. It’s also necessary to follow best practices such as using trusted base images, regularly updating and patching container hosts, and implementing RBAC policies. Explore these resources to learn more about containers: Couchbase Cloud-Native Database Introduction to Couchbase Autonomous Operator Cloud and Container Deployment Overview Frequently Asked Questions About Couchbase Containers Certified Kubernetes Platforms Red Hat Partner Page Complimentary Platforms: Running Couchbase Capella and Red Hat OpenShift To learn more about concepts related to containers and security, explore our hub. --- # Data Architecture | Concepts Source: https://www.couchbase.com/resources/concepts/data-architecture/ Last modified: 2025-01-24T10:42:45+00:00 ## What is data architecture? Data architecture is the blueprint for how data is organized and managed within an organization, guiding the development, deployment, and maintenance of data systems to ensure they meet business needs. It involves how data is collected, stored, managed, processed, and accessed and provides a clear roadmap for managing data assets, ensuring they are reliable, accessible, and valuable. This resource will cover data architecture components, the differences between data architecture and data modeling, and data architecture patterns and principles. Lastly, we’ll review jobs and titles typically involved with data architecture creation and management. Continue reading to learn more. - Why is data architecture important? - Data architecture vs. data modeling - Data architecture components - Data architecture patterns - Modern data architecture - Data architecture principles - Roles in data architecture - Conclusion and additional resources ## Why is data architecture important? Data architecture is critically important for several reasons, as it serves as the foundation for managing and utilizing data effectively within an organization. Here’s why data architecture is so essential: **Alignment with business goals:** It ensures that data systems support an organization’s strategic objectives. **Efficiency:** It optimizes the storage, retrieval, and processing of data, making systems more efficient. **Scalability:** It allows the system to grow and handle increasing amounts of data without performance degradation. **Security and compliance:** It protects sensitive data and ensures compliance with regulations like GDPR or HIPAA. **Data quality and consistency:** It promotes high-quality, reliable data you can trust for analysis and decision making. ## Data architecture vs. data modeling Data architecture and data modeling are closely related concepts in data management, but they serve different purposes and have distinct roles within an organization. Data architecture is about creating a blueprint for the entire data ecosystem that serves as a strategic guide for aligning data management practices with business objectives. Data modeling is about creating a blueprint for a specific dataset. A data modeling blueprint, often represented visually through entity-relationship (ER) diagrams, serves as a foundation for database design and development. Here’s a comparison of data architecture and data modeling that highlights the main differences: Aspect | Data Architecture | Data Modeling | |---|---|---| Definition | High-level blueprint/framework for managing data across an organization. | Process of creating detailed representations of data structures within a system. | Scope | Broad and strategic, covering the entire data ecosystem. | Narrow and tactical, focused on specific data elements and relationships. | Components | Includes data models, data flows, storage solutions, governance, security, and integration. | Includes conceptual, logical, and physical data models. | Purpose | To provide a strategic framework for data management aligned with business goals. | To define the structure of data within a particular system or application. | Outcome | A coherent data environment that supports efficiency, security, and analytics. | Details models guiding the design and implementation of databases and data systems. | Levels of Abstraction | Higher-level, dealing with overall data landscape and interactions. | Lower-level, focusing on specific data structures and organization. | Interdependence | Guides and informs data modeling by setting standards and frameworks. | Provides detailed designs that support the broader data architecture. | Key Focus Areas | Data management, governance, security, scalability, integration, and business alignment. | Entity-relationship design, normalization, indexing, and performance optimization. | Examples | Designing an enterprise-wide data architecture with data lakes, warehouses, and integration layers. | Creating a logical data model for a CRM system defining entities and relationships. | **Table 1:** *Data architecture vs. data modeling* You can see how data modeling is implemented in Couchbase here. ## Data architecture components Data architecture components are the building blocks that define how data is collected, stored, managed, processed, and accessed across an organization. These components work together to create a coherent and efficient data environment that supports the organization’s goals. Here are the key components of data architecture: ### Data sources **Definition:**The origins of data, including systems, applications, databases, files, and external sources.**Examples:**Transactional databases, CRM systems, ERP systems, IoT devices, social media, and third-party data providers. ### Data storage **Databases:**Systems for structured data storage, typically relational (SQL) or non-relational (NoSQL).**Data warehouses:**Centralized repositories for storing aggregated and historical data for analysis.**Data lakes:**Storage systems with large volumes of raw, unstructured, or semi-structured data in their native format.**Cloud storage:**Remote storage solutions provided by cloud services like Amazon Web Services (AWS), Microsoft Azure, or Google Cloud Platform (GCP). ### Data integration **ETL/ELT (extract, transform, load/extract, load, transform):**Processes that move and transform data from sources into target systems like data warehouses.**Data pipelines:**Automated workflows that manage the flow of data from one system to another.**APIs (application programming interfaces):**Interfaces that allow different systems to communicate and share data. ### Data processing and analytics **Batch processing:**Processing large volumes of data in bulk at scheduled intervals.**Real-time processing:**Continuous processing of data as it’s generated or received, often used for real-time analytics.**Data analytics platforms:**Tools and systems for analyzing and visualizing data, such as business intelligence (BI) platforms, data science tools, and machine learning models. ### Data governance **Data policies and standards:**Guidelines and rules for how data should be managed, including data quality, data stewardship, and data ownership.**Data catalogs:**Systems that organize and manage metadata, providing a searchable inventory of available data assets.**Data lineage:**Tracking the origin, movement, and transformation of data throughout its lifecycle. ### Data security **Access controls:**Mechanisms to manage who can access or modify data, often implemented through roles and permissions.**Data encryption:**Techniques to protect data by converting it into a secure format during storage and transmission.**Compliance and auditing:**Ensuring data management practices adhere to regulations such as GDPR and HIPAA and performing regular audits to maintain security. ### Data quality management **Data cleansing:**Processes to correct or remove inaccurate, incomplete, or inconsistent data.**Data validation:**Techniques to ensure data meets predefined quality criteria before storing or processing.**Master data management (MDM):**Practices to create a single, consistent view of key business entities like customers, products, and suppliers. ### Metadata management **Metadata:**Data about data, providing context such as definitions, relationships, usage, and history.**Metadata repositories:**Systems that store and manage metadata, enabling better data discovery and governance. ### Data access **Query tools:**Interfaces that allow users to interact with and retrieve data, typically through SQL or other query languages.**APIs:**Interfaces for programmatic access to data, enabling integration with other systems or applications.**BI tools:**Platforms that provide dashboards, reports, and analytics for end users to explore and analyze data. ### Data architecture design and management **Data models:**Visual representations of data structures, including conceptual, logical, and physical models that define how data is organized and related.**Data flows:**Diagrams and models that show how data moves through the system, from sources to storage, processing, and final use.**Data architecture frameworks:**Methodologies and best practices for designing and managing data architecture, such as TOGAF (The Open Group Architecture Framework). ### Data lifecycle management **Data retention policies:**Guidelines for how long data should be kept before it’s archived or deleted.**Data archiving:**Processes for moving inactive or historical data to storage systems optimized for long-term retention.**Data deletion:**The removal of data that’s no longer needed, often as part of regulatory compliance or data lifecycle management. ### Data virtualization **Definition:**An approach that allows users to access and query data without knowing where it’s physically stored or how it’s formatted.**Tools:**Platforms that abstract data from multiple sources and present it in a unified view for analysis and reporting. ### Data architecture governance **Definition:**The oversight and management of the entire data architecture to ensure it aligns with business goals and IT strategy.**Roles and responsibilities:**Data architects, data stewards, and data governance teams are typically responsible for maintaining and evolving the data architecture. ## Data architecture patterns Data architecture patterns are standardized, reusable solutions to common data management challenges. These patterns provide best practices for organizing, processing, and managing data in different scenarios, helping organizations design efficient and scalable data architectures. Here are some of the data architecture patterns: ### Layered data architecture **Overview:**This pattern organizes data into distinct layers, each with a specific role. Common layers include data ingestion, storage, processing, and presentation.**Use cases:**Enterprise data warehouses, data lakes, and complex data systems.**Benefits:**Separation of concerns, easier maintenance, and scalability.**Layers:** 1.**Data source layer:**Collects raw data from various sources. 2.**Data integration layer:**ETL/ELT processes transform and integrate data. 3.**Data storage layer:**Stores processed data in databases, data warehouses, or data lakes. 4.**Data processing layer:**Analyzes and processes data, often using analytics or machine learning. 5.**Data presentation layer:**Provides data to end users through dashboards, reports, or APIs. ### Data lake pattern **Overview:**A data lake stores large volumes of raw, unstructured, or semi-structured data in its native format. Data is typically ingested from various sources and later processed and analyzed.**Use cases:**Big data environments, IoT data storage, and machine learning.**Benefits:**Flexibility in storing diverse data types, scalability, and support for advanced analytics.**Components:** 1.**Raw data zone:**Stores data in its original format. 2.**Processed data zone:**Holds data that’s been cleaned and transformed for analysis. 3.**Analytics zone:**Where data is used for reporting, analytics, and machine learning. ### Data warehouse pattern **Overview:**A data warehouse is a centralized repository that stores historical and aggregated data for reporting and analysis. Data is typically structured and comes from multiple sources.**Use cases:**Business intelligence, reporting, and historical data analysis.**Benefits:**High performance for analytical queries, data consistency, and support for complex reporting.**Components:** 1.**Staging area:**Temporary storage for data before it’s cleaned and transformed. 2.**Integration layer:**Where data is transformed, cleaned, and integrated. 3.**Presentation layer:**Where data is optimized for query performance and used by BI tools for reporting and analysis. ### Event-driven architecture (EDA) **Overview:**In EDA, data flow is triggered by events, such as changes in data or user actions. Data is processed in real time or near-real time as events occur.**Use cases:**Real-time analytics, fraud detection, and IoT data processing.**Benefits:**Low latency, real-time processing, and decoupled systems.**Components:** 1.**Event producers:**Systems or applications that generate events. 2.**Event stream:**Middleware that transmits events, often using message queues or streaming platforms like Kafka. 3.**Event consumers:**Systems that process and react to events in real time. ### Microservices data architecture **Overview:**In a microservices architecture, each service manages its own data, often in a decentralized manner. Services communicate through APIs or messaging systems.**Use cases:**Highly scalable and flexible applications, especially in cloud environments.**Benefits:**Scalability, fault isolation, and flexibility in technology choice.**Components:** 1.**Service-specific databases:**Each microservice has its own database or data store. 2.**API gateway:**Manages communication between services and external clients. 3.**Event bus or messaging queue:**Facilitates communication between services. ### Data mesh **Overview:**A decentralized approach to data architecture where data ownership is distributed across different domains or teams. Each domain is responsible for its own data, treating it as a product.**Use cases:**Large organizations with multiple teams or departments.**Benefits:**Scalability, autonomy for teams, and improved data quality.**Components:** 1.**Domain-oriented data ownership:**Each team or domain manages its own data. 2.**Data-as-a-Product (DaaP):**Emphasis on treating data like a product with defined owners, quality standards, and lifecycle management. 3.**Self-serve data platform:**Provides tools and infrastructure for domains to manage and share data. ### Data fabric **Overview:**A unified architecture that provides a consistent, integrated view of data across the organization, regardless of where the data is stored or processed.**Use cases:**Organizations with complex, distributed data environments.**Benefits:**Enhanced data access, automation of data management tasks, and improved data governance.**Components:** 1.**Data integration layer:**Seamlessly connects data across various sources. 2.**Knowledge graph:**A system that represents relationships between different data entities. 3.**Orchestration layer:**Manages data flow and transformation across different systems. ## Modern data architecture Modern data architecture refers to approaches and frameworks for managing data in a way that meets the complex demands of today’s data-driven world. These architectures support diverse data types, enable real-time processing, and provide flexibility for scaling and integrating with new technologies. Below are two examples of modern data architectures: ### Lambda architecture **Overview:**Combines batch processing and real-time processing in a single architecture. It processes data streams in real time while also storing the data for batch processing.**Use cases:**Systems requiring both real-time data processing and historical data analysis.**Benefits:**Flexibility, handles high data volumes, and supports real-time and batch analytics.**Components:** 1.**Batch layer:**Stores and processes large volumes of historical data. 2.**Speed layer:**Handles real-time data processing. 3.**Serving layer:**Combines results from the batch and speed layers for querying and analysis. ### Kappa architecture **Overview:**A simplified version of Lambda architecture, focusing only on stream processing for real-time and batch data. It eliminates the batch layer, using a single pipeline for all data processing.**Use cases:**Real-time analytics with no need for complex batch processing.**Benefits:**Simplified architecture, reduced complexity, and faster development.**Components:** 1.**Stream processing:**All data is processed as it arrives in a continuous stream. 2.**Unified pipeline:**A single system handles all data processing tasks. ## Data architecture principles Data architecture principles are the guiding lights that shape how data is managed, stored, processed, and utilized within an organization. These principles ensure data consistency, accessibility, and alignment with business objectives. Here are the main data architecture principles: ### Core data architecture principles While the specific principles can vary based on organizational needs and industry, some fundamental principles include: #### Foundational principles **Data as a strategic asset:** Recognizes data as a valuable resource that drives business decisions. **Data governance:** Establishes clear ownership, accountability, and policies for data management. **Data quality:** Prioritizes accuracy, completeness, consistency, and timeliness of data. **Data security:** Protects data from unauthorized access, use, disclosure, disruption, modification, or destruction. **Data privacy:** Adheres to legal and ethical obligations regarding data protection. #### Architectural principles **Modularity:** Breaks down data architecture into manageable components for flexibility and scalability. **Standardization:** Enforces consistent data formats, metadata, and processes. **Interoperability:** Ensures seamless integration of data from various sources. **Scalability:** Designs data architecture to accommodate increasing data volumes and complexity. **Performance:** Optimizes data access and processing for efficient operations. #### Business-driven principles **Alignment with business objectives:** Ensures data architecture supports strategic goals. **Customer focus:** Uses data to understand and meet customer needs. **Cost-effectiveness:** Balances data management investments with business value. ### Modern data architecture principles In today’s data-driven world, additional principles have emerged. These include: **Data democratization:** Makes data accessible to a broader audience within the organization. **Cloud-first approach:** Leverages cloud-based technologies for scalability and flexibility. **Real-time processing:** Enables quick insights from streaming data. **AI and ML integration:** Incorporates artificial intelligence and machine learning for data-driven decisions. ## Roles in data architecture Data architecture is a collaborative effort involving various roles with distinct responsibilities. Here’s a breakdown of key positions and their functions: ### Core roles **Data architect:** The team’s cornerstone, responsible for designing the overall data landscape, defining data standards, and ensuring alignment with business objectives. **Data engineer:** Focuses on building and maintaining the data infrastructure, including data pipelines, data warehouses, and data lakes. **Data analyst:** Extracts insights from data to inform decision making and identify data requirements. **Data scientist:** Applies advanced statistical and machine learning techniques to uncover patterns and trends. ### Supporting roles **Data governance engineer:** Oversees data policies, standards, and compliance. **Data quality analyst:** Ensures data accuracy, consistency, and completeness. **Business analyst:** Translates business requirements into data requirements. **Database administrator (DBA):** Manages and optimizes database systems. **IT project manager:** Oversees the implementation of data architecture projects. ## Conclusion and additional resources As data grows in volume and complexity, core and modern data architecture principles become increasingly vital for organizations to thrive. Ultimately, data architecture is not just about technology; it’s about aligning data with business objectives to drive innovation and success. In this resource, you have learned about the importance of data architecture and how it’s important to support scalability, adaptability, and integration in a modern technological landscape. You’ve also explored the major differences between data architecture and data modeling and the main technical roles involved with data architecture creation and management. To learn more about concepts related to data architecture, visit our blog and concepts hub. --- # Data Consistency | Concepts Source: https://www.couchbase.com/resources/concepts/data-consistency/ Last modified: 2026-02-09T10:20:39+00:00 **SUMMARY** *Data consistency ensures that all users and systems see the same, accurate version of data, even during simultaneous operations. Inconsistencies can occur due to network failures, replication lag, concurrent updates, or incomplete transactions. Maintaining consistency is essential for reliable customer experiences, accurate decision-making, system stability, and regulatory compliance. NoSQL databases use strategies like distributed ACID transactions, replication management, and conflict resolution to help ensure data consistency across distributed environments.* ## What is data consistency? Data consistency refers to the accuracy, reliability, and uniformity of data across a system. In consistent systems, all users and applications see the same, correct version of data, even when multiple operations or transactions occur simultaneously. Maintaining data consistency is crucial for preventing conflicts, errors, and partial updates that can result in incorrect results or system failures. It ensures that the data remains trustworthy and aligned with defined rules or constraints throughout its life cycle. Continue reading this resource to learn more about the importance of data consistency, how to ensure and maintain consistency in NoSQL systems, and the problems that can result from not utilizing consistency best practices. - Why is data consistency important? - What causes data inconsistency? - How does data consistency affect organizations? - Types of data consistency - How to ensure data consistency in NoSQL databases - How to measure data consistency in NoSQL databases - Key takeaways and related resources ## Why is data consistency important? Data consistency is important because it ensures that applications, users, and systems always work with accurate and reliable information. Inconsistent data can lead to errors, security risks, bad user experiences, and poor decision-making. This is especially crucial for transactional systems, financial applications, and real-time services because even minor inconsistencies can cause significant operational issues. Maintaining data consistency fosters trust, supports system integrity, and enables seamless interactions across distributed environments. ## What causes data inconsistency? Data inconsistency happens when different parts of a system show conflicting or outdated information. This can occur in distributed databases, multi-user environments, or systems with complex data flows. Understanding the common causes of data inconsistency can help prevent issues that compromise data accuracy and system reliability. Here’s a short list of contributors: **Concurrent updates:**When multiple users or processes attempt to modify the same data simultaneously without proper coordination, it can result in conflicting changes.**Network failures:**Delays, dropped messages, or system outages can interrupt data synchronization between servers, causing discrepancies.**Incomplete transactions:**If a transaction is interrupted or partially applied due to errors or crashes, it can leave the database in an inconsistent state.**Replication lag:**In distributed databases, delays in propagating updates across replicas can cause some nodes to have outdated information.**Application bugs:**Software errors, especially in transaction handling or data processing logic, can introduce inconsistencies in how data is written or displayed. ## How does data consistency affect organizations? Data consistency ensures that information across systems, applications, and user experiences remains accurate and reliable. When consistency is maintained, organizations can operate efficiently, make smarter decisions, and build customer trust. However, when data is inconsistent, it can cause disruptions that affect performance, reputation, and compliance. Here are some of the ways inconsistencies affect businesses: ### Customer experience Consistent data ensures that customers receive accurate account details, product information, and real-time updates. Inconsistencies can lead to incorrect orders, billing issues, and broken user experiences that damage trust and satisfaction. ### Business decision-making Accurate, up-to-date data is the foundation for meaningful analytics and reporting. Inconsistent data can lead to costly mistakes, missed opportunities, and unreliable forecasts. ### Operational efficiency Data inconsistencies can slow down workflows, create system conflicts, and require manual intervention to fix errors. Maintaining consistency streamlines operations, reduces troubleshooting time, and improves overall productivity. ### Regulatory compliance Organizations in heavily regulated industries must maintain accurate, consistent records to comply with data governance and privacy laws. Data inconsistencies can lead to compliance failures, legal penalties, and reputational damage. ### System stability and reliability Consistent data contributes to system resilience by preventing errors that can trigger application failures or data corruption. Reliable data ensures that services run smoothly and support high availability environments. ## Types of data consistency Different systems and applications enforce data consistency in various ways, depending on their architecture, performance requirements, and specific use cases. Understanding the main types of data consistency is crucial when selecting the right database or system design for your requirements. ### Strong consistency Strong consistency guarantees that all users always see the most recent, committed version of the data, regardless of which node or replica they access. This model is critical for applications where accuracy is essential, such as financial transactions or inventory management. ### Eventual consistency In eventually consistent systems, data updates will eventually propagate to all nodes; however, there may be a temporary delay during which different nodes display different versions of the data. This model is often employed in distributed and highly available systems, such as social media platforms and large-scale cloud services. ### Causal consistency Causal consistency ensures that operations that are causally related (one operation depends on the result of another) are seen by all users in the correct order. This type is useful for collaborative applications where the sequence of actions matters, but strict synchronization is not required. ### Read-your-writes consistency This model guarantees that once a user writes data, they will always read their most recent update, even if the system is eventually consistent for other users. It provides a balance between user experience and system performance in distributed environments. ### Session consistency Session consistency ensures that within a single session, a user always sees a consistent view of the data based on their interactions. It’s often used in web applications to provide a seamless experience for individual users while allowing the system to optimize performance across sessions. ## How to ensure data consistency in NoSQL databases NoSQL databases prioritize flexibility and scalability, but maintaining data consistency can be more complex than in traditional relational systems. Here are key strategies to help ensure data consistency in NoSQL environments: ### Choose the right consistency model NoSQL databases typically provide configurable consistency levels, from strong to eventual, allowing you to choose the model that best balances your application’s performance, availability, and consistency needs. ### Use distributed ACID transactions Leverage NoSQL solutions like Couchbase that offer distributed multi-document ACID transactions to protect data integrity across nodes and collections. ### Apply optimistic concurrency control Many NoSQL databases use document versioning or compare-and-swap (CAS) operations to prevent overwriting changes in high-concurrency environments. ### Manage replication carefully Understand the trade-offs between synchronous and asynchronous replication. Synchronous replication provides stronger consistency, while asynchronous replication improves availability but may cause temporary data divergence. ### Monitor conflict resolution For eventually consistent NoSQL systems, use automatic conflict resolution strategies or develop custom logic to detect and resolve conflicting updates during replication. ### Design for idempotent operations When working with retries in distributed NoSQL systems, design idempotent operations that can safely execute multiple times without causing duplicate or conflicting data changes. ### Run consistency and integrity audits Schedule regular consistency checks and integrity validations across distributed clusters to proactively detect and fix issues. ## How to measure data consistency in NoSQL databases Measuring data consistency in NoSQL databases can be challenging due to distributed architectures and configurable consistency levels. The following methods can help you assess and monitor consistency in your NoSQL environment. ### Consistency level testing Test different read and write consistency settings (such as strong, eventual, or session consistency) to observe how data behaves under varying workloads and replication delays. ### Read-after-write validation Measure read-your-writes consistency by immediately reading data after a write to confirm that the most recent update is visible to the same client or across nodes. ### Cross-node data comparison Compare document versions or key-value pairs across different nodes or replicas to identify data drift or replication lag in distributed systems. ### Conflict detection metrics Use built-in database tools to track conflict resolution counts, replication errors, or version mismatches that indicate consistency issues, especially in active-active or cross-cluster setups. ### Latency and propagation time monitoring Measure replication lag and update propagation time between nodes or clusters to understand how quickly data changes become visible systemwide. ### Data integrity checks Schedule periodic checksum comparisons or validation queries to verify that all nodes hold identical datasets over time. ### Consistency benchmarks and stress testing Run consistency-focused performance tests under high concurrency or network partitions to evaluate system behavior and identify weak points in consistency guarantees. ## Key takeaways and related resources Understanding and maintaining data consistency is crucial for building reliable and scalable systems, particularly in NoSQL environments. Whether you’re designing a distributed application or managing complex data flows, keeping consistency top of mind helps ensure system stability, data accuracy, and seamless user experiences. Here are the key takeaways to remember: ### Key takeaways **1. Data consistency ensures accuracy** - Data consistency guarantees that all users and systems access the same, reliable version of the data, even during simultaneous operations. **2. Inconsistency can disrupt systems** - Data inconsistencies can lead to user errors, security risks, system failures, and poor decision-making across an organization. **3. Common causes include system failures and conflicts** - Data inconsistency often results from concurrent updates, network failures, replication lag, incomplete transactions, and software bugs. **4. Consistency directly impacts business success** - Maintaining consistent data improves customer experience, operational efficiency, decision-making accuracy, regulatory compliance, and system reliability. **5. There are multiple consistency models** - NoSQL systems offer various consistency types, including strong, eventual, causal, read-your-writes, and session consistency, each suited to different use cases. **6. NoSQL databases require active consistency management** - Strategies like distributed ACID transactions, careful replication management, optimistic concurrency control, and integrity audits help maintain consistency. **7. Consistency can be measured and verified** - Testing read/write behaviors, tracking replication lag, comparing cross-node data, and monitoring conflict metrics are essential for assessing consistency in NoSQL environments. **8. The right balance depends on your needs** - Selecting the appropriate consistency level in NoSQL systems helps balance system performance, availability, and data reliability based on your application’s priorities. ### Related resources Explore these Couchbase resources to learn more about topics related to data consistency: How to Ensure Data Integrity for NoSQL Systems - Blog Data Normalization vs. Denormalization Comparison - Blog Database Clustering - Concepts Data Replication - Concepts Data Replication and Synchronization in Couchbase - Blog Write-Back Cache - Concepts --- # Data Ingestion | Concepts Source: https://www.couchbase.com/resources/concepts/data-ingestion/ Last modified: 2025-05-23T19:20:17+00:00 **SUMMARY** Data ingestion involves collecting data from multiple sources and transporting it to a centralized system for storage, analysis, and processing. It’s crucial for organizations that utilize real-time analytics, business intelligence, machine learning, and operational efficiency. The process can use batch, real-time, or hybrid ingestion and involves steps like data collection, preprocessing, transfer, storage, monitoring, and optimization. Choosing the right tools and strategies is essential to overcoming data quality, latency, and scalability challenges while ensuring reliable and timely insights. ## What is data ingestion? Data ingestion is the process of collecting and importing data from various sources into a system where it can be stored, analyzed, and processed. It’s the first step in the data pipeline, and it enables organizations to utilize structured, semi-structured, and unstructured data from databases, applications, sensors, and streaming platforms. Whether the process is done in real time or batches, data ingestion ensures that data powers analytics, reporting, and accurate decision making. Continue reading this resource to learn more about data ingestion, how it differs from integration, use cases, the data ingestion pipeline, and the tools you can use to simplify the process. - What is the purpose of data ingestion? - Data ingestion vs. data integration - Types of data ingestion - Use cases for data ingestion - Data ingestion challenges - Data ingestion pipeline - Data ingestion tools - Key takeaways - FAQ ## What is the purpose of data ingestion? Data ingestion gathers data from multiple sources to make it accessible for analysis, reporting, and operations. Specific goals include: - Centralizing data from various sources into a single location for easier access and management - Enabling real-time or batch processing to support different analytical and operational needs - Powering business intelligence tools with up-to-date, reliable data for accurate reporting - Supporting data-driven decision making by ensuring timely access to important information - Feeding machine learning models and advanced analytics with fresh, high-quality data - Improving data consistency and quality across platforms through standardized ingestion processes ## Data ingestion vs. data integration Data ingestion and data integration are both foundational to modern data architectures, but they serve distinct purposes. While data ingestion focuses on collecting and moving data into a central repository, data integration ensures that the data is organized, consistent, and ready for analysis. By understanding the difference between the two, organizations are better positioned to design efficient, scalable systems. Here’s a side-by-side comparison: Feature | Data ingestion | Data integration | |---|---|---| Purpose | Collects and transfers data from different sources | Combines and harmonizes data from different sources | Function | Moves raw data into storage or processing systems | Cleans, transforms, and unifies data | Timing | Often real time or batch | Typically follows ingestion | Focus | Data flow and delivery | Data consistency and usability | Tools used | ETL/ELT pipelines, streaming services | Data virtualization, transformation tools | End goal | Make data available quickly | Make data accurate and analytics-ready | ## Types of data ingestion Data ingestion can be tailored to meet different needs depending on how quickly your data should be processed and used. The three primary types of data ingestion, batch, real time, and hybrid, offer different advantages depending on your use case. Here’s a short breakdown of each: ### Batch ingestion Batch ingestion collects and processes data at scheduled intervals. It’s ideal for scenarios where data doesn’t need to be accessed instantly, such as daily reporting, historical analysis, and backup procedures. This type of data ingestion is cost effective and efficient for handling high data volumes simultaneously, but may introduce latency. ### Real-time ingestion (streaming) Real-time ingestion, also known as streaming ingestion, involves continuously collecting and processing data as it’s generated. This approach is ideal for applications that require instant insights, like monitoring systems, fraud detection, and personalized user experiences. Real-time ingestion ensures minimal delay between data generation and availability. ### Hybrid ingestion Hybrid ingestion combines batching and real-time approaches, offering flexibility when it comes to handling different kinds of data and workloads. For example, a business might use real-time ingestion for user activity tracking while relying on batch ingestion for nightly data warehouse updates. This approach allows organizations to balance speed, efficiency, and complexity based on their requirements. ## Use cases for data ingestion Data ingestion plays a critical role across industries and applications. Here are some of the most common use cases: **Real-time analytics:**Powers dashboards and analytics tools with up-to-date data to monitor performance, track KPIs, and respond to changes instantly.**Machine learning and AI:**Feeds clean, timely data into machine learning models for accurate training, predictions, and automation.**IoT and sensor data:**Ingests continuous data streams from devices and sensors to support manufacturing, transportation, and healthcare systems.**Customer personalization:**Collects behavioral and transactional data to tailor user experiences and marketing efforts in real time.**Operational efficiency:**Integrates data from internal systems to improve forecasting, resource planning, and business operations.**Compliance and reporting:**Gathers data from multiple platforms to support regulatory reporting, audit trails, and data governance efforts. Whether you’re using it for real-time insights or large-scale data processing, data ingestion is foundational to smarter, more responsive systems. ## Data ingestion challenges Because data ingestion presents several challenges that can impact performance, reliability, and scalability, it’s critical to address them head-on to build a robust, efficient data pipeline. **Data quality:**Ingesting data from different sources can lead to inconsistencies, missing values, or errors that reduce trust in analytics and reporting.**Scalability:**As data volumes grow, ingestion systems must scale to handle increased load without performance degradation or downtime.**Latency:**For real-time use cases, even minor delays in ingestion can lead to outdated insights and missed opportunities.**Complex formats:**Handling structured, semi-structured, and unstructured data from multiple sources requires flexible and often complex processing logic.**Security and compliance:**Ingesting sensitive data must comply with regulations like GDPR or HIPAA, requiring encryption, access controls, and audit trails.**System integration:**Connecting legacy systems, cloud services, and APIs can be technically challenging and require ongoing maintenance.**Cost management:**High-speed or high-volume ingestion processes can incur significant infrastructure and processing costs. Overcoming these challenges requires careful planning, the right tools, and a scalable architecture supporting performance and governance. ## Data ingestion pipeline ### Data source identification The first step in the ingestion process is identifying where your data originates. These sources can be internal (CRM systems, ERP platforms, or databases) or external (APIs, social media feeds, third-party apps, or partner systems). Understanding the type, format, and frequency of data generated is essential for designing the right ingestion strategy. ### Data collection Once you identify sources, you can collect data using batch, real-time (streaming), or hybrid methods. Batch collection gathers data at scheduled intervals, while real-time ingestion captures data as it’s created. The method you choose will depend on the level of data freshness your organization requires. ### Data preprocessing During this step, raw data undergoes basic preprocessing to prepare for storage or further transformation. Preprocessing may include removing duplicates, validating formats, normalizing values, and enriching data with additional context. It’s a helpful part of the pipeline because it improves data quality and reduces downstream processing complexity. ### Data transfer After preprocessing, you should move the data from its source to the target system. This step often involves using data pipelines or ingestion tools to support secure, reliable, and scalable data transfer. Performance, latency, and bandwidth considerations are critical here, especially for real-time ingestion. ### Data storage Ingested data is stored in a centralized repository, such as a data lake, data warehouse, or cloud-based storage platform, based on its structure, intended use, and required accessibility. Structured data might go to a warehouse, while unstructured or semi-structured data goes into a lake for flexible analysis. ### Monitoring and logging Monitoring ensures the ingestion pipeline runs smoothly, with tools that track data flow, latency, and failure rates. Logging provides visibility into what data was ingested, when, and from where, which supports debugging, auditing, and compliance needs. ### Scaling and optimization As data grows in volume, velocity, and variety, your pipelines should be optimized for performance and cost. Optimization involves tuning ingestion schedules, scaling infrastructure, automating error handling, and adopting new tools to meet evolving needs. Scalability ensures the pipeline delivers reliable, timely data as demand increases. These steps enable efficient, accurate ingestion that supports your business’s analytical and operational goals. ## Data ingestion tools Choosing the right data ingestion tools helps build reliable, scalable, and efficient data pipelines. They should help automate the collection, transfer, and processing of data from multiple sources. Selecting the right tools will allow your team to focus more on insights and less on infrastructure. Here’s a list of tools that should help meet your needs, whether you rely on batch, real-time, or hybrid ingestion. **ETL/ELT platforms:**Tools like Apache NiFi, Talend, and Fivetran allow for the extraction, transformation, and loading of data into storage systems, often supporting complex workflows and data quality checks.**Streaming data platforms:**Technologies like Apache Kafka, Apache Flink, and Amazon Kinesis support real-time ingestion of high-velocity data streams, which are ideal for IoT, monitoring, and event-driven applications.**Cloud-native services:**Managed solutions like AWS Glue, Google Cloud Dataflow, and Azure Data Factory (ADF) offer scalable, serverless ingestion with deep integrations across cloud ecosystems.**Data pipeline orchestration tools:**Platforms like Airbyte, Prefect, and Apache Airflow help coordinate, schedule, and monitor data ingestion workflows across various tools and services. The tools you choose will depend on your data sources, format, volume, and latency requirements. Selecting the right ones can greatly improve data reliability, reduce engineering overhead, and accelerate time to insight. ## Key takeaways and resources Data ingestion is foundational to building modern, data-driven systems. Whether you’re powering real-time analytics, feeding machine learning models, or centralizing data for reporting, an efficient ingestion pipeline is crucial to unlocking the full value of your data. By understanding the data ingestion process and the tools available, you can design more responsive and resilient systems. Here are the main points to remember from this resource: - Data ingestion collects and transports structured, semi-structured, or unstructured data into centralized systems for analysis and processing. - It supports both real-time and batch ingestion methods, with hybrid approaches offering added flexibility. - The purpose of data ingestion is to power analytics, enable faster decision making, and unify data for operational efficiency. - Data ingestion differs from data integration, which focuses on transforming and harmonizing data post-ingestion for usability. - Common use cases include real-time analytics, IoT, personalization, compliance, and machine learning. Ingestion pipelines involve source identification, collection, preprocessing, transfer, storage, monitoring, and scaling. - Key challenges include data quality, latency, scalability, integration complexity, and compliance with security regulations. - Choosing the right tools, such as ETL platforms, streaming frameworks, or cloud-native services, is important for building a scalable, reliable pipeline. ### Resources Explore these Couchbase resources to learn more about data management: What Is Data Management? - Concepts What Is a Data Platform? - Concepts Customer 360 Data Ingestion - Developers Integrations and Tools - Developers Big Data Integration Using Couchbase Connectors - Docs What Is Zero-ETL? - Concepts ## FAQ **What does data ingestion mean?** Data ingestion refers to the process of collecting, importing, and transferring data from various sources into a storage or processing system for analysis and use. **What is the difference between data collection and ingestion?** Data collection involves gathering raw data from sources like sensors, applications, or databases. Data ingestion takes this a step further because it moves that data into a centralized system for storage, processing, and analysis. **Is data ingestion the same as ETL?** No, data ingestion is not the same as ETL. Ingestion focuses on moving data from sources to a destination, while ETL also includes transforming and preparing data for analysis. **What is data ingestion in big data?** In big data, data ingestion is the process of importing large volumes of data from various sources into a system where it can be stored and analyzed. It supports both batch and real-time methods to ensure timely, scalable data flow for analytics, machine learning, and other applications. **What are the steps for data ingestion?** The steps for data ingestion typically include identifying data sources, collecting data using batch or real-time methods, and preprocessing it for quality and consistency. The data is then transferred to a target system, such as a data lake or warehouse, where it’s stored for analysis. Ongoing monitoring, logging, and scaling ensure the ingestion pipeline remains reliable and efficient as data volumes grow. --- # What Is Data Integration? | Concepts Source: https://www.couchbase.com/resources/concepts/data-integration/ Last modified: 2026-02-09T10:15:17+00:00 **SUMMARY** Data integration combines data from different sources into a target system. It involves several stages, including data extraction, transformation, loading, synchronization, and governance, each ensuring the data is accurate, consistent, and actionable. Types of data integration include application integration, data warehousing, and virtualization. Tools like Amazon Aurora zero-ETL with Amazon Redshift and data streaming tools like Apache Kafka are used to expedite the integration process. While integration offers major benefits like improved data quality, faster insights, and better collaboration, it also comes with challenges such as data silos, implementation costs, and governance issues. It’s crucial that you understand potential setbacks before the data integration process kicks off to maximize value for your organization. ## What is data integration? Data integration is the process of combining data from different sources into a unified view. It involves extracting data from multiple systems (e.g., databases, applications, or data warehouses), transforming it into a compatible format, and loading it into a central system. Data integration improves accessibility, consistency, and reliability, leading to better analysis, reporting, and decision making. Continue reading this resource to learn more about data integration, its advantages and limitations, and the tools you can use to facilitate it. - How does data integration work? - Types of data integration - Data integration examples - Data integration benefits - Data integration challenges - Data integration tools - A full breakdown of the data integration process - Key takeaways ## How does data integration work? Data integration combines data from various sources into a holistic view to facilitate analysis, reporting, and decision making. It relies on a process involving data extraction, transformation, loading, synchronization, and governance, which we’ll explain in greater detail below. ### Data extraction The data extraction phase involves retrieving data from databases, cloud services, APIs, flat files (like CSV or Excel), and legacy platforms. This step focuses on collecting the relevant data without modifying the original sources. It begins with identifying where the data resides, then selecting an appropriate extraction method - either full extraction, which retrieves all data at once, or incremental extraction, which only pulls new or updated data since the last integration. Maintaining data integrity during this process is crucial to ensure accuracy and consistency. Automated tools or custom scripts are often used to connect to sources and extract the required data, laying the groundwork for the subsequent transformation and loading phases. ### Data transformation The data transformation phase involves converting extracted data into a consistent, usable format for the central system. It includes cleaning the data by removing duplicates, correcting errors, handling missing values, and standardizing formats such as date and time, currency, or units of measurement. It may also include data enrichment, which involves adding additional context or derived values, and data mapping, which aligns fields from different sources to a unified schema. This phase ensures the integrated data is accurate and compatible, so that it’s ready for analysis, reporting, or further processing in the central system. ### Data loading The data loading phase involves transferring the transformed data into a central system, such as a data warehouse, data lake, or analytics platform. This step ensures that the cleaned and standardized data is stored in a centralized location to be accessed and used for reporting, analysis, or other operations. Depending on the system and requirements, data can be loaded in batches at scheduled intervals or continuously in real time (streaming). The process also includes validating the loaded data to ensure it was transferred correctly. Efficient and reliable data loading ensures the final integrated dataset is accurate, up to date, and ready for use. ### Data synchronization and updates The data synchronization and updates phase ensures that the central system remains consistent with changes made in the source systems. It involves regularly checking for new, modified, or deleted data and updating the integrated data accordingly to maintain consistency across all systems. Synchronization can be done in real time or at scheduled intervals, depending on the business needs and technical setup. It may include mechanisms for conflict resolution, version control, and audit trails to track changes and ensure data accuracy. This phase is essential for maintaining integrated data reliability, especially in dynamic environments where data changes frequently. ### Data quality and governance The data quality and governance phase ensures the integrated data is accurate and compliant with organizational policies and external regulations. It includes implementing rules and checks to validate data integrity, detect and correct errors, and maintain standardized formats across datasets. Data governance also involves defining roles, responsibilities, and procedures for managing data access, security, and usage. This phase may include maintaining metadata, documenting data lineage, and enforcing compliance with data privacy laws such as GDPR or HIPAA. Ultimately, it ensures that the integrated data remains trustworthy and aligns with business goals and legal requirements. ## Types of data integration There are several types of data integration, each designed to meet specific business needs and technical environments. These integration types serve different purposes, and often, organizations use a combination of them to meet complex data requirements. ### Manual data integration The most basic form of data integration involves users collecting and merging data manually. While simple, this process is time-consuming and prone to human error, making it suitable only for small-scale or one-time projects. ### Middleware data integration Middleware acts as a bridge between systems, allowing them to communicate and share data in real time. It’s commonly used in enterprise environments where different applications must work together seamlessly. ### Application integration This method involves software applications using built-in connectors or APIs to transfer and synchronize data with other systems. It’s flexible and often used to integrate cloud-based platforms or SaaS solutions. ### Uniform data access integration This approach provides a unified view of data without physically moving it. Instead, it accesses and queries data in real time across multiple systems, making it useful for organizations that need quick insights without data duplication. ### Common storage integration (data warehousing) With common storage integration, data from various sources is extracted, transformed, and loaded into a central repository, often a data warehouse. This process is ideal for business intelligence, historical analysis, and reporting. ### Data virtualization Data virtualization creates an abstract layer that allows users to access and analyze data from multiple sources as if it were in one place. It minimizes the physical movement of data and improves agility and speed in accessing real-time insights. ## Data integration examples Data integration is used across industries to improve operations, gain insights, and make informed decisions. Here are a few examples of how it improves customer engagement, e-commerce, healthcare, financial services, and supply chain management. ### Customer 360 A company integrates data from its CRM, website analytics, social media platforms, and email marketing tools to create a unified customer profile. Integration enables personalized marketing campaigns and better customer engagement based on real-time behavior and preferences. ### Order management An online retailer integrates data from its website, inventory database, shipping provider, and payment gateway to streamline order processing. Integration ensures accurate inventory tracking, faster shipping, and better customer service. ### Patient records A hospital integrates patient data from multiple departments, like lab results, imaging systems, and electronic health records (EHRs), into one centralized system. Doing this gives doctors a complete view of a patient’s medical history, improving diagnosis and treatment decisions. ### Financial reporting A finance department combines data from multiple accounting platforms, expense tracking tools, and payroll systems into a central data warehouse. Integrating this data allows for consistent financial reporting, compliance checks, and more accurate forecasting. ### Supply chain management (SCM) A manufacturing company integrates data from suppliers, production facilities, and logistics partners to monitor the entire supply chain in real time. Doing this helps identify bottlenecks, reduce delays, and optimize inventory management. ## Data integration benefits Data integration helps organizations streamline operations, improve collaboration, and better analyze data. By unifying information, businesses can unlock more insights and improve operational efficiency. Here are some of the specific benefits integration offers: **Improved data accessibility:**Integrated systems provide a centralized view of data, making it easier for users to access the necessary information without jumping between multiple tools or databases.**Better informed decision making:**With reliable, real-time data, teams can confidently make business decisions and quickly respond to changes and new opportunities.**Increased operational efficiency:**Automating data flows reduces the need for manual data entry, saving teams from engaging in repetitive, monotonous tasks and conserving resources for strategic initiatives.**Improved data quality:**Data integration standardizes and cleans data from various sources, reducing errors, duplicates, and inconsistencies across systems.**Better collaboration between teams:**When all departments work with the same data, alignment and communication improve, fostering a more collaborative and productive environment.**Improved scalability:**Integrated systems are easier to scale as business needs grow, making it simpler to onboard new tools, platforms, or data sources.**Support for analytics and AI:**Clean, unified datasets are essential for accurate business intelligence, predictive analytics, and machine learning.**Improved compliance and security:**Centralized data management makes it easier to enforce data governance policies, track data lineage, and ensure compliance with privacy regulations. ## Data integration challenges As beneficial as data integration is, it can be challenging to implement, particularly if systems, data sources, and business needs are complex. Because of this, planning for challenges ahead of time is crucial to the integration process. Here’s what you should prepare for: **Data silos and incompatibility:**Integrating data from disconnected systems or legacy platforms can be difficult due to differing formats, structures, and technologies.**Data quality issues:**Inconsistent, incomplete, or duplicate data can lead to inaccurate results if not properly cleaned and validated during integration.**Real-time integration complexity:**Enabling real-time or near-real-time data synchronization requires more advanced infrastructure and tools, often increasing cost and integration complexity.**High implementation costs:**Depending on the size and scope, integration projects can be resource-intensive, requiring investment in tools, consultants, and ongoing maintenance.**Scalability concerns:**Maintaining performance quality and ensuring your central system scales can become challenging as the data volume increases.**Security and compliance risks:**Moving and combining data from multiple systems can create vulnerabilities if proper access controls, encryption, and compliance measures aren’t in place.**Governance issues:**Aligning teams, processes, and policies around integrated data workflows can be difficult without a clear governance framework and organizational support.**Tool selection:**Choosing the right data integration platform or tool requires careful evaluation to ensure it fits the organization’s technical environment and business goals. ## Data integration tools These tools extract data from various sources, transform it into a standardized format, and load it into a central system. **ELT (extract, load, transform):**Google Cloud Dataflow, AWS Glue, and Fivetran are ideal for environments where data is loaded into a data warehouse or data lake, and then transformed as needed. These tools are especially useful for cloud-based data integration.**Zero-ETL (extract, transform, load):**Amazon Aurora zero-ETL with Amazon Redshift and Google BigQuery Data Transfer Service simplifies the data pipeline by eliminating the need for traditional ETL processes. It enables near-instant data movement between systems and reduces latency and maintenance.**API-based integration:**Businesses can use tools like MuleSoft Anypoint Platform, Dell Boomi, and Zapier to automate workflows and integrate different applications through APIs.**Real-time data integration:**Apache Kafka, AWS Kinesis, and Google Cloud Pub/Sub are data streaming tools designed to handle continuous data flow, making them perfect for scenarios that require real-time data processing.**Hybrid data integration:**Organizations can use Talend Cloud, Oracle Data Integrator (ODI), and Microsoft Azure Data Factory to integrate cloud and on-premise systems, ensuring seamless data exchange across different environments. ## A full breakdown of the data integration process ### Planning for data integration Clearly define your data objectives, pinpoint data sources (e.g., databases, APIs), and identify other relevant tools. During this phase, you should also institute a data governance framework for security, compliance, and data quality. ### Transforming data using AI technologies You can use AI to detect patterns, clean inconsistencies, and improve data by filling in missing values or suggesting standard formats. It can also map fields between different data sources, making the transformation process faster, more accurate, and adaptive to changes over time. ### Relying on real-time data ingestion Use real-time data ingestion to collect, process, and integrate data from different sources as it’s generated. This approach enables up-to-the-minute insights and decision making and supports dynamic environments like finance, e-commerce, and IoT by continuously syncing data without waiting for batch updates. ### Utilizing cloud-native integration Leverage cloud-native infrastructures like data lakes or warehouses to connect, transform, and manage data across distributed systems. Doing this enables seamless integration between cloud applications, on-prem systems, and data sources, often with reduced infrastructure overhead and built-in support for modern workflows. ### Ensuring accuracy through analytics and monitoring After integration, track analytics and continuously monitor data performance to ensure system accuracy and consistency. Tracking your data helps detect anomalies, monitor data flow efficiency, and provide insights into system health, enabling quick issue resolution and continuous improvement. ## Key takeaways **Data integration is crucial for unified insights:**Combining data from multiple sources ensures businesses have a complete and accurate view for making business decisions.**Strategic planning is the foundation:**The key to success is a well-defined strategy that includes preparing for roadblocks ahead of time, identifying data sources, selecting integration tools, and setting governance policies.**AI and automation improve efficiency:**Machine learning streamlines data mapping, transformation, and anomaly detection, reducing manual errors and speeding up processes.**Real-time processing enables faster decision making:**Data streaming tools like Apache Kafka and AWS Kinesis allow businesses to act instantly on new data.**Cloud-native solutions provide scalability:**Cloud data warehouses (Snowflake, BigQuery) and data lakes offer flexible, cost-effective ways to manage large-scale data integration.**Data quality and governance are critical:**Ongoing monitoring, compliance with regulations (GDPR, HIPAA), and security measures ensure data remains reliable and secure.**Effective integration provides business value:**Integrated data powers business intelligence, predictive analytics, and AI-driven insights. --- # Data Mesh Architecture in the AI Era | Concepts Source: https://www.couchbase.com/resources/concepts/data-mesh-architecture/ Last modified: 2026-02-09T08:47:12+00:00 A data mesh architecture can help an organization enable AI at scale by democratizing data access for domain-specific analysis and assigning domain experts responsibility for each subject area. This improves data quality for better, more accurate AI. In a data mesh architecture, business domains own and curate their data as a data product, ensuring its quality for analysis and AI exercises like model training. This enables analysts and data scientists to access high-quality, thoroughly cleansed, well-documented data for AI and machine learning algorithms, ensuring accuracy and reducing phenomena such as large language mode (LLM) hallucinations. Let’s examine this concept more deeply by exploring the data mesh architecture. - What is a data mesh? - Why data mesh? - Data mesh principles - Data mesh use cases - Data mesh benefits - The difference between dash mesh, data lake, and data fabric - Implementing a data mesh architecture - Future of data mesh architecture ## What is a data mesh? Enterprises, large and small, have various systems that run the day-to-day business. For example, in most organizations, you might find a CRM for sales operations, an ERP for finance management, a helpdesk system for customer support, a project management application for product development, etc. It’s crucial to get accurate insight into performance across all operations to determine that your enterprise’s data is accurate, to improve processes, and to streamline workflows. The problem is that only specific business areas know their data in-depth, which causes issues with analysis and quality control. This can undermine traditional data warehouse efforts that combine data from multiple domains into a centralized data repository because the cleanliness and integrity of the data cannot be guaranteed. And as is becoming increasingly evident, the less trustworthy the data, the less effective and less accurate the AI. A data mesh architecture overcomes these challenges by distributing domain-specific data to individual analytic repositories and decentralizing ownership of each domain. This ensures that each domain’s data is thoroughly vetted and fit for immediate use by its respective experts. It also unifies disparate sources via centrally managed data-sharing guidelines and governance standards. With a data mesh architecture, business functions maintain control over the data used for analysis and govern how their data is accessed. While a data mesh can add complexity to an enterprise’s data ecosystem, it also brings efficiency by improving data access and quality, which fuels better analysis and AI. A data mesh architecture distributes domain-specific data under the ownership of each business area. ## Why data mesh? The data mesh architecture was formed out of a need to go beyond traditional centralized data warehouse or data lake implementations, which tend to suffer from some fundamental challenges: - Establishing a single source of truth can be nearly impossible with traditional approaches because most enterprises’ data footprint is fragmented across many disparate systems in various formats. - In the current age of AI, demand for easier access to domain data is increasing, as is the volume of data in most enterprises. This creates challenges in handling storage and access. - Data scientists and analysts need access to data in the formats they require. The data must be trustworthy and not require deep technical knowledge or IT intervention. Trying to solve these issues by loading all of the data into a centralized analytics system creates its own issues: How do you ensure the quality and timeliness of the data? How do you handle rapidly changing data? How do you handle new data sources and formats? The data mesh architecture strives to overcome these challenges by distributing ownership of data and analytics systems to domain experts. This spreads the analytic data footprint to smaller, more manageable domain-specific systems that are easier to manage individually. Because each domain expert knows their data best and has direct access to it with the data mesh, data quality and integrity are improved, allowing it to be used more reliably and easily across the organization. ## Data mesh principles The data mesh architecture follows these general principles: **1. Data must be owned by their domains.** Business domains curate and manage their data for analysis and AI rather than delegating ownership to centralized teams. **2. Data must be self-service for authorized users.** To democratize data access, organizations need to simplify access through abstraction and make it as easy as possible without sacrificing stringent security. **3. Data governance must be distributed.** Data management, storage, and security policies are centrally managed, but each domain owns its data products, ensuring flexibility and repeatable structure. **4. Data must be treated as a product (DaaP).** Adhering to the above principles ensures vetted, high-quality, and fully cleansed data products that authorized consumers can easily access and use. In a data mesh architecture, domains own their data products, sourced from analytical and operational systems, and by following standardized management guidelines, they make that data more accurate and accessible across the organization. ## Data mesh use cases A data mesh architecture can support many different use cases across a wide variety of industries and verticals. Some examples are: **Customer lifecycle** Through access to data from systems that span customer engagement, organizations get a 360-degree view of customer journeys, individually and in the aggregate, in real time. This allows the business to create AI that engages customers more quickly with relevant offers and suggestions and examines reasons for successes or failures in overall engagement. **AI and machine learning** Data scientists and advanced analysts can easily access several sources to feed AI and machine learning models, confident that the data is clean, current, and accurate. **IoT environment monitoring** The distributed architecture in a data mesh allows IoT device deployments to be managed and monitored more effectively by the individual business units responsible for IoT applications. **Distributed data security policy** Data security is paramount in a distributed model like the data mesh. By dividing responsibility for data product security policies between individual domains, access to the data is more appropriately restricted based on domain expertise. While more detailed overall, it’s also more stringent than a centralized, one-size-fits-all security policy in its granularity. ## Data mesh benefits There are many benefits of a data mesh architecture, among them some of the most important are: **Data agility** The data mesh architecture reduces dependencies on IT resources to provide access to data from various systems, enabling business teams to concentrate on quality and deliver data products more quickly. **Higher-quality data for AI** Because individual domain experts manage data, their deeper understanding of its context and meaning results in better curated, more trustworthy data, which is critical for reducing inaccurate results and LLM hallucinations. **Faster data availability** A main bottleneck of the centralized data lake approach is the time it takes to add and update sources, let alone manage them and make them easily available. With a data mesh architecture, the delivery of data products happens in parallel rather than in sequence and, thus, happens faster. **Standard central data governance policies** Because of its core principle of following a centralized set of strict governance guidelines, the data mesh architecture sets a standard for data custodianship across the organization while simultaneously providing each domain autonomy. These are just some of the reasons many organizations adopt a data mesh architecture. ## The difference between dash mesh, data lake, and data fabric When evaluating your organization’s data and AI needs, you’ll inevitably hear about alternative approaches and architectures, such as a data lake or a data fabric. Here are the differences in a nutshell: **Data lake** A data lake is a term that refers to a centralized repository for data from various sources and systems, where all data is collected and stored for aggregated analysis that spans the sources across various domains. A data lake sometimes precedes and feeds a data warehouse, a more refined centralized data repository. A fundamental difference between a data lake and a data mesh is that the former is centralized, which makes it massive and complex to manage - typically requiring dedicated teams - and difficult to keep current. **Data fabric** A data fabric is similar in concept to a data mesh, except that it employs a technical framework instead of an organizational framework. A data fabric utilizes a centralized data repository but isolates access to each domain and subject area through strict access restriction protocols. This alleviates the need for domains to establish their own domain-specific repositories and removes their direct involvement with the day-to-day data management. The main difference between a data mesh and a data fabric is that the former is not a distributed model but a technical framework. In contrast, the latter focuses on organizational domains as data owners. ## Implementing a data mesh architecture Because of its decentralized model, a real-time operational data processing and analytics platform is the optimal implementation for data mesh architecture. This blog explains how Couchbase Capella™ provides a cloud database ideal for data mesh implementations. In a nutshell, Couchbase provides: **A multi-purpose, cloud NoSQL database** Couchbase Capella is a multipurpose, developer-friendly database with built-in caching, JSON document storage, SQL support, search, eventing, and mobile sync. With these combined capabilities, an organization can replace other operational database technologies with one solution, simplifying the data mesh by reducing operational inputs. **Instant operational insights** Capella also provides a built-in columnar analytics service for real-time analysis of any operational data. The results can provide on-the-wire insight without looping through the data mesh. This speeds up the overall mesh, as Capella can be used for instant analysis of specific operational data and then feed those results to the mesh for deeper analysis and AI. **Faster insight-to-action** Capella provides eventing and user-defined function features, allowing the ability to script routines that capture analytic insights from the mesh and back into the operational layers. This effectively enables action on insights - if machine learning algorithms on a data lake mesh develop a new customer classification based on historical data, you can pull that classification back into the sales app for targeted marketing. **Accelerated development** Capella allows an organization to consolidate their operational data sprawl into a database that is easy for developers to work with. SQL++ (SQL for JSON) support, rich SDKs, backend-managed services, and a fully hosted DBaaS reduce development friction - there are no server installation or maintenance headaches and no new languages for developers to learn. ## Future of data mesh architecture As propelled by digitization across industries and accelerated by AI investments and development, data products will become increasingly important for most enterprises, and adhering to its principles of domain ownership and curation can lay the foundation for future innovations fueled by data. Try Couchbase Capella for yourself and see how easily it can fit into your data mesh architecture initiative. You can also view our hub and these additional resources to learn more about general concepts related to data architecture: What Is a Data Platform? Example Architectures for Data-Intensive Applications 4 Patterns for Microservices Architecture in Couchbase --- # Data Persistence | Concepts Source: https://www.couchbase.com/resources/concepts/data-persistence/ Last modified: 2026-02-09T08:54:03+00:00 ## What is data persistence? Data persistence means ensuring the information your application uses (and creates) doesn’t disappear when the app is closed or crashes. Think of it like saving a document you’re working on. If you don’t save it, you’ll lose all your work when you turn off your computer. But if you do save it, you can open it again anytime. In the world of apps and websites, data persistence helps save everything from your game progress to your shopping cart items, so everything is right where you left it, even if you close the app or restart your phone or computer. This saving happens by storing the data in databases, hard drives, or distributed file systems. *Document Creation and Retrieval Process With Persistent Storage* This page covers: - Persistent vs. nonpersistent data - Why is data persistence important? - How does persistent data work? - Best practices for data persistence - Persistent data challenges - Examples of persistent data - Choosing the right persistence level - NoSQL databases and data persistence - Conclusion ## Persistent vs. nonpersistent data There are two types of data: persistent and nonpersistent. Imagine you’re playing a video game. The progress you make and save is persistent data; it sticks around even after you turn off the game. It’s stored on something more permanent, like your game console’s hard drive or online cloud storage, so you can pick up where you left off next time you play. On the other hand, nonpersistent data is like the game’s temporary scores or the positions of characters that only matter while the game is running. This data lives in your computer’s memory (RAM), and once you turn off the game or your computer, that data vanishes. It’s temporary and doesn’t need to be stored long term because it’s not useful once the game is closed. Persistent data is all about keeping important information safe and accessible for the future, like documents, photos, or game saves. Nonpersistent data helps with the here and now, managing things that are only important while an app or game is active. ## Why is data persistence important? In the tech world, data persistence is how your favorite apps remember your preferences, your shopping carts stay full until you’re ready to check out, and your data isn’t lost even if there’s a power outage or your device crashes. Without data persistence, every time you used an app, it would be like starting from scratch. No saved games, no stored contacts, and no historical data. For businesses, data persistence is the backbone of reliability and customer trust. It allows for the analysis of historical data, helps make informed decisions, and ensures that critical business operations can run smoothly day in and day out. In essence, data persistence is what makes modern digital experiences possible, both simplifying and enriching our interactions with technology. ## How does persistent data work? Persistent data works by saving information to a place where it won’t get lost when your application or device is turned off or restarted. This place can be a hard drive on your computer, a removable USB stick, or even a server on the internet (like cloud storage). Here’s how it happens in simple steps: 1. **Create or update data:** Whenever you do something like write a document, take a photo, update a contact in your phone, or save a JSON document to Couchbase, that’s data being created or changed. 2. **Save the data:** When you hit “save” on your document, or your app automatically saves your progress, the data is written to a storage device. This could be immediate or happen after a short delay. 3. **Store until needed:** The saved data sits on the storage device waiting to be accessed, queried, manipulated, or removed. Even if your application restarts, the data stays put. 4. **Retrieve data:** The next time you need that document, photo, or contact, your device reads the data from where it was stored and brings it back into use. This is the lifecycle of persistence: creating, saving, storing, and retrieving. ## Best practices for data persistence When it comes to keeping data safe and sound over time, there are a few smart moves you can make, even though the term “best practices” might make some eyes roll. Here’s the straightforward advice: **Regular backups:** It’s like making copies of your keys; if you lose one, you’ll have a spare. Regularly backing up data means you won’t lose everything if something goes wrong. And make sure to test your restore process because a backup is only good if you can actually recover it. **Use reliable storage:** Not all storage is created equal. Whether the storage is on your own hardware or with a trusted cloud provider, go for a tried-and-tested solution. **Keep data secure:** Just like you’d lock up important documents, encrypt your data. This keeps it safe from prying eyes regardless of whether it’s sitting in storage or moving across the internet. **Plan for failure:** Assume things will break down at some point. Having a plan to quickly restore data will minimize downtime and frustration. Replication and synchronization are tools that can help you create a “disaster recovery” policy. **Stay organized:** Keep your data tidy. Use clear naming conventions and organize data in a way that makes sense. This makes it easier to find and manage over time. Data often outlives the applications that access it, so make sure the data is valid. By keeping these points in mind, you can ensure your data not only sticks around but is also in good shape and accessible when you need it. ## Persistent data challenges Dealing with persistent data isn’t always smooth sailing. Here are a few hurdles you might face along the way: **Scalability:** As your data grows, so do the challenges of storing it. More data means you need more space and more power to manage and access it quickly. Scaling isn’t just about adding more storage; it’s also about keeping everything running smoothly as the load increases. Distributed databases like Couchbase are designed with scalability in mind. **Security:** Keeping data safe is a big deal. The more data you store, the more attractive a target it becomes for criminal abuse. Encryption, access controls, and regular security audits are must-haves to protect sensitive information. **Data integrity:** Over time, data can get corrupted through software bugs, hardware failures, or human error. Implementing checks to ensure data accuracy and consistency is crucial. **Compliance:** Depending on where you operate and what kind of data you’re dealing with, there might be a maze of legal and industry requirements concerning how data is stored, protected, and used. Staying on top of these regulations is essential to avoid hefty fines or costly legal battles. **Backup and recovery:** Regular backups are vital, and so is a solid recovery plan. Data loss can happen for many reasons, from natural disasters to simple mistakes. Having a reliable way to restore lost data can save the day. Navigating these challenges requires careful planning, the right tools, and sometimes a bit of creativity. ## Examples of persistent data Persistent data pops up in many places in our digital lives. Here are a few examples: **User accounts:**Information like your username, password, preferences, and personal details are stored so you can log in and out of websites and apps without having to re-enter your info every time.**Social media posts:**Posts, photos, and videos you share are saved, allowing you and others to view and interact with them over time.**Financial records:**Banks and financial apps keep track of your transactions and balances over time, using persistent data to give you a history of your spending and savings. Nonpersistent data, on the other hand, is transient and doesn’t stick around once the application that uses it is closed. Here are a couple of examples: 1. **Session data:** This is information websites use to remember who you are while you’re browsing, like what’s in your shopping cart during a single visit. Once you log out or close the browser, this session data disappears. 2. **Cache:** Many apps and websites store temporary data in RAM or other fast-access mediums. This cache can include frequently accessed information as well as images or webpages. It’s designed to be cleared regularly and doesn’t need to be saved long term. ## Choosing the right persistence level Choosing the right level of data persistence is like picking the right type of storage for your stuff. Some items, like seasonal clothes, need a spot where they can be kept safe but out of the way until they’re needed again. Other items, like your everyday essentials, need to be readily accessible but not necessarily on you at all times. Deciding how to persist data comes down to asking a few key questions: **How often will you need it?**If data is used frequently, it should be easily accessible and possibly stored in faster, more immediate forms of storage. A cache can help improve access times.**How important is it?**Critical data that supports core business functions or holds significant value should not only be persistently stored but also backed up and protected. This may not be a high priority for more transient data.**How much data is there?**Large volumes of data might require more scalable storage solutions, possibly in the cloud, where they can grow without physical limits. They also need a database like Couchbase that can scale horizontally.**What are your security needs?**Sensitive information demands secure storage with strong encryption and access controls. By considering these factors, you can choose the right mix of storage solutions to ensure your data is not just saved but also stored in a way that matches its value and use in your operations. ## NoSQL databases and data persistence Unlike traditional relational databases with a strict table-based structure, NoSQL databases are more flexible. They can handle a variety of data types - like documents, key-value pairs, and more - making them a great fit for modern applications that deal with diverse and complex data. Couchbase, for instance, excels in providing persistent storage for large amounts of unstructured data. This is data like JSON documents or social media posts that don’t fit neatly into tables. Couchbase’s flexibility allows developers to store data in a way that matches its natural shape, making it easier to save, search, and retrieve information quickly. Couchbase also has a built-in managed cache, providing the performance of a nonpersistent store with the durability of a persistent store. Couchbase offers features like replication and automatic sharding, ensuring that data is not only stored persistently but is also highly available and scalable. This means your data is always accessible, even if it grows or if some parts of the system fail. ## Conclusion Data persistence is the foundation that ensures our online actions and information remain accessible over time. It’s what allows your gaming progress to be saved, your shopping cart to await your return, and your documents to be retrievable even after a restart or shutdown. Deciding between persistent (long-lasting) and nonpersistent (temporary) storage is crucial and depends on the data’s purpose. Challenges like security, scalability, and regulatory compliance add layers of complexity to data management. Adopting smart practices, such as consistent backups and choosing reliable storage options, can simplify the task of managing persistent data. As you explore solutions like Couchbase, you’ll see that NoSQL databases offer a versatile and scalable approach to storing diverse data types, from user profiles to social media content, without the limitations of traditional databases. To learn more about data persistence and related topics, check out these resources: Couchbase as a persistent system of records - storage considerations Persistent volumes | cloud-native database What is an in-memory database? NoSQL databases Related concepts --- # What Is a Data Platform? | Concepts Source: https://www.couchbase.com/resources/concepts/data-platforms/ Last modified: 2026-02-09T10:28:18+00:00 ## Data platform overview To help you better understand data platforms, this page covers: - Layers in a data platform - Types of data platforms - Data platform example - Data platform advantages - How to choose a data platform - Conclusion A data platform is infrastructure that allows organizations to manage, store, process, and analyze large volumes of data. It typically includes a combination of hardware, software, and tools designed to support data-related activities. The goal of a data platform is to enable businesses to use data in applications and make better decisions based on insights derived from data. ## Layers in a data platform A data platform can consist of up to five layers: a data ingestion layer, data storage layer, data processing layer, data pipeline layer, and application/user interface layer. The data ingestion layer is responsible for collecting and bringing in data from various sources, while the storage layer stores the data. The processing layer transforms and prepares the data for analysis or consumption by applications, while the pipeline layer handles the movement of data between layers and other applications. The user interface layer provides a way for end users to interact with and derive insights from the data via dashboards or business intelligence tools. ### Data ingestion layer The data ingestion layer is the first layer of a data platform and is responsible for collecting data from various sources, including: - Sensors - APIs - Databases - Files - Applications - Third-party sources This layer retrieves data in different formats, structures, and protocols and converts them into common formats that can be stored and processed. Data ingestion is a continuous process that requires scheduling, monitoring, aggregation, and error handling to ensure data quality and completeness. Ingested data can be stored in a raw or near-raw format in a data lake, where it can be accessed and analyzed by downstream layers. The success of a data platform relies heavily on the effectiveness and reliability of the data ingestion layer because this layer determines the quality and timeliness of the data used for decision-making. What is a data lake, and how does it benefit a data platform? A data lake is a centralized repository that stores large amounts of raw, unstructured, and semi-structured data, allowing organizations to analyze vast amounts of data from various sources without any limitations or the need for a predefined schema. It provides a cost-effective solution for managing and processing large datasets. ### Data storage layer The data storage layer of a data platform is responsible for storing data in a raw or processed format. It typically includes a data lake or data warehouse, as well as other storage technologies such as a NoSQL database (like Couchbase Capella™ or Couchbase Server) for storing and sourcing operational and application data. The data is organized, indexed, and optimized for fast access and retrieval by downstream layers. The storage layer often incorporates data governance policies, such as access controls, lineage, backup, and retention rules. The success of a data platform depends on the scalability, reliability, and security of the data storage layer. ### Data processing layer The data processing layer of a data platform is responsible for transforming and preparing data for analysis. This layer includes tools for data processing, cleaning, and aggregation and often incorporates machine learning algorithms or artificial intelligence techniques. The processed data can be stored in the data storage layer or passed to the analytics layer for further analysis and querying. The data processing layer also handles data quality checks, error handling, and data enrichment tasks such as adding metadata or calculating derived metrics. The efficiency and accuracy of the data processing layer are crucial for delivering the insights derived from the data. ### Data pipeline layer The data pipeline layer of a data platform is responsible for moving data between the different layers of the platform. It can include tools for: **Data integration**- combining data from different applications, sources, and formats**Data transformation**- converting, mapping, or reshaping data from one format or structure to another**Data enrichment**- adding data such as metadata, derived metrics, or external data sources to existing datasets**Data delivery**- supplying curated data to other systems, such as artificial intelligence model processors, applications, data lakes, or warehouses The pipeline layer can support batch or real-time data processing and often incorporates message queues or stream processing frameworks. Data pipeline tasks can include data replication, data cleansing, or data formatting to ensure that data is delivered to downstream layers in the right format and structure. The effectiveness and reliability of the data pipeline layer are critical to ensure that the right data is delivered to the right place at the right time. ### User interface layer/application layer The user interface layer of a data platform is the topmost layer that allows end users, analysts, and data consumers to interact with the data and analytics. This layer includes dashboards, reports, and visualization tools that provide interfaces to the data. The user interface layer can also provide tools for self-service analytics, ad hoc querying, and data exploration. The user interface layer is critical to ensure that users can access and understand the insights derived from the data. The user interface layer can be customized for different user groups, roles, or permissions to ensure that the right data is delivered to the right user. Finally, the user interface layer can incorporate feedback loops or collaboration features, allowing users to share insights, ask questions, or provide feedback to improve the data platform. Applications, both commercial and bespoke, can create, supply, process, analyze, and consume data within the data platform. Applications are one of the primary beneficiaries of a well-implemented data platform as they can provide source data for analytic insights as well as put analytic and artificially derived insights into action at the exact time and place for the data to be most useful. Application layers often have the following characteristics: **Mobility**- applications run on mobile and internet of things (IoT) devices**Data creation**- applications are often the original source of data**User interaction**- like other user interfaces to a data platform; applications are often the intermediary between humans and data**On-the-spot processing**- applications are often where interaction, time, place, and situation meet to consume data and create new instant insights or information (e.g., Where’s the closest Starbucks?)**Metadata creation**- data is often accompanied by useful metadata, such as when it was created, by whom, where, and under what circumstances ## Types of data platforms Data platforms are essential tools for businesses to create, collect, process, analyze, and reuse data. There are various types of data platforms available in the market, each with its unique features and capabilities. Four examples of data platforms are the cloud data platform, customer data platform, big data platform, and enterprise data platform. ### Cloud data platform A cloud data platform stores, processes, and analyzes data in the cloud (unlike traditional data platforms that require on-premises hardware and software). Compared to traditional on-premises data platforms, a cloud data platform often has more flexibility and scalability and can be more cost-effective. With low effort, organizations can scale their computing resources up or down based on their changing data needs without investing in new hardware or software. Additionally, cloud data platforms can provide advanced analytics and machine learning capabilities, allowing organizations to gain insights from their data and make informed decisions. Customer data platforms, big data platforms, and enterprise data platforms can all be run either in the cloud or on premises. ### Customer data platform A customer data platform (CDP) focuses on collecting and managing customer data across multiple channels and touchpoints and is sometimes known as “Customer 360.” Unlike other types of data platforms, a CDP is designed to create a unified view of the customer by integrating data from various sources such as CRM systems, marketing automation tools, and website analytics. Compared to other data platforms, a CDP is more customer centric and is specifically designed to provide insights and analytics on customer behavior and preferences. It helps businesses to personalize their customer interactions, improve customer engagement, and increase customer loyalty. Other types of data platforms may also collect and analyze customer data, but they aren’t specifically designed to provide a unified view of the customer like a CDP. ### Big data platform A big data platform is designed to handle large volumes of structured and unstructured data, often in real time or in near real time. A big data platform typically uses distributed computing technology to process data across multiple servers and nodes. A big data platform can handle data from a variety of sources, such as social media, internet of things (IoT) devices, and machine-generated data. Read more about Couchbase Mobile 3 for modern mobile, desktop, and embedded IoT devices. Compared to other types of data platforms, a big data platform is designed to handle massive amounts of data at a very high speed. It is typically used for data-intensive applications such as predictive analytics, fraud detection, and recommendation systems. While other types of data platforms may also handle large amounts of data, they aren’t specifically designed for real-time processing and analysis of big data. ### Enterprise data platform An enterprise data platform is designed to manage and integrate data across an entire organization. It’s typically used to store and process structured data such as customer data, financial data, and supply chain data. An enterprise data platform provides a centralized repository for all the data used by an organization with a goal of more efficient data management and governance. Because enterprise data platforms handle data at enterprise scale, they offer features such as data quality management, data integration, and data governance that are crucial for ensuring data consistency and compliance. (Read more about GDPR and Couchbase.) ## Data platform example There are many options when constructing a data platform. Here’s an example implementation for a large retail company: The platform will store and analyze various types of data, including customer data, sales data, and inventory data. The platform will consist of several layers: **UI/application layers:**Application layers are both creators and consumers of data. These layers can be delivered through a variety of means, including web, mobile, or embedded applications. Application layers are often the intermediary between users and technology. For instance, a retail company will have a website, a native mobile app, and an API.**Data ingestion layer:**This layer is responsible for collecting data from various sources, such as the company’s point of sale systems, e-commerce platforms, and mobile apps. The data will be streamed in real time to a data ingestion platform such as Apache Kafka.**Data storage layer:**This layer is responsible for storing the data in a scalable and performant manner. For this layer, we’ll use Couchbase Capella, a NoSQL Database-as-a-Service (DBaaS) that can handle high-velocity and high-volume data. Capella provides features such as in-memory caching, automatic sharding, and replication, which make it ideal for storing and processing large amounts of data.**Data processing layer:**This layer will be responsible for processing the data and performing various analytics tasks. For this layer, we’ll use Apache Spark, a distributed computing framework that can process large datasets in parallel. Spark can connect to Couchbase using the Couchbase Spark Connector, which allows Spark to read and write data to and from Couchbase.**Data visualization layer:**This layer is responsible for visualizing the data and making it accessible to business users. For this layer, we’ll use a business intelligence (BI) tool such as Tableau or Power BI. The BI tool can connect to the data processing layer and generate interactive dashboards and reports based on the data. Overall, this data platform architecture allows the retail company to collect, store, process, and visualize large volumes of data in a scalable and performant manner. By using Couchbase as the data storage layer, the company can benefit from the database’s speed, scalability, and reliability. ## Data platform advantages There are numerous advantages of having a data platform for businesses: **Centralized data management**- a centralized location to store, process, and manage data can make it easier to access and analyze data across the organization**Improved data quality**- tools for data cleaning, standardization, and validation ensure that data is accurate and consistent**Enhanced data security**- features such as encryption, access controls, and monitoring protect sensitive data from unauthorized access**Faster insights and decision-making**- analyze data faster and with greater insight by providing tools for data visualization, analytics, and machine learning**Scalability and flexibility**- scale up or down to meet changing data needs and access data from anywhere with an internet connection ### Potential data platform disadvantages While there are many advantages to having a data platform, there are also some potential disadvantages to consider: **High cost**- implementing and maintaining a data platform can be cost prohibitive, especially for smaller businesses or organizations with limited budgets**Complex implementation**- implementing a data platform can be a complex process that requires specialized technical expertise, which can add to the cost**Data privacy concerns**- a data platform can create data privacy concerns if sensitive or confidential data is not properly secured or managed**Potential data silos**- if not properly integrated, a data platform can create data silos within an organization, with different teams or departments having their own separate data stores that are not easily shared**Limited adoption**- if not properly integrated with existing systems and workflows, a data platform may not be widely adopted by employees or stakeholders, limiting its effectiveness No single tool can solve every problem, but Couchbase Capella DBaaS can help overcome the most common challenges of implementing and maintaining a data platform by providing: - A low TCO and a low effort implementation that can be scaled up or down based on business needs - Advanced security features and the ability to integrate easily with existing systems and workflows - The familiarity of SQL, the flexibility of JSON, and support for ACID transactions to help increase adoption ## How to choose a data platform When choosing a data platform, it’s important to consider your business needs, evaluate available options, and test and deploy the chosen platform. This involves identifying the types of data you need to manage, researching different platform options, and testing the platform with your data and use cases. By following these steps, you can select a data platform that meets your organization’s needs and helps you achieve your business goals. **Step 1: Identify your business needs** 1. Determine the types of data you need to store and manage, such as structured or unstructured data 2. Identify the business problems you want to solve with your data platform, such as improving customer experiences or optimizing operations 3. Determine the scale of your data and the anticipated growth of your data needs over time **Step 2: Evaluate available platforms** 1. Research different data platform options and compare their features and capabilities 2. Consider factors such as scalability, security, performance, ease of use, and cost 3. Evaluate the compatibility of each platform with your existing IT infrastructure and tools **Step 3: Test and deploy** 1. Conduct a proof of concept or pilot to test the data platform with your data and use cases 2. Evaluate the performance, scalability, and ease of use of the platform during testing 3. Train employees and stakeholders on the use of the data platform and deploy it throughout your organization ## Conclusion A data platform is a comprehensive solution for collecting, storing, processing, and analyzing data. It often consists of at least five layers, each with unique responsibilities: data ingestion, data storage, data processing, data pipeline, and user interface. The data ingestion layer is responsible for collecting data from various sources, and the storage layer is responsible for storing it. The processing layer transforms and prepares the data for analysis, while the pipeline layer handles the movement of data between the layers. Finally, the user interface layer provides a way for end users to interact with and derive insights from the data. There are different types of data platforms, each with its unique features and capabilities, including cloud data platforms, customer data platforms, big data platforms, and enterprise data platforms. Overall, a data platform is a valuable tool for businesses to manage and leverage their data to make informed decisions and gain a competitive advantage. If you’re looking for a data platform to help you achieve your business goals, consider engaging with Couchbase. Our team can help you evaluate your data needs, identify the right platform for your organization, and provide support as you deploy and use the platform. Contact us today to learn more. --- # Data Replication | Concepts Source: https://www.couchbase.com/resources/concepts/data-replication/ Last modified: 2026-02-09T09:25:47+00:00 ## What is data replication? This page will cover the following to help you better understand data replication: - Data replication terms - Benefits of data replication - Challenges of data replication - Data replication in RDBMS - Conclusion Data replication is the process of copying one or more records from one place to another. These places could be very similar (like copying files within the same database) or more distinct (like copying data from one database to another). The term data replication typically implies keeping data up to date from the source to the destination, but the speed and level of automation of replication can impact data consistency. ## Data replication terms Here’s a list of common terms to help you understand data replication: **Unidirectional versus bidirectional:** A unidirectional relationship means data flows only from a source to a destination. A bidirectional relationship means data flows both ways. **Active-active versus active-passive:** An active-active cluster evenly distributes loads across all nodes at all times. In contrast, an active-passive cluster has a backup node that takes over only if the active node is overloaded. **Synchronous versus asynchronous:** Synchronous replication simultaneously writes data to the primary node and the replica. Asynchronous replication writes data to the primary node first and then copies it to the replica. **Batch versus real-time processing:** Batch processing collects and processes data in groups or batches at scheduled intervals, and it is typically suited for handling large volumes of data. Real-time processing handles data as it is generated or received, making it suitable for time-sensitive applications. **Incremental versus full:** Incremental data replication means you only replicate the updated elements of a record. Full data replication means you replicate the entire record when its elements change. **Filtered:** Data from a source can be filtered so that only a specific subset or selection of the data is replicated to a destination. **Transformed:** Data transformation is the process of converting data from one format or structure to another to put it in the correct format and structure for analysis, reporting, or storage at its destination. ## Benefits of data replication Data replication has many uses and benefits. These include: **High availability (HA):** Maintaining up-to-date copies of data in multiple locations prevents data loss in case of failures. Typically, real-time replication is unidirectional and takes place between a source and one or more replicas. If the source becomes unavailable, one of the replicas takes over, often automatically. **Disaster recovery (DR):** Closely related to HA, disaster recovery ensures that copies of your data are available in the event of disaster. **Scaling throughput:** This process uses multiple copies of data to increase the capacity of a system to handle requests. It is typically used for read traffic and less commonly for write traffic. **Secondary access:** Also known as indexing, this involves replicating the data to another system to access it differently. The second system can either be within the same database (in the case of indexing) or can be external. Depending on the technologies in use, an intermediary like Kafka is sometimes required to transfer the data between a source and an external system. Note: We’ve intentionally excluded “backup” as a benefit of data replication because you don’t update a backup with changes. A key point to understand is that data replication is susceptible to application-level corruption or deletion of data, whereas backups are not. Backups should not be considered a replacement for HA or DR, nor should HA or DR replace backups. ## Challenges of data replication With any data replication strategy, you will be forced to make trade-offs between: - Speed - Consistency, availability, and partition tolerance (the CAP theorem) - Resource usage and cost (RAM, disk, CPU, network) For example: - Maintaining multiple replicas increases the security of your data in the event of outages but results in higher resource usage and cost. The same goes for scaling reads with multiple replicas. - Synchronous replication can cause the source writes to be slower (or fail altogether). However, asynchronous replication may result in higher resource usage if you write records faster than you can replicate them. Asynchronous replication also introduces the potential for discrepancies between source and destination data no matter how fast or reliable your replication technology is. - Incremental, filtered, and transformed replication may result in lower network resource usage, but these types of replication tend to work more slowly and require a higher-performance CPU for the source. The best practices for data replication vary greatly depending on your use case requirements and the capabilities of the technologies you are using. ## Data replication in RDBMS Every database technology provides different capabilities and options for data replication. Historically, relational database management systems (RDBMS) replicate data from one database instance to another through log shipping, which involves sending the data from one database instance to another after it’s written to disk. Newer databases, such as the Couchbase NoSQL database, replicate data directly from RAM, significantly increasing speed and reliability. ## Conclusion Data replication is a core concept underpinning many different database capabilities, and replication comes in many different forms with different challenges and advantages. The best data replication choice for your organization depends on what you need to achieve and what technologies you’re using. Use these resources to learn more about data replication and Couchbase’s data replication capabilities: Guide to Cloud Data Replication Data Replication: Advantages & Disadvantages Data Replication and Synchronization in Couchbase Cross Data Center Replication (Couchbase Capella™) Cross Data Center Replication (Couchbase Server) Check out our database hub to learn about other key concepts of data management. --- # Data Silos | Concepts Source: https://www.couchbase.com/resources/concepts/data-silos/ Last modified: 2026-02-09T10:11:47+00:00 ## What are data silos? Data silos are isolated repositories of data controlled by departments or teams, often inaccessible to the rest of the organization. These silos typically arise due to a lack of communication, incompatible systems, or organizational structure. While each silo might efficiently serve its own department or team, they can lead to inefficiencies, redundancy, and missed opportunities for the rest of the company. Breaking down data silos is crucial to fostering collaboration, improving decision making, and enabling an organization to leverage its data assets fully. This resource will explore how silos are created, dive deeper into why they’re problematic, how to spot them, and how to fix them. Keep reading to learn more. - How are data silos created? - Why are data silos problematic? - How do you identify data silos? - Examples of data silos - How to fix data silos - Key takeaways and resources ## How are data silos created? Before we dive into why data silos are problematic, it’s important to understand how they occur in the first place. Let’s go over some factors that contribute to silos: **Organizational structure:**The structure of an organization can lead to data silos. Departments or business units often operate autonomously, managing their data without coordination with other teams.**Technological limitations:**Some organizations use multiple databases and systems, making it difficult to integrate data across platforms.**Company culture:**Your organizational culture may contribute to data silos. Organizations that don’t encourage collaboration between teams or unintentionally stoke internal competition can lead to departmental silos.**Lack of centralized data management tools:**The absence of tools to integrate data resources can result in silos. Not using software that facilitates this can hinder data integration. ## Why are data silos problematic? Data silos can negatively impact your entire organization’s collaborative efforts, efficiency, and decision-making abilities. When organizations don’t have all the information they need (or accurate information), it creates issues that prevent teams from doing their jobs correctly. Here are some of the specific ways silos can hinder an organization: **Data silos can lead to poor data quality.**When the same data exists in different systems, it may not be consistently updated across all platforms, resulting in outdated or incorrect information.**Data silos can cause redundancy and data duplication,**wasting storage and valuable time. This issue arises when there’s a lack of integration between systems.**Data silos lead to incomplete insights**because it’s not consolidated in one system. Without a comprehensive view of all data, organizations can’t make well-informed decisions.**Security risks are a significant concern with data silos.**Managing different systems makes applying and monitoring consistent governance and security policies challenging, leading to potential vulnerabilities. ## How do you identify data silos? Identifying data silos in an organization requires careful analysis of data workflows, systems, and processes. Here are some steps you can take to identify them: ### Evaluate data accessibility Start by assessing which departments or teams have access to specific datasets. Look for situations where teams can’t easily access the data they need or situations where they need to request access from other departments to receive it. This lack of easy access can create barriers and hinder collaboration. ### Review system integration Examine whether the organization’s systems, such as customer relationship management (CRM), enterprise resource planning (ERP), and human resources (HR) platforms, are interconnected. If systems operate independently without sharing data, they create isolated pools of information, preventing departments from collaborating effectively and accessing the full picture. ### Analyze data redundancy Check for duplicated data across platforms to ensure that the same information doesn’t exist in multiple formats or locations. Redundant data can lead to confusion, inconsistency, and inefficiencies as teams reconcile or update information in several places. ### Look for workflow bottlenecks Identify areas where processes are delayed due to a lack of data sharing between teams or systems. For example, a marketing team may need customer data but is waiting for approval from the sales team, creating a bottleneck in the workflow that slows down decision making and further action. ### Audit decision-making processes Investigate whether teams are making decisions with incomplete or fragmented data. Pay attention to complaints about “missing information” or “partial insights” during strategy discussions, as this could indicate the presence of data silos preventing a complete view. ### Check for security inconsistencies Review how data governance policies are applied across systems. Silos often emerge when different platforms have varying data security rules, leading to inconsistent handling of sensitive information and creating isolated data repositories. ## Examples of data silos In many organizations, different departments manage data independently, using their own systems tailored to their specific functions. While this might seem efficient for individual teams, it can lead to silos within an organization. Here are some examples of how these manifest: **Geographic:**Regional offices store data locally due to compliance or infrastructure limitations, preventing real-time access by the central team.**System:**Separate ERP, CRM, and HR platforms don’t share data, requiring manual reconciliation to generate reports.**Legacy:**Older on-premises systems used by specific teams are incompatible with modern cloud-based tools, restricting data flow. ## How to fix data silos Fixing data silos requires addressing both technical and organizational challenges. Here are practical steps to eliminate them: ### Encourage collaboration Foster a culture of open communication and collaboration across departments. By prioritizing transparency as a company initiative and framing data sharing as beneficial to every department, you can reduce the tendency to isolate information. ### Break down technological barriers Replace legacy systems that don’t communicate well with modern tools. Tools that support APIs and real-time data sharing can help bridge the gaps between systems. Although they can be expensive and migrating data to these systems can be complex, it’s worth the time and effort it will save in the future. ### Invest in centralized data platforms Use tools like data warehouses, data lakes, cloud platforms, or customer data platforms (CDPs) that centralize data from multiple sources. Software like this makes it easier to access, share, and analyze data that will accurately influence organizational decisions. ### Standardize processes across the organization Establish consistent protocols for collecting, storing, and managing data. Standardized processes ensure that data from different departments is compatible and can be easily integrated. ### Provide data literacy training Equip employees with the skills and knowledge they need to understand and use data effectively. By empowering teams to work with shared data, organizations can encourage cross-functional insights, ultimately leading to better information. ### Audit and optimize data practices Conduct annual reviews of how data is stored, accessed, and shared within the organization. By identifying potential bottlenecks and inefficiencies, you can take steps to improve processes and continuously eliminate factors that lead to data silos. ## Key takeaways and resources Data silos are collections of data within an organization that exist in a vacuum. They cause problems because they contribute to inefficiency, missing or inaccurate data, and security risks. To identify data silos, you should assess workflows, data accessibility, and integration abilities among existing tools. To resolve them, you should encourage sharing and collaboration between departments, invest in tools that centralize and integrate data, enforce strong data governance policies, and conduct annual audits to spot opportunities for improvement. Ultimately, enabling better collaboration leads to more informed decision making, efficiency, and security. To learn more about data management best practices, you can review our blog and concepts hub and check out the resources below: --- # Database Clustering | Concepts Source: https://www.couchbase.com/resources/concepts/database-clustering/ Last modified: 2026-02-09T08:55:47+00:00 ## What is database clustering? Database clustering groups multiple database servers (or nodes) into a unified system to improve availability, fault tolerance, and performance. This approach helps manage data by distributing workloads and maintaining redundancy, ensuring continuous uptime and better load balancing across nodes. In this resource, we’ll explain how database clustering works and compare it to a related concept: sharding. - How does database clustering work? - Database clustering vs. sharding - Database cluster architecture - Benefits of database clustering - Database clustering guidelines - How to create a database cluster - Key takeaways and additional resources ## How does database clustering work? Database clustering combines multiple servers, or nodes, to function as a single, unified database system. Each node in the cluster is responsible for a portion of the data or workload, but together, they ensure the entire system runs smoothly. This distributed approach allows for improved performance, fault tolerance, and scalability. The basic principle behind clustering is redundancy. Instead of relying on one server, data is distributed across multiple nodes. If one node fails, others can take over its responsibilities, ensuring continuous operation. This redundancy minimizes downtime and data loss, making clustering especially useful for applications requiring high availability. In a typical cluster, the data and requests are distributed among nodes in one of two ways: **Replication:**Data is duplicated across all nodes. Each node contains the same data, so if one fails, others can respond to the same queries without delay. Replication is ideal for read-heavy operations since multiple nodes can serve the same data simultaneously, balancing the load.**Partitioning:**Data is split into chunks, and each node stores only a part of the whole. This method, also known as horizontal scaling, is efficient for handling large datasets, as each node handles only a fraction of the total data. Partitioning is typically used for write-heavy workloads where specific data is routed to designated nodes. ### Communication between nodes Nodes in a cluster communicate with each other constantly, sharing data about their health, status, and workload. This coordination allows them to balance traffic and ensure optimal performance. The collaboration is managed by a cluster management system that monitors and allocates tasks, such as query distribution, data replication, and failure handling. ### Data consistency A key challenge in clustering is maintaining data consistency across all nodes. Clusters use different consistency models depending on the system’s design. These include: **Strong consistency:**Ensures that nodes always reflect the most recent data but may introduce latency due to synchronization. Couchbase, for example, offers durability options to increase reliability while trading off increased latency (and vice versa).**Eventual consistency:**Allows for some delay in propagating updates but prioritizes availability and speed. It’s common in systems where read and write operations happen at different speeds or in different regions. An example is Couchbase’s cross data center replication (XDCR), which replicates the entire dataset between clusters. ## Database clustering vs. sharding Clustering and sharding are not mutually exclusive. In fact, the two techniques often work together to create a more robust, scalable, and high-performing database system. While clustering focuses on redundancy, fault tolerance, and load balancing, sharding emphasizes scalability by distributing data across multiple servers. Below is a table that highlights the key differences between these approaches. Feature | Clustering | Sharding | |---|---|---| Data distribution | Replicated or partitioned across nodes | Horizontally partitioned across shards | Fault tolerance | High, with automatic failover mechanisms | Limited, requires manual or complex recovery | Scalability | Limited to the number of nodes in the cluster | Unlimited, scales horizontally by adding shards | Performance focus | Optimized for read-heavy and balanced workloads | Best for write-heavy and large datasets | Data isolation | Low, nodes share data or partition workloads | High, each shard operates independently | Data redundancy | Data is either replicated or partitioned | Data is split into separate partitions | Load balancing | Yes, traffic is distributed among nodes | Not inherently, but it can be managed per shard | Complexity | Simpler setup with automated management | More complex, requires custom shard management (or automatic sharding mechanism) | **Clustering without sharding:** In some scenarios, database clustering is used alone. For example, a company with a read-heavy application, like a large e-commerce site, may set up a cluster of replicated nodes. Each node has a copy of the entire database, and queries are distributed across the nodes to balance the load. If one node fails, another can quickly take over without disruption. This setup is common in relational databases like MySQL or PostgreSQL, where high availability is prioritized, and the dataset is still small enough to be managed without sharding. **Sharding without clustering:** On the other hand, sharding can be used without clustering in write-heavy applications or systems with massive datasets that can’t fit on a single machine. A social media platform with millions of users might shard its database by user ID, so each shard contains a subset of user data. Each shard operates independently in this case, and there is no redundancy unless specific mechanisms are implemented to handle failures. MongoDB™, for example, allows sharding across multiple servers without requiring clustering, making it scalable but with limited built-in fault tolerance. **Clustering with sharding:** In large-scale systems where both high availability and scalability are crucial, sharding and clustering are often used together. This hybrid approach is used in systems like Couchbase, where sharding (vBuckets) is combined with clustering to create a highly scalable and fault-tolerant system, bringing together the best of both worlds. ## Database cluster architecture The architecture of a database cluster defines how data is stored, accessed, and managed across multiple nodes. There are three primary types of database cluster architectures: **shared nothing, shared disk, and shared everything**. These architectures offer different performance, scalability, and fault tolerance trade-offs, making them suitable for different use cases. ### Shared-nothing architecture In a shared-nothing architecture, each node in the cluster operates independently. Every node has its own CPU, memory, and storage, and they do not share any resources with other nodes. Data is partitioned across nodes, so each one manages its own subset of the overall data. **No resource sharing:**Nodes do not share memory or disk, which reduces bottlenecks.**High scalability:**New nodes can be added to the system easily, as there is no central resource to contend with.**Fault isolation:**If one node fails, only the data managed by that node is affected. Other nodes continue to operate normally (and other nodes will likely have replica copies to recover with). This architecture is ideal for workloads that need to scale horizontally, such as web applications with large datasets. Systems like Couchbase use shared-nothing architectures, where data is distributed across nodes for better performance and reliability. ### Shared-disk architecture In a shared-disk architecture, all nodes share access to the same storage system, but each node has its own CPU and memory. This means multiple nodes can access the same data on disk, allowing for easier data consistency and centralized data management. **Shared storage:**All nodes access the same disk or storage system.**Centralized data:**Since all nodes see the same data, there’s less need for data partitioning or replication. However, this also means that a failure in the shared disk can lead to the entire system going down.**Moderate scalability:**This architecture can scale, but performance can become bottlenecked by the bandwidth of the shared storage system. Shared-disk architectures are commonly used in systems like Oracle, where multiple nodes need concurrent access to the same data. ### Shared-everything architecture In a shared-everything architecture, all nodes share both the storage and memory resources. This model ensures that all data and memory are accessible by all nodes at any given time. While this architecture can help with load balancing and data availability, it can also introduce significant performance bottlenecks as nodes compete for access to shared resources. **Full resource sharing:**All nodes share both storage and memory resources, leading to easier management of resources and data consistency.**Load balancing:**With access to the same resources, workloads can be evenly distributed across nodes.**Limited scalability:**This architecture doesn’t scale well because adding more nodes increases contention for shared resources. Shared-everything architectures are less common today because of the inherent limitations in scaling and the potential for bottlenecks, but IBM Db2 is the most well-known example. ## Benefits of database clustering Database clustering offers several key advantages, making it an essential solution for high-demand applications. These include: ### High availability Clustering ensures high availability by replicating data across multiple nodes. If one node fails, others automatically take over, minimizing downtime and maintaining continuous access to the system. ### Scalability Clustering provides horizontal scalability, allowing you to add more nodes as your data or traffic grows. This ensures consistent performance and the ability to handle increasing workloads without bottlenecks. ### Fault tolerance and failover With fault tolerance, clustering automatically handles node failures through built-in failover mechanisms, ensuring that requests are rerouted to healthy nodes and minimizing service interruptions. Other benefits include load balancing, enhanced performance, data redundancy, and maintenance flexibility. ## Database clustering guidelines When setting up a database cluster, certain principles help ensure optimal performance and reliability. Fortunately, many of these are automatically managed by systems built for clustering, such as Couchbase, which simplifies much of the complexity. **Define your goals:**Typically, your goals will be high availability, scalability, and performance.**Choose the right architecture:**Consider your workload (read heavy vs. write heavy vs. shared nothing) when setting up your cluster.**Fault tolerance and failover:**Utilizing replication and redundancy minimizes downtime, making failover configurations less of a concern.**Load balancing:**Consider how you’ll distribute traffic across nodes to ensure even workloads and optimal performance.**Scalability and capacity:**Plan ahead for growth and remember that shared nothing is the easiest architecture to expand.**Data consistency:**Ensuring strong or eventual consistency based on your application’s needs gives you multiple options.**Monitoring and maintenance:**Using tools within the system helps track performance and identify issues. Couchbase, with a shared-nothing architecture, is a popular choice, especially for large and growing systems (e.g., LinkedIn and Trendyol), as it automatically handles replication, sharding, and failover. ## How to create a database cluster Creating a database cluster involves multiple stages, including selecting the right technology, configuring nodes, and ensuring proper communication between them. Here’s an outline of the key steps involved: **Select the database software:** First, choose a database system that supports clustering. Popular databases like Couchbase offer built-in clustering features. The choice of software depends on your workload, data model, and scalability needs. **Provision nodes:** In a database cluster, nodes are the individual servers that work together. These nodes must be provisioned with the appropriate hardware resources, such as CPU, memory, and storage. They can be physical machines or virtual servers, depending on your infrastructure. **Configure networking:** To ensure smooth communication between nodes, you need to configure networking. This process includes setting up IP addresses and subnets and ensuring the nodes can communicate over secure channels. Low-latency, high-bandwidth connections are crucial for performance. **Set up data replication:** One of the core components of clustering is replication, where data is copied across multiple nodes to ensure availability in case of a failure. Configure the replication mechanism, ensuring that data is consistently synchronized between nodes. Doing this also enhances fault tolerance. **Load balancing:** A load balancer is often implemented to distribute traffic evenly across the cluster unless the database cluster has this capability built in. The load balancer directs incoming queries to different nodes based on load and availability, preventing any single node from becoming overwhelmed. **Configure cluster management tools:** Cluster management software helps monitor the cluster’s health, providing insights into node performance and alerting you to failures. Tools like Kubernetes are often used to manage and abstract these details. **Test for fault tolerance:** After initial setup, it’s important to test the cluster’s ability to handle node failures. Testing ensures that the remaining nodes can still manage the workload without causing downtime or data loss if a node goes offline. **Monitor and maintain:** Once the cluster is operational, continuous monitoring is critical. Keep an eye on performance metrics, data replication lag, and the health of each node. Regular updates and patches should be applied to keep the cluster secure and efficient. Creating a database cluster involves multiple technical steps, from configuring networking to setting up replication and load balancing. Proper planning and management ensure the cluster is robust, scalable, and can handle high availability requirements. ## Key takeaways and additional resources Clustering alone is ideal for high availability, fault tolerance, and balancing read-heavy workloads. Sharding alone is best for handling massive datasets and scaling out write-heavy workloads but lacks the redundancy that clustering provides. When combined, clustering with sharding allows for both massive scalability and high fault tolerance, making it the go-to architecture for large-scale applications that handle enormous data loads while maintaining availability and performance. By understanding the strengths of clustering and sharding and how they can complement each other, you can better design a database system that meets your specific needs, whether for high availability, scalability, or both. Do you want to build a database cluster yourself? Couchbase’s shared-nothing architecture makes it easy. Here are some options, depending on how much control you want to exert over your cluster: **Couchbase Capella™:**A Database-as-a Service (DBaaS) that gives you a moderate amount of control but handles many details for you. You can get started with the free tier right now.**Couchbase Autonomous Operator:**A Kubernetes API designed to create and manage containerized Couchbase clusters. It gives you a high level of control and can be deployed to any Kubernetes cluster, including Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift, and Rancher Kubernetes Engine (RKE).**Couchbase Server:**Couchbase Server (Enterprise or Community Edition) gives you total control over your cluster. Scaling Couchbase is still very easy, but with Server, you do need to manage the infrastructure (network, VMs, servers) yourself. To learn more about concepts related to clustering from Couchbase, you can visit our blog and concepts hub. --- # What Is Cloud Database Hosting? Benefits & More Source: https://www.couchbase.com/resources/concepts/database-hosting/ Last modified: 2026-02-09T11:09:40+00:00 ## What is database hosting? Database hosting is a service provided by a database host company (usually a cloud data center or cloud provider) that includes everything you need to run your chosen database. Database hosts provide security to keep your data safe, and scalability to ensure your data and data operations can grow when needed. Some hosts also offer other database-related services that can help your team innovate or gain a competitive edge. This page will cover: - Benefits of database hosting - Database hosting considerations - Database hosting providers - NoSQL database hosting - Conclusion - FAQ ## Benefits of database hosting Database hosting has become popular as an alternative to managing your own database on premises in your data center. Benefits of database hosting include: **Availability and reliability:**Database hosting providers generally include built-in redundancies and automated backups to protect against data loss and downtime. They can also provide uptime guarantees.**Scaling:**Database hosts can provide flexible options to increase the size and capacity of your database without having to overhaul your database entirely.**Security:**Hosts provide continuous security monitoring, encryption, audits, and firewalls. They also apply security patches quickly, reducing exposure to new vulnerabilities.**Cost-efficiency:**Maintaining your own data center, hardware, and specialized IT staff is expensive. Database hosting companies manage this overhead themselves, providing economies of scale. Subscription-based pricing models can also make expenses more predictable.**Expert support:**Database hosting provides technical support, troubleshooting, and services like data migration as a package deal. This level of support and expertise can be difficult to obtain and maintain for your in-house data center. ## Database hosting considerations When evaluating a database hosting service, you should consider several factors to ensure you choose the best option for your organization’s needs. Here are five key considerations: **Customization and access control:**When you host and manage your own on-premises database, you have maximum control of everything from hardware to end users. Hosted databases give you less control. Even the most permissive database host will have some limits on what you can customize and access.**Cost structure:**Pricing can be complex and can include a variety of factors such as storage size, number of queries, read/write throughput, and more. Make sure you understand not just the up-front costs but also the ongoing expenses and any potential additional fees (like data transfer, backups, or exceeding usage limits).**Database technologies:**Most database technologies will be available from hosts and providers. Still, it’s important to understand what options are available for the database technologies you plan to use.**Public cloud options:**For any database host you’re considering, be sure you understand their public cloud hosting options. Are Azure, AWS, and Google Cloud all included? Which data centers are available within those providers? Is the database hosting provider using their own data center(s)?**Database-as-a-Service:**If a database hosting company provides a DBaaS, they are taking on the burden of installation, upgrades, maintenance, and configuration. An example of a DBaaS is Couchbase Capella™, the cloud database hosting service provided by Couchbase. It’s available for Azure, AWS, and Google Cloud and also includes App Services to support automatic mobile database sync. ## Database hosting providers Database hosting providers offer a range of databases to cater to all businesses from small startups to large enterprises. While there are many database hosting services available, the three that are most well known are: Each provider offers a complex suite of databases to meet different requirements. For instance, AWS offers DynamoDB for key-value, RDS and Aurora for relational engines, Kinesis for stream data, Glue for ETL, Lake Formation for data lakes, and many other options. Azure and Google Cloud also have a complex set of databases that you can use to put together your own data platform. You’ll need to manage the costs and complexity of all these parts carefully. Couchbase Capella provides one unified platform so you can handle many database requirements without worrying about cloud database sprawl. This unified platform simplifies your database hosting requirements and helps reduce costs. And Capella can run on any major cloud provider, which makes it a seamless experience if you want to switch cloud providers or use multiple cloud providers. ## NoSQL database hosting NoSQL database hosting services offer a modern approach to data management and are particularly suitable for projects that deal with large volumes of structured and unstructured data, real-time analytics, and complex queries. Unlike traditional relational databases, NoSQL databases scale horizontally and provide high availability, making them ideal for cloud hosting environments. NoSQL offers various data models such as key-value, document, time series, and SQL, enabling flexibility to meet application needs. A database like Couchbase that supports multiple data models is known as a multi-model database. Businesses often turn to Couchbase Capella for database hosting to support applications that require automatic scaling, low-latency data access, and the ability to handle a mix of data types and structures. ## Conclusion Database hosting has emerged as a popular alternative to on-premises data centers because it offers a variety of benefits that include high availability, scalability, security, cost-efficiency, and expert support. Organizations have many database hosting options, including cloud providers like Azure, AWS, and Google Cloud, as well as complete data platform services like Couchbase Capella for NoSQL databases. Database hosting services can provide businesses with the tools to manage, analyze, and secure their data effectively, allowing them to focus more on their core operations and less on database management complexities. Each option has strengths and weaknesses around customization, cost structure, and technology offerings, making it essential to assess your needs carefully. Ready to give database hosting a try? Sign up for a free trial of Couchbase Capella. Also, check out our database hub to learn about other key concepts around data management. ## FAQ **What is a database host? ** A database host is a service provider that offers the infrastructure and tools needed to run and manage a database, typically in a cloud data center. **How much does it cost to host a database? ** The cost of database hosting can vary widely depending on factors like storage size, query volume, and provider. Costs range from a few dollars a month for basic services to thousands of dollars for enterprise-level solutions. **Where can I host a database? ** You can host a database with various providers like AWS, Azure, or Google Cloud. You can use a specialized database hosting service. Or you can even host on your own on-premises hardware. **How do I host a database locally? ** To host a database locally, you’ll need to install the database software on a local machine, configure it according to your needs, and ensure it’s accessible to any applications that need to interact with it. --- # Database Scalability: Horizontal & Vertical Scaling Explained Source: https://www.couchbase.com/resources/concepts/database-scalability/ Last modified: 2026-02-09T10:17:42+00:00 ## What is database scalability? This page will cover the following to help you better understand database scalability: - Horizontal versus vertical scaling - Database scalability challenges - How to improve database scalability - Scalability of NoSQL versus relational databases - Conclusion What is database scalability? Database scalability is not just the ability of a database to handle more load but also to improve performance as the business demands on an application increase. Note that scaling doesn’t just mean scaling resources up to meet greater demand but also down if demand decreases. Failure of a database to scale has three typical outcomes: CPU/memory overload, storage reaching capacity, and network overload that downgrades data traffic. Any one of these issues, or a combination of them, can bring down your application and seriously impact your business. This page covers two types of scaling, the challenges of each one, and recommended solutions to overcome those challenges. Finally, it compares NoSQL and relational databases in the context of scalability and shows why Couchbase is the best choice for scalability. ## Horizontal versus vertical scaling There are two ways a database can improve its availability and behavior when more resources are demanded: vertical scaling and horizontal scaling. ### What is horizontal scaling? Horizontal scaling, better enabled in non-relational systems, refers to adding more nodes to share an increased load. These nodes are part of a cluster that can be spread across multiple servers, and the data can be connected via joins. Horizontal scaling is also known as scaling out. ### What is vertical scaling? Vertical scaling refers to adding more physical or virtual resources to a database that’s running on a single server. This can be accomplished by adding more CPU power, memory, or storage capacity. Vertical scaling is also known as scaling up. ### Which is better, horizontal or vertical scaling? The type of scaling you should choose depends on your application and the particular challenges you need to overcome. Factors to consider: - Vertical scaling is a good first option when you don’t need a massive jump in scale, and you want to minimize changes to the overall system beyond the changes to your compute resources - Scaling vertically may require downtime if you’re switching machines to gain more resources - Ultimately, as your compute resources expand, it may be more expensive to grow and maintain your database using vertical scaling When you run into these issues, or if you want to future-proof your system for different growth scenarios, horizontal scaling is the way to go. - Horizontal scaling can improve fault tolerance and availability because it reduces the impact of a single server failure - Horizontal scaling may require architecture and code changes to your application, however, the impact is mitigated by modern databases like Couchbase that provide autoscaling capabilities ## Database scalability challenges Scaling a database can be complicated, and the challenges you encounter will depend on a number of factors. The first challenge may be that you have a legacy application that runs on a relational database. In this case, you have to choose between throwing more physical/virtual resources at it or redesigning your application to run on a database that supports horizontal scaling. Another challenge of scaling modern applications is managing costs depending on different loads. You don’t want to pay the same price for compute resources during times of low usage and high usage. You want your costs to match your demand. A third challenge is that horizontally scaled databases can be more complicated to maintain and manage. Couchbase Capella™ is an ideal solution in this case because it’s a fully managed Database-as-a-Service (DBaaS) that supports replication and sharding as well as multi-dimensional scaling. ## How to improve database scalability You can improve horizontal scaling by supporting both replication and sharding. ### Replication Replication is a form of scaling that creates copies of a database or database nodes. If one node goes down, a copy of its data can be retrieved from a different node. Another advantage of replication is that requests can come into different nodes in different locations, thereby decreasing the load burden on any particular node. A few key components of Couchbase are based on a master-master replication topology in which multiple Couchbase instances can act as master nodes and replicate data to one another: - Couchbase uses **replication streams**to replicate data between nodes. A replication stream is a continuous bidirectional stream of data between two nodes. - Couchbase **stores data in buckets**, which are logical containers that group related data together. Each bucket can be configured to replicate its data to one or more other nodes. - Cross data center replication (XDCR) is a feature in Couchbase that allows for replication between data centers. XDCR enables replication between Couchbase clusters, which can be located in different regions or availability zones. - In a master-master replication topology, conflicts can occur when multiple nodes update the same piece of data simultaneously. Couchbase has a **conflict resolution mechanism**that relies on document versioning and timestamps to resolve conflicts. ### Sharding Sharding, also known as partitioning, is also based on the principle of moving data across multiple nodes. Unlike replication, sharding involves splitting the data rather than making copies. Database sharding divides the entire dataset into multiple groups known as shards. Once divided, each shard can be stored independently, usually on multiple servers that are often referred to as a cluster. Each shard can be accessed independently, which means you can access data faster and have more resources available for processing, computing, and storage. Sharding enables faster performance but also introduces greater complexity. This complexity includes the concept of rebalancing, which involves moving data between shards over time in order to keep it distributed evenly. For more details, refer to this guide on sharding in Couchbase. ## Scalability of NoSQL versus relational databases NoSQL databases are inherently more scalable than relational databases because you can scale them both vertically and horizontally. And they have a distributed architecture designed to handle large volumes of data across multiple servers. Traditional relational database management systems (RDBMS), such as Oracle, focus on consistency over availability. Inversely, NoSQL databases choose availability over consistency and focus more on supporting higher volumes of users and data. Also, data distribution is more fault tolerant if some nodes go down. ## Conclusion To stay a step ahead of your scaling demands, do regular load testing and choose a database that supports the method of scaling that’s best for your application and business needs. Know that there are compromises required for both horizontal and vertical scaling approaches, such as choosing cost over complexity or uptime over consistency. Use these resources to learn more about database scaling with Couchbase: - Multi-dimensional database scaling - detail on Couchbase services, rebalancing, statuses, events, and jobs - Why choose a NoSQL database? - what NoSQL is, how it works, and what NoSQL databases are good for - Serverless databases - advantages for developers, data persistence for applications, and applications supported - Couchbase Capella DBaaS - the easiest and fastest way to begin with Couchbase and eliminate database management --- # Development Environment | Concepts Source: https://www.couchbase.com/resources/concepts/development-environment/ Last modified: 2026-02-09T10:10:23+00:00 ## What is a development environment? In software and web development, a development environment provides a special workspace for developers to test and improve applications and websites without affecting the live, working version. The development environment is like a safe, enclosed area where developers can freely try out new code, features, and settings without worrying about breaking the live website or application. This guide will explore various aspects of development environments, including their importance, key features, programming languages they support, and various use cases. Additionally, we’ll discuss the benefits of using a development environment and provide practical tips on setting one up. By the end of this guide, you’ll understand development environments and their significance in the software development process. - What is an integrated development environment? - The importance of development environments - Types of development environments - Development environment features - Languages supported by development environments - Development environment use cases - Benefits of using a development environment - Setting up a development environment - Conclusion and additional resources ## What is an integrated development environment? An integrated development environment (IDE) is a comprehensive software application that provides developers with a unified interface to write, edit, compile, and debug code. IDEs are designed to streamline the development process by integrating various tools and functionalities into a single application, helping developers be more productive and efficient. Popular examples of IDEs include: **Visual Studio:**A comprehensive IDE by Microsoft for developing applications on many platforms, including Windows, Android, and iOS.**Eclipse:**An open source IDE mainly used for Java development but supports other languages via plugins.**IntelliJ IDEA:**A Java-centric IDE by JetBrains, known for its advanced code analysis and user-friendly features. IDEs are designed to simplify and streamline the development process, offering tools and features that help increase productivity and reduce errors. ## The importance of development environments Development environments are essential for effective software development because they: **Facilitate customization:**They allow developers to tailor the workspace to fit their needs and preferences, improving comfort and efficiency.**Enhance security:**Integrated security features help identify and address vulnerabilities early in the development process, leading to more secure applications.**Support resource management:**Tools within the environment help monitor and optimize resource usage, such as memory and CPU, ensuring better performance. By providing these essential features, development environments significantly boost productivity, security, and resource management throughout the development process. ## Types of development environments A development environment refers to the software and tools used to create, test, and deploy software applications. There are several types of development environments, each with its strengths and weaknesses. Here are some of the most common types of development environments: **Integrated development environments (IDEs):**IDEs are comprehensive software packages that provide a range of tools, including code editing, debugging, and version control. They’re designed to streamline the development process and provide developers with a comfortable and efficient workflow.**Text editors:**Text editors are simple software applications that allow developers to create and edit code. They’re often used by developers who prefer a more lightweight and flexible development environment. Popular text editors include Sublime Text, Atom, and Vim.**Command-line interfaces (CLIs):**CLIs are text-based interfaces that allow developers to interact with their code using commands and scripts. They’re often used by developers who prefer a more automated and efficient development process. Popular CLIs include Git Bash, Terminal, and Command Prompt.**Cloud-based development environments:**Cloud-based development environments provide a flexible and scalable way to develop software applications. They allow developers to access their code and tools from any device with an internet connection. Popular cloud-based development environments include AWS Cloud9, Google Cloud Code, and Microsoft Azure DevOps.**DevOps environments:**DevOps environments are designed to support the entire software development lifecycle, from coding to deployment. They provide a range of tools and services, including version control, continuous integration and delivery, and infrastructure automation. DevOps environments are often used by teams that require a more streamlined and automated development process. Popular DevOps environments include Jenkins, GitLab, and CircleCI. Ultimately, the choice of environment will depend on the project’s specific needs and the preferences of the development team. ## Development environment features A development environment should provide comprehensive features that help developers efficiently design, code, test, and deploy software applications. Here are some of the key features that a development environment should offer: **Code editing:**A development environment should provide a code editor with syntax highlighting, code completion, and code formatting capabilities.**Version control:**A development environment should allow developers to manage their code changes using version control systems like Git, SVN, or Mercurial.**Debugging:**A development environment should provide debugging tools that allow developers to identify and fix errors in their code.**Testing:**A development environment should provide testing tools that allow developers to write and run automated tests for their code.**Collaboration:**A development environment should provide collaboration tools that allow developers to work together on software projects, including real-time collaboration, version control, and communication tools. By providing these features, a development environment can help developers work more efficiently, collaborate more effectively, and deliver high-quality software applications. ## Languages supported by development environments Development environments support a wide range of programming languages, allowing developers to work on projects in their preferred language. Here are some of the most popular languages supported by development environments: **Python:**Python is used for data science, machine learning, and web development and supported by development environments like PyCharm, Visual Studio Code, and Spyder.**Java:**Java is used for Android app development, web development, and enterprise software development and supported by development environments like Eclipse, NetBeans, and IntelliJ IDEA.**JavaScript:**JavaScript is used for web development and supported by environments like Visual Studio Code, Sublime Text, and Atom.**C++:**C++ is used for systems programming, game development, and high-performance computing and supported by development environments like Visual Studio, CodeLite, and CLion.**C#:**C# is used for Windows and web application development and supported by development environments like Visual Studio, Visual Studio Code, and ReSharper.**PHP:**PHP is used for web development and supported by development environments like PhpStorm, Visual Studio Code, and Sublime Text.**Swift:**Swift is used for iOS and macOS app development and supported by development environments like Xcode, Visual Studio Code, and IntelliJ IDEA.**Ruby:**Ruby is used for web development and supported by development environments like Visual Studio Code, Sublime Text, and RubyMine.**Go:**Go is used for systems and concurrent programming and supported by development environments like Visual Studio Code, IntelliJ IDEA, and GoLand.**Rust:**Rust is used for systems programming and embedded development and supported by development environments like Visual Studio Code, IntelliJ IDEA, and Rust IDE. These are just a few examples of the many programming languages supported by development environments. Each language has its own tools and features designed to help developers write, test, and debug their code more efficiently. ## Development environment use cases Using a development environment can enhance productivity and streamline workflows across various scenarios, including: **Web development:**IDEs provide tools for frontend and backend development, including code completion, syntax highlighting, and live preview features. They also integrate with frameworks like React, Angular, and Django, simplifying the development process for websites and web applications.**Mobile app development:**Development environments like Android Studio and Xcode offer specialized tools for building Android and iOS apps. They include emulators, debugging tools, and support for languages like Java, Kotlin, Swift, and Objective-C, making mobile development more efficient.**Game development:**Game development environments like Unity and Unreal Engine provide robust tools for creating games. They offer features like asset management, physics engines, and real-time collaboration, allowing developers to build and test games effectively.**Data science and machine learning:**IDEs like Jupyter Notebook, PyCharm, and RStudio cater to data scientists and machine learning engineers. These environments offer data visualization, code execution, and integration with libraries like TensorFlow and pandas, facilitating data analysis and model development. By using a development environment suited to these tasks, developers can work more efficiently, simplify their processes, and improve the quality of their software projects. ## Benefits of using a development environment Using a development environment and working with an integrated development environment can improve overall productivity because it: **Simplifies configuration:**An IDE provides all necessary tools in one place, eliminating the need to configure each tool separately. This streamlines setup, reduces time spent switching between tools, and increases developer productivity.**Allows for mistakes:**Development environments provide a safe space for developers to experiment and make mistakes without serious repercussions. By supporting comprehensive testing and debugging, they enable developers to learn from errors, fix issues, and refine features before final deployment.**Streamlines debugging:**IDEs come with built-in debugging tools that make finding and fixing bugs easier and quicker. Developers can step through code, set breakpoints, and inspect variables to identify and resolve issues efficiently.**Facilitates testing and deployment:**Integrated testing frameworks make creating and running test cases simple, while built-in deployment tools ensure a smooth transition from development to production.**Enhances collaboration:**Development environments standardize various aspects of development, making it easier for multiple developers to work together. By using these features, developers can greatly enhance the efficiency and quality of their work, making it easier to set up, debug, test, deploy, and collaborate on their projects. ## Setting up a development environment Setting up a development environment involves several important steps to ensure you have all the tools and configurations needed to start coding effectively. Here’s a simple guide to get you started: **1.** **Choose your tools:** **Select an IDE or code editor:** Choose one that fits your needs, such as Visual Studio Code or IntelliJ IDEA. **2.** **Install required software:** **Download and install:** Get the IDE or editor and any necessary programming languages or frameworks. **3.** **Configure your environment:** **Set up environment variables:** Configure any paths or settings needed for your tools. **4.** **Integrate version control:** **Install Git:** Set up Git and connect to a repository service like GitHub. **5.** **Test your setup:** **Run a sample project:** Ensure everything works by creating and running a simple project. Following these steps ensures a functional development environment that supports efficient coding and project management. ## Conclusion and additional resources Understanding and utilizing the appropriate development environment tailored to your specific needs will not only simplify the development process but also improve the overall quality of your software. By following the steps to set up and maintain your environment, you set yourself up for success and create a more productive and enjoyable coding experience. **Additional resources** - Visual Studio Code documentation: Comprehensive guide to getting started with Visual Studio Code, including setup and extensions. - GitHub Learning Lab: Interactive courses on using Git and GitHub for version control and collaboration. - Python official documentation: Detailed information on Python installation and environment setup. - AWS Cloud9 documentation: Guide for setting up and using AWS Cloud9 for cloud-based development. **Articles and guides** - A guide to generative AI development - API vs. SDK: Breaking down the differences - What is modern application development? A guide - Elevating remote development These resources provide valuable information and support to help you maximize your development environment and enhance your software development skills. To learn about other concepts related to development and DevOps, visit our blog and concepts hub. --- # DevOps Phases | Concepts Source: https://www.couchbase.com/resources/concepts/devops-phases/ Last modified: 2026-02-09T09:21:06+00:00 ## DevOps overview Traditional software development often suffers from delays and inefficiencies due to a lack of collaboration between development and operations teams. Developers write code and then hand it over to operations for deployment, which can cause bottlenecks, slow feedback, and issues with code quality. As projects grow more complex and customer demands increase, this siloed approach makes it harder to keep up. DevOps addresses these issues by bringing development and operations together as a unified front. Using automation and continuous processes, DevOps enables a seamless workflow from planning and coding to deployment and monitoring. This approach emphasizes collaboration, speed, and feedback, allowing teams to deliver reliable software more quickly and adapt rapidly to new requirements. This resource breaks down each phase of the DevOps life cycle, showing how they work together to deliver high-quality software faster. Keep reading to learn more. - What is the DevOps life cycle? - DevOps life cycle phases (The seven Cs of DevOps) - Best practices for the DevOps life cycle - Challenges of the DevOps life cycle - Key takeaways and DevOps resources ## What is the DevOps life cycle? Imagine you’re working with a team to build and launch an application. From initial brainstorming to the final release, a series of steps - often called the DevOps life cycle - keeps everything running smoothly and improves developer productivity. Each phase has its purpose, and all work together to help you deliver reliable software faster with fewer roadblocks. ### Plan It all starts with planning. Here, you and your team outline your project’s goals, features, and timeline. Planning ensures that developers, operations, and sales are on the same page. Think of this as setting your foundation - ensuring everyone understands the roadmap and what’s required for a successful release. ### Code Once you have a plan, it’s time to start coding. In this phase, developers bring ideas to life, writing the code that powers the application. Using version control tools like GitHub and GitLab, your team can work simultaneously, track changes, and ensure everyone’s contributions fit together seamlessly. ### Build Now comes the build phase. This is where the code transforms into an actual application. Automated tools compile everything so that you can catch and fix any issues early on. Think of it as assembling all the pieces to ensure they fit and function as expected. ### Test With the application built, it’s time to test it. Here, automated and manual tests help ensure your software works as intended. By identifying and fixing bugs at this stage, you ensure users get the best experience possible, saving you and your team future headaches. ### Deploy Once everything is tested and ready, it’s time to deploy. Using automated deployment tools like Jenkins, GitLab CI/CD, and Azure DevOps, you can release your software to users quickly and reliably. This phase ensures that the transition from testing to live use is smooth and that users can access updates without a hitch. ### Operate Now that your software is live, it’s all about keeping it running smoothly. During this phase, your team monitors the system’s infrastructure, ensuring it’s available, reliable, and ready to handle demand. Here, you manage resources and ensure everything scales as your user base grows. ### Monitor Finally, in the monitoring phase, you track performance and gather feedback. This helps you catch issues early and see how users interact with the software. By keeping a close eye on things, you not only maintain quality but also gain insights for the next round of improvements. Each phase in the DevOps life cycle works together to create an efficient, adaptable, and always improving flow. As you move through them, you’re setting up a process that supports faster releases, higher quality, and happier users. ## DevOps life cycle phases (The seven Cs of DevOps) The DevOps life cycle is structured around seven continuous phases, known as the seven Cs. Each phase is vital in delivering software more efficiently, ensuring high quality, and maintaining responsiveness to user needs. Here’s a closer look at each phase and the tools commonly used during these stages. ### Continuous development In the continuous development phase, teams plan, design, and write code for new features and enhancements. This phase emphasizes collaboration among developers, operations, and stakeholders to ensure everyone is aligned on goals and requirements. Tools like Git and Apache Subversion (SVN) are used for version control, allowing teams to manage code changes and collaborate effectively. Project management tools such as Jira and Trello help track tasks and progress throughout development. ### Continuous integration Continuous integration (CI) involves regularly merging code changes into a shared repository. Each integration triggers automated builds and tests, allowing teams to identify and resolve issues early in the development process. Tools like Jenkins and GitLab CI/CD facilitate the setup of CI pipelines and automate the build process, while CircleCI and Travis CI integrate testing and deployment workflows, ensuring that the latest changes are continuously integrated and validated. ### Continuous testing The continuous testing phase ensures that all code changes are thoroughly tested before release. Automated testing allows for consistent validation of features, catching bugs early, and ensuring software quality. Testing frameworks like Selenium provide automated functional testing for web applications, while JUnit and TestNG are commonly used for unit and integration testing in Java applications. Additionally, Postman is popular for API testing, validating service endpoints to ensure they perform as expected. ### Continuous deployment In the continuous deployment phase, successful builds from the CI process are automatically released to production environments. This allows for rapid delivery of new features and fixes, reducing time to market. Deployment tools like AWS CodeDeploy streamline the deployment process to Amazon EC2 instances, while Octopus Deploy helps manage complex release processes. For containerized applications, Kubernetes facilitates seamless updates and orchestration, ensuring that new code is deployed smoothly. ### Continuous feedback Continuous feedback focuses on collecting user and system feedback to guide future improvements. This phase ensures that teams can respond quickly to user needs and address any issues that arise after deployment. Monitoring tools like New Relic and Dynatrace gather performance metrics and user analytics, providing valuable insights into how the application is used. Additionally, Google Analytics tracks user interactions, and tools like Hotjar provide heatmaps and feedback to enhance user experience. ### Continuous monitoring In the continuous monitoring phase, teams track the health and performance of applications in real time. This proactive approach helps detect issues before they impact users, ensuring a smooth experience. Tools like Prometheus and Grafana are commonly used for system monitoring and visualizing metrics, while Splunk analyzes logs and operational data to identify potential problems quickly. ### Continuous operations The continuous operations phase ensures that applications and systems remain functional and available without downtime. This phase includes regular maintenance, scaling, and updates to support ongoing service delivery. Configuration management tools like Ansible and Chef Infra automate system updates and maintenance tasks, while Terraform enables infrastructure as code (IaC), managing and provisioning resources automatically. Kubernetes also plays a crucial role in orchestrating and managing containerized applications, ensuring efficient resource allocation and operational resilience. Together, the seven Cs of DevOps create a comprehensive life cycle that promotes collaboration, automation, and continuous improvement, enabling teams to deliver high-quality software efficiently and responsively. ## Best practices for the DevOps life cycle The DevOps life cycle is a continuous process involving development, testing, integration, deployment, and monitoring. Best practices aim to streamline and automate these steps for rapid, reliable delivery. Here’s an overview of best practices: ### Shift-left testing Shift-left testing involves moving testing to the earliest stages of the DevOps life cycle, emphasizing early and continuous testing to catch issues before they escalate. This approach integrates test-driven development (TDD) and behavior-driven development (BDD), allowing for automated testing with each code change. By identifying defects early, shift-left testing reduces rework, improves code quality, and ensures smoother, more reliable releases, enhancing developer efficiency and product stability. ### Monitoring and logging Monitoring and logging provide essential visibility into application and infrastructure health. Effective monitoring captures real-time performance metrics, while logging offers a detailed historical record for debugging. Observability expands on these by directly integrating telemetry data (logs, metrics, and traces) into the pipeline to identify data quality issues and proactively address root causes. Together, monitoring, logging, and observability enable quick issue resolution, minimize downtime, and support data-driven decision-making, ensuring a resilient and efficient DevOps process. ### Security as code (SaC) / DevSecOps SaC, or DevSecOps, integrates security practices directly into the DevOps pipeline, making security a continuous part of development. Security checks, such as vulnerability scans and dependency analysis, are automated within the CI/CD process, ensuring potential issues are identified early. By embedding security into code, infrastructure, and processes, DevSecOps reduces risk, strengthens compliance, and builds resilient systems capable of responding to evolving threats. ## Challenges of the DevOps life cycle The DevOps life cycle presents several challenges as teams work to streamline development, integration, and deployment processes. Here are some key challenges: ### Cultural shift and collaboration One of the biggest hurdles is the cultural shift required, especially in traditional environments where development and operations teams operate in silos. Transitioning to DevOps demands cross-functional collaboration and a mindset of continuous learning, which can meet resistance without strong leadership support and clear communication. In addition to the cultural shift, there’s often a challenge with tool overload; DevOps pipelines typically involve multiple tools for CI/CD, testing, and monitoring. Integrating these tools seamlessly can become complex, leading to redundancies or workflow inefficiencies if not managed carefully. ### Skill gaps DevOps requires a range of skills and knowledge of coding, infrastructure, automation, testing, and security. This broad skill set can be challenging to find in a single team, leading to potential gaps in expertise. When teams lack certain skills, it can hinder automation efforts, limit troubleshooting capabilities, and slow the adoption of new tools or practices. Closing these skill gaps requires continuous training and upskilling and fostering a culture where team members share knowledge and specialize in key areas of the DevOps pipeline. ### Automating testing and quality assurance Building comprehensive automated tests for complex applications is challenging and often demands substantial time and resources. If test suites are incomplete or poorly maintained, defects may go undetected, leading to quality issues in production. Adopting a shift-left approach helps because it moves testing to earlier in the development cycle, focusing on high-value tests such as unit, integration, and functional tests. Regularly reviewing and updating tests ensures they stay aligned with current requirements, helping to minimize bottlenecks and maintain efficient, reliable test coverage. ## Key takeaways and DevOps resources We have explored the fundamentals of DevOps, including its core principles and the various phases within the DevOps life cycle, such as planning, development, testing, deployment, and monitoring. We have also discussed best practices, including shift-left testing, robust monitoring and observability, and integrating security as code to enhance collaboration and efficiency. Additionally, we examined the challenges faced in implementing DevOps, such as cultural resistance, tool overload, and maintaining data quality. By understanding these elements, teams can better navigate the complexities of DevOps, ultimately driving innovation and improving software delivery processes. Review these resources for more information about development: - Development Environment Overview - Application Development Life Cycle (Phases and Management Models) - What Is Modern Application Development? A Guide You can visit our blog and concepts hub to learn more about DevOps from Couchbase. --- # Embedded Databases | Concepts Source: https://www.couchbase.com/resources/concepts/embedded-databases/ Last modified: 2025-06-26T11:59:11+00:00 # Embedded Databases ## Embedded databases are lightweight, self-contained databases that run within an application, rather than relying on a separate server **SUMMARY** An embedded database is a lightweight, in-process database integrated directly into an application, making it ideal for edge, mobile, and IoT applications where performance, offline access, and minimal resource use are crucial. Unlike traditional databases that run as separate servers, embedded databases operate locally, require no separate installation, and are optimized for single-user environments. Key features include ACID compliance, local data storage, and built-in synchronization. Embedded databases are commonly used in industries where connectivity is critical, such as healthcare, retail, and field services. Choosing the right embedded database depends on factors like data model, platform compatibility, performance, offline support, and security requirements. ## What is an embedded database? An embedded database is a lightweight database that is tightly integrated into an application, enabling it to run locally without requiring a separate database server. It operates as part of the application itself, often residing in the same process or on the same device. This architecture makes embedded databases ideal for edge computing, mobile apps, IoT devices, and other environments where low latency, offline access, and minimal resource usage are critical. They typically offer fast performance, low overhead, and easy deployment, making them a practical choice for applications that need reliable data storage in constrained or disconnected settings. Continue reading this resource to learn more about embedded databases, how they compare to traditional databases, their features, benefits, use cases, and the criteria you can utilize to select one for your organization. - Embedded databases vs. traditional databases - What is an embedded system? - Embedded systems vs. embedded databases - Embedded database features - Benefits of embedded databases - Use cases for embedded databases - Embedded database comparison - How to choose an embedded database - Key takeaways and resources ## Embedded databases vs. traditional databases Embedded and traditional databases serve different purposes, depending on the application’s needs. Embedded databases are designed for simplicity and local use, while traditional databases offer features suited for larger, multi-user environments. Here’s a comparison to highlight their key differences: Feature | Embedded database | Traditional database | |---|---|---| | Integration | Integrated into the application | Runs as a separate server or service | | Process | In-process (same as app) | Out-of-process (separate from the app) | | Installation | No separate installation required | Requires separate installation and setup | | Use case | Mobile, desktop, IoT, local apps | Web apps, enterprise systems, multi-user apps | | Performance | Fast for local, single-user access | Optimized for high concurrency, large scale | | Scalability | Limited | High scalability and concurrency | | Network access | Not required | Typically accessed over a network | | Examples | Couchbase, SQLite, LevelDB | MySQL, Oracle, Microsoft SQL Server | | Data management | Managed by the host application | Managed independently by a database server | ## What is an embedded system? An embedded system is a specialized computing system designed to perform dedicated functions within a larger device or application. Unlike general-purpose computers, embedded systems are typically resource-constrained and optimized for efficiency, reliability, and real-time performance. They’re found in a wide range of devices, from smartphones and medical equipment to industrial machinery and IoT sensors, where they control specific tasks or processes. Because they often operate in environments with limited connectivity and computing power, embedded systems benefit from integrated, lightweight solutions like embedded databases for local data processing and storage. ## Embedded systems vs. embedded databases An embedded system is used to control hardware or perform a specific function within a device. For example, in a smart thermostat, the embedded system reads temperature sensors, adjusts heating or cooling, and controls the user interface. It’s responsible for real-time decision-making and interacting with the physical world. You’d program the embedded system to execute these functions using languages like C or C++ and deploy it to resource-limited hardware. An embedded database, on the other hand, is used within that embedded system to manage data locally. In the same smart thermostat example, the embedded database could store temperature history, user settings, or usage patterns. You’d use it to perform fast, lightweight data operations without requiring a network connection or an external database server. It enables the device to work offline, store critical data persistently, and sync with the cloud as needed. In short, you use the embedded system to run the device and manage its behavior, and the embedded database to handle the data that supports and enhances that behavior. ## Embedded database features Embedded databases are designed to operate within applications, often in environments with limited resources or intermittent connectivity. To support these use cases, they come with specialized features that prioritize performance, reliability, and ease of integration. Below are some of the key features commonly found in embedded databases: **Lightweight architecture:**Embedded databases are optimized for small footprints and low memory usage, making them ideal for mobile apps, IoT devices, and edge systems.**ACID (atomicity, consistency, isolation, durability) compliance:**ACID support ensures that data remains reliable and consistent, even in the event of power loss or system failure.**Local data storage:**Embedded databases store data directly on the device, enabling fast access and offline functionality without relying on a remote server.**High-performance read/write operations:**Embedded databases are built for speed, delivering low-latency data access that supports real-time applications.**Built-in replication and synchronization:**Many embedded databases include tools that enable data replication across devices or sync with the cloud when connectivity is restored.**Security features:**Encryption and authentication options help protect sensitive data, both at rest and in transit, which is critical for healthcare and finance applications. ## Benefits of embedded databases Embedded databases offer several advantages that make them ideal for applications requiring local data processing, especially in resource-constrained or disconnected environments. By integrating directly into the application, they eliminate the need for a separate database server while delivering reliable, high-performance data management. Here are some key benefits of using embedded databases: **No external dependencies:**Embedded databases run within the host application, removing the need for a separate server or complex infrastructure.**Offline functionality:**Because data is stored locally, embedded databases enable full application functionality even without network connectivity.**Faster performance:**With data stored and processed on-device, embedded databases offer low-latency read/write operations, ideal for real-time use cases.**Simplified deployment:**Since the database is packaged with the application, there’s no need to install or manage separate database systems, reducing operational complexity.**Lower resource consumption:**Their lightweight design makes them well-suited for devices with limited CPU, memory, or storage capacity.**Enhanced reliability:**Features like ACID transactions and crash recovery help ensure data integrity and consistency, even in the event of failure.**Secure data handling:**Many embedded databases support encryption and access control, helping protect sensitive data stored on the device. These benefits make embedded databases an excellent choice for edge computing, mobile apps, IoT devices, and other scenarios where efficiency, autonomy, and reliability are essential. ## Use cases for embedded databases Embedded databases are well-suited for situations where applications need to store and process data locally, often with limited resources or intermittent connectivity. Their small footprint, fast performance, and built-in reliability make them ideal for a wide range of industries and devices. Here are some of the most common ways they’re used: **IoT devices:**Embedded databases store sensor data locally on smart devices such as thermostats, wearables, or industrial monitors, enabling real-time analytics and offline operation.**Mobile applications:**Apps on smartphones and tablets utilize embedded databases to cache content, store user data, and maintain full functionality without internet access.**Edge computing:**In edge deployments, embedded databases enable local data processing close to the source, reducing latency and bandwidth usage while improving responsiveness.**Medical and healthcare devices:**Portable diagnostic tools and patient monitoring systems utilize embedded databases to securely store medical data and maintain reliability in critical environments.**Retail and point-of-sale systems:**Embedded databases power offline transactions, inventory tracking, and customer data management when network connectivity is limited or unavailable.**Industrial automation and control systems:**Embedded systems in factories or equipment can log data, manage configurations, and operate autonomously using on-device databases.**In-vehicle systems:**Vehicles utilize embedded databases to support navigation, diagnostics, infotainment, and performance monitoring so that they don’t have to rely on external servers.**Embedded databases run within the host application**, eliminating the need for a separate database server or service.**They are ideal for resource-constrained environments**, such as mobile apps, IoT devices, and edge computing systems.**Embedded databases support offline functionality**by storing data locally, allowing for uninterrupted operation even without network access.**They differ from traditional databases**by being in-process, lightweight, and optimized for single-user or localized use cases.**ACID compliance and fast performance make embedded databases reliable**for real-time applications.**Embedded systems handle device functionality**, while embedded databases manage the local data needed to support that functionality.**Key features include low memory usage, local storage, security options, and optional sync capabilities**with the cloud or other devices.**Use cases range from medical devices and point-of-sale systems to in-vehicle systems and industrial control**, demonstrating their versatility across industries. ## Embedded database comparison Embedded databases come in many forms, each optimized for specific application needs such as performance, scalability, or offline capabilities. When it’s time for you to choose an embedded database, you should consider factors like platform support, data model, synchronization features, and performance characteristics. Below is a comparison of five popular embedded databases to help guide your selection. Database | Data model | Platform support | Offline support | Sync capability | ACID compliance | Notable features | |---|---|---|---|---|---|---| | Couchbase Lite | Document (JSON) | iOS, Android, Windows, Linux, macOS | Yes | Yes (with Sync Gateway) | Yes | Peer-to-peer sync, flexible schema, mobile-first | | SQLite | Relational | Cross-platform | Yes | No | Yes | Lightweight, file-based, widely adopted | | LevelDB | Key-value | Cross-platform | Yes | No | No | High performance, simple API | | Berkeley DB | Key-value | Cross-platform | Yes | No | Yes | Small footprint, optional SQL interface | | ObjectBox | Object-oriented | Android, iOS, Linux | Yes | Yes (with Sync) | Yes | High speed, low memory use, built-in object relations | ## How to choose an embedded database Choosing the right embedded database depends on the specific requirements of your application, environment, and development goals. While all embedded databases aim to provide lightweight, local data storage, they differ in terms of data models, performance characteristics, platform compatibility, and features such as synchronization and security. Here are key factors to consider when evaluating options: ### Data model Consider whether your application benefits more from a relational model (like SQL-based databases) or a more flexible document or key-value model. Structured data and complex queries often fit best with relational databases, while document or key-value stores offer schema flexibility and faster lookups. ### Platform and language support Ensure the database is compatible with your target platforms (e.g., Android, iOS, Linux) and integrates well with your development language and toolchain. ### Performance and resource constraints Evaluate how the database performs under your expected workload and whether it operates efficiently within the CPU, memory, and storage limits of your environment. ### Offline access and synchronization If your application needs to function offline or across distributed devices, look for a database that offers local data storage with optional sync with the cloud or other clients. ### Security features Embedded databases used in regulated or sensitive environments (e.g., healthcare, finance) should support encryption at rest and in transit, as well as authentication and access control. ### ACID compliance and reliability For applications where data consistency and durability are critical, such as point-of-sale systems or medical devices, look for databases that offer full ACID transaction support. ### Community and support A well-documented, actively maintained database with a strong developer community can accelerate development and reduce long-term maintenance risks. Evaluating these criteria in the context of your application’s architecture and constraints will help you choose an embedded database that delivers immediate functionality and long-term reliability. ## Key takeaways and resources Understanding embedded databases is crucial for developing responsive and reliable applications in environments where traditional databases may fall short. Whether you’re developing for mobile, IoT, or edge computing, embedded databases offer unique advantages in terms of performance, portability, and simplicity. Here are some key takeaways from this resource to keep in mind as you explore their role, benefits, and practical applications within your organization: ### Key takeaways ### Resources Explore these Couchbase resources to learn more about lightweight data solutions: Couchbase Edge Server - Products Edge AI and the Role of the Database - Blog Replacing MongoDB Realm? Offline-First App Use Cases with Couchbase Mobile - Blog Vector Search at the Edge with Couchbase Mobile - Blog ##### Start building Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. ##### Use Capella free Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. ##### Get in touch Want to learn more about Couchbase offerings? Let us help. --- # Enterprise Analytics | Concepts Source: https://www.couchbase.com/resources/concepts/enterprise-analytics/ Last modified: 2026-06-30T08:58:24+00:00 **SUMMARY** *Enterprise analytics allows organizations to unify, process, and analyze data from multiple sources to support decision making at scale. It provides a comprehensive view of business operations, empowering both technical and non-technical users with real-time insights. By combining features like AI, scalable architecture, and intuitive dashboards, it helps teams move faster, reduce risk, and align strategy with performance. While challenges like data silos and user adoption still exist, following best practices and investing in tools like Couchbase Analytics enables organizations to fully embrace enterprise analytics.* ## What is enterprise analytics? Enterprise analytics is a type of analytics that collects, integrates, and analyzes data from multiple sources to support decision making and operations across an organization. This singular view of data, from sources like applications, databases, and external systems, informs strategic planning, performance tracking, and cross-functional collaboration. It combines technologies like real-time processing, machine learning, and intuitive dashboards to make data accessible to both technical and business users. Ultimately, enterprise analytics transforms raw data into an asset that guides strategic decisions, optimizes operations, and uncovers insights that drive business growth. Keep reading this resource to learn more about key features, benefits, challenges, use cases, and best practices for enterprise analytics: - Enterprise analytics features - Benefits of enterprise analytics - Challenges of enterprise analytics - Enterprise analytics use cases - Enterprise analytics best practices - Why you should choose Couchbase Analytics - Key takeaways and additional resources - FAQs ## Enterprise analytics features Enterprise analytics platforms combine scalability, speed, and accessibility to support everything from real-time insights to advanced reporting. Below are some key features that make this possible: **Real-time and batch processing:**Analyzes data as it’s generated or on a scheduled basis for deeper insights.**Scalable architecture:**Handles growing data volumes and concurrent users without performance loss.**Multi-source data integration:**Combines structured, semi-structured, and unstructured data from different systems.**Advanced querying and visualization:**Uses tools like dashboards and interactive reports to explore data.**Security and governance:**Enforces role-based access, data privacy policies, and compliance standards.**AI and machine learning support:**Enables predictive analytics, anomaly detection, and intelligent automation.**Open table format support:**Query open formats such as Apache Iceberg directly on cloud object storage, enabling a zero-ETL, open data lakehouse approach that avoids locking data into a single proprietary system. ## Benefits of enterprise analytics Enterprise analytics offers advantages that directly impact how organizations operate, compete, and serve their customers. From speeding up decision making to improving efficiency and reducing risk, the benefits span both strategic and day-to-day operations. Some of these include: **Faster decision making:**Real-time access to insights helps teams act quickly and confidently.**Operational efficiency:**Data-driven visibility enables smarter resource allocation and streamlined workflows.**Improved customer experiences:**Analytics helps personalize services and address customer needs more effectively.**Strategic alignment:**Organizations can better measure progress and adjust initiatives based on data.**Risk reduction:**Early detection of anomalies and trends helps mitigate potential issues before they escalate. ## Challenges of enterprise analytics While enterprise analytics offers benefits like operational efficiency and improved customer experiences, implementing it at scale comes with challenges you should prepare for in advance. Organizations must navigate these technical, organizational, and data-related challenges to utilize enterprise analytics to its full potential. Some obstacles you might encounter include: **Data silos:**Disconnected systems make it difficult to create a unified view of the business.**Scalability:**Growing data volumes and user demands can strain infrastructure and performance.**Data quality:**Inaccurate, inconsistent, or incomplete data can lead to unreliable insights.**Security and compliance:**Protecting sensitive information and meeting regulatory requirements is complex.**User adoption:**Teams may lack the tools or training needed to fully leverage analytics capabilities. ## Enterprise analytics use cases Several different industries employ enterprise analytics for everything from optimizing operations to improving customer experiences. Below are examples of specific use cases: ### Retail Retailers use enterprise analytics to monitor real-time inventory levels, forecast demand with greater accuracy, and optimize pricing strategies across regions or channels. By analyzing customer behavior, purchase history, and engagement data, retailers can deliver targeted promotions and personalized shopping experiences, boosting conversion rates and increasing brand loyalty. ### Finance In financial services, analytics helps detect anomalies that may signal fraud, automate risk assessments, and ensure regulatory compliance. Firms can use historical and real-time data to make informed investment decisions, optimize portfolio performance, and analyze market fluctuations, ultimately improving profitability and reducing exposure. ### Healthcare Healthcare organizations apply analytics to improve clinical outcomes, reduce operational inefficiencies, and manage population health. By aggregating data from electronic health records (EHRs), diagnostic tools, and patient monitoring devices, providers can identify trends, personalize treatments, and proactively manage chronic conditions. Analytics also aids in cost reduction and resource planning. ### Manufacturing Manufacturers rely on enterprise analytics for predictive maintenance, quality control, and production optimization. Sensors and IoT devices generate continuous data streams from equipment and assembly lines, which analytics platforms can process to detect failures before they occur, reduce downtime, and maintain consistent product quality. Supply chain analytics also supports inventory planning and vendor performance tracking. ### Telecommunications Telecom providers use analytics to ensure reliable service, optimize infrastructure investments, and enhance customer support. By analyzing call data, network traffic, and device performance in real time, companies can pinpoint issues, forecast demand, and prioritize upgrades. Customer churn prediction and service personalization are also made possible through behavioral analytics. ## Enterprise analytics best practices Implementing enterprise analytics effectively requires more than just the right tools; it also demands thoughtful planning, cross-functional collaboration, and a strong foundation of data governance. The following best practices help organizations maximize the value of their analytics initiatives: ### Align analytics with business goals Ensure analytics initiatives are directly tied to strategic objectives such as improving customer retention, increasing operational efficiency, or expanding into new markets. Clearly defined KPIs help keep efforts focused and measurable. ### Invest in data quality and integration Accurate insights depend on clean, well-integrated data. Standardize data definitions, remove duplicates, and consolidate sources to eliminate silos and support consistent reporting across teams. ### Promote cross-functional collaboration Encourage collaboration between data teams and business units. Analysts, engineers, and domain experts should work together to ensure that insights are relevant, actionable, and aligned with real-world needs. ### Prioritize user accessibility Empower users at all levels with self-service analytics tools, intuitive dashboards, and training resources. Democratizing access to data helps foster a data-driven culture and speeds up decision making. ### Build for scalability and performance Choose analytics platforms that can grow with your data volumes and user base. Scalable architectures and real-time processing capabilities ensure performance doesn’t degrade as usage increases. ### Implement strong data governance Establish policies and controls for data security, privacy, and compliance. Define roles, responsibilities, and access permissions to protect sensitive data and maintain regulatory alignment. ### Continuously measure and optimize Treat analytics as an evolving practice. Regularly assess the impact of analytics on business outcomes, gather feedback from users, and refine data models, visualizations, and workflows as needed. ## Why you should choose Couchbase Analytics Couchbase Analytics is purpose-built for high-performance analytics on operational NoSQL data, enabling organizations to run complex analytical queries at scale without impacting transactional workloads. It combines the flexibility of JSON with the speed and efficiency of columnar storage, making it ideal for real-time insights and cost-effective analytics. **Optimized columnar storage:**Store and retrieve only the data you need, reducing input/output (I/O) and accelerating query performance.**Separation of compute and storage:**Scale analytics independently from operational workloads, enabling cost and resource efficiency.**Direct access to JSON data:**Analyze semi-structured data without flattening or transforming it, preserving its native flexibility.**No ETL required:**You can skip traditional extract-transform-load processes because Couchbase Analytics works directly on your live NoSQL datasets and on open Apache Iceberg tables in low-cost cloud object storage. Query operational and external data in place and join them in a single SQL++ query, with no pipelines to build or maintain.**SQL++ for analytics:**Use SQL and JSON to query operational and historical data with ease.**Open data lakehouse ready:**Native support for Apache Iceberg and its open REST Catalog lets you query Iceberg tables on object storage directly, so your analytics align with open standards instead of locking data into a single proprietary platform.**Multicloud flexibility:**Run analytics natively across AWS, Azure, and Google Cloud, so you can keep data where you already have footprint, committed spend, or favorable egress.**Built-in security and management:**Simplify administration with enterprise-grade access controls, encryption, JWT-based authentication for Zero Trust environments, and automated scaling. With Couchbase Analytics, your teams can uncover insights faster, reduce analytics overhead, and eliminate the complexity of maintaining separate analytics systems, all within a single, scalable cloud database platform. ## Key takeaways and additional resources Enterprise analytics is crucial for organizations when it comes to turning large amounts of data into strategic, real-time insights. By centralizing data from multiple sources, businesses can make faster, more informed decisions that impact everything from daily operations to long-term planning. However, successful implementation requires careful attention to data integration, governance, and collaboration. Below are the most important concepts to take away from this resource: **Enterprise analytics unifies data across systems**to support strategic planning, operational optimization, and cross-functional decision making.- Core features include **real-time processing, multi-source integration, advanced querying, scalability, and built-in security**. - Benefits range from **faster decisions and improved efficiency to personalized customer experiences and reduced risk exposure**. - Key challenges include **data silos, scalability issues, and adoption barriers**, all of which should be addressed to realize the full value of enterprise analytics. - Use cases span industries like **retail, finance, healthcare, manufacturing, and telecom**, each leveraging analytics to meet specific goals. - Best practices emphasize **business alignment, data quality, cross-team collaboration, user accessibility, and continuous optimization**. **Couchbase Analytics offers a modern solution**with columnar storage, JSON support, no ETL requirements, and scalable performance for real-time insights. To learn more about analytics, you can visit the additional resources listed below: ### Additional resources - Operational Analytics - Concepts - What Is Big Data Analytics? - Concepts - What Is Conversational Analytics? Plus Examples and Tools Visit our concepts hub to learn more about analytics and related topics. ## FAQs **Why is enterprise analytics important?** Enterprise analytics is important because it helps organizations make data-driven decisions, uncover trends, and optimize performance across departments. **How is enterprise analytics different from traditional business intelligence (BI)?** While traditional BI often relies on historical or batch-processed data, enterprise analytics combines real-time, operational, and historical data to deliver faster, more actionable insights across the organization. **What makes Couchbase Analytics different from traditional data warehouses?** Couchbase Analytics is optimized for querying semi-structured JSON data at scale without requiring complex ETL pipelines or schema flattening. It provides columnar storage, SQL++ access, and real-time performance in a fully managed NoSQL Database-as-a-Service (DBaaS). **Can I run analytics on live operational data without impacting performance?** Yes, Couchbase Analytics is designed to separate analytics workloads from transactional workloads, allowing you to analyze real-time data without slowing down your operational systems. **Does Couchbase Analytics support SQL?** Yes, Couchbase Analytics uses SQL++, a flexible query language that supports semi-structured JSON data. **What types of analytics workloads is Couchbase Analytics best suited for?** It excels at real-time operational analytics, customer behavior analysis, fraud detection, performance monitoring, and any use case that involves querying large volumes of semi-structured data at speed. **Can Couchbase Analytics integrate with my existing analytics tools?** Yes, Couchbase Analytics offers support for standard APIs and connectors that integrate with popular visualization and analytics platforms. **Does Couchbase Analytics support Apache Iceberg and open data lakehouses?**Yes. Couchbase Analytics can query Apache Iceberg tables in cloud object storage directly through Iceberg’s open REST Catalog. This lets you run SQL++ queries on lakehouse data in place, with no ETL, and join it with your live operational data in a single query. Because Iceberg is an open, cloud-agnostic table format, this approach keeps your analytics aligned with open standards and avoids vendor lock-in. --- # Enterprise Software Development | Concepts Source: https://www.couchbase.com/resources/concepts/enterprise-software-development/ Last modified: 2026-01-08T07:41:39+00:00 **SUMMARY** Enterprise software development focuses on building powerful, scalable systems that help organizations manage complex operations and support long-term growth. Unlike standard software, these solutions are designed to integrate with multiple systems, handle large user bases, and meet strict security and compliance standards. They enable companies to streamline workflows, centralize data, and make more informed decisions. Developing this type of software involves strategic planning, specialized tools, and careful execution to ensure performance and adaptability. A solid understanding of its unique characteristics, benefits, challenges, and best practices helps businesses maximize their return on investment and maintain a competitive edge. ## What is enterprise software development? Enterprise software development creates robust, scalable, and secure solutions designed for organizations rather than individual users. These systems help businesses manage complex tasks, streamline operations, and improve collaboration across teams. Unlike consumer-grade apps, enterprise software is built to handle large-scale needs and ensure reliability. It’s tailored to support business growth while maintaining security and efficiency. Continue reading this resource to explore the differences between enterprise and regular software development, types of enterprise software, its benefits and challenges, development best practices, and a list of tools you can use to facilitate the building of this software. - Enterprise vs. traditional software development - Types of enterprise software - Enterprise software benefits - Enterprise software challenges - Enterprise software development stages - Enterprise software development best practices - Enterprise software development tools - Key takeaways and related resources - FAQs ## Enterprise vs. traditional software development Enterprise software development differs significantly from standard software projects in both scale and complexity. While traditional software often targets individual users or small teams, enterprise solutions are designed to serve entire organizations with multiple departments, workflows, and security requirements. These projects typically involve higher levels of integration, customization, and long-term maintenance. Understanding these differences is key to choosing the right development approach for your organization’s needs. Feature | Enterprise software development | Traditional software development | |---|---|---| Scope and scale | Large-scale systems supporting multiple teams or departments | Smaller scope, often designed for individual users or teams | Complexity | High - requires integrations, workflows, and advanced architecture | Moderate - fewer dependencies and simpler structures | Security and compliance | Strong emphasis on security, regulatory compliance, and governance | Basic security measures, limited compliance needs | Customization | Highly customizable to fit business processes | Typically standardized with limited customization | Integration requirements | Must connect with existing enterprise systems and data sources | Minimal or no integration required | Maintenance and support | Ongoing updates, monitoring, and support are essential | Maintenance is often limited and less resource-intensive | Development timeline | Longer, with structured project management | Shorter, often agile or lightweight processes | Cost | Higher investment due to complexity and scale | Lower cost, suitable for smaller budgets | ## Types of enterprise software Enterprise software comes in many forms, each designed to solve specific business challenges and improve organizational efficiency. These systems allow companies to streamline processes, manage complex workflows, and make data-driven decisions. From managing customer relationships to optimizing supply chains, enterprise software serves as the backbone of modern business operations. Below are some of the most common categories and their core functions. ### Customer relationship management (CRM) CRM software helps organizations manage interactions with customers and prospects throughout the entire customer lifecycle. It centralizes customer data, tracks communications, and supports personalized engagement strategies. CRMs are essential for improving customer satisfaction, driving sales, and increasing retention. Popular features often include lead tracking, automated follow-ups, and reporting dashboards. ### Enterprise resource planning (ERP) ERP systems unify various business processes, including finance, procurement, inventory, and operations, into a single integrated platform. This centralized approach improves efficiency, reduces manual work, and gives leaders a real-time view of organizational performance. ERPs are especially valuable for large businesses that need consistency and coordination across departments. ### Supply chain management (SCM) SCM software helps businesses plan, execute, and monitor the flow of goods, services, and information across their supply chain. It improves visibility into logistics, inventory levels, and supplier performance, allowing companies to reduce costs and improve delivery times. By automating critical processes, SCM systems enable more agile, resilient supply chain strategies. ### Marketing automation Marketing automation platforms streamline and scale marketing efforts by automating repetitive tasks like email campaigns, lead nurturing, and audience segmentation. These tools help teams deliver personalized experiences at scale, track performance metrics, and optimize strategies in real time, leading to more efficient marketing workflows and stronger customer engagement. ### Human resource management (HRM) HRM software simplifies and centralizes the management of workforce processes, including recruitment, onboarding, payroll, benefits administration, and performance tracking. By automating manual HR tasks, organizations can save time, reduce errors, and focus on employee experience and development. Advanced HRM systems also provide analytics to support strategic workforce planning. ## Enterprise software benefits Enterprise software provides organizations with the tools they need to streamline operations, improve collaboration, and make better decisions. By connecting different business functions into a unified system, companies can operate more efficiently, adapt to change faster, and gain a competitive edge. These solutions are especially valuable for scaling businesses that require consistent processes and real-time visibility across teams and departments. Specific benefits include: **Improved efficiency:**Automates routine tasks, reduces manual work, and minimizes human error.**Centralized data:**Ensures all departments work with accurate, real-time information.**Better collaboration:**Breaks down silos and enables seamless communication across teams.**Scalability:**Supports business growth by adapting to increased workloads and new processes.**Enhanced decision making:**Provides actionable insights through analytics and reporting.**Cost savings:**Optimizes workflows and reduces operational overhead over time.**Stronger security and compliance:**Centralized systems make it easier to manage data protection and meet regulatory requirements. ## Enterprise software challenges While enterprise software offers major advantages, it also presents challenges that organizations should address to ensure successful adoption and long-term value. These solutions often involve complex implementations, ongoing maintenance, and alignment across multiple departments, making careful planning and execution critical. Understanding these challenges early on helps businesses build realistic strategies and avoid costly setbacks. You should be prepared to handle: **High implementation costs:**Enterprise software often requires substantial upfront investment in both technology and expertise.**Complex integration:**Connecting the software with existing systems can be technically demanding and time consuming.**Change management:**Shifting teams to new workflows may meet resistance and require extensive training.**Customization needs:**Tailoring the solution to fit unique business processes can add time and complexity.**Maintenance and updates:**Ongoing support, patches, and upgrades can strain IT resources.**Scalability concerns:**Poorly planned implementations can limit flexibility as the organization grows.**Security and compliance risks:**Centralizing data increases the need for strong security measures and regulatory adherence. ## Enterprise software development stages Developing enterprise software is a structured, multi-phase process designed to ensure the final solution meets complex business needs, integrates smoothly with existing systems, and supports long-term scalability. Each stage plays a critical role in aligning technology with organizational goals, minimizing risks, and delivering a secure, high-performing product. While approaches may vary depending on the methodology used (such as agile, DevOps, or waterfall), the core stages typically remain consistent. Key stages of enterprise software development include: **Planning and requirements gathering:**Define business goals, identify user needs, assess technical requirements, and establish project scope and success criteria.**System design and architecture:**Create a blueprint of the software, outlining its structure, components, data flows, and integrations with existing systems.**Development and coding:**Build core functionalities, modules, and features using appropriate frameworks, programming languages, and tools.**Testing and quality assurance:**Rigorously test the software for performance, security, functionality, and compatibility to catch and resolve issues early.**Deployment and integration:**Roll out the solution into the production environment, ensuring seamless integration with other enterprise systems.**Training and change management:**Equip teams with the knowledge and resources needed to adopt the software effectively and minimize resistance.**Maintenance and continuous improvement:**Monitor performance, address bugs, roll out updates, and optimize the software as business needs evolve.**Align technology with business goals:**Ensure the software directly supports organizational objectives and solves real business problems.**Adopt an agile and iterative approach:**Use flexible methodologies to adapt quickly to changing requirements, encourage collaboration, and accelerate delivery.**Prioritize security from the start:**Build robust security measures into every layer of the application to protect sensitive data and maintain compliance.**Focus on scalability and performance:**Design the system to handle growing workloads and user bases without sacrificing speed or reliability.**Standardize architecture and coding practices:**Use clear design patterns, documentation, and code reviews to maintain consistency across teams.**Ensure seamless integration:**Plan for interoperability with existing enterprise systems, APIs, and third-party services.**Invest in testing and quality assurance:**Implement continuous testing and automation to catch issues early and maintain software reliability.**Plan for maintenance and upgrades:**Establish a long-term roadmap for updates, support, and improvements to keep the system future-ready.**Involve stakeholders early and often:**Collaborate with business leaders, IT teams, and end users throughout development to ensure alignment and adoption.**Integrated development environments (IDEs):**Provide advanced code editing, debugging, and integration capabilities to support large, complex projects.**Version control systems:**Enable teams to collaborate, manage code changes, and maintain a clean, auditable development history.**Project management and collaboration tools:**Help coordinate work across teams, track progress, and ensure transparency throughout the development cycle.**Continuous integration/continuous deployment (CI/CD) tools:**Automate build, test, and deployment workflows to improve delivery speed and reduce human error.**Testing and quality assurance tools:**Support automated testing, performance checks, and security validation to ensure the software meets enterprise standards.**Cloud and containerization platforms:**Offer flexibility and scalability to run applications reliably across diverse environments.**Security and compliance tools:**Provide capabilities to identify vulnerabilities, enforce governance policies, and protect sensitive data.**Monitoring and observability tools:**Deliver real-time insights into system performance, availability, and user experience for proactive issue resolution. ## Enterprise software development best practices Building enterprise software requires more than just writing code; it involves strategic planning, strong collaboration, and a focus on long-term business value. Because these systems often support critical operations and large user bases, following best practices helps ensure the software is scalable, secure, and adaptable to evolving business needs. These guidelines also reduce risks, improve quality, and make development more efficient. Key best practices include: ## Enterprise software development tools These platforms support every stage of the development lifecycle - from planning and coding to testing, deployment, and monitoring. By creating a well-integrated toolset, organizations can streamline collaboration, improve code quality, and accelerate delivery without locking themselves into a single vendor ecosystem. Common categories of enterprise software development tools include: ## Key takeaways and related resources Enterprise software development is about more than building applications; it’s about creating scalable, secure, and efficient systems that support entire organizations. From planning and architecture to deployment and maintenance, this process requires thoughtful strategy, robust tooling, and a focus on business goals. Here are some key takeaways from this resource to remember: ### Key takeaways - Enterprise software is designed to support large-scale business operations with high levels of reliability and security. - It differs from traditional software in scope, complexity, and integration requirements. - Common types of enterprise software include CRM, ERP, SCM, marketing automation, and HRM systems. - Benefits include improved efficiency, centralized data, enhanced collaboration, scalability, and better decision making. - Challenges often involve high implementation costs, complex integration, change management, and security considerations. - Following best practices, such as aligning technology with business goals and adopting agile approaches, can streamline development and reduce risk. - A well-rounded toolset helps organizations stay flexible and build resilient software ecosystems. - Continuous Software Development (CSD): What It Is & How It Works - Blog - The Roadmap to Becoming a Digital Enterprise - Blog - What Is Modern Application Development? A Guide - Blog To learn more about software development, you can visit our concepts hub and review the resources listed below: ### Related resources ## FAQs **What does an enterprise software developer do?** An enterprise software developer designs, builds, and maintains large-scale applications that support complex business operations. Their work often involves integrating multiple systems, ensuring security and scalability, and tailoring solutions to meet organizational needs. **What industries benefit most from enterprise software solutions?** Industries such as finance, healthcare, manufacturing, retail, logistics, and government gain the most from enterprise software. These sectors rely on secure, scalable solutions to manage large volumes of data, streamline workflows, and support compliance requirements. **What security measures are essential in enterprise software development? ** Essential security measures include strong access controls, encryption, secure authentication, regular vulnerability testing, and compliance with industry regulations. Building security into every stage of development helps protect sensitive data and maintain trust. **How can enterprise software support digital transformation?** Enterprise software enables digital transformation by automating manual processes, centralizing data, and integrating modern technologies like AI, cloud computing, and analytics. **How is enterprise software maintained and updated over time?** Enterprise software is maintained through regular updates, performance monitoring, and security patches to ensure reliability and compliance. Continuous improvement efforts help adapt the system to evolving business needs and technological advancements. --- # What Is an In-Memory Database? w/ Examples Source: https://www.couchbase.com/resources/concepts/in-memory-database/ Last modified: 2024-12-19T14:45:44+00:00 ## In-memory database overview What is an in-memory database? IMDBs are high-speed data storage systems that keep all data in the computer’s main memory (known as random access memory or RAM), making data retrieval and processing fast. This technology is ideal for applications that require real-time responses, like financial transactions, telecommunication systems, and online gaming. However, due to the volatile nature of RAM, these databases may use data replication to prevent data loss. Although storing data in memory can be more expensive compared to traditional disk storage, the increasing availability of affordable RAM and the value of speed in many modern applications make in-memory databases a valuable tool for many projects. - How does an in-memory database work? - Why use an in-memory database? - Advantages and disadvantages of in-memory databases - In-memory database comparison - Couchbase’s in-memory database ### How does an in-memory database work? An in-memory database uses a blend of storage management, data handling, and fail-safe mechanisms like replication to offer increased data processing speeds. Here’s a simplified explanation of the key traits: **Data storage**: Unlike traditional databases, an IMDB stores all its data in the computer’s RAM. This provides faster access than retrieving data from a hard drive or an SSD.**Data processing**: With all data available in memory, IMDBs can process operations and execute queries directly within the memory. This significantly reduces latency, making IMDBs great for applications that need real-time responses.**Data persistence**: IMDBs can employ various data durability strategies to mitigate the volatile nature of RAM. Techniques include keeping a backup of data on disk or the use of replication to duplicate data across multiple nodes. ### Why use an in-memory database? In-memory databases offer speed for data access and processing, which provides a significant performance boost to your applications. By storing data in the computer’s main memory, IMDBs can enable faster, real-time responses. #### In-memory database features In-memory databases come packed with several distinct features that set them apart from traditional, more disk-heavy databases: **Speed**: The most significant feature of IMDBs is their speed. By keeping all data in the system’s main memory, data access and processing times are drastically reduced, resulting in very low latency responses.**Real-time processing**: Due to their high processing speeds, IMDBs are ideal for applications that require real-time or near-real-time responses.**Data persistence**: In addition to storing data in memory, some IMDBs have features to ensure data persistence and recovery. These features include asynchronous disk writes, snapshotting, and disk-based backups.**Compression**: IMDBs often support data compression to reduce the memory footprint and optimize storage.**Scalability**: IMDBs can be scaled up (adding more RAM) or scaled out (distributed over multiple systems) to handle large data volumes. #### In-memory use cases and examples In-memory databases are used extensively in various industries and applications due to their high-speed data processing capabilities. Common use cases include: **Real-time recommendation and personalization**: One of the most prominent use cases of IMDBs is real-time analytics. Businesses across sectors like finance, retail, and telecommunications use IMDBs to analyze large data streams in real time. For instance, financial institutions might use them for real-time fraud detection, while retailers use them for real-time personalization and recommendations. Wells Fargo, for example, built its fraud monitoring system using Couchbase’s in-memory database. Their system protects 100% of transactions in real time at speeds of less than 10 milliseconds per operation, or 9,000 reads and writes per second.**Caching**: IMDBs are commonly used for caching data, with frequently accessed data stored in memory for quick retrieval. This is especially useful for high-traffic web applications where rapid content delivery is critical to a good user experience. For example, LinkedIn transitioned to Couchbase as a caching solution for its source-of-truth data store, and Couchbase now supports over 50 use cases across the company.**Session storage**: IMDBs are often used for session management in web applications. where they store data like user profiles or shopping cart information to enable a fast and seamless user experience. Cisco migrated to Couchbase for reliable low latency and consistent response times, and now uses Couchbase to handle over 100 billion user sessions per year.**Telecommunications**: In the telecom sector, IMDBs handle call routing and session management, maintain customer profiles, and process large volumes of call detail records in real time. Vodafone uses Couchbase to manage and personalize millions of communications across various channels for over 17 million customers. Couchbase offers data security along with the scalability to expand on demand.**Collaboration tools**: Real-time collaboration tools like Bublup use IMDBs to simultaneously manage and sync changes across mobile and web apps for multiple users. ### What are the advantages and disadvantages of in-memory databases? In-memory databases present a unique set of benefits and drawbacks that can significantly impact your data management strategies. Here are the key advantages and disadvantages to consider: #### Advantages **Speed**: Because IMDB data is stored in RAM, it can be accessed significantly faster than data stored on disk. This provides faster query responses and transaction times, making IMDBs a great choice for applications that require real-time data processing.**Scalability**: IMDBs can scale more easily to manage large data volumes. They can make good use of the increasing amount of memory available on modern hardware.**Reliability**: Despite data being stored in memory, IMDBs can still offer data durability and reliability. Techniques like replication, persistence, and transaction logging help protect against data loss. #### Disadvantages **Cost**: RAM is more expensive than disk storage, so maintaining large amounts of data in memory can get expensive, especially for very large databases. When only a fraction of your overall data needs to be in RAM, a storage engine like Couchbase Magma can provide fast access to large amounts of data stored on disk.**Volatility**: RAM is volatile, meaning that if power is lost, so is the data. However, most IMDBs have mechanisms to persist data on disk or replicate it over the network to prevent data loss. Couchbase provides customers with several replication and persistence options.**Hardware limitations**: While memory sizes are increasing, there’s still a finite limit to how much an individual system can have. You can easily overcome single-system limits by using horizontal scaling like that provided by Couchbase Capella™ DBaaS. ### In-memory database comparison In-memory database | Memory-first database | Disk-based database | | |---|---|---|---| | Performance | Usually fastest due to direct memory access that reduces disk I/O latency. | Faster than disk-based, but may not be as fast as pure in-memory due to potential disk I/O latency. | Typically slower due to disk I/O latency. | | Cost | Tends to be more expensive due to the high cost of RAM. (RAM is usually only one part of the total cost.) | Medium cost. You can augment RAM with cheaper disk storage. | Often less expensive due to reliance on disk storage. | | Data persistence | Often volatile. Data may be lost upon restart or failure if durability features are not used. | Provides persistence, which reduces the risk of data loss despite primary reliance on memory. | Highly persistent. Data is stored even if the system shuts down. | | Scalability | Limited by available RAM unless horizontal scaling is possible. | Higher scalability as it can use disk storage for larger datasets. | Can store data on large disks, but may not be able to keep up with I/O demands. | | Data access patterns | Best for workloads with high operation rates and low latency. Most are optimized for transient data storage. | Good for workloads with a mix of read and write operations. Low to moderate latency requirements. | Best for write-heavy, long-term storage, or analytical workloads, or if performance is of low concern. | | Use cases | Real-time analytics, caching, session storage, or anything transient. | General purpose, including real-time and near-real-time applications, caching, and mixed workloads. | Large-scale data storage and applications with requirements that don't change frequently. | | Examples | - Couchbase Capella, memory-only - Couchbase Server, ephemeral | CouchStore or Magma (Available in both Couchbase Capella and Couchbase Server.) | Typical deployments of SQL Server, Oracle, Postgres, MySQL, etc. (These may use memory for buffering and caching query plans, and some may have add-ons for increased caching.) Compare to NoSQL. | ### Couchbase’s in-memory database Couchbase’s in-memory, highly available, distributed caching technologies deliver high-speed responses even at high volumes. The newest in-memory development in the Couchbase ecosystem is the introduction of memory-only buckets support within Couchbase Capella Database-as-a-Service (DBaaS). Capella has always supported caching with high-speed in-memory storage, simultaneously persisting data back to disk to prevent data loss. (This method is still the default.) The introduction of memory-only buckets allows customers to opt for data to be stored solely as a cache without it being written to disk. CouchStore memory-first architecture: The memory-only option forgoes the disk and disk queue portions of the architecture for increased performance. The memory-only feature in Capella is a useful addition for applications that require caching. Transient or ephemeral data, which may not need to persist permanently to disk, can now be managed more effectively. This feature can increase application performance by reducing data trips to disk, while the flexibility in data management can reduce disk costs. Memory-only data is highly beneficial in high-traffic scenarios in which preloaded data in the cache can quickly meet usage spikes. In-memory database example use cases include: - Session management for web applications - Performance improvement through caching mechanisms - Managing anonymous information - Enhancing security and privacy by limiting exposure to sensitive data With Capella, users can define a bucket as memory-only during its creation. Within a single database, both “memory-only” and “memory and disk” buckets can be used side by side for different use cases. This capability makes Capella a future-proof choice for caching needs because it can easily expand to encompass more-advanced use cases as they arise. --- # JSON vs. BSON Format: Differences, Advantages, & More Source: https://www.couchbase.com/resources/concepts/json-vs-bson/ Last modified: 2025-06-04T09:54:12+00:00 ## JSON vs. BSON performance overview This page will cover the following to help you better understand the key differences between JSON and BSON: - What is JSON? - What is BSON? - Main differences between JSON and BSON - Advantages of JSON - Advantages of BSON - Does Couchbase use JSON or BSON? - FAQ JSON (which stands for JavaScript Object Notation) is a lightweight text-based data interchange format that’s easy for humans to read and write, and easy for machines to parse and generate. JSON is a popular choice for exchanging data between different systems, especially in web development. BSON (which stands for Binary JSON) is a binary-encoded serialization format that supports additional data types and is natively supported only by MongoDB™. Hypothetically, BSON can be more efficient than JSON in terms of network transmission, but Couchbase, which uses JSON as its primary data format, actually outperforms MongoDB™ for many practical workloads. Also, BSON’s complexity and limited compatibility with other systems can limit its usefulness in some contexts. ## What is JSON? JSON format was originally derived from a subset of the JavaScript programming language syntax, so it shares many of the same syntax rules and data types as JavaScript. As a result, JSON can be easily parsed and generated using JavaScript and is often used in web development for exchanging data between client-side JavaScript and server-side programs written in various programming languages. Because JSON is lightweight, it is efficient to transmit over a network, which is important for web-based applications that need to transfer data quickly. JSON’s user-friendly format allows it to be easily understood and edited by developers and non-developers alike. And because it’s easy for machines to parse and generate, JSON can be easily integrated into a wide range of programming languages and platforms, making it a versatile and widely adopted format for exchanging data. JSON data is represented as key-value pairs, similar to a dictionary or hash table in other programming languages, which makes it easy for developers to understand and use in their programs. By representing data as key-value pairs, JSON provides a flexible and intuitive way to organize and access data. The key-value pair structure also makes it easy to map data to objects in various programming languages, which is useful for integrating data between different systems. ## Why use JSON? Because JSON is lightweight, it is efficient to transmit over a network, which is important for web-based applications that need to transfer data quickly. JSON’s user-friendly format allows it to be easily understood and edited by developers and non-developers alike. And because it’s easy for machines to parse and generate, JSON can be easily integrated into a wide range of programming languages and platforms. JSON also supports a wide range of data types, including strings, numbers, arrays, and objects, which makes it a flexible and versatile format for representing data. This flexibility makes JSON an excellent tool for exchanging data between different systems and programming languages. This allows developers to use it in a wide range of applications, from simple data storage and retrieval to complex data processing and analysis. ### What is BSON? BSON is a binary-encoded serialization format that is more compact than raw JSON, and more efficient for storing data or transmitting over a network. BSON supports additional data types that are outside of standard JSON, such as binary data and date types. By supporting data types beyond the strings, numbers, and arrays supported by JSON, BSON can more accurately represent complex data structures and types. This increases the complexity of the format, which can make it more difficult to work with in certain contexts. There is also a greater risk of compatibility issues when exchanging data between systems that do not fully support BSON’s additional types. MongoDB is currently the only database system that natively uses BSON as its storage format. Because BSON was developed specifically for MongoDB, it’s optimized for their unique architecture and data model, and MongoDB is able to provide support for complex data types. But because BSON is not widely supported outside of MongoDB, its usefulness is limited in some contexts, mainly when interoperability with other systems is a top priority. ### Main differences between JSON and BSON **Binary vs. text**: BSON is a binary-encoded format, whereas JSON is a text-based format. This means that BSON is compact for transmitting over a network, while JSON is human-readable and easier to work with in various contexts. **Extended data support**: JSON is limited to JavaScript data types, including string, number, boolean, null, object, and array. Those data types can be used in combination to represent complex data types. BSON supports additional data types (such as binary data and date types) that are not supported by JSON. **Supported by**: BSON is natively supported only by MongoDB. JSON, on the other hand, is widely supported and can be used with distributed database systems, programming languages, and platforms. **Footprint**: In some situations, BSON documents can be larger than equivalent JSON documents because they include additional metadata and type information that is not present in JSON. This can impact transmission times and storage requirements, especially for large datasets. Both BSON and JSON can benefit from compression. **Complexity and compatibility**: BSON is more complex than JSON, making it difficult to work with in certain contexts. Developers may need to learn new data types and encoding/decoding methods to work with BSON effectively. Compatibility issues may also arise when exchanging data between systems that do not fully support BSON’s additional types. Feature | BSON | JSON | |---|---|---| | Format | Binary encoded | Text based | | Data types | Supports additional data types such as binary data and date types | Supports strings, numbers, null, arrays, and objects | | Size | Data can be smaller than equivalent JSON documents in some situations due to binary encoding and optional compression, but metadata can also increase the overall size | Text-based encoding of raw, uncompressed JSON can lead to larger documents, but JSON can be compressed (e.g., with Snappy) | | Supported by | Only supported by MongoDB | De facto industry standard that can be used with a wide range of databases and programming languages | | Complexity | More complex than JSON, requiring additional knowledge and tooling to work with effectively | Relatively simple and widely understood | | Compatibility | Not widely supported outside of MongoDB | Widely supported and interoperable | | Metadata | Includes additional metadata and type information, which increases document size but provides richer context for data | Minimal metadata, which can limit context and require additional processing to determine data types (Couchbase provides metadata capabilities) | | Use cases | Suited for working with MongoDB | Suitable for a wide range of data interchange scenarios, from web APIs to data storage and transmission | ### Advantages of JSON **Simplicity**: JSON is a simple, lightweight, and easy-to-read data format that is easy for both humans and machines to understand, making it a popular choice for data exchange on the web. **Platform and language agnostic**: JSON can be used with virtually any programming language, making it a versatile choice for developers working across different platforms and systems. **Data serialization**: JSON is an efficient method of serializing and transmitting complex data structures over the network, making it a popular choice for web APIs and other distributed systems. **Supports complex data structures**: JSON supports complex data structures such as arrays, objects, and nested structures, making it a powerful tool for data modeling and representation. ### Advantages of BSON **Compactness**: BSON is a binary format that can be more compact than JSON in some situations. **Support for additional data types**: BSON supports additional data types, such as binary data and timestamp, that are not part of standard JSON. ### Does Couchbase use JSON or BSON format? Couchbase uses JSON as its primary data format and does not natively support BSON. Why use JSON? JSON is a human-readable and lightweight data format widely used in web development, making it easy to work with across different platforms and systems. Because JSON offers flexibility in data modeling and supports complex data structures, it’s an ideal choice for applications that require efficient data serialization and transmission over the network. While BSON offers advantages such as compactness and additional data types, Couchbase has opted to stick with the simplicity and versatility of JSON for its data storage and retrieval needs. Couchbase combines a cache with a JSON document database and is the original multi-model database. Using the foundations of standard JSON, Couchbase supports the following models and access methods: **Key-value -**the use of key-value pairs enables fast lookup of JSON documents and can be serialized/deserialized efficiently by every developer language/platform.**SQL++ (SQL for JSON) -**SQL is declarative, concise, and readable, which is why it’s the world’s most popular data query language and is natively supported by the most popular databases. SQL++ is simply an extension of SQL that supports JSON.**Full-text search -**JSON is not only readable, it’s also searchable. Using the open source Bleve engine, Couchbase supports full-text search indexes of JSON data, including fuzziness, regular expressions, wildcards, faceting, and everything else you’d expect from a text search engine.**Geospatial -**JSON data can include GeoJSON or Geopoint data. Using the full-text search engine, JSON can be searched by location using radius, bounding box, or polygon.**Mobile sync -**JSON is conducive to mobile development because it enables efficient and ubiquitous JSON serialization/deserialization. Because all of these methods work on the same pool of JSON data, Couchbase can do the job of two, three, or more point solutions without adding more data pipelines. And because it uses standard JSON, there are fewer hoops to jump through when exporting or importing data. **NOTE:** Couchbase also supports binary storage of arbitrary non-JSON data. This data cannot be indexed or queried as extensively as JSON data, but it is accessible via normal key-value lookup. ### FAQ **Is BSON better than JSON?** BSON has some potential benefits over JSON, but most of them are outweighed by JSON’s advantages of widespread adoption and standard compatibility. **Which is faster, BSON or JSON?** In a vacuum, BSON can be faster than JSON for large and complex data structures because of its binary encoding and compactness. However, actual performance depends on various factors, and JSON’s wider adoption and compatibility with multiple systems make it a popular choice for many developers. In a real-world database system, Couchbase (using JSON) usually outperforms MongoDB (using BSON). **Does MongoDB use JSON or BSON?** MongoDB uses BSON and a proprietary query system. Couchbase uses standard JSON and a SQL standard query system. Trying to decide on a database? Check out the Database Advice Guide: Developer’s Guidebook. --- # Key-Value Database | Concepts Source: https://www.couchbase.com/resources/concepts/key-value-database/ Last modified: 2026-02-09T09:13:58+00:00 ## What is a key-value database? A key-value database is a type of NoSQL database that stores data as a collection of key-value pairs where each unique key is associated with a specific data value. The speed and efficiency of key-value databases make them a good choice for simple data storage and retrieval needs when the focus is on high performance. Their schema-less structure allows flexibility in data representation, making them suitable for a wide variety of applications from caching systems to real-time analytics. This page covers: - How key-value databases work - Key-value database features - Key-value database use cases - Advantages and disadvantages of key-value databases - Examples of key-value databases - Couchbase and key-value store - Conclusion ## How key-value databases work To illustrate how a key-value database works, we’ll use a simple example from the Couchbase key-value database. Couchbase stores data as documents like the one below, which happens to be a JSON document. JSON is a popular data format because it’s easy for both humans and machines to read and write, it’s lightweight, and it’s well known with wide support. **In a key-value database, every document in its entirety is a value and has a key**. This storage system is what makes a database a key-value database. In this example, airline_10 is the key, and the JSON is the value. The data within a document itself can take the form of key-value pairs (as in this example), but it doesn’t have to. For instance, the data could be XML, binary, or many other forms of structured, semi-structured, or unstructured data. ## Key-value database features While each key-value database is unique, they share numerous features that make them a compelling choice overall for many modern use cases. Some of the most important features are: **Schema-less design** - The absence of a fixed schema allows for flexible data representation. Key-value databases accommodate diverse data structures within one database, enabling you to easily evolve your data structures over time. **Simple data model** - A straightforward data model makes key-value databases user-friendly for basic requirements. The data access methods are also quite simple (e.g., get, replace, remove). **Support for complex data types** - You can store intricate and nested data structures as values. This feature enables you to represent diverse data types within a single key-value pair for comprehensive data modeling. **Secondary key support** - Secondary keys allow you to access values using more than one key. This feature increases flexibility in data retrieval by expanding your application’s query capabilities and facilitating more diverse access patterns. **Partitioning and sharding** - Support for data partitioning and sharding can enhance parallel processing, load balancing, and scalability. The most advanced key-value databases support the automatic distribution of your database across multiple data centers. Couchbase’s distributed database, for example, provides this support via automatic sharding. **Replication** - Replicating data across multiple nodes ensures redundancy, high availability, and fault tolerance to reduce the risk of data loss or service interruptions. **ACID support** - ACID (atomicity, consistency, isolation, durability) for transactions is a staple of relational databases, providing data integrity and reliability even in the face of system failures or errors. Historically, ACID has been slow to catch on in NoSQL databases because it counteracts the benefit of faster speeds, but it’s becoming more common. Couchbase, for example, supports distributed multi-document ACID transactions at scale without sacrificing flexibility or high availability. ## Key-value database use cases The versatility of key-value databases makes them an ideal option for addressing a wide variety of modern application requirements with simplicity, speed, and scalability. Key-value databases are often chosen for: **Caching** Key-value databases excel in caching scenarios where quick access to frequently used data is crucial for performance optimization. **User profiles** Key-value databases are well-suited for providing a fast and scalable solution for storing and managing user-related information such as username, email, and user preferences. **Session storage** Key-value databases are effective for managing session data because they ensure quick access and updates for logins, authentications, and interactions. **Real-time analytics** High-speed data access makes key-value databases suitable for analytics scenarios where rapid data retrieval is essential. Examples include dynamic pricing, personalized marketing offers, and real-time credit scores. **Product catalogs** Key-value databases provide a simple and efficient way to manage product catalogs, particularly in scenarios where products have a wide variety of different attributes. Representing product details using key-value pairs enables flexible updates and quick retrieval for e-commerce apps. ## Advantages and disadvantages of key-value databases Traditional relational databases are the most widely used databases and use the most popular query language, SQL. The following advantages and disadvantages of key-value databases are, therefore, made in comparison to relational databases and SQL. ### Advantages **Simplicity** - Key-value databases have a straightforward data model that reduces complexity in both database design and query operations. This simplicity enhances ease of use and development. **High performance** - Key-value databases are optimized for rapid read and write operations, which provides quick access to stored data. This optimization is a key factor in providing overall high performance for applications with demanding speed requirements. **Scalability** - Key-value databases offer horizontal scalability by allowing the addition of nodes to handle increased data volume and traffic. This horizontal scalability makes it easier and more affordable for a system to grow to accommodate evolving needs. Couchbase uses automatic key-based sharding to distribute data evenly in a cluster, so developers don’t have to worry about configuring shard keys, partitioning, or hot spots. **Flexibility** - A schema-less design supports diverse data structures in a single database and easily accommodates evolving data structures. These capabilities are particularly advantageous when data models need to change over time. **Efficient caching** - Key-value databases are very efficient at caching because their simple structure allows fast and direct access to data without complex relational structures. Overall system performance is improved by reducing the need to repeatedly fetch the same data from slower storage systems. ### Disadvantages **Limited querying capabilities** - Key-value databases lack advanced querying capabilities compared to relational databases, making them less suitable for complex query and analytics scenarios that involve multiple joins and relationships. Couchbase addresses this issue by using SQL++ to support sophisticated syntaxes like JOINs and subqueries, and it also provides innovative access to JSON features like nested objects and arrays. **Data integrity challenges** - Ensuring data integrity can be challenging in key-value databases, especially in distributed environments. Many don’t enforce the same level of consistency and referential integrity as traditional relational databases. A different approach to data modeling, such as JSON data modeling, can mitigate the challenges. Also, see our discussion of ACID support in the features section above. **Learning curve for NoSQL paradigm** - Adapting to NoSQL may pose an intimidating learning curve for developers accustomed to SQL and relational database models. Couchbase uses SQL++ so developers can use their existing SQL skills to build modern applications with all the benefits of JSON. ## Examples of key-value databases **Redis**is an open source, in-memory key-value database known for its speed and versatility. It supports various data structures like strings, hashes, lists, and sets. As a fully in-memory database, Redis is often used as a cache alongside another database.**Amazon DynamoDB**is a fully managed key-value and document database service provided by Amazon Web Services (AWS). It’s commonly used for applications with dynamic workloads and is integrated into the AWS ecosystem, making it convenient for cloud-based applications.**Couchbase**provides a flexible JSON document structure that facilitates complex data storage and retrieval. It’s recognized for its ease of scalability and efficient data distribution. Unique features include its SQL++ query language and the ability to function as a document database, key-value store, and cache. ## Couchbase and key-value store Couchbase is a NoSQL database that operates as both a key-value store and a document-oriented database. Its SQL-based query language, SQL++, makes it easy for developers to transition from traditional databases and take advantage of the flexibility of JSON to power their organization’s modern applications. For data storage, Couchbase organizes data as key-value pairs, and Couchbase’s document-oriented model allows values to be complex JSON documents. Documents in JSON format can be indexed in secondary indexes, which are indexes on any key-value or document key. This flexibility accommodates structured, semi-structured, and unstructured data. Couchbase is optimized for high read and write performance, making it suitable for scenarios where quick access to data is crucial. It supports horizontal scalability and efficiently handles data volume and traffic increases by distributing data across multiple nodes. This blog post walks you through a sample dataset to show you how the Couchbase key-value store works. ## Conclusion Key-value databases are a modern alternative to traditional relational databases that offer better performance, scalability, and flexibility for many use cases. Their schema-less design enables diverse data structures and easy evolution of those structures over time. A simple data model makes them user-friendly while advanced features make them suitable for demanding enterprise requirements. Although key-value databases have some disadvantages compared to relational databases, the most advanced solutions are rapidly becoming more sophisticated and adding capabilities to address previous limitations. Couchbase is one example of a leading distributed NoSQL cloud database and key-value store that delivers versatility, performance, scalability, and value for cloud, mobile, AI, and edge applications. To learn more about key-value databases and related technologies, check out these resources: Types of databases 6 types of data models What is Couchbase? How Couchbase saves data Understanding the Couchbase Data Service Key-value operations in Couchbase Key-value operations with Python Key-value operations with PHP CRUD key-value operations in Couchbase Learn more about Couchbase key-value store --- # What Are Knowledge Graphs? | Concepts Source: https://www.couchbase.com/resources/concepts/knowledge-graphs/ Last modified: 2025-04-17T12:01:19+00:00 **SUMMARY** Knowledge graphs rely on entities (nodes), relationships (edges), attributes (properties), ontologies (schema), and inference mechanisms to enable machines to understand and represent information. They work by collecting and processing data, extracting entities and relationships, structuring this information in a graph format, and enabling reasoning and querying for insights. Knowledge graphs are widely used in e-commerce, finance, healthcare, and cybersecurity industries to enhance search functionality, detect fraud, personalize recommendations, and improve decision making. ## What is a knowledge graph? A knowledge graph is a structured representation of information that connects entities, concepts, and the relationships between them in a way that machines can understand and utilize. It organizes data into nodes that represent entities like people, places, or things, and edges that represent their relationships. This creates a semantic network of interconnected information. Knowledge graphs are used in search engines, recommendation systems, and artificial intelligence (AI) applications to enhance data retrieval, improve contextual understanding, and provide more accurate insights. By leveraging structured data and linking it with existing information, knowledge graphs help machines process and infer knowledge similarly to humans. Keep reading this resource to learn more about how knowledge graphs work and how to build them. - Key elements of knowledge graphs - How do knowledge graphs work? - Ontologies and knowledge graphs - Knowledge graph examples - Knowledge graph use cases - Knowledge graph benefits - How to build a knowledge graph - Key takeaways and additional resources - FAQ ## Key elements of knowledge graphs Before we dive into how knowledge graphs work, it’s important to explain the elements that make them function. These mechanisms form the foundation of knowledge graphs, enabling them to represent real-world entities, their attributes, and their relationships. By breaking down a knowledge graph into its basic components, we can better understand how it organizes data, facilitates semantic search, and improves AI-driven applications. Below are the fundamental elements that make knowledge graphs powerful tools for structuring and analyzing information. ### Entities (Nodes) Entities are a knowledge graph’s building blocks, containing real-world entities like people, places, or things. An entity is a node holding meaningful information. For example, “Albert Einstein” would be an entity with attributes like birthdate and occupation. Ultimately, entities provide the foundation for meaningful links. ### Relationships (Edges) Relationships are the connections between things, forming edges in the graph. Relationships describe how things relate to each other, for instance, “Albert Einstein” → “was born in” → “Germany.” Relationships provide context for the data and present us with a network of related information. ### Attributes (Properties) Attributes are entity-specific information that provide additional detail about the knowledge graph. “Paris” would have “Population: 2.1 million” and “Country: France” as attributes. Attributes provide important background detail about each entity. ### Ontology (Schema or structure) Ontology dictates the graph’s form and constrains it by specifying entity type and relationships. Ontology helps ensure data consistency by specifying what can be related and how. For instance, it can mandate that “Person” can “act in” a “Movie” but not a “City.” ### Identifiers (Unique IDs) Unique IDs distinguish similar entities. For example, the word “Apple” can denote the fruit and the company, but they both possess unique IDs. The identifiers render the graph correct and prevent confusion. ### Inference and reasoning Inference allows the graph to make new connections from relations. For example, if “John” is the father of “Emma,” and “Emma” is the sister of “Liam,” then the graph can infer that “John” is the father of “Liam.” This reasoning makes the graph intelligent. These components work together to form an organized, useful body of information, leading to more intelligent search and AI applications. ## How do knowledge graphs work? Knowledge graphs integrate information from diverse sources to create a comprehensive and interconnected network of entities and their relationships. Here’s a breakdown of how they work: ### Step 1: Collect data Knowledge graphs start with data collection from sources like databases, text files, APIs, or websites. The data may be structured (e.g., spreadsheets) or unstructured (e.g., articles). The objective is to collect as much information as possible to build a broad knowledge base. ### Step 2: Extract entities and relationships Next, the system identifies important entities (e.g., people, places, or organizations) and their relationships using techniques like named-entity recognition (NER) and relationship extraction. For example, it might extract that “Barack Obama” is an individual and that he has a relation like “was President of” with “United States.” ### Step 3: Structure and organize Once retrieved, the information is returned in a structured format, typically triples presented as: (Subject, Predicate, Object). An example of this is (Paris, isCapitalOf, France). A schema or ontology is also created to classify entities and relations to be consistent and semantically interpreted. ### Step 4: Reason and query After being organized, the knowledge graph can reason new facts based on logical rules. For example, if “A is a parent of B” and “B is a parent of C,” the graph will be capable of reasoning that “A is a grandparent of C.” Users can query the graph through programming languages like SPARQL to retrieve focused information. ### Step 5: Use and update Finally, the knowledge graph powers search engines, recommendation systems, and chatbots, integrating hybrid search, vector search, and large language models (LLMs) for smarter, context-aware responses. Regular updates keep it accurate and dynamic for knowledge structuring and access. This step-by-step process transforms raw data into an interconnected, intelligent web of knowledge. ## Ontologies and knowledge graphs ### What is an ontology? An ontology is a formal structure that describes concepts, objects, and their interconnections in a specific area of interest. It provides rules, classes, and categories that help classify and interpret data. ### How do ontologies relate to knowledge graphs? A knowledge graph uses an ontology to structure data, bringing consistency and semantics. The ontology is the backbone of the knowledge graph, specifying how entities are categorized and linked. **Example:** A movie knowledge graph follows an ontology that specifies: - Actors can act in Movies - Directors can direct Movies - Movies can have a Genre **Key differences:** Feature | Ontology | Knowledge graph | |---|---|---| | Purpose | Defines rules and relationships | Stores and connects real-world data | | Structure | Conceptual model (abstract) | Data network (practical) | | Usage | Provides meaning and reasoning | Enables AI-driven search and analysis | ## Knowledge graph examples Here are some well-known examples of knowledge graphs: **Google knowledge graph:**This knowledge base tightens up search results by learning about relationships between entities (e.g., people, places, or things). It provides direct answers and more detailed, context-sensitive information in search results, such as a knowledge panel for celebrities or landmarks.**LinkedIn knowledge graph:**This knowledge base maps relationships between people, roles, skills, and companies. It helps provide job recommendations, professional relationships, and content based on your profile and network.**Facebook entity graph:**This graph connects users, pages, posts, likes, and interactions to help deliver relevant content and ads. It also improves user experience by recommending relevant posts, groups, and events based on behavior.**Amazon product graph:**This graph organizes product, review, and customer preference information. It powers Amazon’s recommendation engine by suggesting similar or related products through browsing and purchasing history. Each graph enables a better user experience with personalized, context-aware recommendations. ## Knowledge graph use cases Here are some of the ways knowledge graphs can be used across industries: **Recommendation systems:**E-commerce and streaming platforms use knowledge graphs to personalize recommendations. Amazon suggests products based on user behavior, while Netflix recommends content by analyzing viewing patterns.**Fraud detection and risk analysis:**Financial institutions detect fraud by identifying suspicious relationships and hidden patterns in transactions. Knowledge graphs also help assess credit risk and improve compliance.**Healthcare and biomedical research:**Medical professionals use knowledge graphs to link patient records, drug interactions, and clinical trials. Researchers leverage them to accelerate drug discovery and treatment innovation.**Cybersecurity and threat intelligence:**Cybersecurity teams use knowledge graphs to analyze attack patterns and malicious entities. They help detect threats, identify vulnerabilities, and enhance security defenses.**Smart assistants and autonomous systems:**Self-driving cars and smart cities use knowledge graphs to structure spatial and IoT data, enabling real-time decision making and automation. ## Knowledge graph benefits Knowledge graphs benefit AI applications by enabling them to organize, connect, and reason through complex data. Here are the specific ways they do that: **Enhanced search and discovery:**Knowledge graphs enable semantic search and intelligent query responses by linking related concepts and inferring connections between pieces of information. This ability improves user experience for web and internal search engines.**Personalization:**Knowledge graphs enable personalization by understanding users’ behavior and tastes. This capability allows applications to make personalized recommendations and improve targeted advertising efforts.**Natural language processing (NLP):**Knowledge graphs enable NLP applications like entity recognition, question answering (QA), and text summarization. These features allow machines to understand and generate human-like answers, enhancing chatbots and virtual assistants. ## How to build a knowledge graph Building a knowledge graph involves the following steps: 1. **Define purpose and scope:** Identify the domain, key entities, and relationships relevant to your application. 2. **Collect and process data:** Collect structured (databases and APIs) and unstructured (documents and text) data, then cleanse and normalize it. 3. **Identify entities and relationships:** Use NLP to identify key concepts in your data, then structure them in a graph format. 4. **Store in a graph database:** Store and manage relationships in your data with databases like Neo4j or Amazon Neptune. 5. **Query and analyze:** Use languages like Cypher, Gremlin, or SPARQL to gain insights and discover patterns in your data. 6. **Visualize and deploy:** Use software like Gephi, Linkurious, or GraphX to visualize data relationships and deploy them into applications. ## Key takeaways and additional resources In this resource, we learned that: - Knowledge graphs structure data into entities and relationships to improve search functionality, enhance AI applications, and aid decision making. - Knowledge graphs power search engines and recommendation systems, allow financial institutions to detect fraud, enable medical professionals to improve patient care, and help cybersecurity professionals detect vulnerabilities and enhance security. - Building a knowledge graph involves defining scope, collecting data, identifying entities, utilizing graph databases, querying insights, and visualizing results. - Graph databases like Neo4j and Amazon Neptune are commonly used for storage and analysis. - Cypher, Gremlin, or SPARQL are used for querying, while visualization tools like Gephi and Linkurious help explore relationships. To learn more about concepts related to AI, you can review our hub and check out the resources below: ### Additional resources - From Concept to Code: LLM + RAG With Couchbase - How Generative AI Works With Couchbase - A Guide to LLM Embeddings - Knowledge Base Population (KBP) - The Stanford Natural Language Processing Group ## FAQ **What is a knowledge graph in AI? **In AI, a knowledge graph is a structured representation of data that connects entities, concepts, and their relationships to enable machine understanding, reasoning, and decision making. **What are knowledge graphs used for?** Knowledge graphs are used to improve search, recommendation systems, data integration, artificial intelligence, and automated reasoning. **What is the difference between graph databases and knowledge graphs?** Graph databases store and manage connected data using nodes and edges, while knowledge graphs add semantic meaning by incorporating ontologies, relationships, and contextual understanding for intelligent reasoning. **What is a triplestore?** A triplestore is a database designed to store and manage data in subject-predicate-object triples, which enables efficient querying and semantic relationship retrieval in knowledge graphs. **Does ChatGPT use knowledge graphs?** Although ChatGPT doesn’t directly use knowledge graphs, it does rely on large language models (LLMs) trained on textual data. --- # Mobile Edge Computing (MEC) | Concepts Source: https://www.couchbase.com/resources/concepts/mobile-edge-computing/ Last modified: 2026-02-09T08:52:23+00:00 ## What is mobile edge computing? Mobile edge computing, now more commonly referred to as multi-access edge computing (MEC), is a technology that brings computing resources closer to the edge of the network, specifically to base stations and other network infrastructure. Instead of relying on centralized cloud servers, mobile edge computing allows these resources to be deployed closer to where they’re needed. This proximity reduces latency, enhances data processing speed, and improves the performance of applications and services. This resource will cover the differences between mobile edge and multi-access computing, deployment options, use cases, benefits, and challenges. Let’s get started. - Mobile edge vs. multi-access computing - Importance of mobile edge computing - Mobile edge computing deployment options - Mobile edge computing use cases - Benefits of mobile edge computing - Challenges of mobile edge computing - Key takeaways and additional resources ## Mobile edge vs. multi-access computing Mobile edge computing and multi-access edge computing are similar but have distinct meanings based on the scope and application. ### Mobile edge computing (original concept) **Scope:** “Mobile edge computing” originally referred to edge computing within the context of mobile networks. It was developed primarily for telecommunications environments, where the goal was to provide computing power and storage closer to mobile users, typically at base stations or cellular towers. **Network focus:** This concept was tightly coupled with mobile networks (like 4G LTE and 5G). It aimed to reduce latency and improve bandwidth efficiency by processing data locally at the edge of the mobile network. **Applications:** It was initially designed with mobile-specific use cases in mind. These included optimizing mobile video delivery, enhancing mobile gaming experiences, and supporting low-latency applications like connected vehicles or remote healthcare. ### Multi-access edge computing (expanded concept) **Scope:** As the concept of edge computing evolved, “multi-access edge computing” was introduced to broaden the scope beyond just mobile networks. This term reflects the idea that edge computing can be applied across various access networks, not just mobile but also fixed, Wi-Fi, and others. **Network flexibility:** Multi-access edge computing is not limited to cellular networks. It can operate across different access points, whether part of a mobile network, a fixed broadband network, a Wi-Fi network, or other types of network infrastructure. **Applications:** The broader scope of multi-access edge computing includes a range of applications beyond mobile environments. These include edge computing for smart factories, retail environments, smart cities, and even residential settings, where different types of network access may be in use. It supports a more diverse set of use cases, including industrial IoT, enterprise applications, augmented reality, and much more. ### Key differences **Network type** **Mobile edge computing:**Primarily focused on mobile networks.**Multi-access edge computing:**Encompasses mobile, fixed networks (DSL, cable, and fiber), Wi-Fi, and other access networks. **Application scope** **Mobile edge computing:**Initially targeted mobile-specific applications.**Multi-access edge computing:**Supports a broader range of applications across various network types. **Evolution** **Mobile edge computing:**The earlier, more narrowly defined concept.**Multi-access edge computing:**The evolved, more inclusive concept that reflects the need for edge computing across different types of networks. Aspect | Mobile edge computing | Multi-access edge computing | |---|---|---| Scope | Focused on mobile networks | Encompasses mobile, fixed, Wi-Fi, and other networks | Network type | Primarily mobile (e.g., 4G LTE, 5G) | Multiple access networks (mobile, fixed DSL, cable, and fiber networks, Wi-Fi, etc.) | Application focus | Mobile-specific applications | Broader range of applications across various networks | Examples of use cases | Mobile video delivery, mobile gaming, and connected vehicles | Smart cities, industrial IoT, retail environments, and augmented reality/virtual reality | Evolution | Earlier, a narrower concept | Evolved, inclusive concept covering more network types | Primary goal | Improve mobile service performance (low latency, bandwidth efficiency) | Enhance performance across diverse network environments | Deployment location | Typically, at mobile network base stations or cellular towers | At various edge points across different network infrastructures (e.g., base stations, Wi-Fi access points, etc.) | **Table 1:** Mobile edge computing vs. multi-access edge computing Overall, multi-access edge computing is the modern, broader version of mobile edge computing, reflecting the expansion of edge computing capabilities beyond just mobile networks to encompass various network access types. In the next section, let’s review the importance of mobile edge computing. ## Importance of mobile edge computing Mobile edge computing is important for both network operators and end users. Here are some of the key reasons why: ### Reduced latency **Real-time applications:** Mobile edge computing enables near-instantaneous data processing, making it ideal for applications that require low latency, such as augmented reality, virtual reality, and autonomous vehicles. **Improved user experience:** Lower latency translates to a more responsive and satisfying user experience. ### Enhanced network efficiency **Offloading traffic:** By processing data closer to the edge, mobile edge computing reduces the load on core networks, improving overall performance and capacity. **Optimized resource allocation:** Mobile edge computing allows for more efficient allocation of network resources, ensuring they’re used effectively. ### Support for IoT devices **Scalability:** Mobile edge computing can handle the massive influx of data generated by IoT devices, providing a scalable and efficient solution for IoT deployments. **Local processing:** Mobile edge computing enables local processing of IoT data, reducing the amount of data that needs to be transmitted to the cloud, thus saving bandwidth and reducing costs. ### Privacy and security **Data localization:** Mobile edge computing can help localize data, reduce the risk of data breaches, and ensure compliance with data privacy regulations. **Improved security:** By processing data closer to the edge, mobile edge computing can help reduce the attack surface and improve network security. ### Enabling new business models **Edge applications:** Mobile edge computing opens up new opportunities for innovative edge applications, such as smart city services, industrial automation, and personalized content delivery. **Revenue generation:** Network operators can generate new revenue streams by offering edge computing services to enterprises and developers. ## Mobile edge computing deployment options Mobile edge computing offers several deployment options, depending on the network’s specific requirements, the applications being supported, and the level of integration with existing infrastructure. Here are the primary deployment options: ### On-premises deployment **Location:** Deployed directly at the customer’s premises, such as a factory, hospital, or office building. **Use cases:**Ideal for enterprises that require real-time processing for mission-critical applications, such as industrial automation, smart manufacturing, and private 5G networks.**Benefits:**Offers the highest level of control, security, and customization. It also reduces latency to a minimum since data is processed locally within the premises. ### Telco network edge deployment **Location:** Deployed at the edge of the mobile network, typically at base stations, aggregation points, or other network edge locations. **Use cases:**Commonly used for public network services like content delivery, real-time gaming, and AR/VR applications.**Benefits:**Leverages the telco’s existing infrastructure to provide low-latency services to many users. It also reduces the need for backhaul to centralized data centers. ### Distributed cloud deployment **Location:** Deployed across multiple distributed cloud locations closer to users than traditional centralized cloud data centers. **Use cases:**Suitable for applications requiring both scalability and low latency, such as content distribution networks (CDNs), video streaming, and edge AI.**Benefits:**Combines the scalability of cloud computing with the low-latency benefits of edge computing. It allows for flexible resource allocation across multiple edge sites. ### Hybrid deployment **Location:** Combines on-premises mobile edge computing with telco network edge or cloud-based resources. **Use cases:**Ideal for organizations balancing local data processing with broader network services, such as smart cities, connected healthcare, or retail chains with multiple locations.**Benefits:**Provides a flexible and scalable solution that can meet diverse requirements across different locations and use cases. It allows for both localized data processing and broader network coverage. ### Public edge cloud deployment **Location:** Offered through a public cloud provider, where edge computing resources are made available as a service. **Use cases:**Suitable for startups or businesses that don’t want to invest in their own infrastructure but need low-latency services, such as edge-based AI processing, gaming, and IoT analytics.**Benefits:**Offers a cost-effective and scalable solution with lower upfront investment. Users can benefit from edge computing without having to manage the underlying infrastructure. ### Network function virtualization (NFV)-based deployment **Location:** Deployed using virtualized network functions (VNFs) that run on standard hardware at the network edge. **Use cases:**Suitable for telecommunications providers who want to deploy mobile edge computing services alongside other virtualized network services, such as virtualized RAN (vRAN) or core network functions.**Benefits:**Offers flexibility and efficiency by using virtualized infrastructure, which can be dynamically allocated and scaled based on demand. It also integrates well with existing NFV environments. ### Multi-access edge platform **Location:** Can be deployed as a shared infrastructure that supports multiple operators and service providers. **Use cases:**Suitable for shared environments like smart cities, where multiple stakeholders can utilize the same edge infrastructure for different services.**Benefits:**Provides a cost-effective way to deploy edge computing resources, as multiple entities can share the infrastructure. It also facilitates interoperability between different service providers and applications. ### Partnered or federated edge deployment **Location:** Deployed in partnership with other network operators or service providers, allowing for a federated edge network. **Use cases:**Ideal for applications requiring broader geographical coverage, such as international content delivery, where edge resources from different providers are utilized.**Benefits:**Enables wider coverage and resource sharing, allowing for more efficient use of edge infrastructure. It also supports cross-network services and applications. Each deployment option for mobile edge computing is suited to different applications and network environments. The choice of deployment will depend on factors like latency requirements, security needs, scalability, and use cases. ## Mobile edge computing use cases Mobile edge computing offers a wide range of applications. Here are some of the ways you can put this technology to use: ### Real-time applications **AR/VR:** Can enable immersive AR and VR experiences by processing complex graphics and data locally, reducing latency and improving user interaction. **Autonomous vehicles:** Can provide the low-latency processing power required for real-time decision-making in autonomous vehicles, ensuring safe and efficient operation. **Gaming:** Can enhance gaming experiences by reducing latency and improving responsiveness, especially for multiplayer games and cloud gaming services. ### Internet of Things (IoT) **Smart cities:** Can support a wide range of IoT applications in smart cities, such as smart parking, traffic management, and environmental monitoring. **Industrial automation:** Can enable real-time data processing and control for industrial automation systems, improving efficiency and productivity. **Smart homes:** Can provide the computational power needed for smart home devices to interact and respond to user commands in real time. ### Content delivery **Video streaming:** Can improve video streaming quality by caching content closer to the user, reducing buffering, and improving the playback experience. **Personalized content:** Can enable personalized content delivery by analyzing user preferences and delivering tailored content in real time. ### Network optimization Load balancing: Can help to balance network traffic by offloading processing tasks from core networks to edge nodes. **Network slicing:** Can enable network slicing, allowing network operators to create dedicated virtual networks for specific use cases, such as IoT or gaming. ### Edge AI **Machine learning:** Can support edge AI applications by enabling real-time machine learning tasks, such as image recognition, natural language processing, and predictive analytics. **Computer vision:** Can be used for computer vision tasks, such as object detection, facial recognition, and anomaly detection. These are just a few examples of the many use cases for mobile edge computing. As technology evolves, we expect to see even more innovative applications emerge. You can read about use cases in more detail here. ## Benefits of mobile edge computing Mobile edge computing offers a range of benefits for both network operators and end users. Here are some of them: ### Benefits for network operators **Improved network efficiency:**Can offload processing tasks from core networks, reducing congestion and improving overall network performance.- Reduced operational costs: By processing data closer to the edge, you can reduce the need for costly network upgrades and data center infrastructure. **Enhanced network resilience:**Can improve network resilience by distributing processing capabilities across multiple locations, making the network less vulnerable to failures.**New revenue streams:**Can create new revenue streams for network operators by offering edge computing services to enterprises and developers.**Reduced costs:**By processing data at the edge, mobile edge computing reduces the need to transmit large amounts of data over long distances, lowering the costs associated with data transmission and backhaul. ### Benefits for end users **Reduced latency:**Can significantly reduce latency for applications that require real-time responses, such as AR/VR, gaming, and autonomous vehicles.**Improved user experience:**Lower latency leads to a more responsive and satisfying user experience.**Enhanced privacy and security:**Can help localize data, reduce the risk of data breaches, and ensure compliance with data privacy regulations.**Access to innovative services:**Enables new and innovative services, such as personalized content delivery, edge AI, and IoT applications.**Environmental sustainability:**By minimizing the need for long-distance data transport and optimizing resource usage, mobile edge computing contributes to lower energy consumption and reduced carbon emissions.**Security:**Protecting data and devices in edge environments is crucial. Mobile edge computing deployments must address security risks such as unauthorized access, data breaches, and malicious attacks.**Power and energy consumption:**Edge devices often operate on limited power and energy resources. Efficient power management and energy-efficient hardware are essential for sustainable deployments.**Management and orchestration:**Managing and orchestrating resources across distributed environments can be complex. Effective management tools and automation are needed to simplify operations.**Capital expenditure (CapEx):**Deployment can require significant upfront investments in hardware, software, and network upgrades.**Operational expenditure (OpEx):**Ongoing costs associated with managing, maintaining, and updating mobile edge computing resources can be substantial.**Compliance:**Deployments must comply with various regulations, including data privacy laws, network neutrality rules, and industry-specific standards.**Spectrum allocation:**Allocating spectrum for mobile edge computing services can be complex, especially in densely populated areas. ## Challenges of mobile edge computing While mobile edge computing offers many benefits, it also presents several challenges that need to be addressed for its widespread adoption: ### Technical challenges ### Economic challenges ### Regulatory challenges Addressing these challenges in the early stage requires advancements in technology, standardization efforts, and the development of best practices and management tools that can simplify the deployment and operation of mobile edge computing. ## Key takeaways and additional resources By bringing computing resources closer to end users and devices, mobile edge computing reduces latency, enhances network efficiency, and supports the growing demands of real-time, data-intensive applications such as autonomous vehicles, smart cities, and immersive AR/VR experiences. While mobile edge computing offers significant benefits, including improved performance, security, and scalability, it also presents challenges like deployment complexity and security concerns. Despite the challenges, this powerful technology will be crucial for improving the performance of applications and services in the long run. To learn more about concepts related to edge computing, you can visit our blog and concepts hub. --- # Multi-Model Databases | Concepts Source: https://www.couchbase.com/resources/concepts/multi-model-databases/ Last modified: 2025-11-27T15:11:12+00:00 **SUMMARY** A multi-model database is a single platform that stores and queries different types of data, allowing teams to avoid juggling multiple specialized systems. This approach makes it easier to build applications that rely on varied datasets, from customer profiles to real-time analytics. The rise of NoSQL and the demand for flexible, scalable architectures have driven the evolution of multi-model databases, which now combine models such as document, key-value, graph, and relational. These platforms offer capabilities such as unified querying, schema flexibility, integrated search, and strong performance across diverse workloads. As a result, multi-model databases are increasingly used to simplify infrastructure, support complex use cases, and accelerate the development of modern, data-driven applications. ## What is a multi-model database? A multi-model database is a platform that supports multiple data models, such as document, key-value, graph, relational, and more, within a single, unified engine. Unlike single-model databases that focus on one structure, multi-model databases allow organizations to store, manage, and query different types of data without relying on multiple systems. This flexibility allows teams to handle use cases ranging from real-time analytics and content management to recommendation engines and customer 360 views. By consolidating multiple models into one platform, multi-model databases reduce data silos, simplify architecture, and allow for more agile application development. Continue reading this resource to explore the evolution of multi-model databases, how they differ from traditional databases, their capabilities, common use cases, potential challenges, and leading platforms in the market. - A brief history of multi-model databases - Multi-model database capabilities - Multi-model databases vs. traditional databases - Use cases for multi-model databases - Multi-model database challenges - Multi-model database examples - Key takeaways and related resources - FAQs ## A brief history of multi-model databases Multi-model databases materialized in response to the limitations of early relational systems, which struggled to handle growing, diverse data types. As web applications, mobile experiences, and real-time analytics became more demanding, businesses needed database architectures that could store and process structured, semi-structured, and unstructured data without the rigid schemas of traditional SQL databases. This shift led to the rise of NoSQL systems in the late 2000s, offering key-value, document, graph, and columnar data models for different use cases. As NoSQL adoption grew, companies found they had to deploy multiple specialized databases to meet varying application requirements, leading to operational complexity and data fragmentation. To combat these challenges, multi-model databases evolved to integrate multiple NoSQL and sometimes relational data models into a single engine. By unifying document, key-value, graph, and search capabilities into a single platform, multi-model databases reduced the need for separate systems, improved developer productivity, and delivered the scalability required for distributed, cloud-native applications. Timeline of database development ## Multi-model database capabilities Unlike traditional databases that specialize in one model, multi-model databases support multiple data types and models within a single, unified platform. By eliminating the need to integrate multiple specialized databases, they simplify development and make it easier for organizations to manage diverse, rapidly changing data. Here are some of the capabilities that make this possible: **Support for multiple data models:**Multi-model databases natively handle key-value, document, graph, relational, and sometimes time-series data in one system.**Unified query engine:**They allow developers and analysts to access and query data across models without switching tools or rewriting code.**High performance and scalability:**Optimized architectures support large-scale workloads and real-time use cases.**Flexible schema management:**Multi-model systems allow for structured, semi-structured, and unstructured data.**Advanced indexing and search:**They improve query speed and accuracy across different data types.**Integrated analytics:**These platforms support real-time and batch analytics directly within the database environment.**Strong consistency and availability options:**Multi-model databases balance performance and reliability based on application needs.**Developer-friendly tooling:**They provide SDKs, APIs, and integrations to simplify the development of modern, data-driven applications. ## Multi-model databases vs. traditional databases Multi-model databases and traditional databases handle and store data differently, which affects flexibility, performance, and scalability. Traditional databases typically focus on a single data model, such as relational, requiring separate systems to support additional formats. In contrast, multi-model databases consolidate multiple models into a single platform. Understanding the differences between the two helps organizations choose the right database for their data strategy. Here’s a comparison table to help simplify your decision: Aspect | Multi-model databases | Traditional databases | |---|---|---| Data model support | Supports multiple models (document, key-value, graph, relational, etc.) in one system | Typically limited to one model (e.g., relational or key-value) | Flexibility | Adapts to changing data structures and diverse workloads | Requires rigid schemas and may need separate databases for different data types | Integration complexity | Simplifies architecture by reducing the need for multiple systems | Often needs external integration between different database types | Querying | Unified query layer supports multiple data models | Queries are designed for a specific data model | Performance | Optimized for diverse workloads with built-in scalability | May require additional scaling solutions or specialized systems | Development speed | Speeds up development by reducing the need to manage multiple platforms | Slower when working with diverse data sources | Use cases | Ideal for real-time analytics, complex applications, and hybrid workloads | Well suited for stable, structured, and transactional workloads | Cost and maintenance | Lowers operational overhead by consolidating systems | May require more resources to manage multiple specialized databases | ## Use cases for multi-model databases Multi-model databases are built to handle a variety of data types and workloads within a single platform, making them ideal for modern, data-intensive applications. Their ability to support multiple data models positions them well for industries and applications that demand both flexibility and high performance. Some of the specific ways organizations can use these platforms include: **Real-time analytics:**Combine structured and unstructured data to deliver fast, actionable insights without complex data pipelines.**Customer 360 views:**Unify customer data from multiple sources, such as CRM systems, web activity, and transactions, into a single, cohesive model.- IoT and edge applications: Efficiently store and process high-velocity sensor data alongside relational metadata. **Fraud detection and risk management:**Use graph and document models together to identify complex relationships and detect anomalies in real time.**Content management systems:**Manage documents, metadata, and user interactions in a single environment without needing separate databases.**E-commerce personalization:**Leverage graph and key-value data to deliver personalized recommendations and improve user experience.**Supply chain optimization:**Integrate real-time tracking, logistics data, and transactional information for better visibility and business decisions. ## Multi-model database challenges While multi-model databases offer flexibility and performance advantages, they also introduce new complexities that organizations need to consider. Managing multiple data models within a single platform can create unique operational, architectural, and skill-related challenges. Understanding these potential pain points early on is essential for successful planning, implementation, and scaling. Key challenges include: **Operational complexity:**Supporting multiple data models often requires more sophisticated configuration, maintenance, and monitoring.**Performance tuning:**Optimizing queries and workloads across different models can be more difficult than tuning a single-model database.**Skill set requirements:**Teams may need broader expertise to manage various data models, query languages, and indexing strategies.**Integration with existing systems:**Adopting a multi-model database may require rethinking data pipelines and application architectures.**Cost and resource management:**Running a single platform that supports multiple workloads can demand significant infrastructure and careful resource allocation.**Vendor and ecosystem maturity:**Not all multi-model solutions offer the same level of tooling, support, or community resources as traditional databases.**Security and governance:**Managing data protection, access controls, and compliance across multiple models adds additional layers of complexity. While these challenges require thoughtful planning, they also present opportunities to build more resilient, scalable, and future-ready data systems. With the right strategy, skilled teams, and proper governance, organizations can turn these complexities into strengths. ## Multi-model database examples Here are some examples of multi-model platforms that simplify operations and give teams the freedom to build scalable applications: **Couchbase:**A distributed NoSQL database that supports document, key-value, and full-text search models, designed for high performance and real-time applications.**ArangoDB:**A native multi-model database that combines graph, document, and key-value data models with a single query language.**OrientDB:**A Java-based platform that blends graph and document models, often used for complex relationships and analytics.**MarkLogic:**An enterprise-grade database supporting document, graph, and relational data models, often used for large-scale data integration.**Azure Cosmos DB:**A globally distributed database service that supports multiple APIs and models, including key-value, document, and graph.**Datastax Astra DB:**A cloud-native platform built on Apache Cassandra that extends support to multiple data models for flexible application development. ## Key takeaways and related resources As data environments grow and change, multi-model databases have become a key tool for simplifying infrastructure and increasing agility. By combining multiple data models into a single platform, they’ve helped reduce the need for separate systems and made it easier to build fast, scalable applications. These databases have also helped organizations tap into value from their data that they may not have had insight into otherwise. Here are the most important takeaways about multi-model databases to remember from this guide: ### Key takeaways - Multi-model databases support multiple data models within a single engine, reducing the need to manage separate systems. - They evolved from the limitations of traditional databases to meet demands for flexibility and scalability. - Their core capabilities include unified querying, high performance, flexible schema management, and integrated analytics. - Unlike traditional databases, multi-model platforms simplify architecture, improve agility, and support diverse workloads. - They power use cases that range from real-time analytics and IoT to personalization and fraud detection. - Challenges like operational complexity and performance tuning can be overcome with a well-thought-out strategy. - Platforms like Couchbase, ArangoDB, and Azure Cosmos DB are shaping how organizations build modern applications. To learn more about different types of databases, you can visit our concepts hub and review the resources listed below: ### Related resources - How Multimodel Databases Can Reduce Data Sprawl - Blog - Updating Sensor Data: Exploring Couchbase’s Multi-Model Options - Blog - Types of Databases - Concepts - Six Types of Data Models (With Examples) - Blog - NoSQL Explained: What It Is, How It Works & Why It Matters - Resources ## FAQs **What types of data models can a multi-model database support?** A multi-model database can natively handle document, key-value, graph, relational, and sometimes time-series data within a single platform. **How does a multi-model database handle performance and scalability?** It uses optimized architectures, indexing, and built-in scalability features to manage diverse workloads and support high-performance applications. **Is a multi-model database suitable for enterprise applications?** Yes, multi-model databases are well suited for enterprise applications that require flexibility, real-time analytics, and integration of multiple data types. **How does security work in a multi-model database?** They provide comprehensive security features, including access controls, encryption, and compliance support, across all data models. **Can I easily migrate from a single-model database to a multi-model system? **Migration is possible but typically requires planning, data mapping, and adjustments to queries or application logic to leverage multiple models effectively. --- # Operational Analytics | Concepts Source: https://www.couchbase.com/resources/concepts/operational-analytics/ Last modified: 2026-02-09T09:08:58+00:00 ## What is operational analytics? Operational analytics uses real-time data from operational systems to inform the most immediate and appropriate action for any business situation. The data used for operational analytics typically comes from business systems such as POS (point of sale), ERP (enterprise resource planning), IoT (internet of things), and CRM (customer relationship management) systems. Operational analytics differs from business intelligence analytics, which uses historical information and complex algorithms to produce periodic reports for strategic decision-making. Instead, operational analytics makes insights available to business users in real time so they can use them to make decisions faster and take action immediately for the most significant impact. Because of its focus on immediacy, operational analytics can help improve any process where information comes fast and data changes rapidly. Such processes include customer support, retail merchandising, industrial manufacturing, agile development, and many others. This page will cover: - Why is operational analytics important? - Use cases for operational analytics - Operational analytics benefits - Operational analytics challenges - Couchbase Capella for operational analytics - The Couchbase Capella advantage ## Why is operational analytics important? Operational analytics is designed to help organizations make faster decisions using situational awareness. It enables employees to use business systems data to respond more effectively to events in real time. For example, in a service call center, a support agent can better decide how to handle a customer inquiry if they know the customer’s demographics, account status, previous support cases, past purchases, and geographic location. This information, accessed during a live interaction, can inform the agent of the optimal response trajectory. Is the customer a gold level account holder? Then they get preferential treatment in the queue. Have they already engaged about the issue through other channels? Then they’re more likely to be dissatisfied, so it’s best to escalate the case proactively. By minimizing time to insight, operational analytics helps an organization take the correct actions quickly and mitigates problems caused by a lack of information. In many cases, predictive analytics are used to enhance operational analytics by predicting likely outcomes based on data. For example, in the call center scenario, a predictive algorithm could assess the caller’s likelihood to purchase an upgrade based on their account status, age, purchase history, and location. The algorithm might also recommend an offer for the agent to make in real time. ## Use cases for operational analytics Operational analytics can be applied to nearly any complex or dynamic data-driven business process. Common use cases include: - Customer support - Fraud risk and detection - Retail point of sale cross-sell/upsell - Predictive maintenance - Marketing campaign optimization - Supply chain management - Manufacturing floor optimization - Fleet management - Hospital patient care ## Operational analytics benefits The ability to use relevant operational information in real time can benefit the business in a variety of ways. **Improved customer engagement** Based on the premise that customers respond positively to highly personalized service, many organizations apply operational analytics to customer-facing processes that guide employees through engagement steps. Making offers and recommendations based on a specific customer’s profile makes it easier to upsell that customer and create loyalty. By analyzing operational data in real time, an organization can also detect issues that cause customer dissatisfaction and take corrective action before customers are affected. **Improved business processes** By monitoring and analyzing the state of critical business systems as they operate, an organization can detect and correct issues before they become problematic. For example, an organization can address maintenance issues with a high-speed assembly line before they lead to equipment failure and costly downtime. **Increased productivity** Using data in real time as part of an operational process may eliminate the need to gather that information manually. And by gaining timely insight into potential issues, an organization can proactively mitigate problems, keep processes running smoothly, and maximize uptime. **Faster time to action** Because of its focus on providing information in the moment, operational analytics provides vital situational awareness that allows an organization to take the most beneficial action immediately. In comparison, traditional historical analysis is less impactful because it delays action to a future time. ## Operational analytics challenges The journey to successful operational analytics can be tricky because accessing data from multiple business systems for real-time analysis presents significant challenges. **Analyzing data without impacting operational workloads** Operational analytics requires data from systems that are critical to keeping the business running. For example, you need your POS system to process transactions quickly and accurately. But, if you’re also running analytic algorithms against the data on top of every transaction, you’re likely to overload the system, slowing it down and risking issues or failure. You need a way to analyze operational data without impacting the performance of systems that produce and use it. **Real-time access to operational data** To consolidate multiple data sources and minimize the impact on operational workloads, many organizations use ETL (extract, transform, load) processes that move data into a data warehouse where it’s analyzed. While this technique can be useful for isolating analytic workloads and reducing the impact on operational systems, it significantly delays time to insight. ETL routines must be developed carefully to maintain data quality during transfer, and they can take days or even weeks to complete. What’s needed is a way to analyze operational data in place without the delays of moving it to another system. **Turning insight into action** While analytics generally excels at clarifying what has already happened, a big goal of operational analytics is to recommend what to do next. Adding predictive capabilities to the analytics workload often requires integrating another technology. Additional technology, however, makes the environment more complex and prone to delays. What’s needed is a way to incorporate predictions and recommendations into analytics without complicating the technology stack. ## Couchbase Capella for operational analytics Couchbase Capella is a cloud-native, distributed NoSQL document Database-as-a-Service (DBaaS) that combines multiple database models into a single technology. Capabilities include: - Processing of key-value data in memory for hyper-fast responsiveness - Distributed storage of JSON document data for flexibility and resilience - Mobile and IoT support - SQL query support - Full-text search - Eventing One of the most unique features of Couchbase Capella is its built-in analytics service. ### Couchbase Analytics - Isolating operational and analytics workloads without data movement Couchbase Analytics is a parallel data management capability for Couchbase Capella that uses a massively parallel processing (MPP) architecture to deliver insights at the speed of transactions. Couchbase Analytics is best suited for running large, complex queries involving data aggregations on large amounts of data. The Analytics Service automatically creates a shadow copy of the operational data housed in Couchbase Capella, isolating it specifically for analysis. Couchbase Analytics can also source data from AWS S3 and Azure Blob Storage. Because the Analytics Service data is inherently and automatically linked to the operational data, changes in the operational data are reflected in analytics data in real time. And because the shadow copy of data is isolated, you can query Analytics Service data without impacting operational workloads. Read more about Couchbase Capella Analytics in this blog. Couchbase Analytics also supports user-defined functions (UDFs), which allow you to leverage machine learning algorithms to derive powerful insights from the data. With UDFs, trained ML models are called as functions in analytics queries that can evaluate the operational data and return predictions that are added to the result. Read more about Couchbase Analytics UDFs for predictive analytics here. ### Benefits of Couchbase Capella for operational analytics **Workload isolation** Operational query latency and throughput are protected from slowdowns caused by the analytical query workload. Capella accomplishes this without the complexity of operating a separate analytical database. **Data is always current, and no ETL is required** Couchbase Analytics uses DCP (database change protocol), a fast memory-to-memory protocol that Couchbase Capella nodes use to synchronize data. As a result, Couchbase Analytics runs on extremely current data without ETL. **Common data model** Couchbase Analytics natively supports the same rich flexible-schema document data model used for your operational data in Capella. You don’t have to force your data into a flat, predefined relational model to analyze it. ## The Couchbase Capella advantage With Couchbase Capella and the Analytics Service, your organization can have the best of both worlds: a scalable and resilient operational data platform and a fast, powerful analytics platform. Capella combines both into a single system that consumes less infrastructure and needs fewer copies of data, resulting in a lower total cost of ownership. - See how Domino’s Pizza uses Couchbase Analytics for real-time operational analytics to improve customer marketing. - Learn more about Couchbase Analytics in this datasheet. - Check out the Couchbase Analytics documentation. - Try out Couchbase Capella for free. --- # Public Cloud vs. Private Cloud | Concepts Source: https://www.couchbase.com/resources/concepts/public-cloud-vs-private-cloud/ Last modified: 2026-02-09T09:29:47+00:00 ## Public cloud vs. private cloud overview This page will cover the following to help you better understand the differences between a public cloud and a private cloud: - What is a public cloud? - Advantages and disadvantages of a public cloud - What is a private cloud? - Advantages and disadvantages of a private cloud - What are hybrid clouds and multiclouds? - Choosing the right database for cloud computing - Why Couchbase is the best option for your cloud strategy - Conclusion Over the last decade, enterprises have been shifting their technology infrastructures to the cloud because the cloud brings economies of scale, the efficiency of infrastructure standardization, and the elasticity to adjust compute power in proportion to demand. All these benefits equate to cost savings and a more nimble business model. When considering cloud options, you first need to understand typical deployment models, which include public cloud, private cloud, hybrid cloud, and multicloud. The models are not mutually exclusive, and many organizations adopt a combination of cloud deployment models based on their unique needs. Which model or models you should employ will depend on your workloads, use cases, available resources, and requirements for availability and privacy. ## What is a public cloud? A public cloud is the most prevalent cloud computing deployment. The term “public cloud” refers to shared, on-demand compute infrastructure delivered by third-party cloud service providers (CSPs) such as AWS, Microsoft Azure, and Google Cloud. CSPs own and manage the underlying cloud resources such as servers, software, and storage. In a public cloud, organization tenants share access to services via the internet, and the cloud provider is responsible for maintaining the infrastructure and physical environment. Public cloud provider services are typically subscription based, and customers pay based on the computing resources they consume. ## Advantages and disadvantages of a public cloud Let’s take a look at some of the pros and cons of using a public cloud. ### Advantages of a public cloud: **Scale and elasticity** Public clouds provide the ability to adjust computing resources up or down on the fly to meet unpredictable workload demands. **High availability and reliability** Public cloud providers offer a huge global network of data centers to ensure continuous service even in the event of an outage. **Lower IT costs** If your organization uses a public cloud, you’re spared from purchasing hardware and don’t have to incur the expense of installing and managing software yourself, which lowers IT costs. And because you only pay for what you use, you don’t end up paying for excess capacity. **Focus on core competencies** By offloading the burden of managing and maintaining hardware and software, your organization can focus its resources on business innovation instead of on technical infrastructure. ### Disadvantages of a public cloud: **Lack of control** When your organization offloads hosting and management of infrastructure, you essentially pass off to the cloud provider control over some things like security and granular configurations. **Security considerations** While the top cloud service providers offer stringent security, it comes as a “shared responsibility” that requires your organization to use specific cloud security services to ensure application and network security. **Unpredictable subscription costs** Unpredictable workloads can quickly become more expensive than expected when they experience unplanned spikes that consume excessive computing resources. **Data governance** Public clouds that run distributed computing environments across a global ecosystem may jeopardize compliance with data privacy and data residency regulations. This can be a serious consideration for organizations that handle sensitive data. ## What is a private cloud? A private cloud describes computing and storage infrastructure that is used by and dedicated to a single organization. With a private cloud, the data center is typically located on premises or co-located in an off-site data center. The hardware and software are owned and maintained by the organization, and services are accessed over a private network. Because it is owned and managed by a single organization, a private cloud can be optimized specifically for their requirements, and it allows them to run workloads in complete compliance with data privacy regulations. ## Advantages and disadvantages of a private cloud Let’s take a look at some of the pros and cons of using a private cloud. ### Advantages of a private cloud: **Flexibility** With a private cloud, your organization can customize the environment to precisely meet your specific business needs. **Control** Because your organization owns and manages the infrastructure and physical hardware, you have the utmost control over the entire environment. **Exclusivity** A private cloud is a dedicated environment with resources that are not shared and can be used only by your organization. **Security** A private cloud helps your organization ensure compliance with data privacy regulations by allowing you to tailor and monitor security for your applications. ### Disadvantages of a private cloud: **IT costs** Because your organization manages the entirety of the infrastructure (including hardware, software, and networking), you must assume the deployment and maintenance costs, which can be substantial depending on the workloads supported. **Scale limitations** Because compute and storage resources are limited to what your organization has procured, your private cloud typically offers a more finite resource footprint than a public cloud service provider. This makes it challenging, expensive, or even impossible to meet unpredictable demands. **Specialized skills are required** Maintaining a private cloud infrastructure goes beyond installing servers and networking, and requires the skills of specialists who are experts in cloud concepts, models, and technologies. ## What are hybrid clouds and multiclouds? Hybrid cloud and multicloud deployments are cloud architectures that combine public and/or private clouds in different ways to meet specific needs and requirements. ### Hybrid cloud A hybrid cloud blends the public and private cloud models. An organization runs some of its workloads in the public cloud for scale and elasticity and runs other workloads in a private cloud for greater control and data privacy. This mix offers the flexibility to accommodate unpredictable workloads for public-facing applications while also providing control and data governance for applications that handle sensitive data. For example, an organization might host its customer-facing web apps and field sales tools on a public cloud for greater scalability and the ability to throttle resources up or down according to traffic. Other applications, such as HR apps or financial systems, would run in a private cloud for better privacy, data security, and control. ### Multicloud Multicloud refers to a cloud architecture that spans multiple cloud storage technologies and infrastructure providers and may include both private and public clouds. Organizations use multicloud architectures to: **Support multiple regions**- different regions may be supported by different cloud providers**Reduce risk**- with a multicloud architecture, an organization can better ensure business continuity by rolling application processing from one provider to another in case of infrastructure-as-a-service (IaaS) failure**Avoid public cloud vendor lock-in**- by running workloads on different cloud provider infrastructures, an organization can more easily and quickly transition from one provider to another if necessary ## Choosing the right database for cloud computing Given the distributed nature of cloud computing, and the various models your organization can employ, it’s critical to make sure the database you choose works well with cloud architectures. Important considerations include: **Distributed architecture and automatic data replication** Your data platform must be able to balance and distribute your data footprint across nodes, clusters, and regions to support the various cloud models and strategies. Automatic data replication provides redundancy, failover, and disaster recovery, as well as the consistency of data updates and changes being reflected instantly across the ecosystem. **Data isolation** In order to meet data privacy regulations, the database you use must be able to route and isolate data to the specific regions that meet your compliance requirements for that particular data. **Local proximity data processing ** To deliver the best possible user experience, a database must support the ability to distribute and store data in specific regions or zones that are nearest to a given concentration of users. This proximity reduces latency and provides superior performance for apps. **Containerization** Most cloud providers support containerization and orchestration for efficient and repeatable deployment of software solutions on their infrastructures. You should make sure your database is cloud native and able to take advantage of cloud provider containerization and orchestration features such as EKS for AWS or AKS for Azure. ## Why Couchbase is the best option for your cloud strategy Couchbase is ideally suited for cloud computing strategies and fits seamlessly into the various cloud models. Couchbase provides: **A geo-distributed, cloud-native architecture** Couchbase can be deployed on premises, in a private cloud, and across public cloud providers, including AWS, Azure, and Google Cloud. Couchbase provides elastic scalability and a shared-nothing architecture, stores data as flexible JSON documents, and supports SQL, making development easier and more familiar. Couchbase also provides full support for containerization and orchestration with Couchbase Autonomous Operator. **Cross data center replication (XDCR)** Couchbase XDCR is a built-in feature that automatically replicates data across Couchbase clusters, regardless of which cloud model they’re deployed on. This critical feature delivers: **Failover and disaster recovery**- if a cluster fails for any reason, a separate cluster in the deployment can take over processing of the data**Specificity**- filters and flexible replication controls allow an organization to choose exactly where data replication flows (e.g., syncing all user data across every cluster, but leaving geo-specific information isolated to corresponding regional clusters)**Integrity**- built-in conflict resolution and auto-recovery ensure data replication is accurate every time**Efficiency**- only data that is new or changed is replicated**Data isolation**- replication data flow can be controlled to route and store data where it’s best suited for the use case and audience, such as within a specific locale for performance or data privacy needs **Database-as-a-Service (DBaaS)** Couchbase Capella™ is a fully managed and hosted version of Couchbase that runs on AWS, Azure, and Google Cloud, effectively offloading management of the database and freeing up the organization to focus on its core business. Capella provides a single control plane that manages clusters across data centers, regions, and cloud providers. It also uses XDCR to replicate data across clusters for consistency and integrity. ## Conclusion Couchbase was designed from its inception to be a cloud-native, developer-friendly, and enterprise-class database platform for modern applications. We’re ready to support your organization’s cloud computing strategies, be they public, private, hybrid, or multicloud. ### Want to learn more? - Check out our partner pages for more information on our support for AWS, Azure, and Google Cloud - Read our blog to learn about Couchbase in a hybrid cloud environment - Learn more about Couchbase in a multicloud environment - Read our blog to find out more about cloud migration strategies - Jumpstart your cloud journey by taking advantage of the FREE trial of Couchbase Capella --- # Real-Time Databases | Concepts Source: https://www.couchbase.com/resources/concepts/real-time-databases/ Last modified: 2025-09-26T18:36:23+00:00 **SUMMARY** A real-time database is built to process and deliver data with minimal delay, ensuring applications always work with the freshest information. Unlike traditional databases, they emphasize low latency, high throughput, scalability, and continuous availability, making them essential for time-sensitive use cases. Industries from finance to e-commerce, IoT, and healthcare rely on them to power fraud detection, personalized experiences, logistics tracking, and more. Different platforms, such as Couchbase, MongoDB, Redis, Cassandra, Firebase, and DynamoDB, offer trade-offs in performance, scalability, flexibility, and pricing. Choosing the right one depends on factors like workload performance, data models, security, integration, operational complexity, and long-term costs. ## What is a real-time database? A real-time database is designed to collect, process, update, and deliver insights with minimal delay, allowing applications to respond almost instantly to new data. Unlike traditional databases that may process queries in batches or with noticeable lag, real-time systems are optimized for continuous input and rapid access. This capability makes them valuable to industries like financial services, e-commerce, logistics, and IoT, where immediate insights directly impact performance and outcomes. By emphasizing low latency and high availability, real-time databases lay the foundation for responsive, data-driven experiences. Keep reading this resource to learn more about features, real-time data examples, additional use cases, and how to choose a real-time database from a selection of widely used options. - Key features in real-time databases - Examples of real-time data - Real-time database comparison - How to choose a real-time database - Conclusion and resources - FAQs ## Key features in real-time databases Real-time databases are designed with features that surpass the capabilities of traditional databases. They ensure that data is ingested, processed, and made available almost instantly, allowing applications to always work with the most up-to-date information. From speed and reliability to scalability, these capabilities make real-time systems well suited for time-sensitive use cases. **Key features in real-time databases include:** **Low-latency performance:**Delivers responses within milliseconds to support immediate decision making.**High throughput:**Manages large volumes of concurrent reads and writes without performance degradation.**Scalability:**Adapts to growing workloads and data streams by scaling horizontally across nodes.**High availability:**Ensures consistent uptime and fault tolerance through replication and failover mechanisms.**Data consistency models:**Offers options for balancing speed with accuracy, such as eventual or strong consistency.**Real-time analytics support:**Integrates with analytical workflows to generate insights as events occur.**Flexible data handling:**Manages structured, semi-structured, and unstructured data for diverse applications. ## Examples of real-time data From daily routines to complex business processes, real-time data quietly powers many of the technologies and services we depend on. Below are some examples that highlight where it plays the most critical role: **Financial transactions:**Payments, trades, and account activity must be captured and processed instantly to prevent fraud and provide accurate balances.**E-commerce activity:**Inventory updates, cart changes, and personalized recommendations rely on immediate access to the latest customer actions.**IoT sensor data:**Devices in manufacturing, healthcare, and smart homes continuously generate readings that need to be processed in real time.**Social media interactions:**Likes, shares, and comments are updated instantly to keep users engaged and platforms responsive.**Logistics and transportation:**Shipment tracking, route optimization, and fleet monitoring depend on real-time location and status updates.**Streaming services:**Video, music, and gaming platforms use real-time data to adjust quality, manage sessions, and personalize user experiences.**Healthcare monitoring:**Wearables and medical devices generate real-time patient data that supports faster diagnoses and timely interventions.- What Is Real-Time Data? Types, Benefits, and Limitations - Blog - Types of Databases - Concepts - Columnar Database Use Cases and Examples - Blog - What Is Zero-ETL? - Concepts ## Real-time database comparison Choosing the right real-time database depends on how well it balances speed, scalability, flexibility, and ease of integration with existing systems. Some platforms are optimized for very low-latency reads and writes, while others excel at horizontal scalability or support for multiple data models. Factors such as consistency guarantees, deployment options, and ecosystem integrations also play a significant role in determining the best fit. Ultimately, organizations should carefully weigh the trade-offs between performance, availability, and complexity before making a final decision. Below is a comparison of popular real-time databases that highlights key differentiators: Databases | Strengths | Limitations | Best suited for | |---|---|---|---| Couchbase | Flexible JSON document model, high throughput, built-in caching, mobile and edge support, SQL++ query language | Can require careful tuning at scale | Low-latency, multi-model use cases; mobile and distributed apps | MongoDB | Widely adopted, strong developer tooling, flexible document model | Performance can degrade under heavy concurrent workloads without sharding | General-purpose apps, flexible schema needs | Redis | Extremely low latency in-memory operations, publish-subscribe (pub/sub) support | Primarily key-value; limited querying; persistence options add complexity | Caching, messaging, real-time session management | Cassandra | Highly scalable, fault tolerant, excellent for write-heavy workloads | Complex to manage; the eventual consistency model may not fit all use cases | IoT, time-series, globally distributed deployments | Firebase Realtime Database | Easy integration with mobile and web apps, strong developer experience | Limited query capabilities, scalability challenges for very large datasets | Chat apps, collaborative tools, rapid prototyping | Amazon DynamoDB | Fully managed, highly available, integrates tightly with the AWS ecosystem | Cost can scale quickly; vendor lock-in | Cloud-native applications, serverless architectures | ## How to choose a real-time database Selecting the right real-time database depends on your organization’s priorities, workloads, and long-term goals. While every option offers low-latency performance, the best fit will depend on how it balances scalability, data models, cost, and ecosystem integration. By considering the factors below, teams can make a more informed choice that aligns with both technical and business needs. **Key considerations when choosing a real-time database:** ### Performance requirements Every real-time system promises speed, but not all deliver the same level of throughput, latency, or consistency. If your workload involves heavy concurrent writes or strict consistency requirements, you’ll want a database optimized for those patterns. Evaluating benchmark performance under conditions similar to your own is one of the most effective ways to validate fit. ### Scalability and availability Applications that support large user bases or global deployments require a database that can scale horizontally with minimal downtime. Look for built-in features such as replication, sharding, and automatic failover that keep systems available even in the event of failure. This ensures your database grows alongside your business without major re-architecture. ### Data model flexibility Different databases excel at different data structures. Document databases handle semi-structured JSON well, key-value stores are ideal for ultra-fast lookups, and multi-model platforms can adapt to multiple workloads at once. Understanding how your data will evolve is crucial when it comes to choosing a model that won’t limit your options later. ### Security and compliance Real-time databases often manage sensitive data, making security features non-negotiable. Encryption at rest and in transit, role-based access control, and auditing capabilities are critical for regulated industries. Because of this, compliance with standards such as GDPR, HIPAA, or PCI-DSS should be considered during the evaluation process. ### Integration ecosystem A database rarely operates in isolation; it needs to connect with your analytics stack, cloud provider, and developer tooling. Some real-time databases provide deep integrations with popular frameworks or cloud-native services, making them easier to adopt and extend. Choosing one that aligns with your existing ecosystem makes this process less complex and accelerates time to value. ### Operational complexity Some platforms are easy to get started with but become harder to manage as they scale, while others call for upfront expertise but are more reliable in the long run. Consider your team’s operational capacity for monitoring, scaling, and tuning the database. Managed services can help reduce overhead, but often require giving up some level of control. ### Pricing and licensing Cost models can vary from open source solutions with community support to enterprise editions and fully managed cloud services. Usage-based pricing may be attractive for startups, but it can grow quickly as data volumes increase. Understanding both short-term affordability and long-term total cost of ownership helps avoid surprises down the road. ## Conclusion and resources Real-time databases are essential for powering applications that demand instant data processing and responsiveness. By prioritizing low latency, high availability, and scalability, these systems allow businesses to act on the most up-to-date information, whether that involves processing financial transactions, updating e-commerce inventories, or monitoring IoT devices. Their capacity to manage diverse data types and deliver real-time insights cements their role as a vital part of today’s digital infrastructure. To learn more about real-time data, you can visit our concepts hub and review the resources listed below: ### Resources ## FAQs **How do you store real-time data?** Real-time data is typically stored in databases optimized for low-latency writes and reads, often utilizing in-memory caching, replication, and distributed architectures to keep information instantly accessible. **What is the difference between real-time databases and traditional databases?** Traditional databases process queries in batches or with noticeable lag, while real-time databases ingest, update, and deliver results almost instantly. **Is Couchbase a real-time database?** Yes, Couchbase is a real-time, NoSQL database that supports low-latency operations, high throughput, and built-in caching, making it well suited for responsive applications. **Are real-time databases always NoSQL?** No. While many real-time databases are NoSQL because of the database type’s inherent flexibility and speed, some relational databases can be configured for real-time performance with the right architecture. **Which database is best for real-time applications?** The best database depends on your specific requirements, such as latency tolerance, data model flexibility, scalability needs, and deployment environment. Rather than a single “best” option, the right choice is the one that aligns most closely with your workload and business priorities. **Are real-time databases secure for storing sensitive data?** Yes, most modern real-time databases include encryption, access controls, and compliance features; however, security ultimately depends on proper configuration and effective governance. **Do real-time databases work offline?** Some, such as Couchbase Mobile or Firebase, offer offline sync capabilities, while others are designed primarily for always-connected environments. --- # Scalability in Cloud Computing | Concepts Source: https://www.couchbase.com/resources/concepts/scalability-in-cloud-computing/ Last modified: 2026-02-09T08:41:39+00:00 ## What is scalability in cloud computing? Scalability in cloud computing refers to the ability of a system to handle increasing workloads by dynamically adding resources such as processing power, storage, and network capacity. It ensures that a cloud service can grow seamlessly to accommodate more users or higher demand without compromising performance. Scalability can be vertical (scaling up), where resources are added to a single server; horizontal (scaling out), where additional servers or nodes are added to distribute the load; or diagonal (hybrid), which combines both vertical and horizontal scaling methods. The rest of this page covers: - The importance of cloud scalability - Types of scaling in the cloud - Cloud scalability challenges - How scalability is achieved in cloud computing - How to measure cloud scalability - Conclusion and additional resources - FAQ Keep reading to learn more about scalability in cloud computing. ## The importance of cloud scalability Cloud scalability allows businesses to be more agile, cost-effective, and resilient. It’s a key factor that makes cloud computing an attractive option for businesses of all sizes. Here are some of the reasons scalability is important: **Cost-efficiency:**Scalability allows businesses to pay only for the resources they use, helping minimize costs associated with overprovisioning and underutilization. This pay-as-you-go model ensures companies can manage their budgets more effectively and allocate funds to other critical business areas.**Performance optimization:**Scalability ensures that applications can handle increasing loads without degradation in performance. This is essential for maintaining a positive user experience, especially during peak usage times, and it supports business continuity and operational efficiency.**Flexibility and agility:**Scalable cloud solutions enable businesses to respond quickly to changing market conditions and demands. Whether experiencing sudden spikes in traffic or gradual growth, companies can adjust their resources in real time, ensuring they remain competitive and capable of meeting customer needs.**Business growth:**As businesses expand, their IT needs also grow. Cloud scalability supports this growth by providing the necessary resources without requiring significant upfront investments in new hardware. This scalability ensures that IT infrastructure can grow in tandem with the business.**Disaster recovery and high availability:**Scalable cloud architectures often include built-in redundancy and failover capabilities that enhance reliability and availability. In the event of a failure, resources can be dynamically reallocated to minimize downtime and ensure continuous service delivery. Now that we’ve reviewed the importance of cloud scalability, let’s explore different types of scaling and their main characteristics. ## Types of scaling in the cloud In cloud computing, there are three primary types of scaling: vertical, horizontal, and diagonal scaling. Each type addresses different aspects of resource management and performance optimization. ### Vertical scaling (scaling up) Vertical scaling involves adding more power to an existing server. This process can include increasing CPU, RAM, or storage capacity. **Advantages** - Simple to implement. - No code changes are required. **Disadvantages** - Limited scalability: The number of resources that can be added to a single server is physically limited. - Potential downtime: Scaling a server up or down can lead to downtime while the changes are applied. **Example of vertical scaling** - Upgrading a server from 8GB to 16GB of RAM or from a dual-core to a quad-core processor. ### Horizontal scaling (scaling out) Horizontal scaling involves adding more servers or instances to distribute the load across multiple machines. **Advantages** - Highly scalable: You can add as many servers as needed to meet demand. - Improved performance: By distributing the workload across multiple servers, you can improve the overall performance of your application. - Increased availability: If one server fails, the others can pick up the slack, minimizing or eliminating downtime. **Disadvantages** - More complex to implement: Horizontal scaling can be more complex to implement than vertical scaling because it requires managing multiple servers. - Potential for code changes: Your application may need to be modified to work with a horizontally scaled architecture. **Example of vertical scaling** - Configuring a horizontal autoscaler to scale instances when CPU usage reaches 90%. Diagonal scaling combines vertical and horizontal scaling methods. For example, you could start with a single server and vertically scale it up to meet your initial needs. Then, as your workload grows, you could horizontally scale by adding more servers. Diagonal scaling is particularly useful for maintaining a balance between the limitations of vertical scaling and the extensive resource distribution capabilities of horizontal scaling, ensuring that systems can handle varying workloads effectively. ## Cloud scalability challenges Now that we’ve discussed the importance of scalability and types of scaling, let’s review the challenges you should be aware of as you navigate the process of achieving scalability and measuring the effectiveness of your cloud resources: **Complexity:**Managing a large and distributed cloud infrastructure can be complex, especially for organizations with limited experience or expertise. This complexity can involve: 1. Increased number of resources: As you scale, you’ll manage more virtual machines (VMs), storage units, and services, requiring robust monitoring and configuration practices. 2. Security concerns: A wider attack surface comes with a larger infrastructure. Securing a vast network of resources requires vigilance and a well-defined cloud security strategy.**Interoperability:**Scalability challenges can arise when using multiple cloud providers with different tools and APIs. Integrating and managing resources across these platforms can be complex.**Cost management:**While cloud scalability offers pay-as-you-go benefits, uncontrolled scaling can lead to unexpected costs. It’s crucial to monitor resource usage and implement cost-optimization strategies like autoscaling and reserved instances to avoid bill shock.**Data management:**Scalability can magnify data management challenges. As data volumes grow, ensuring proper data organization, governance, and security becomes increasingly important.**Vendor lock-in:**Overreliance on a single cloud provider can limit your ability to scale effectively or switch providers in the future. Consider a multicloud strategy or hybrid cloud approach to mitigate vendor lock-in.**Performance bottlenecks:**Not all applications scale perfectly. Scaling limitations can arise due to database architecture, application design, or network bandwidth limitations. Identifying potential bottlenecks and optimizing your application for horizontal scaling is essential. ## How scalability is achieved in cloud computing Scalability in cloud computing is achieved through several mechanisms and technologies, enabling dynamic adjustment of resources to meet changing demands. Here’s how scalability can be achieved: **Virtualization:**This is the foundation for cloud scalability. Physical servers are divided into virtual machines, which are essentially software representations of servers. VMs are highly flexible and independent, allowing them to be easily provisioned, scaled, and migrated. Using VMs eliminates the need to manage physical hardware, making resource allocation and scaling much faster and more efficient.**Distributed systems architecture:**Cloud environments are built on distributed systems where workloads are divided and processed across multiple servers. This parallel processing capability allows for horizontal scaling by adding more VMs or servers to handle increased demand.**Elastic provisioning:**Cloud providers offer elastic provisioning, which allows you to request resources (VMs, storage, etc.) on demand and release them when they’re not needed. Elastic provisioning eliminates the need for upfront investment in hardware and allows you to pay only for what you use.**Load balancing:**Cloud providers use load balancers to ensure optimal performance by distributing incoming traffic across multiple servers. This prevents any single server from becoming overloaded and maintains application responsiveness even during surges in demand.**Autoscaling:**Many cloud platforms offer autoscaling features that automatically adjust resources based on predefined rules or metrics. This allows for automatic scaling up during peak periods and scaling down during low-traffic times to optimize resource utilization and cost efficiency.**Microservices architecture:**Adopting a microservices architecture allows applications to be divided into small, independently deployable services. Each microservice can be scaled individually based on its specific demand, providing fine-grained control over resource allocation and enhancing overall scalability. ## How to measure cloud scalability Measuring cloud scalability involves assessing how effectively your cloud resources handle increasing or decreasing workloads. Here’s a breakdown of what you should keep in mind: **Performance metrics** - Response time: This measures how long it takes for your application to respond to user requests. Ideally, response times should remain consistent even during scaling events. - Throughput: This refers to the number of requests your application can process per unit of time. During scaling, throughput should increase proportionally to added resources. - Resource utilization: CPU, memory, and storage usage on your cloud instances should be monitored. Ideally, usage shouldn’t reach peak capacity during scaling. **Scalability testing** - Conduct simulated load tests to mimic real-world usage patterns and measure your application’s performance under increased pressure. This helps identify bottlenecks and areas for improvement in your scaling strategy. - Perform horizontal scaling tests by adding VMs and monitoring how the application distributes workload and maintains performance. - Consider vertical scaling tests to assess the impact of adding resources to a single instance on performance. **Cost-efficiency** - Track cloud resource costs associated with scaling. Ideally, costs should increase and decrease proportionally to resource usage when scaling up and down. - Analyze the cost-effectiveness of scaling approaches. In some cases, vertical scaling might initially be cheaper for small workloads, while horizontal scaling becomes more cost-efficient for larger workloads. **Monitoring and alerting** - Continuously monitor key metrics using cloud provider tools or third-party monitoring solutions. - Set up alerts to notify you of potential issues like performance degradation or resource bottlenecks during scaling events. This allows you to intervene proactively to make adjustments to your scaling strategy. ## Conclusion and additional resources By strategically scaling resources up or down, you can optimize spending, respond quickly to changing demands, ensure a smooth user experience, and maintain business continuity. However, it’s crucial to be aware of the challenges associated with managing a complex cloud infrastructure and implement best practices to ensure security, cost optimization, and efficient data management. There’s no one-size-fits-all approach to cloud scaling, and the best method depends on your unique situation. Consider these factors: Is your workload consistent or unpredictable? How critical is high performance for your application? And what’s your budget for scaling resources? You can use these resources to learn more about scaling: Your guide to scaling microservices Multi-dimensional scaling introduction App scaling (what it is and how to do it) To discover even more about cloud computing and scalability, explore our database concepts hub. ## FAQ **What does scalability mean in cloud computing?** Scalability in cloud computing refers to the ability to easily adjust resources like storage and processing power. You can increase resources to handle surges in demand or decrease them to save costs during slower periods. This on-demand flexibility helps businesses be more agile and cost-effective. **What is cloud scalability vs. elasticity?** Cloud scalability is like building with Legos - you add more pieces (resources) as your needs grow. Elasticity is more flexible, like stretching a rubber band - resources automatically adjust up or down to meet fluctuating demands in real time, ensuring optimal use and cost-efficiency. Both are beneficial for cloud users. **How does scalability work with cloud computing?** Scalability in cloud computing works by dynamically adjusting resources to accommodate changing workloads. Cloud providers offer features like autoscaling to automatically add or remove resources based on demand, and load balancing to distribute incoming traffic across multiple servers. **What are the three main components of scalability?** Hardware scalability optimizes infrastructure by adding more powerful resources like CPUs or RAM. Software scalability enhances application architecture to efficiently use available hardware without performance degradation. Operational scalability implements processes, automation, and monitoring to effectively manage and maintain scalable systems. --- # Semantic Caching | Concepts Source: https://www.couchbase.com/resources/concepts/semantic-caching/ Last modified: 2025-03-28T22:25:48+00:00 **SUMMARY** Semantic caching improves query efficiency by storing and retrieving results based on meaning rather than exact text matches. Unlike traditional caching, which relies on identical queries, semantic caching leverages vector embeddings and similarity search to find and reuse relevant data. This technique is particularly beneficial in large language models (LLMs) and retrieval-augmented generation (RAG) systems, where it reduces redundant retrievals, lowers computational costs, and enhances scalability. By implementing semantic caching, organizations can improve search performance, optimize AI-driven interactions, and deliver faster, more intelligent responses. ## What is semantic caching? Caching is important for retrieving data quickly by temporarily storing frequently accessed information in a fast-access location. However, traditional caching relies on exact query matches, making it inefficient for dynamic and complex queries. Semantic caching solves this problem by storing results based on meaning rather than just exact query matches. It not only stores and retrieves raw data but also allows systems to understand the relationships and meaning within the data. This resource will explore key concepts in semantic caching, compare it to traditional caching, review use cases, and discuss how it works in large language models (LLMs) and retrieval-augmented generation (RAG) systems. Keep reading to learn more. - Key semantic caching concepts to know - Semantic caching vs. traditional caching comparison - How semantic caching works with LLMs - How semantic caching works in RAG systems - Use cases for a semantic cache system - Key takeaways ## Key semantic caching concepts to know Understanding caching mechanisms that contribute to enhanced performance in semantic search is essential. Here are the main concepts you should familiarize yourself with: **Vector embedding storage:**Instead of caching raw queries, semantic search systems store vector representations of queries and responses, enabling fast similarity-based retrieval.**Approximate nearest neighbor (ANN) indexing:**This technique speeds up search by quickly identifying cached results most similar to a new query.**Cache invalidation:**Ensures cached results stay relevant by refreshing outdated entries based on predefined time-to-live (TTL) settings or content updates.**Adaptive caching:**Dynamically adjusts cache storage based on query frequency and user behavior to maximize efficiency.**Hybrid caching strategies:**Combines traditional keyword-based caching with semantic caching for a comprehensive and effective approach. Mastering these concepts allows organizations to deliver faster, smarter, and more cost-effective search experiences. ## Semantic caching vs. traditional caching comparison Now that we’ve done a high-level overview of semantic caching and reviewed core concepts, let’s explore the differences between semantic caching and traditional caching in the table below: Aspect | Semantic caching | Traditional caching | |---|---|---| | Caching strategy | Stores query results based on their meaning and structure. | Stores exact query results or full objects. | | Data retrieval | Can retrieve partial results and recombine cached data for new queries. | Retrieves cached data only when there's an exact match. | | Cache hits | Higher likelihood due to partial result reuse. | Lower if queries are not identical. | | Data fragmentation | Stores and manages smaller data fragments efficiently. | Stores whole objects or responses, leading to redundancy. | | Query flexibility | Adapts to similar queries by using cached data intelligently. | Only serves the same query result. | | Speed | Optimized for structured queries, reducing database load. | Fast for identical requests but less efficient for dynamic queries. | | Complexity | Requires query decomposition and advanced indexing. | Simpler implementation with direct key-value lookups. | | Scalability | More scalable for complex databases with frequent queries. | Works well for static content caching but struggles with dynamic queries. | | Use cases | Database query optimization, semantic search, and AI-driven applications. | Web page caching, API response caching, and content delivery networks (CDNs). | ## How semantic caching works with LLMs LLMs use semantic caching to store and retrieve responses based on meaning, not just exact text matches. Instead of checking if a new query is the same as a previous one, semantic caching uses embeddings (vector representations) to find similar queries and reuse stored responses. Here’s how it works: ### Query embedding generation Each incoming query is converted into a vector embedding (a numerical representation that captures its semantic meaning). ### Similarity search Instead of searching for identical queries, the system uses ANN algorithms to compare the new query’s embedding to those stored in the cache. This enables the cache to return semantically similar results, even if the wording slightly differs. ### Cache storage Cached entries typically include the original query, its embedding, and the model’s response. Metadata like timestamps or usage frequency may also be stored to manage expiration and relevance. ### Cache retrieval When a new query arrives, the system performs a similarity check. If a sufficiently similar query is found in the cache (based on a similarity threshold), the stored response is returned instantly. ### Cache invalidation and refresh To ensure accuracy, cached data is periodically refreshed or invalidated based on TTL policies, content updates, or shifting data trends. By caching responses for semantically similar queries, LLMs can deliver faster responses, reduce compute costs, and improve scalability. This is especially useful in applications with repetitive or predictable queries. ## How semantic caching works in RAG systems Semantic caching improves efficiency in RAG systems by reducing redundant retrieval operations and optimizing response times. Instead of always querying external knowledge sources (such as vector databases or document stores), semantic caching allows the system to reuse previously generated responses based on query similarity. Here’s a more detailed breakdown of this process: ### Query embedding and similarity matching Initially, each incoming query is transformed into a vector embedding that captures its semantic meaning. From there, the system searches for similar embeddings in the cache using ANN search. ### Cache hit vs. cache miss **Cache hit:** If a semantically similar query is found within a predefined similarity threshold, the cached retrieved documents or final response can be used directly, avoiding a costly retrieval step. **Cache miss:** If no similar query exists in the cache, the system performs a fresh retrieval from external knowledge sources, generates a response, and stores it in the cache for future use. ### Caching retrieved documents vs. final responses **Retrieval caching:** Stores retrieved chunks from a vector database, reducing database queries while still allowing dynamic response generation. **Response caching:** Stores the final LLM-generated response, skipping both retrieval and generation for repeated queries. ### Cache invalidation and refresh Cached data is periodically refreshed to prevent outdated responses, using techniques like TTL expiration, content updates, or popularity-based eviction policies like Least Recently Used (LRU). **Overall benefits of semantic caching in LLMs and RAG systems include:** - Avoiding repeated retrieval and generation with reduced latency. - Lowering computational costs through database query minimization and LLM inference. - Enhancing scalability for high-volume applications like chatbots, search engines, and enterprise knowledge assistants (EKAs). ## Use cases for a semantic cache system A semantic cache system improves efficiency by reusing results based on meaning rather than exact matches. This is especially useful in applications that involve natural language processing, search, and AI-driven interactions. ### Search engines Google uses semantic caching to speed up searches by storing embeddings of past queries. When users enter similar searches, Google retrieves cached results instead of performing a full search, improving response time and reducing processing costs. ### E-commerce and product search Amazon caches product search embeddings to suggest relevant items quickly. For example, if a user searches for “wireless headphones,” the system checks for similar past searches and retrieves results from the cache instead of querying the database again. ### Recommendation systems Netflix and Spotify cache user preferences and watch/listen history using semantic embeddings. If two users have similar tastes, the system retrieves cached recommendations rather than generating new ones, optimizing performance and saving computing resources. ### Chatbots and virtual assistants ChatGPT and other AI chatbots cache frequently asked questions (FAQ, general knowledge, coding queries) to prevent redundant LLM processing. For example, if a user asks, “Explain quantum computing,” a cached response may be used instead of generating a new one from scratch. ## Key takeaways Semantic caching enhances efficiency, speed, and cost-effectiveness in AI-driven systems by reusing relevant results instead of performing redundant queries. In RAG-based applications, it reduces retrieval latency, optimizes database and API calls, and improves user experience by intelligently handling paraphrased queries. Implementing semantic caching with vector databases, embedding models, and caching strategies can significantly boost performance in chatbots, search engines, and enterprise knowledge systems. Here are concrete next steps you can take to utilize semantic caching: - Integrate a semantic cache layer into retrieval workflows. - Select the right vector database. - Fine-tune cache expiration. - Experiment with hybrid caching (semantic and keyword-based). - Evaluate cache efficiency using real-world queries. --- # Semi-Structured Data | Concepts Source: https://www.couchbase.com/resources/concepts/semi-structured-data/ Last modified: 2026-02-09T09:04:18+00:00 ## What is semi-structured data? Semi-structured data refers to data not captured or formatted in conventional ways. It doesn’t follow the tabular structure associated with relational databases or other forms of data tables because it doesn’t have a fixed schema. However, the data is not completely raw or unstructured and does contain some structural elements such as tags and metadata. These elements establish hierarchies of records and fields, making it easier to analyze. While semi-structured data can be more challenging to work with than structured data, it offers greater flexibility and adaptability, making it a valuable tool for data analysis and management. This page covers: - What is the difference between structured, unstructured, and semi-structured data? - Characteristics of semi-structured data - Semi-structured data examples - Benefits and challenges of semi-structured data - Techniques for analyzing semi-structured data - Semi-structured data tools - Conclusion ## What is the difference between structured, unstructured, and semi-structured data? The following comparisons explain what makes semi-structured data different from unstructured and structured data. ### Semi-structured data vs. unstructured data Unstructured data is information that doesn’t have a predefined format or schema, so it can’t be stored in a traditional relational database. Semi-structured data is unlike unstructured data in that it has some structural elements, such as tags and metadata, that impose an organizational hierarchy of records and fields within the data. ### Semi-structured data vs. structured data Semi-structured and structured data are distinguished by two primary characteristics: schema and data structure. Unlike structured data, semi-structured data doesn’t require a prior schema definition, which makes it more flexible for data evolution. Also, semi-structured data supports a structure that contains a nested data hierarchy, whereas structured data is in a flat table. The nested structure makes semi-structured data an ideal format for working with data received from IoT devices. ## Characteristics of semi-structured data - It doesn’t conform to a data model but has some structure - It doesn’t need a fixed schema before storage, which allows for greater flexibility in terms of the structure and kinds of data that can be stored - It contains metadata used to group data and organize it in a hierarchy - It can’t be stored in the form of rows and columns in a relational database ## Semi-structured data examples Semi-structured data is becoming increasingly common as organizations collect and process more data from various sources like social media and IoT devices. Examples of semi-structured data include: **XML documents:** This is one of the most popular semi-structured data formats. XML is a versatile and easy-to-use markup language that allows users to define tags and attributes required for storing data hierarchically. **JSON:** JSON is used to collect semi-structured data from IoT devices, web browsers, and smartphones, and then organize it into batches and transfer it to a data platform. **HTML code, graphs and tables, and emails** are other examples of semi-structured data often found in object-oriented databases. ## Benefits and challenges of semi-structured data Flexibility is the greatest strength of semi-structured data, but it also introduces some issues you won’t find with structured data. Here are the most significant benefits and challenges: ### Benefits - Flexible and simpler to scale compared to structured data - Adaptable to evolving data sources - Self-describing nature ensures that the context and meaning of data are embedded within the data, aiding in understanding and interpretation - Semi-structured data balances easy human inspection and efficient computational processing, making it suitable for a wide range of applications, from web services to data analytics ### Challenges - The lack of a fixed schema can lead to scalability issues - Querying and extracting insights can be challenging and time-consuming, often requiring specialized tools and expertise to process the data effectively - Flexibility can lead to inconsistencies in data representation, making aggregation and analysis difficult due to variations in structure or missing elements ## Techniques for analyzing semi-structured data You can use the following techniques to analyze semi-structured data: - Graph-based modeling - Extensible markup language (XML) - Exploratory data analysis - Pattern recognition - Text analytics - Sentiment analysis - Anomaly detection ## Semi-structured data tools You can store, process, and analyze semi-structured data using various tools. For example: - NoSQL databases like Couchbase and MongoDB™ are designed to handle semi-structured data - You can use XML and graph-based modeling to define attributes, exchange information, and index data in a hierarchical order ## Conclusion Non-relational databases, or NoSQL databases, are becoming increasingly popular due to their ability to handle semi-structured or unstructured data. They use a variety of data models to accommodate diverse data types and structures, making them well suited for handling large, complex datasets that may evolve. Couchbase is a distributed database that supports both key-value and document data models. It’s designed for high scalability, performance, and availability and supports features such as auto-sharding, in-memory caching, and full-text search. Couchbase is well suited for handling large datasets and high write throughput, making it popular for e-commerce, gaming, and social media applications. Visit our Concepts Hub to learn more about structured, unstructured, and semi-structured data and many other database-related topics. --- # What Is Serverless Architecture? Computing Model Guide Source: https://www.couchbase.com/resources/concepts/serverless-architecture/ Last modified: 2026-02-09T09:12:32+00:00 ## What is serverless architecture? Serverless architecture is a cloud computing model where developers build and run applications without managing traditional servers. The servers still exist, but they’re in the cloud, where cloud providers automatically handle the infrastructure, scaling, and resource allocation. For serverless applications, developers typically write code as isolated functions that execute in response to events or triggers, and the cloud providers charge only for the actual compute resources used. This approach simplifies application development, reduces operational overhead, and enables rapid scalability, making it ideal for microservices and event-driven applications. This page covers: - How serverless architecture works - Key concepts in serverless architecture - When to use serverless architecture - Benefits of serverless architecture - Limitations of serverless architecture - Serverless computing tools - Conclusion ## How serverless architecture works Serverless architecture abstracts server management away from developers and relies on cloud providers to handle the underlying infrastructure. Here’s how it usually works: 1. **Function creation:** Developers write code as individual functions, with each function designed to perform a specific task or service. Serverless architecture is sometimes referred to as Function-as-a-Service or FaaS. 2. **Function deployment:** The functions are packaged and deployed to a serverless platform provided by a cloud service provider. The most common serverless platforms are AWS Lambda, Azure Functions, and Google Cloud Functions. 3. **Event triggers:** Functions are configured to execute in response to specific events or triggers. Events can include HTTP requests (e.g., API Gateway), changes in data (e.g., database updates), timers, file uploads, or something else. The cloud provider manages the event sources and automatically invokes the associated functions. 4. **Auto-scaling:** As events occur, the serverless platform automatically scales the underlying resources to accommodate the workload. If your function experiences a sudden spike in requests, the cloud provider will provision more resources. 5. **Execution:** When an event triggers a function, the serverless platform initializes a container or runtime environment for that function. The code within the function is executed and can access any required resources or data. After the function completes its task, the container may remain warm for a short period, allowing subsequent requests to execute more quickly. 6. **Billing:** Billing is based on the actual execution time and resources used by the functions. You’re charged per execution and for the compute resources, such as CPU and memory, that are allocated during execution. 7. **Statelessness:** Serverless functions are typically stateless, meaning they don’t retain information between invocations. Any required state or data must be stored externally, often in a database or storage service. 8. **Logs and monitoring:** Serverless platforms usually provide built-in logging and monitoring tools, allowing developers to track performance and troubleshoot issues in their functions. ## Key concepts in serverless architecture Because serverless development is an alternative to traditional development, you should familiarize yourself with the following terms and concepts for a clear understanding of how to design, deploy, and manage serverless applications: **Invocation:** An event that triggers the execution of a serverless function. Examples are an HTTP request, database update, or scheduled timer. **Duration:** The amount of time a serverless function takes to execute, which is a factor in calculating the cost of execution. **Cold start:** The initial execution of a serverless function, where the cloud provider provisions resources and sets up the runtime environment. Cold starts introduce additional latency compared to warm starts. **Warm start:** Subsequent executions of a serverless function when the runtime environment is already prepared, resulting in faster response times compared to cold starts. **Concurrency limit:** The maximum number of simultaneous function executions allowed by the serverless platform. This limit can impact the ability to handle concurrent requests or events. **Timeout:** The maximum allowable duration for a serverless function’s execution. If a function exceeds this limit, it is forcibly terminated, and its result might not be returned. **Event source:** The origin of an event that triggers a serverless function. Examples of event sources include Amazon S3 buckets, API gateways, message queues, and database updates. **Statelessness:** Serverless functions are typically stateless, meaning they don’t retain data between invocations. Any necessary state should be stored externally in databases or storage services. **Resource allocation:** The specification of compute resources such as CPU or memory for a serverless function. These resources are often chosen by developers when defining the function. **Auto-scaling:** The automatic adjustment of serverless resources by the cloud provider to accommodate varying workloads and ensure optimal performance. **Serverless database:** Serverless databases are elastically scaling databases that don’t expose the infrastructure they operate on Couchbase Capella™ DBaaS is an example of a fully managed serverless database. ## When to use serverless architecture Although serverless architecture is versatile, it’s not the best choice for every use case - applications with long-running tasks, high computation requirements, or consistent workloads often benefit more from traditional server-based architectures. Be sure to consider the specific requirements and the unique strengths of serverless when deciding whether it’s the right choice for your application. ### Serverless architecture use cases Some of the most common and best-suited use cases for serverless architecture include: **Web and mobile apps:** Handle web and mobile app backends, serve content, process user requests, and manage user authentication. **APIs:** Auto-scale your RESTful and GraphQL APIs and easily integrate them with other services. **IoT:** Efficiently manage data processing and analysis from IoT devices that trigger events with sensor data. **Real-time data processing:** Process real-time data streams such as clickstream analysis, log processing, and event-driven analytics. **Batch processing:** Run periodic or on-demand batch jobs like data ETL (extract, transform, load), report generation, and data cleansing. **File and data storage tasks:** Interact with cloud storage services to manage file uploads, downloads, and data manipulation. **User authentication and authorization:** Identity and access management (IAM) services for user authentication and authorization are a good fit for serverless functions. **Notification services:** Send notifications and alerts like email, SMS, or push notifications in response to specific events or triggers. **Chatbots and virtual assistants:** Build conversational interfaces where functions process natural language requests and generate responses. **Data and image processing:** Perform tasks like image resizing, format conversion, and data transformation that require minimal user interaction. **Scheduled tasks:** Automate periodic tasks such as data backups, report generation, and database maintenance. **Microservices:** Create and manage individual microservices within a larger application, allowing for easy scaling and independent deployment. **Security and compliance services:** Implement security-related functions like intrusion detection, monitoring, and compliance auditing. ### Serverless vs. containers At first glance, serverless architecture is sometimes confused with container architecture or with microservices architecture because it shares certain similarities with each of them. In fact, serverless is quite distinct from both, and we’ll explain what makes them different. What containers and serverless have in common is that both allow developers to deploy application code by abstracting away the host environment. However, one of the key differences is that serverless abstracts server management entirely, while containers allow developers to manage their own server environments with more control over infrastructure. As a lightweight form of virtualization, containers package applications and their dependencies in isolated, consistent environments that run as independent instances on a shared operating system. Containers provide a way to ensure that applications work consistently across various environments, from development to production, and they offer a standardized way to package and distribute software. Containers are typically long-running and can include multiple processes within a single container. In short, serverless computing abstracts away server management and is ideal for event-driven, short-duration tasks, whereas containers provide more control over the server environment and are better suited for long-running processes and consistent workloads. The choice between them depends on the specific requirements of your application and your level of control over the underlying infrastructure. In some cases, a combination of both technologies is used within a single application for different components. ### Serverless vs. microservices Microservices are a software architecture pattern that structures an application as a collection of small, independently deployable services that communicate over APIs and work together to provide complex, modular functionality. The confusion between microservices and serverless architecture often arises due to their shared emphasis on modularity and scalability. Blurring the line further is that they’re often used together, with serverless functions acting as microservices within a larger microservices-based application. Despite their similarities, serverless and microservices have unique characteristics in the following areas that set them apart: **Infrastructure management** **Microservices -**developers retain control over server and container orchestration.**Serverless -**server management is abstracted away entirely, and developers do not deal with the underlying infrastructure. **Execution model** **Microservices -**run continuously on dedicated server instances.**Serverless -**functions execute in response to events or triggers. This distinction can lead to a difference in response times as serverless applications may experience cold starts. **Cost model** **Microservices -**require you to provision and maintain server resources. This may lead to continuous costs even during periods of low usage.**Serverless -**follows a pay-as-you-go model based on actual function execution. This can be more cost-efficient for sporadic workloads. **Modularity** **Microservices -**an application is divided into small independent services.**Serverless -**developers write code as individual units of functionality. **Scalability** **Microservices -**allow for independent scaling of each service.**Serverless -**automatically scales individual functions. ## Benefits of serverless architecture Serverless architecture offers a wide range of benefits that make it an attractive choice for many applications and use cases. The most compelling advantages are: **Automatic scaling:** Serverless architecture platforms automatically scale resources up or down based on the incoming workload. This ensures that your application can handle varying levels of traffic, providing high availability and performance without manual intervention. **Cost-efficiency:** With serverless, you only pay for the actual compute resources used during function execution. There are no costs associated with idle time, making it cost-effective, particularly for workloads with unpredictable or sporadic traffic. **Reduced operational overhead:** Serverless abstracts server management tasks, allowing developers to focus on code rather than infrastructure maintenance. This reduces the need for DevOps efforts and simplifies deployment and scaling. **Faster development:** Serverless accelerates the development process by eliminating the need to manage servers and infrastructure. Developers can quickly iterate and deploy code, resulting in faster time-to-market for applications. **Resilience:** Serverless functions are typically stateless, promoting a design that relies on external storage services or databases for data persistence. This can lead to more resilient and fault-tolerant applications. **Built-in logging and monitoring:** Serverless platforms often provide built-in tools for monitoring and logging, enabling developers to track performance, troubleshoot issues, and gain insights into application behavior. **Reduced vendor lock-in:** Many functions can be designed to be relatively vendor-agnostic, making it easier to migrate them or to integrate services from different cloud providers. This is not always the case, as you’ll see in the next section on serverless limitations. **High availability:** Serverless platforms are designed to be highly available, with redundancy and failover mechanisms built in. This helps ensure that your application remains accessible and responsive even in the face of failures. **Energy and resource efficiency:** The automatic scaling and resource management of serverless platforms can lead to improved energy efficiency and resource utilization, reducing environmental impact. ## Limitations of serverless architecture While serverless architecture offers many advantages, it also has its limitations. Certain characteristics of serverless may manifest as benefits or challenges. When evaluating serverless for a specific application, consider your requirements or constraints related to the following: **Cold starts:** Serverless functions may experience a delay when the function is first invoked because the cloud provider needs to initialize a new execution environment. This latency can be problematic for applications that require consistently fast response times. **Resource constraints:** Serverless platforms impose resource constraints, such as memory and execution time limits. These constraints can be limiting for compute-intensive tasks or applications that require long-running processes. **Statelessness:** Serverless functions are typically stateless, meaning they don’t retain data between invocations. While this can help improve resilience (as explained above), using external databases or storage services for data persistence can add complexity to some applications. **Vendor lock-in:** While many functions can be designed to be relatively vendor-agnostic, your application may have some platform-specific configurations and integrations that make it challenging to move to a different cloud provider. **Complex debugging:** Debugging and troubleshooting serverless applications can be more challenging in a serverless architecture because the distributed nature of functions and the lack of direct server access can make it difficult to identify and resolve issues. **Limited local testing:** Developing and testing serverless functions locally can be challenging because local testing may not fully replicate the execution environment in the cloud. Developers often need to deploy functions to the serverless platform for thorough testing. ## Serverless computing tools There are numerous serverless computing platforms and tools that enable developers to build, deploy, and manage serverless applications using their favorite coding languages and cloud service providers. Here are some of the most popular ones: ### Platforms Amazon’s AWS Lambda supports various programming languages and integrates seamlessly with other AWS services. AWS also provides an API gateway for creating RESTful APIs and triggering Lambda functions. Microsoft’s Azure Functions is a serverless offering within the Azure cloud ecosystem. It supports multiple languages and offers integration with Azure services, making it a strong choice for Windows-based applications. Google’s Cloud Functions supports multiple programming languages and integrates well with other Google Cloud services, making it suitable for building applications within the Google Cloud ecosystem. IBM Cloud Functions is based on the Apache OpenWhisk framework and allows you to integrate with IBM Cloud services using various languages. Alibaba Cloud Function Compute allows developers to build applications in the Alibaba Cloud ecosystem and integrate with other Alibaba Cloud services using multiple languages. ### Tools Netlify is a platform best known for hosting static websites, but it also offers serverless functions for building backend services, APIs, and workflows. OpenFaaS is an open source serverless framework for container-based functions. It allows you to build and run serverless functions using Docker containers. Fission is another open source Kubernetes-native serverless framework that supports multiple languages and is designed for easy deployment on Kubernetes clusters. ## Conclusion Serverless architecture is popular for web and mobile applications, IoT, real-time data processing, and other common use cases because it allows developers to focus on writing code rather than managing servers. The management responsibility is offloaded to cloud providers like AWS Lambda, Azure Functions, or Google Cloud Functions so they can handle the underlying infrastructure and scale resources automatically to accommodate changes in workload. Serverless is not ideal for all use cases, however, and certain workloads or long-running tasks may be better suited for traditional server-based approaches. To learn more about serverless architecture and related technologies, check out these resources: Serverless Architecture With Cloud Computing Couchbase 2023 Predictions - Edge Computing, Serverless, and More Capella App Services (BaaS) Visit our Concepts Hub to learn about other topics related to databases. --- # Serverless Databases | Concepts Source: https://www.couchbase.com/resources/concepts/serverless-databases/ Last modified: 2026-02-09T09:15:36+00:00 ## What is a serverless database? - Advantages of using serverless databases for developers - Data persistence for serverless applications - Applications supported by serverless databases - Conclusion Serverless databases are elastically scaling databases that don’t expose the infrastructure they operate on. They make it simpler to develop applications because you don’t have to worry about managing your servers. And serverless databases are often a good choice for cost-conscious developers and enterprises because you can license them through a consumption model and pay only for what you use. Serverless NoSQL databases offer exceptional scalability in many cases, especially when workloads spike and then contract. And serverless databases are also easier for DevOps to manage because scaling is automatic. Due to their many benefits, serverless distributed databases are becoming more popular as the data delivery foundation for applications powered by Functions-as-a-Service (FaaS) platforms. ## What are the advantages of using serverless databases for developers? While serverless databases may introduce new workflows and application designs for development teams, they also allow the developers to focus more fully on application functionality rather than on the entire application, data, and infrastructure stack. The practice of using multiple data access methods such as relational, document, key/value, or search may still be implemented as serverless operations. While this design offers a high degree of functionality to the application, it doesn’t eliminate the complexity of using, storing, and syncing multiple types of databases. For that purpose, a serverless database that is also a multi-model database would be most efficient. ## Data persistence for serverless applications Serverless databases work well for stateful persistence with applications that are designed as serverless, ephemeral, stateless functions that react to events, execute their work (including data reads or writes), and then disappear until another event awakens them. ## What applications are supported by serverless databases? Serverless databases support the following applications: - Media streaming and consumption - Personalized retail experiences - Variable workloads - Edge, mobile, and IoT Applications that require personalization or have a highly variable workload are well suited for serverless databases. These systems not only need to elastically scale their user experience and business logic, but also need a database that can keep pace with the ups and downs of the work involved in handling user sessions, updating personalization data, processing multiple transactions at once, and triggering multiple simultaneous events such as inventory updates and purchase receipts. ## Conclusion Overall, serverless databases are rising in popularity because they offer the following operational advantages: - Invisible infrastructure - Optimal use of resources - Infinite and automatic scalability Serverless databases also offer important advantages for developers, such as: - Ephemeral, event-driven functions - High productivity and low friction - Easy maintenance Because Couchbase supports distributed scale, multicloud, multi-model data access, and edge and mobile use cases, we’re exceptionally well suited to address many serverless database challenges that could arise. --- # Types of Databases: Different Platforms Available Source: https://www.couchbase.com/resources/concepts/types-of-databases/ Last modified: 2026-02-09T09:06:08+00:00 ## What is a database? A database is a structured collection of organized data that is stored, managed, and accessed electronically. Databases make it easier to search for specific information, analyze trends, generate reports, and ensure data integrity. Databases are typically managed by a database management system (DBMS), a software application that provides an interface for users and applications to interact with the data stored within the database. This page will cover: ## What are the types of databases? There are many different types of databases because different kinds of data and application requirements call for different approaches to data storage and retrieval. Each type of database is optimized for specific use cases, data models, scalability needs, and performance characteristics. As you’ll see below, it’s common for a particular database to fall into more than one category. Also, multi-model databases like Couchbase are specifically designed to support multiple data models to increase versatility while minimizing complexity, management, data sprawl, and costs. ### Relational databases A relational database is a structured digital repository for storing and organizing data and is typically used to power various applications, including business and web systems. Relational databases employ tables to store data, where each table consists of rows (records) and columns (fields). Relationships between tables are established using keys, ensuring data integrity and enabling efficient querying. SQL (structured query language) is commonly used to manage and manipulate the data, allowing users to retrieve, insert, update, and delete information. Relational databases provide a consistent and logical way to manage and access data, making them a vital tool for handling structured information across a wide range of industries and contexts. ### NoSQL databases A NoSQL (not only SQL) database is a DBMS that diverges from traditional relational databases by employing a flexible, schemaless structure. They’re designed to handle vast volumes of unstructured or semi-structured data, such as social media content, sensor data, and multimedia. Unlike relational databases, NoSQL databases use various data models - document-based, key-value, SQL++, column-family, and graph-based - to optimize performance and scalability. They excel in distributed and cloud environments, providing horizontal scaling and high availability. While offering advantages like speed, scalability, and flexibility, NoSQL databases lack the structured rigor of traditional relational databases, and not all support ACID (atomicity, consistency, isolation, durability) transactions across multiple documents. ### Cloud databases Cloud databases are database systems hosted on cloud computing platforms that allow users to store, manage, and access their data over the internet instead of on local servers. Cloud databases offer high scalability by allowing users to add or reduce resources to accommodate changing workloads easily. They also provide global accessibility, enabling users to access data from anywhere with an internet connection. These databases come in various models, including relational and NoSQL, and can be tailored to diverse data structures and application needs. Cloud database providers handle infrastructure management, backups, and maintenance, freeing users from the complexities of hardware management. Cloud technology has revolutionized data management by enabling seamless data access, high availability, and simplified management for businesses of all sizes. ### Database-as-a-Service (DBaaS) A DBaaS is a cloud computing solution that provides users with a managed database environment. In a DBaaS, the service provider handles database maintenance tasks such as installation, configuration, scaling, backups, and updates. Users can access and manage the database using a web-based interface or APIs without worrying about the underlying infrastructure. This model allows organizations to focus on their data and applications rather than the operational complexities of database management. DBaaS offerings cater to various database types, including relational and NoSQL databases, and provide flexible storage, computing power, and scalability. This approach often enhances efficiency, reduces costs, and accelerates development processes for businesses by outsourcing the intricacies of database management to experts in the cloud. ### Distributed databases A distributed database is a collection of interconnected databases spread across multiple physical locations or computer systems. Unlike a centralized database that stores all data in one place, a distributed database divides and stores data in a decentralized manner. Organizations commonly use these systems when multiple users or applications need to store, access, and update large amounts of data across geographically dispersed locations. This architecture offers several advantages, including improved scalability, fault tolerance, and enhanced performance. Distributed databases also enhance efficiency by allowing data to be accessed and manipulated simultaneously from multiple nodes. Decentralization, however, can make managing data consistency, synchronization, and network communication more complex and challenging. ### In-memory databases An in-memory database is a type of DBMS that stores and manipulates data primarily in the computer’s main memory (RAM) instead of from disk storage. This approach results in significantly faster data access and retrieval times, as accessing data from memory is much quicker than reading from disks. In-memory databases are particularly suited for applications requiring low-latency responses, high-speed transactions, and rapid real-time data processing. While they provide exceptional performance benefits, the available RAM limits the amount of data they can handle. Organizations often choose in-memory databases for caching, real-time analytics, and applications demanding rapid query processing. ### Embedded databases An embedded database is a self-contained database system integrated directly into an application’s codebase, eliminating the need for a separate database server. It is tightly coupled with the application and resides in its memory space. This approach reduces complexity, provides faster data access, and simplifies deployment because the database becomes integral to the application’s distribution. Embedded databases are commonly used in desktop applications, mobile apps, and single-user scenarios where lightweight data storage and local access are prioritized over the scalability and network capabilities of traditional client-server databases. ### Document databases A document database is a type of NoSQL database that stores and manages data in a flexible, semi-structured format, often using JSON documents. Unlike traditional relational databases, which use tables and rows, document databases store data as self-contained documents, each containing various attributes and values. Each document can contain diverse data types, such as text, numbers, arrays, and nested structures. This schemaless design enables dynamic and adaptable data models that allow developers to easily store, retrieve, and update complex, hierarchical, or unstructured data. Document databases are well-suited for applications requiring scalability, agility, and quick development cycles, such as content management systems, real-time analytics, and e-commerce platforms. ### Key-value databases A key-value database is a type of NoSQL database that stores and retrieves data as pairs of keys and associated values. Each key is a unique identifier, and its corresponding value can be a simple data item, a more complex data structure, or even a binary object. This design promotes fast and efficient data access since retrieval is based on direct key lookups. Key-value databases excel at scenarios requiring high-speed read and write operations, such as caching, real-time analytics, and session management. However, they may lack the advanced querying and relational features of traditional relational databases, making them more suitable for use cases where the data structure is simple and predefined, and speed is a primary concern. ### Graph databases A graph database is a specialized type of database designed to store and manage interconnected data efficiently. It represents data as nodes (entities) and edges (relationships), forming a graph structure. Each node can hold attributes, while edges define connections and properties between nodes. This design makes graph databases ideal for handling complex relationships and querying data patterns that involve connections, such as social networks, recommendation systems, and knowledge graphs. Unlike traditional relational databases, graph databases excel at traversing relationships to enable faster and more intuitive data querying. They empower applications to uncover insights and make connections that might be challenging or slow to achieve with other database models. ### Columnar databases A columnar database is a type of database management system designed for optimized data storage and retrieval. Unlike traditional row-based databases that store and retrieve data in rows, columnar databases organize data vertically, grouping and storing values of each column together. This architecture enhances data compression and minimizes I/O operations, resulting in faster query performance and improved data analytics. Columnar databases are especially suitable for analytical workloads that involve complex queries and aggregations over large datasets. They excel in scenarios where read-heavy operations, such as reporting and data analysis, are more frequent than write operations. Columnar databases are well suited for data warehousing, business intelligence, and data analytics applications. ### Hierarchical databases A hierarchical database is a data storage model where information is organized in a tree-like structure, with each data element having a parent and potentially multiple children. This model represents relationships in a parent-child manner akin to a family tree. Each parent can have several children, but a child can have only one parent. Retrieving data in a hierarchical database typically involves navigating through levels of parent-child relationships. While suitable for certain applications with strict hierarchies, like file systems, hierarchical databases can be less flexible for more complex data relationships compared to other database models like relational or document databases. ### Object-oriented databases An object-oriented database is a type of DBMS designed to store and manage complex data structures as objects, encapsulating both data and the methods that operate on it. Unlike traditional relational databases, which use tables with rows and columns, object-oriented databases represent real-world entities and their relationships more naturally. Objects in this context can include attributes (data) and methods (functions) that define their behavior. This approach is particularly beneficial for applications with intricate data models, as it enables better modeling of real-world scenarios and supports concepts like inheritance, encapsulation, and polymorphism from object-oriented programming. Object-oriented databases are well-suited for multimedia systems, geographic information systems, and complex applications where data structures are inherently hierarchical or interconnected. ## Database examples The following list demonstrates examples of the database types listed above: **Examples of relational databases:** Microsoft SQL Server, MySQL, Oracle Database **Examples of NoSQL databases:** Couchbase, Apache Cassandra, MongoDB™, Redis **Examples of cloud databases:** Amazon DynamoDB, Couchbase Capella™, MongoDB Atlas **Examples of Database-as-a-Service:** Amazon DynamoDB, Couchbase Capella, MongoDB Atlas **Examples of distributed databases:** Amazon DynamoDB, Apache Cassandra, Couchbase **Examples of in-memory databases:** Couchbase, Memcached, Redis **Examples of embedded databases:** Couchbase Lite, SAP HANA Cloud, SQLite **Examples of document databases:** Amazon DynamoDB, Couchbase, Elasticsearch, MongoDB **Examples of key-value databases:** Amazon DynamoDB, Apache Cassandra, Couchbase, Redis **Examples of graph databases:** Amazon Neptune, JanusGraph, Neo4j **Examples of columnar databases:** Amazon Redshift, Apache Cassandra, ClickHouse **Examples of hierarchical databases:** IBM Information Management System, RDM Mobile, Windows Registry **Examples of object-oriented databases:** IBM Db2, InterSystems IRIS, ObjectStore ## Conclusion The two main types of databases are relational (SQL) and non-relational (NoSQL). These two categories include a wide variety of subcategories that sometimes overlap. Relational databases organize data in structured tables and are suitable for complex queries and transactions. NoSQL databases store data in more flexible formats and are ideal for handling large volumes of unstructured or semi-structured data with high scalability. To choose the best database type, consider factors like data structure, query complexity, scalability, and project requirements. A relational database might be preferable if data relationships are well defined, and consistency is crucial. For dynamic, rapidly evolving data or large-scale applications, a NoSQL database is likely to be more suitable due to its agility and scalability. Couchbase is unique in that it combines the best of SQL and NoSQL in one powerful multi-model database that reduces complexity and TCO. **Additional resources:** Developer’s guide to databases ## FAQ **Is a spreadsheet a database?** A spreadsheet may look like a simple database because it organizes information into rows and columns, but it’s not a true database. A database contains only raw data and cannot be formatted like a spreadsheet. Also, traditional databases offer more advanced features like data relationships, indexing, and querying, which spreadsheets typically lack. **What type of information is stored in a database?** Databases store information such as text, numbers, images, and more. Different kinds of databases are used to store different types of data. A relational database uses tables to store structured data with defined relationships, for instance, financial data, inventory management data, and healthcare records. NoSQL databases store diverse data types like documents, key-value pairs, graphs, and more for applications that require flexibility for unstructured or semi-structured data. **Which database should I learn?** The database you should learn depends on your specific goals and the type of applications you intend to work on. To choose your database, research the needs of your projects and the database’s suitability for scalability, data model, and query requirements. While relational databases are still the most-used databases, NoSQL databases are the fastest-growing kind of database, particularly the subcategory of document databases. **Should I choose a relational or non-relational database?** Your choice between a relational or non-relational database depends on your project’s requirements. Relational databases are suitable for structured data, complex queries, and ACID compliance. Non-relational databases (NoSQL) can be better for unstructured or semi-structured data, scalability, and flexibility. Assess your data model, performance needs, and scalability requirements before making a decision. --- # Unstructured Data Management | Concepts Source: https://www.couchbase.com/resources/concepts/unstructured-data-management/ Last modified: 2026-02-09T10:29:54+00:00 **SUMMARY** *Unstructured data management deals with information that falls outside traditional database structures, such as text, images, audio, and video. Due to its diversity, it necessitates specialized methods for storage, classification, and retrieval to ensure it remains usable and secure. To address the complexities that come with diverse datasets, businesses are increasingly relying on metadata, automation, and AI to improve organization, searchability, and integration with analytics workflows. Organizations that utilize these techniques and invest in strong governance and scalable systems are better equipped to extract insights while staying compliant with regulations. Ultimately, adhering to unstructured data management best practices allows businesses to transform large amounts of raw information into valuable assets that support innovation and lead to well-informed decision making.* ## What is unstructured data management? Unstructured data management involves storing, organizing, and analyzing data that doesn’t fit neatly into rows and columns. This includes text documents, emails, images, videos, social media content, and other formats that are difficult to capture in traditional relational databases. Because this type of data constitutes the majority of information generated, effectively managing it is crucial for organizations. It’s also important to remember that unstructured data management is about more than just storage. It involves indexing, categorization, searchability, and governance to ensure that data can be utilized productively and responsibly. Modern approaches leverage AI and machine learning to classify content, detect patterns, and surface insights that would be nearly impossible to identify manually. By implementing robust unstructured data management practices, organizations can improve the quality of data that informs decision making, mitigate risk, and unlock new opportunities. Keep reading this resource to learn more about unstructured data classification, how to manage it, and the challenges that come with that management. - Characteristics of unstructured data - Unstructured data classification - How to manage unstructured data - Challenges of managing unstructured data - Unstructured data management tools - Databases for unstructured data - Key takeaways and additional resources ## Characteristics of unstructured data Unlike structured datasets, which tend to be more predictable, unstructured data often requires specialized tools, scalable storage, and advanced processing techniques to extract value. Because of this complexity, it’s important to familiarize yourself with its key characteristics so that you can design the right infrastructure for analysis and governance. **High volume and rapid growth:**Unstructured data is generated at scale from sources like IoT devices, customer interactions, and digital media, requiring storage solutions that can handle petabyte-level workloads.**Lack of predefined schema:**Unlike relational databases, unstructured datasets don’t follow a fixed schema, demanding flexible systems that can process multiple formats and grow alongside new data types.**Variety of formats:**From audio and video to PDFs, logs, and sensor streams, unstructured data spans a wide spectrum of file types that often need different handling and indexing approaches.**Complex search and retrieval:**Without standardized fields, querying unstructured data requires advanced techniques like natural language processing (NLP), full-text search, and AI-driven indexing.**Metadata dependency:**Metadata plays a critical role in making unstructured datasets discoverable and usable, often requiring automated tagging and enrichment pipelines.**Scalability and performance demands:**Processing unstructured data for real-time insights requires distributed architectures and parallelized compute resources.**Integration challenges:**Combining unstructured data with structured systems for analytics or AI training involves extract, transform, load (ETL) processes, connectors, and interoperability frameworks. ## Unstructured data classification Classifying unstructured data involves organizing and labeling information to facilitate easier storage, retrieval, and analysis. Because this data lacks a predefined schema, classification relies on a combination of metadata, content analysis, and AI-driven techniques. Effective classification allows enterprises to improve data governance, tighten security measures, and derive greater value from large and complex datasets. **Content-based classification:**Uses NLP, pattern recognition, and AI models to analyze content (e.g., identifying sensitive information like personally identifiable information - PII or financial data).**Metadata-driven classification:**Relies on file attributes such as author, creation date, file type, or source system to group and manage data.**Contextual classification:**Examines surrounding usage patterns, access history, or relationships to other datasets to determine relevance and category.**Rule-based classification:**Applies predefined rules or policies, such as keyword matching or regular expressions, to automatically tag data according to business or compliance requirements.**Machine learning classification:**Leverages supervised or unsupervised learning to identify hidden patterns in unstructured datasets and adapt classification models over time.**Hybrid classification:**Combines multiple approaches (e.g., metadata plus AI models) to improve accuracy and coverage across large, heterogeneous environments. **Example:** In a retail business, unstructured data, such as customer support transcripts, can be classified in multiple ways. Metadata tags may capture the date and channel (email, chat, or phone), while NLP models analyze the content to detect sentiment or categorize the inquiry (returns, product quality, shipping issues). This layered classification enables faster responses, more effective trend analysis, and better customer experience strategies. ## How to manage unstructured data Effectively managing unstructured data requires an approach that blends governance, the right technologies, and ongoing optimization. With a clear framework in place, organizations can store data more efficiently, keep it secure, and prepare it for analysis and AI-driven applications. ### Step 1: Define governance and ownership Establish well-defined policies for data access, retention, and compliance to ensure consistency across the organization. Assign clear ownership of each dataset so teams know who is accountable for maintaining its quality, security, and availability. ### Step 2: Implement the right storage solutions Choose scalable storage options, such as data lakes or cloud object stores, that can handle large and diverse data formats. Optimizing for cost, performance, and accessibility ensures that unstructured data remains usable as its volume increases. ### Step 3: Leverage metadata and indexing Adding metadata and indexing makes it easier to locate, categorize, and retrieve unstructured data. It improves searchability, enhances governance, and supports advanced analytics and AI applications. ### Step 4: Automate organization and classification Leverage machine learning and natural language processing to automatically categorize files, tag metadata, and detect anomalies across large datasets. Doing this reduces manual effort while enriching content with context that makes it easier to integrate into downstream applications. ### Step 5: Integrate with analytics and AI workflows Build pipelines that connect unstructured data directly to analytics tools, search platforms, or machine learning models. Seamless integration ensures the data can generate actionable insights, power intelligent applications, and support business decisions. ### Step 6: Secure and enforce compliance Implement encryption, fine-grained access controls, and continuous auditing to safeguard sensitive data throughout its lifecycle. Aligning these practices with regulatory frameworks, such as GDPR, HIPAA, or CCPA, helps organizations maintain trust and avoid compliance risks. ### Step 7: Monitor and optimize continuously Track performance, cost efficiency, and usage trends to ensure storage and processing resources are used effectively. By continuously refining processes and adapting to new requirements, organizations can maintain an agile and sustainable unstructured data strategy. ## Challenges of managing unstructured data Handling unstructured data can be complex since it doesn’t follow the fixed schemas or formats of structured datasets. With content coming from a wide range of sources, documents, images, audio, and system logs, organizations need strategies that ensure the data remains accessible, well-governed, and optimized for performance as it scales. **Volume and scalability:**Unstructured data grows exponentially, requiring scalable storage and processing systems that can handle petabyte-scale workloads without performance bottlenecks.**Data quality and consistency:**Inconsistent file formats, incomplete metadata, and duplicated content make it difficult to ensure accuracy and reliability.**Search and retrieval:**Without standardized indexing, locating relevant information across massive unstructured datasets can be slow and resource intensive.**Security and compliance:**Sensitive information often hides within unstructured files, making encryption, access control, and regulatory compliance more complex to enforce.**Integration with analytics:**Preparing unstructured data for advanced analytics or AI requires additional steps such as classification, feature extraction, and enrichment.**Operational overhead:**Continuous monitoring, migration, and optimization place additional burden on teams managing large-scale environments. ## Unstructured data management tools Unstructured data management tools help organizations organize, protect, and prepare large volumes of data for downstream use. The list of platforms below combines automation, governance, and analytics integrations to keep information accessible and secure. **Data lakes (e.g., AWS Lake Formation, Azure Data Lake Storage):**Provide centralized repositories for storing raw unstructured data at scale.**Metadata management tools (e.g., Apache Atlas, Collibra):**Add context with tagging, lineage tracking, and discovery capabilities.**Data cataloging platforms (e.g., Alation, Informatica):**Improve accessibility by indexing assets and enabling self-service search.**Content management systems (e.g., Box, SharePoint):**Manage documents and media with versioning, permissions, and collaboration features.**AI-driven classification tools (e.g., IBM Watson Knowledge Catalog):**Automate labeling, anomaly detection, and enrichment. ## Databases for unstructured data Databases designed for unstructured data can handle flexible formats, such as JSON, XML, media files, and logs, while scaling horizontally to support high data volumes. The databases listed below are typically selected for their ability to manage semi-structured and unstructured information without rigid schemas. **Document databases (e.g., Couchbase, MongoDB):**Store and query JSON documents, supporting indexing and high-speed queries.**Key-value databases (e.g., Redis, DynamoDB):**Optimize for fast lookups and flexible storage of unstructured attributes.**Wide-column databases (e.g., Cassandra, HBase):**Handle large-scale, sparse datasets with variable fields.**Graph databases (e.g., Neo4j, Amazon Neptune):**Model relationships within unstructured data, such as social networks or fraud detection, to facilitate analysis.**Vector databases (e.g., Pinecone, Weaviate, Milvus):**Enable similarity search and retrieval for unstructured data like images, text, and embeddings. ## Key takeaways and additional resources By combining the right strategies, tools, and governance practices, organizations can turn raw data into actionable insights that drive innovation and strengthen competitiveness. Below are the key takeaways to keep in mind when building an effective unstructured data management strategy: ### Key takeaways **Unstructured data accounts for the majority of enterprise information**, making its effective management critical for long-term success.**Unlike structured data, it lacks predefined schemas**, which makes classification, search, and governance more challenging.**Metadata, indexing, and machine learning play a central role**in making unstructured datasets discoverable and usable.- A well-defined management framework should **strike a balance between governance, scalable storage, security, and continuous optimization**. - Integrating unstructured data into analytics and AI workflows highlights **new opportunities for business insights and automation**. **Security and compliance must be prioritized**, since sensitive information often hides within unstructured files.**Selecting the right tools and databases**, such as data lakes, document stores, or vector databases,**helps ensure scalability and long-term value**. To learn more about data management, you can visit our concepts hub and review the resources listed below: --- # Understanding Unstructured Databases & Data Services Source: https://www.couchbase.com/resources/concepts/unstructured-data/ Last modified: 2026-02-09T11:11:32+00:00 ## What is unstructured data? Unstructured data is information like text, video, or audio that doesn’t have a predefined format or schema. Unstructured data is typically human-generated, but it can also be generated by machines. Regardless of its origin, unstructured data doesn’t fit a preset data model or schema, and therefore can’t be stored in a traditional relational database management system (RDBMS). Most of the data that organizations generate and collect is unstructured data. This data contains crucial insights for making informed business decisions, but because the data lacks structure, organizations typically need to use advanced techniques to analyze it. To address this challenge, businesses are turning to artificial intelligence (AI) and machine learning (ML) tools to help power their analytics applications. This page will cover: - Unstructured data vs. structured data - Examples of unstructured data - Unstructured data use cases - Pros and cons of unstructured data - How to analyze unstructured data - Unstructured data tools - Conclusion ## Unstructured data vs. structured data Unstructured and structured data have distinct differences, including the types of analysis you can use the data for, the schema used to organize the data, the data format, and how the data is stored. Structured data is usually stored in a relational database where it can be easily mapped into designated fields. For example, customers can be identified by consistent details such as phone numbers and addresses. Information is categorized in a rigid format, ensuring consistency that makes the data easier for both humans and algorithms to search, process, and analyze. To effectively search data in relational databases, database administrators often use structured query language (SQL). Unstructured data, on the other hand, can’t be stored in a traditional relational database because it lacks a consistent internal structure. This lack of structure provides the advantage of flexibility, but makes datasets more difficult to search, process, and analyze. ## Examples of unstructured data Examples of human-generated unstructured data include texts, emails, social media, documents, webpages, photos, audio files, video, and much more. Machine-generated unstructured data can consist of log files from websites, servers, networks, and applications. It can also include satellite imagery, surveillance footage, and sensor data from IoT-connected devices. ## Unstructured data use cases **Business intelligence:**Insights for better business decisions**Customer analytics:**Using data to better understand and service customers**Communications analysis:**To ensure regulatory compliance**Social media tracking:**Analyze conversation and interaction patterns**Predictive maintenance:**Manufacturers use sensors to detect potential failures ## Pros and cons of unstructured data Unstructured data has noticeable advantages and disadvantages regarding flexibility, business insights, and working with datasets. ### Pros **Flexible:**You can maintain datasets in different formats that aren’t uniform.**Insightful:**Data-driven decisions yield better and more predictable business outcomes.**Abundant:**Unstructured data comprises the majority of business-generated data. ### Cons **Difficult to search, process, and analyze:**Lack of uniformity is challenging.**Resource intensive:**Effectively managing, maintaining, and using massive volumes of unstructured data can be nearly impossible.**Difficult to share:**Collaborating effectively on large datasets is complex and requires significant investment. ## How to analyze unstructured data Various tools and techniques for analyzing unstructured data include: **Data mining:**This process involves techniques like data cleaning, classification, clustering, and visualization to uncover patterns and relationships within unstructured data. Once you organize the data, it’s easier to interpret and act on.**Machine learning:**ML is good for unstructured data analysis because it can analyze large datasets. First, the data must be transformed into a specific format for ML algorithms, then methods like text classification, clustering, natural language processing (NLP), and deep learning are used for analysis.**Predictive analytics:**After you convert unstructured data into structured data, you can use predictive models like regression, decision trees, or neural networks for forecasting. The insights gained from predictive models help an organization make decisions and plan for the future.**Sentiment analysis:**This involves cleaning and tokenizing unstructured text, then using sentiment analysis methods (lexicon-based or ML) to determine if the sentiment of the text is positive, negative, or neutral. This data is used to better understand the customer experience and make decisions accordingly.**Natural language processing:**NLP uses methods like tokenization, lemmatization, stop words removal, and topic modeling to process data. Using NLP for unstructured data analysis is especially useful in healthcare, finance, and marketing. ## Unstructured data tools **Couchbase:**A distributed database that supports both key-value and document data models.**MongoDB™:**A document-oriented database that stores data in JSON-like documents.**Apache Cassandra:**A distributed database that stores data in a column-family format.**Redis:**A key-value store you can use as a database, cache, and message broker.**Amazon DynamoDB:**A managed NoSQL database service provided by Amazon Web Services (AWS).**Neo4j:**A graph database that stores data in nodes and edges. ## Conclusion Overall, unstructured data makes up the majority of all data generated and collected by organizations, and it provides a significant opportunity to improve business decision-making. Organizations must have the proper platform and tools to maximize this opportunity. Non-relational databases, or NoSQL databases, are becoming increasingly popular due to their ability to handle unstructured or semi-structured data. They use a variety of data models to accommodate diverse data types and structures, making them well-suited for handling large, complex datasets that may evolve. --- # Cloud Database Vs. Traditional Database Solutions Explained Source: https://www.couchbase.com/resources/concepts/what-is-a-cloud-database/ Last modified: 2026-02-09T10:13:17+00:00 ## Introduction to Cloud Databases: Definition & More A cloud database is hosted on a cloud computing platform such as Amazon Web Services (AWS), Microsoft Azure, or Google Cloud. Cloud-based database solutions offer several advantages over traditional on-premises databases, including scalability, availability, and cost-effectiveness. This page will discuss the benefits of cloud databases and the different types of cloud databases that are available. It will also provide resources for learning more about them and choosing the right one for your needs. Areas covered include: - Why use a cloud database? - Disadvantages of cloud databases - Types of cloud databases - Cloud database vs. traditional database - Choosing a cloud database - Cloud database solutions - Conclusion ## Why use a cloud database? Here are some of the most common reasons organizations choose cloud databases: **Scalability:** Cloud databases are highly scalable, meaning that you can easily add or remove capacity. This scalability is ideal for businesses that experience fluctuating traffic patterns. **Availability:** Cloud databases are highly available, so you can be confident that your data will be accessible even if you experience an outage at your data center. **Cost-effectiveness:** Cloud databases are often more cost-effective than traditional on-premises databases, especially for businesses that don’t need to own and maintain their own hardware and software. ## Disadvantages of cloud databases Although using a cloud database comes with many perks, there are some challenges you should be aware of before you decide to go with one. The challenges of choosing a cloud database solution include: **Vendor lock-in:** Once you choose a cloud database provider, switching to a different provider can be difficult. This is due to a number of different reasons, including contractual obligations, business interruption, and lack of resources. **Data sovereignty concerns:** If you store your data in the cloud, you should be aware of the data sovereignty laws in the country where the data is stored. Countries with stricter laws make it harder to access that data. **Performance issues:** In some cases, cloud databases can experience performance issues. This is especially true if your database receives a lot of traffic. ## Types of cloud databases There are three main types of cloud databases: **Relational databases:**Relational databases are the most common type of cloud database. They use a structured query language (SQL) to manage data.**NoSQL databases:**NoSQL stands for “not only SQL,” and NoSQL databases are designed for storing and managing large amounts of semi-structured or unstructured data. They offer a variety of features that make them well-suited for modern applications.**Hybrid databases:**Hybrid databases combine the features of relational and NoSQL databases. They offer the power and familiarity of relational databases along with the high scalability, availability, and flexibility of NoSQL databases. ## Cloud database vs. traditional database: What’s the difference? The main difference between a cloud database and a traditional database is where the data is stored. A cloud database stores data on a remote server, while a traditional database stores data on a local server. For that reason, cloud databases can be more scalable and available than traditional ones, but they can also be more expensive. ## Choosing a cloud database There are a few factors to consider when choosing a cloud database, including: - The type of data you need to store - The size of your database - The amount of traffic your database will receive - Your budget ## Cloud database solutions You’ve got options, but it’s important to choose wisely. Considering the above factors, some of the best cloud database solutions include: **Amazon Relational Database Service (RDS):**Amazon RDS is a fully managed relational database service that makes it easy to set up, operate, and scale a relational database in the Amazon cloud. RDS supports a variety of popular relational database engines, including MySQL, PostgreSQL, and Oracle.**Microsoft Azure SQL Database:**Azure SQL Database is a fully managed relational database service that makes it easy to set up, operate, and scale a relational database in the Azure cloud. Azure SQL Database supports a variety of popular relational database engines, including SQL Server and MySQL.**Couchbase Capella™:**Couchbase Capella is a fully managed cloud database service for Couchbase. Capella makes it easy to set up, operate, and scale a Couchbase database in the AWS, Azure, and Google clouds. It’s a good choice for applications that store and access large volumes of data in real time.**Cloud SQL:**Cloud SQL is a fully managed relational database service that makes it easy to set up, operate, and scale a relational database in Google Cloud. Cloud SQL supports a variety of popular relational database engines, including MySQL, PostgreSQL, and SQL Server. ## Conclusion Cloud databases offer a number of benefits over traditional on-premises databases. If you’re looking for a scalable, available, and cost-effective way to store your data, then a cloud database is a good option. **Next steps** - Learn more about NoSQL databases - Sign up for a free trial of Couchbase Capella - Read our blog posts on cloud databases **Resources** --- # What Is a Technology Stack? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-a-tech-stack/ Last modified: 2026-02-09T09:31:42+00:00 ## What is a tech stack? To help you understand why it’s essential to have the right layers in your technology stack, this page will cover: - Where do tech stacks come from? - Technology stack layers - What are the different tech stacks? - Couchbase technology stacks - Conclusion A technology stack (tech stack) allows you to combine software, tools, and services to build a web or mobile application. Each layer of a typical tech stack is responsible for a separate type of task, either presentation, application logic, or persistence. ## Where do tech stacks come from? The concept of a technology stack has been around since the early days of the web. The earliest webpages were simple “static content.” To retrieve content, webpages used a rudimentary method of calling an external program called Common Gateway Interface (CGI). A CGI script would allow the web server to execute a program to process user requests. Many of these early programs were handcrafted in the C programming language. Almost immediately, early web developers began experimenting with better frameworks and abstractions for building web software. Perl emerged as a more straightforward and accessible language for writing this code. But it wasn’t quite a tech stack yet. After more innovation and evolution, various technology stacks began to emerge. Rather than writing out HTML by hand, libraries and page templating frameworks for the presentation layer logic started to become common while the rest of the program was free-form. Things like relational databases provided a clear way to manage and express data access for app developers, so the persistence layer and concepts like connection pools emerged. ## Technology stack layers People use different names for the same stack layers, so for our purposes we’ll simply refer to them as the top layer, middle layer, and lowest layer. What’s more important is the task each layer is responsible for, and we’ll review those responsibilities from top to bottom. ### Technology stack top layer: Presentation The presentation layer of a tech stack is where formatting and localization occur. For example, a website may have one logo and set of colors, but as styles change, you might want to change the look and feel. Another example of the presentation layer at work is personalization. If a browser request comes from a country where the users want temperatures presented in Celsius instead of Fahrenheit, the information provided will be different. ### Technology stack middle layer: Application logic Application logic goes in the middle layer of your tech stack. For example, the web browser request may include a location (e.g., Austin, Texas) and time zone (Central) that the application logic needs to resolve into the right database query. The middle layer may be spread out using a microservices-based architecture, which allows various application parts to be implemented independently through well-described service interfaces. ### Technology stack lowest layer: Persistence (or database) The persistence layer is typically the lowest layer of the stack, and can be as simple as a set of files in a file system. Managing data in a basic file system, however, requires a developer to develop ways to index and access the data themself - a daunting task. Instead, most developers choose a database. Originally, the go-to database was a relational database because they were the most common. Over time, however, NoSQL databases have become another popular option for developers because of NoSQL’s flexibility, scalability, and broader capabilities. ## What are the different tech stacks? The LAMP stack (made up of Linux, Apache, MySQL, and PHP) became one of the first popular stacks. Linux became the most frequently used operating system; Apache, the most frequently used web server; MySQL, the most frequently used database; and PHP, the most frequently used page templating and programming language. ### Tech stack examples The following list is just an example of how diverse and interoperable technology stacks can be: #### WIMP Windows OS, IIS web server, MySQL database, and PHP app layer #### MAMP Mac OS, Apache web server, MySQL database, and PHP app layer #### FAMP FreeBSD OS, Apache web server, MySQL database, and PHP app layer #### LAPP Linux OS, Apache web server, PostgreSQL database, and PHP app layer #### LNMP Linux OS, NGINX web server, MySQL database, and PHP app layer #### MEAN MongoDB database, Express.js app controller, Angular.js app presentation, and Node.js #### LYME Linux OS, Yaws web server, Mnesia database, and Erlang app layer #### LYCE Linux OS, Yaws web server, CouchDB database, and Erlang app layer #### ELK Elasticsearch search/statistic aggregator, Logstash logging retrieval, Kibana graphical presentation #### Jamstack JavaScript presentation, APIs for data access, and Markup (static or template content) ## Couchbase technology stacks As a cloud database platform, Couchbase plays a critical role in technology stacks. Because it integrates a set of data access and management capabilities commonly required by app developers, Couchbase makes it easier to scale and grow. ### The CEAN stack This stack uses Couchbase, Express, Angular.js, and Node.js. It’s similar to the MEAN stack but uses Couchbase as the database instead. CEAN even has a community-driven project scaffolding tool. ### The COdE stack This stack uses Couchbase for the database, Ottoman.js for the object document mapper (software that makes it easier to map programming structures into databases), and Express.js for app routing. ## Conclusion It may be helpful for you to think about abstracting the app or service you’re building for your users as a tech stack. This is a good way to carefully consider each of the individual components - and more importantly, by thinking of the responsibilities of each layer separately, you’ll be able to build a more flexible system architecture with components that are more interchangeable. --- # What Is Big Data Analytics? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-big-data-analytics/ Last modified: 2026-02-09T10:31:19+00:00 ## Overview of big data analytics Big data analytics uses advanced analytic techniques on massive volumes of complex data to gain actionable insights that can help reduce operating costs, increase revenue, and improve customer engagement within a company. This page will cover: - What is big data? - Types of big data analytics - Benefits of big data analytics - Use cases for big data analytics - Challenges with big data analytics - Big data analytics tools - How Couchbase helps with big data analytics - Conclusion ## What is big data? The term “big data” refers to the collection and processing of large amounts of diverse data that could be structured, semi-structured, or unstructured and, in many cases, is a combination of all three types. Organizations typically collect the data from internal sources like operational business systems and external sources like news, weather, and social media. Because of its diversity and volume, big data comes with inherent complexity. ## Types of big data analytics By examining big data using statistical techniques, trends, patterns, and correlations, you can uncover insights that help your organization make informed business decisions. Machine learning algorithms can leverage the insights further to predict likely outcomes and recommend what to do next. While there are many ways to use big data analytics, generally, you can leverage it in four ways: ### Descriptive analytics Descriptive analytics determines “what happened” by measuring finances, production, and sales. Determining “what happened” is typically the first step in broader big data analytics. After descriptive analytics identifies trends, you can use other types of analytics to discern causes and recommend appropriate action. ### Diagnostic analytics Diagnostic analytics strives to determine “why it happened,” meaning if there is any causal relationship in the data from insights uncovered by descriptive analytics. ### Predictive analytics Predictive analytics techniques leverage machine learning algorithms and statistical modeling on historical and real-time data to determine “what will happen next,” meaning the most likely outcomes, results, or behaviors for a given situation or condition. ### Prescriptive analytics Prescriptive analytics uses complex simulation algorithms to determine “what is the next best action” based on descriptive and predictive analytics results. Ideally, prescriptive analytics produces recommendations for business optimizations. ## Benefits of big data analytics The insights from big data analytics can enable an organization to better interact with its customers, offer more personalized services, provide better products, and ultimately be more competitive and successful. Some of the benefits of using big data analytics include: - Understanding and using historical trends to predict future outcomes for strategic decision-making - Optimizing business processes and making them more efficient to drive down costs - Engaging customers better by understanding their traits, preferences, and sentiment for more personalized offers and recommendations - Driving down corporate risk through improved awareness of business operations ## Use cases for big data analytics Because of its ability to determine historical trends and provide recommendations based on situational awareness, big data analytics holds tremendous value for organizations of any size in any industry, but especially for larger enterprises with huge data footprints. Some practical use cases for big data analytics include: - Retailers using big data to provide hyper-personalized recommendations - Manufacturing companies monitoring supply chain or assembly operations to predict failures or disruptions before they happen, avoiding costly downtime - Utility companies running real-time sensor data through machine learning models to identify issues and adjust operations on the fly - Consumer goods companies monitoring social media for sentiment toward their products to inform marketing campaigns and product direction These are just a few examples of how you can use actionable insights to reduce operating costs, increase revenue, and improve customer engagement within a company. ## Challenges with big data analytics Because it involves immense volumes of data in various formats, big data analytics brings significant complexity and specific challenges that an organization must consider, including timeliness, accessibility of data, and choosing the right approach for goals. Keep these challenges in mind when planning big data analytics initiatives for your organization: **Long time to insight ** Getting operational insights as quickly as possible is the ultimate goal of any analytics effort. However, big data analytics typically involves copying data from disparate sources and loading it into an analytic system using ETL processes that take time - the more data you have, the longer it takes. Because of this reason, analysis can’t begin until all data has been transferred to the analytic system and verified, making it nearly impossible to gain insights in real time. While updates after an initial load may be incremental, they still incur delays as changes propagate from source systems to the analytic system, eroding time to insight. **Data organization and quality** Big data should be stored and organized in a way that’s easily accessible. Because it involves high volumes of data in various formats from various sources, organizations must invest significant time, effort, and resources to implement data quality management. **Data security and privacy** Big data systems can present security and privacy issues because of the potential sensitivity of the data elements they contain - and the bigger the system gets, the bigger this challenge becomes. Data storage and transfer must be encrypted, and access must be fully auditable and controlled through user credentials, but you must also consider how the data is analyzed. For example, you might wish to analyze patient data in a healthcare system. However, privacy regulations may require you to anonymize it before copying it to another location or using it for advanced analysis. Addressing security and privacy for a big data analytics effort can be complicated and time-consuming. **Finding the right technologies for big data analytics** Technologies for storing, processing, and analyzing big data have been available for years, and there are many options and potential architectures to employ. Organizations must determine their goals and find the best technologies for their infrastructure, requirements, and level of expertise. Organizations should consider future requirements and ensure their chosen tech stack can evolve with their needs. ## Big data analytics tools Big data analytics is a process supported by various tools that work together to facilitate specific parts of the process to collect, process, cleanse, and analyze big data. A few common technologies include: ### Hadoop Hadoop is an open source framework built on top of Google MapReduce. It was designed specifically for storing and processing big data. Founded in 2002, Hadoop can be considered the elder statesman of the big data tech landscape. The framework can handle large amounts of structured and unstructured data but can be slow compared to newer big data technologies like Spark. ### Spark Spark is an open source cluster computing framework from the Apache Foundation that provides an interface for programming across clusters. Spark can handle batch and stream processing for fast computation and is generally faster than Hadoop because it runs in-memory instead of reading and writing intermediate data to disks. ### NoSQL databases NoSQL databases are non-relational databases that typically store data as JSON documents, which are flexible and schemaless, making them a great option for storing and processing raw, unstructured big data. NoSQL databases are also distributed, running across clusters of nodes to ensure high availability and fault tolerance. Some NoSQL databases support running in-memory, which makes query response times exceptionally fast. ### Kafka Apache Kafka is an open source distributed event streaming platform that streams data from publisher sources like web and mobile apps, databases, logs, message-oriented middleware, and more. Kafka is useful for real-time streaming and big data analytics. ### Machine learning tools Big data analytics systems typically leverage machine learning algorithms to forecast results, make predictions, provide recommendations, or recognize patterns in the data. Machine learning tools often come bundled with a library of algorithms you can use for various analyses, and free, open source options are plentiful, such as scikit-learn, PyTorch, TensorFlow, KNIME, and more. ### Data visualization and business intelligence tools You can communicate insights from big data analytics through data visualizations such as charts, graphs, tables, and maps. Data visualization and business intelligence tools represent results from analyses succinctly, and many specialize in creating dashboards that monitor key indicators and provide alerts for issues. ## How Couchbase helps with big data analytics Couchbase Capella™ is a distributed cloud database that fuses the strengths of relational databases such as SQL and ACID transactions with JSON flexibility and scale. Capella offers multi-model capabilities such as in-memory processing for speed, automatic data replication for high availability and failover, built-in full-text search for adding search to apps, and eventing to trigger actions based on changes in the data. It even comes with an AI-based coding assistant called Capella iQ to help with writing queries and data manipulation, making it easy to adopt. Thanks to its JSON document storage model and memory-first architecture, Capella is ideal for big data analytics systems because it can store massive amounts of diverse semi-structured and unstructured data and quickly makes queries against the data. Capella can also natively work with other big data analytics tools using connectors for Spark, Kafka, and Tableau for data visualization, allowing an organization to create highly scalable and efficient analytics data pipelines. Best of all, Capella includes built-in analytics, a service that allows analysis of operational data without needing to move it via time-consuming ETL processes. By eliminating the need to copy operational data before analyzing it, the analytics service enables near-real-time analysis, and the service can ingest, consolidate, and analyze JSON data from Capella clusters, AWS S3, and Azure Blob Storage. ## Conclusion Big data analytics promises to enable a more efficient, competitive, and customer-centric organization through its ability to uncover problem areas, provide recommendations for improvement, and predict likely behaviors that can inform consumer engagement. Learn how Domino’s creates personalized marketing campaigns with unified real-time analytics using Couchbase in this customer case study. And be sure to try Couchbase Capella FREE and check out our Concepts Hub to learn about other analytics-related topics. --- # What Is Cloud Migration? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-cloud-migration/ Last modified: 2026-02-09T09:10:53+00:00 ## Introduction to cloud migration This page will cover the following to help you better understand cloud migration: - Why migrate to the cloud? - Key benefits of cloud migration - What types of cloud migration are there? - What are some challenges you face when migrating to the cloud? - Database considerations for cloud migration - Conclusion The term “cloud migration” refers to moving an organization’s business application infrastructure - including data storage, data processing, and computing resources - from on-premises data centers to the cloud, or from one cloud to another cloud. Cloud migration is even more complex than moving physical assets from one place to another because there are countless details to consider, many steps, and a specific order of events to follow. To ensure the process goes as smoothly as possible, you need to plan and prepare with meticulous detail. But the hard work, when approached correctly, brings tremendous value in scale, agility, and flexibility for applications that need to modernize and expand. ## Why migrate to the cloud? We’ve all seen depictions of birds flying in the signature “V” shape when heading south for the winter. When temperatures drop and resources begin to dwindle, birds instinctively migrate to areas with greater resources to increase their chances for survival and long life. Similarly, cloud migration increases the opportunities for an organization to thrive and grow by moving off of aging, inefficient, unreliable legacy infrastructure that hinders business agility and struggles to meet the demands of modern applications. The term “legacy” refers to technologies, computer systems, and applications that are outdated yet still in use. Typically, the legacy infrastructure runs on premises (or “on prem”) in a data center on the organization’s property. It includes hardware, networking, software, data processing, and storage. When these infrastructure components grow old, they challenge an organization’s ability to evolve and compete. Because they are located on-site where resources are finite, they can’t scale sufficiently to meet the demands of modern applications. By migrating off of legacy infrastructure and onto the cloud, an organization can quickly gain the scale they need to meet growing demand and the elasticity to adjust computing power in proportion to that demand. They also gain efficiency through standardized infrastructure management, all of which adds up to cost savings and a more agile business model. ## Key benefits of cloud migration In addition to the advantages described above, when you migrate to the cloud, you’ll also benefit from the following: **Scale** Because of its ability to increase or decrease computing resources to meet demand, cloud computing can support more workloads and users much faster and easier than infrastructure that runs on prem.**Performance** Because of its scale and distributed architecture, the cloud can enable faster applications and improve user experiences. Hosting applications in the cloud reduces latency because data centers can be deployed wherever user concentrations require them.**Flexibility and standardization** Application users can access cloud-based applications from anywhere, which maximizes convenience and facilitates real-time collaboration. Using a cloud service provider for cloud hosting also provides organizations with a standardized, repeatable environment that’s familiar and easy to maintain.**Cost savings** When an organization migrates from self-managed on-prem infrastructure to the cloud, they can almost instantly decrease their IT spend because the cloud removes the need to install, maintain, and pay for physical infrastructure. In most cases, cloud service providers handle maintenance tasks such as backups, fixes, and upgrades, which frees up the organization to concentrate on developing their applications. ## What types of cloud migration are there? When it comes to cloud migration, your approach should depend on your goals. An organization must carefully consider its requirements, architectural strategy, and success criteria before choosing their best path forward. To help, Gartner Research outlined five key options for cloud migration: **Rehost** Rehosting is often referred to as “lift-and-shift.” As the name suggests, rehosting essentially means moving applications “as-is,” re-creating the same application architecture stack you had on prem, but deploying and running it on an Infrastructure-as-a-Service (IaaS) in the cloud.**Refactor** The refactoring approach allows an organization to retain its existing code, frameworks, and containers, but instead deploy its applications on a Platform-as-a-Service (PaaS) - basically leveraging the cloud provider’s infrastructure stack.**Revise** The revise approach involves modifying the code base to meet modernization requirements, then deploying it by either rehosting or refactoring.**Rebuild** The rebuild approach refers to a complete rewrite of an application on a PaaS provider’s infrastructure. This approach takes a lot of effort, but it allows an organization to take full advantage of a modern technology stack.**Replace** The replace approach is to retire old applications and move to off-the-shelf Software-as-a-Service (SaaS). The approach an organization chooses to pursue should be based on their goals, timeframe, and available resources and expertise. ## What are some challenges you face when migrating to the cloud? While there are many benefits to migrating to the cloud, there are also some challenges you should be aware of. It’s necessary to have a plan for the following: ### A clear cloud migration strategy Often, in a rush to begin the migration process, an organization overlooks the importance of a clearly defined strategy. A detailed order of tasks is critical and can help navigate the issues that will inevitably occur. Organizations should document the following: - A clear strategy for execution, including goals and success criteria - Required resources to conduct the migration effort - Any potential or likely issues that could arise during migration, plus a mitigation plan - A validation process to confirm success criteria ### Data migration Moving data from on prem to the cloud may sound easy in concept, but it can be the most time-consuming task in the entire migration process, especially for larger organizations whose data footprint can be enormous. One method is to move data to the cloud over the internet, either leveraging built-in database utilities for exporting and importing data, or leveraging specialized data transfer solutions built for migrating lots of data. In some cases, there are also cloud provider services to help, such as the ability to load data to a physical hardware appliance and ship it to the cloud provider for loading onto the cloud infrastructure. This option is useful when the data footprint is too large to be moved efficiently using internet options. Moving to the cloud also presents an opportunity to change the database platform and model (for example, from a relational database to a NoSQL database) for increased performance and flexibility. Of course, a database platform and model change will impact the overall migration effort, so consider your options carefully as you plan your strategy. ### Minimizing downtime When migrating data and systems, an organization should minimize application downtime as much as possible, especially for applications needed to conduct business. Data should also be backed up before any migration step so the environment can be restored to working order as quickly as possible in the event of an issue or failure. For the most-critical applications - those that absolutely must stay operational - an organization may wish to run them on a temporary backup infrastructure until the cloud migration process is complete. It’s also important to let users know the migration is underway so they can adjust availability expectations accordingly. ## Database considerations for cloud migration Migrating to the cloud can present the perfect opportunity to modernize your database platform and model, especially for those pursuing a replatform or refactor cloud migration. For example, an organization may choose to move from a relational database on prem to a NoSQL database in the cloud for the increased performance and flexibility it can provide their applications. ### Migrating from an on-prem relational database to a NoSQL database in the cloud Relational databases generally suffer from a lack of scalability, and they can be rigid because the data model is fixed and defined by a static schema that limits agility and flexibility. In contrast, NoSQL databases are usually distributed and store data as JSON documents. This makes them much more scalable and flexible, allowing them to quickly evolve data structures to meet the needs of applications. Because of their disparate models, migrating from a relational database to a NoSQL database takes careful planning. Using a NoSQL database that supports relational constructs (such as schemas and tables), and also supports SQL (the standard query language for relational systems), will significantly reduce the complexity of changing database models. Learn why many organizations are moving from a relational database to NoSQL. Couchbase Capella™ is a fully managed NoSQL JSON document Database-as-a-Service (DBaaS) that supports SQL. It also supports relational constructs such as ACID transactions, schemas, and tables via the scopes and collections feature. These capabilities make it easier for an organization to migrate from a relational database to Capella in the cloud and take advantage of a NoSQL database’s superior performance and flexibility. These resources about migrating from a relational database to Couchbase can help streamline your efforts: - Moving From Oracle to NoSQL - Moving From SQL Server to NoSQL - SQL to NoSQL: Automated Migration - MOLO17 GlueSync Enables Migration to Couchbase Capella with Bi-Directional Data Replication ### Migrating from on-prem NoSQL to cloud NoSQL Some organizations that are using Capella had previously adopted NoSQL database technology, but moved to Capella for its superior performance, flexibility, and adherence to relational constructs. Other organizations had adopted Couchbase and were using it on prem, but decided to offload the effort of hosting and managing the database themselves. Moving to Capella gave them a fully hosted and managed Couchbase environment, freeing up IT resources and reducing costs. This guide provides a detailed step-by-step process for migrating from an on-prem Couchbase Server deployment to Capella. And to assist with all Capella database migration efforts, Couchbase Professional Services provides a Migration Services packaged engagement designed to ensure success. ## Conclusion Cloud migration is a complex process that should be approached with defined goals, a detailed strategy, and careful planning. Considering all the variables, including the choice of a database built for the cloud, can significantly accelerate the migration effort and guarantee a successful outcome. --- # What Is Data Management? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-data-management/ Last modified: 2026-02-09T09:01:13+00:00 ## Data management overview Data management refers to the systematic organization, storage, and handling of data to ensure its accuracy, accessibility, and security throughout its lifecycle. When planned and executed properly, data management strategies enable businesses to make better-informed decisions, improve operational efficiency, comply with regulations, mitigate risks, and innovate better and faster. This page covers: - Why is data management important? - Types of data management - Data management benefits - Data management challenges - Developing a data management strategy - Data management platforms - Conclusion ## Why is data management important? In a modern organization, data underpins every critical aspect of business, from decision making to operations to the customer experience. To maximize its value, all business data must be organized, integrated, and accessible. It has to be up to date, consistent, and accurate to be meaningful. And it must be secure to meet regulatory requirements and maintain the trust of customers. Data management is the practice that ensures your organization’s data meets all these requirements at all times. Effective data management enables: **Informed decision-making** Businesses generate and accumulate vast amounts of data. Effective data management ensures that this data is organized, accurate, and accessible so its users can quickly and confidently make critical decisions at any time, knowing they have reliable information. **Business intelligence (BI) and analytics** Decision makers often rely on BI and analytics tools, but these tools are only as good as the data they analyze. The data management process ensures that tools are working with complete and accurate data in the required formats. Executives and business users at every level of an organization can then use the tools to gain insights into market trends, customer behaviors, and internal operations to drive daily decisions and long-term strategies. **Operational efficiency** Proper data management streamlines business processes, improves operational efficiency, and increases employee productivity. Well-managed data allows quicker and more accurate retrieval of information, reducing the time and effort required for business users and business applications to perform their tasks. **Regulatory compliance** Many industries are subject to strict regulatory requirements regarding data handling and privacy. Effective data management ensures that organizations comply with all data protection laws and industry standards, which can be extensive and complicated. Adhering to data regulations reduces the risk of penalties and legal issues and builds customer trust. **Competitive advantage** A well-managed and analytically rich dataset is a significant advantage in a competitive business environment. Businesses that can effectively harness data to enhance innovation, efficiency, and customer satisfaction are likelier to outperform their competitors. ## Types of data management Data management encompasses a wide variety of activities related to acquiring, storing, processing, and ensuring the quality and security of data. Different types of data management focus on different areas of the data lifecycle. Key types of data management include: **Database management** A relational database management system (RDBMS) manages structured data in tables that connect related data elements. A NoSQL database management system is ideal for handling unstructured and semi-structured data with high flexibility and scalability. **Master data management (MDM)** MDM is the discipline of organizing, categorizing, and harmonizing critical business data, such as customer or product information, to create a single authoritative source that ensures consistency and accuracy across an organization’s various systems and processes. **Document management** Involves organizing, storing, and tracking electronic documents, often in a document management system (DMS). **Metadata management** Refers to the creation, storage, and management of metadata (data that describes and provides information about other data). Metadata helps users understand and use data effectively. **Data quality management** Ensures the accuracy, completeness, and consistency of data. It involves processes like data profiling, cleansing, and validation. **Data governance** Establishes policies and procedures to manage data assets and ensure data quality, security, and compliance. **Data security management** Focuses on protecting data from unauthorized access. It ensures confidentiality, integrity, and availability. **Data integration** Combines data from different sources to provide a unified view. Integration is often accomplished through ETL (extract, transform, load) processes. **Data warehousing** Centralizes and organizes large volumes of data from various sources to support business intelligence and reporting. **Big data management** Deals with the storage, processing, and analysis of massive volumes of structured and unstructured data, often in distributed computing environments. **Data lifecycle management** Manages data from creation to deletion, addressing aspects such as storage, archiving, and disposal. Businesses usually combine and interconnect different data management solutions to support an overarching data management strategy. Your organization’s specific needs and goals should determine the data management solutions you adopt. ## Data management benefits As explained above, data management is critical to modern data-driven businesses to support informed decision-making, BI and analytics, operational efficiency, regulatory compliance, and competitive advantage. While those are reason enough to ensure your organization has a well-planned and executed data management strategy, there are also numerous other benefits. Chief among them are: **Risk management - **Businesses face myriad data-related risks, including data breaches, system failures, and other security threats. Proper data management includes all data security, backup, and recovery measures necessary to reduce the risk of data loss and ensure business continuity. **Strategic planning - **Data is a valuable resource for strategic planning and forecasting. Organizations can use historical data to identify trends, predict future market conditions, and plan for long-term success. **Cost savings - **Efficient data management can reduce many data-related costs. Businesses can reduce operational costs associated with infrastructure, processing, and management by eliminating redundant data, optimizing storage, and automating processes. **Customer satisfaction - **Understanding customer needs and preferences is essential for providing compelling products and services that build loyalty. Data management helps businesses gather, analyze, and use customer data to enhance customer experiences, tailor offerings, and create stronger relationships. **Data monetization - **Organizations with high-quality data may have opportunities to monetize it by offering data-driven products, services, or insights to external parties. ## Data management challenges Data management is a significant challenge simply due to the sheer volume and diversity of data generated by modern businesses. The difficulty is compounded by the complexity of integrating data from various sources. And the constant evolution of business requirements and technologies makes it even harder to maintain a successful data management practice without interruption. The biggest challenges are: **Data quality - **Because data originates from diverse sources, it’s highly prone to inconsistencies, inaccuracies, and incompleteness. To correct these issues, organizations must implement data quality management processes, conduct regular audits, and invest in automated data cleansing and validation tools. In addition to establishing clear data quality standards, businesses should appoint official data stewards responsible for ongoing monitoring to maintain high-quality data. **Data integration - **The wide variety of data sources and formats flowing into a business creates complexity in reconciling and harmonizing disparate datasets. To address this, organizations should develop a robust data integration strategy, employ compatible technologies, and establish standardized data formats. A multi-model database like Couchbase is specifically designed to support multiple data models in order to increase versatility while minimizing complexity, management, data sprawl, and costs. **Data security - **Data security is always a challenge because cyber threats constantly evolve and become more sophisticated. To stay a step ahead, organizations must implement robust encryption, access controls, and authentication measures. It’s also essential to run regular security audits, train employees on security best practices, and stay updated on the latest security threats. **Data governance - **Data governance is focused on establishing the policies and procedures around data that the rest of your data management practice will enable and enforce. Data governance issues generally arise from insufficient or unclear policies and procedures, so your organization must implement a comprehensive data governance framework that defines roles, responsibilities, and processes. The framework should include data governance tools, regular training sessions, and foster a culture of accountability. **Data insight - **Deriving meaningful insights from data requires complex analysis and interpretation, as well as tools and skills to extract actionable information. Companies must be willing to invest in advanced analytics tools and provide training to enhance data literacy and data visualization techniques across the organization. Fostering a data-driven culture that encourages collaboration between business and data teams contributes to more effective data insights. ## Developing a data management strategy Developing a successful data management strategy requires a comprehensive approach that addresses all aspects of acquiring, storing, processing, and ensuring the quality and security of your organization’s data. Here’s a high-level overview of key steps to implement an effective plan: 1. **Define business objectives and requirements - **Clearly understand your business objectives and identify the data requirements that support those goals. 2. **Assess your current state of data management - **Conduct a thorough assessment of your current data management practices, infrastructure, and capabilities. 3. **Establish a data governance framework - **Define a robust framework that outlines policies, procedures, roles, and responsibilities for managing and using data. 4. **Create a data inventory - **Develop a comprehensive inventory of all data assets within your organization. Categorize and classify them based on sensitivity, criticality, and usage. 5. **Ensure data quality - **Implement standards, processes, and tools to ensure data quality. Include data profiling, cleansing, and validation, and plan to audit and monitor data quality metrics regularly. 6. **Enhance data security measures - **Implement robust data security measures to protect sensitive information. Include encryption, access controls, authentication mechanisms, and regular security audits. 7. **Implement data integration and architecture - **Design an efficient data architecture that supports scalability, flexibility, and interoperability. 8. **Foster a data-driven culture - **Promote a culture that prioritizes data for decision making. Provide training and resources to enhance data literacy and encourage collaboration between business and IT teams. 9. **Invest in technology and tools - **Identify and implement scalable technology solutions and tools that align with your data management objectives and business goals. 10. **Establish data lifecycle management - **Define processes for data lifecycle management, including data creation, usage, archiving, and disposal. 11. **Monitor and measure performance - **Establish key performance indicators (KPIs) to measure the effectiveness of your data management strategy. Address any performance issues promptly. 12. **Continuously improve - **Regularly review and update your strategy based on evolving business needs, technological advancements, and changes in regulatory requirements. ## Data management platforms A data management platform (DMP) is a centralized technology solution that allows organizations to collect, store, manage, and analyze large sets of data from various sources. While a DMP can be used across industries for numerous purposes, DMP typically refers to platforms used by marketing and advertising teams to gather and organize audience data to optimize targeting and personalization. Key features of DMPs include: **Data collection - **DMPs aggregate data from online and offline channels to create a comprehensive view of consumer behavior and preferences. **Data segmentation - **DMPs categorize data into segments based on specific criteria to support targeted marketing and advertising campaigns. **Audience profiling - **DMPs create detailed profiles of audiences, helping marketers understand the characteristics and behaviors of different user segments. **Integration with marketing tools - **DMPs typically integrate with other marketing technologies, such as customer relationship management (CRM) systems, advertising platforms, and analytics tools. **Real-time data processing - **Many DMPs offer real-time capabilities so marketers can make immediate and highly personalized decisions based on up-to-date information. **Privacy and compliance - **DMPs often include features to manage user consent, ensuring compliance with data protection regulations and privacy standards. Popular DMPs include Adobe Audience Manager, Oracle BlueKai, and Lotame. ## Conclusion Data is the lifeblood of a modern business, and data management includes all the processes and procedures that keep it clean, healthy, safe, and flowing smoothly to all the parts of the organization that need it. While data management has a huge impact on the success of a business, it also presents many challenges due to the vast volume and variety of data that needs to be properly maintained and because of the unpredictability and constant changes of business requirements and technologies. To learn more about data management and related technologies, check out these resources: Different types of data platforms Database versus data warehouse Simplifying data governance with Couchbase Mobile --- # What Is Database Sharding? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-database-sharding/ Last modified: 2026-02-09T09:17:07+00:00 ## Database sharding overview - How database sharding works - Advantages of sharding - Disadvantages of sharding - Types of sharding - Alternatives to database sharding - How Couchbase Capella™ helps with database sharding - Conclusion Database sharding is a powerful tool for optimizing the performance and scalability of a database. It allows for faster access to data and enables a database to handle larger workloads by distributing data and processing power across multiple servers. Because NoSQL databases are designed with distributed computing and automatic sharding in mind, they’re often the databases most associated with sharding. With enough effort, though, sharding can be achieved with any database technology. ## How does database sharding work? Database sharding divides the entire dataset into multiple groups known as shards. Once divided, each shard can be stored independently, usually on multiple servers, which are often referred to as a cluster. Each shard can be accessed independently, which means you can access data faster, and you have more resources available for processing, computing, and storage. ### Where does sharding take place? If a database has sharding features built in, then the development team requires less work to achieve sharding. If sharding is an optional feature or requires configuration, then you’ll need to plan carefully, but sharding shouldn’t require any significant codebase changes or additions. If the underlying database cannot do sharding (as is the case with many relational databases), then you may be required to make major changes to the codebase, and developers will have to build sharding into the persistence layer of an application. ### Do I need to shard my data? Whether or not you should use sharding depends on many factors. Those factors include the size of your dataset, the number of system users, the number of operations performed, and your infrastructure constraints. If your application experiences a noticeable decrease in performance due to more users or more operations, then horizontal scaling (which often uses sharding) is one way to increase compute resources available to your database. But poor performance may also indicate suboptimal code, lack of proper indexes, the need for data modeling changes, or other problems. Sharding shouldn’t always be the first choice for improving performance, but for some database technologies it can be a low-friction means to achieve your performance goals. ## Advantages of sharding - Faster performance: There are more servers available to handle input/output - Horizontal scaling: You can quickly add additional servers to a cluster - Costs: Horizontal scaling can often be less expensive than vertical scaling (i.e., upgrading one server to another more powerful server) - Distribution/uptime: A horizontally scaled distributed database can achieve better uptime than a traditional single server ## Disadvantages of sharding - Complexity: Depending on the database system, sharding complexity can vary. Some databases are designed with distribution, horizontal scale, and sharding included. Others require a more hands-on DIY approach. - Rebalancing: When adding additional machines to a cluster, the shards will likely need to be rebalanced to distribute data evenly. (For example, if you have 1,000 documents evenly distributed across three shards, that’s roughly 333 documents per shard. If you add a fourth shard, even distribution would be 250 documents per shard). If a database doesn’t have sharding features built in, rebalancing is guaranteed to be a complex manual DIY process. ## Types of sharding There are multiple approaches to sharding. Some database systems have sharding functionality built in, while others do not directly support sharding (and require a lot of custom coding or DIY processes). The goal of each approach is to divide data into shards consistently so that data can be looked up on or written to the same shard each time. ### Range-based sharding Range-based sharding involves selecting data values and assigning them to a shard based on whether or not they fall within a specific range. For instance, if you have user data that contains age, one shard could store users between the ages of 0-10, another shard would store users between the ages 11-20, and so on. This approach can be problematic because one shard could end up storing many more users than the other. And shards storing a disproportionately high amount of data can become hot spots that impact performance. ### Key-based sharding Key-based sharding takes more of an independent approach. A value in the data (usually the document ID in a NoSQL document database) is run through a hash, and that hash determines which shard the data should be stored in. This approach can be problematic if it’s not directly supported by the database, because any application accessing the database must be able to construct the hash. Also, this approach requires the data value used for the hash to be immutable. This is usually not an issue, but it can be for rare edge cases. Couchbase uses automatic key-based sharding to distribute data evenly in a cluster, and also provides automatic rebalancing and automatic replication. These automations can simplify critical processes and free up valuable time for your development team. ### Directory-based sharding Directory-based sharding is an approach whereby some value of the data is mapped to a particular shard based on its value in a lookup table or lookup configuration. It’s similar to the range approach, but may involve a simple lookup. For instance, a user with an address in Ohio would be stored in the “Ohio” shard, a user in California would go to the “California” shard, and so on. This approach can be problematic because a lookup table or configuration can become unavailable, go down, or become corrupted. In such cases, the application can no longer perform reads or writes. ### Geo sharding A geo shard can be combined with, or used instead of, the other sharding options. The idea behind geo sharding is to store data physically closer to where it will most often be accessed. For instance, a user with an Ohio address would be stored on a server in Ohio, and a user with a California address would be stored on a server in California. This approach can provide faster access, but can also lead to hotspots and underutilized servers. Geo sharding may also fail to meet legal requirements for specific applications or jurisdictions. In addition to providing automatic sharding, Couchbase can support geo sharding through cross data center replication (XDCR). ### Entity-based sharding Entity-based sharding means that separate, but closely related, data is stored together on the same shard. For instance, a user may be considered an entity within an application’s logic, but a user’s shopping history may be stored separately in a different shard. By storing the related data in the same shard, you can reduce the amount of computing work required to retrieve it together at the same time. The drawback to this approach is complexity. Configuring which data goes where can be a complex process, especially if some data is used by multiple entities. ## Alternatives to database sharding Horizontal scaling will always involve sharding at some level, but there are many options for how to shard. One way is architectural sharding, like a microservices architecture or a physical disk sharding that’s opaque to the user. Sharding can even be hidden and abstracted behind a cloud database. When considering a database system, it’s crucial to understand how sharding will be accomplished. It can be wholly abstracted and hidden, it can be automatic, it can be supported with potentially complex configuration options, or it can be unsupported and require a DIY approach. ## How Couchbase Capella helps with database sharding Couchbase Capella is the cloud database platform for digital enterprises. Capella uses the same sharding system as Couchbase Server, which is key-based automatic sharding. From a user or developer’s point of view, sharding with Couchbase requires no additional configuration or maintenance. By using a CRC32 algorithm in conjunction with vBuckets, Capella ensures that your system will not have any hotspots. Capella automates replication. You just select the number of replicas you want, and Capella handles the rest. Capella also automates rebalancing. When you add servers or remove them from a cluster, Capella automatically rebalances them without causing any downtime. Finally, Capella can achieve geo sharding via the XDCR feature. XDCR replicates data between data centers in real time. XDCR replications can include or exclude data based on user-defined filters in order to improve local latency or to meet data location requirements. ## Conclusion Sharding is an important concept to understand if you’re scaling a database to handle more operations. And NoSQL databases are especially good at sharding because they eliminate many of the constraints imposed by relational databases. That said, Couchbase Capella provides some of the best features of a relational database (SQL syntax and a full SQL implementation that includes JOINs and ACID transactions) to a distributed database with automatic sharding. To learn more about sharding in Couchbase, check out: Other important resources for considering how to scale a database: --- # What Is LangChain? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-langchain/ Last modified: 2026-02-09T10:08:58+00:00 ## LangChain overview LangChain is a powerful platform designed to equip developers with essential tools for creating applications driven by large language models (LLMs). It simplifies the complex processes involved in working with LLMs, enabling the development of sophisticated applications like chatbots, content generators, and automated text processors. LangChain offers a robust and flexible framework that makes integrating and deploying large language models significantly easier for application developers. It is especially useful for developers seeking to harness LLM capabilities without grappling with the intricacies of model management and data processing. This guide will cover LangChain’s workings, key components and features, real-world use cases, and its benefits. We’ll also provide instructions on getting started with LangChain, discuss its integration with Couchbase, and summarize key takeaways with additional resources. Finally, we’ll address frequently asked questions to give you a comprehensive understanding of LangChain. - How does LangChain work? - Components of LangChain - LangChain use cases - LangChain benefits - How to get started with LangChain - Couchbase LangChain integration - Key takeaways and additional resources - FAQ ## How does LangChain work? LangChain simplifies the process of working with large language models by providing a user-friendly framework for developers. For instance, a developer building an e-commerce recommendation system can use LangChain to integrate various large language models like OpenAI’s GPT-4 and Anthropic’s Claude. Using LangChain’s connectors, the recommendation system can seamlessly access data from multiple sources, such as: **Document databases:**Connect to Couchbase or MongoDB to fetch product catalog and user activity data.**Database systems:**Integrate with SQL databases like MySQL or PostgreSQL for order history and transaction records.**APIs:**Pull data from e-commerce platforms like Shopify or WooCommerce for real-time inventory and sales data.**Cloud storage:**Access user-generated content stored in cloud services like AWS S3 or Google Cloud Storage for personalized recommendations.**Hybrid search:**Utilize Elasticsearch or Solr for a hybrid search approach that combines keyword search with vector-based semantic search to enhance the accuracy and relevance of search results. This seamless integration ensures that the recommendation system can effortlessly pull relevant data from diverse sources, providing users with personalized and accurate product suggestions. Moreover, LangChain’s support for multiple LLMs allows the developer to utilize GPT-4 for generating natural language recommendations and Claude for analyzing user behavior patterns. By leveraging the strengths of each model and the power of hybrid search, the developer can ensure that the recommendation system delivers highly relevant and timely product suggestions, enhancing the user shopping experience and boosting sales. ## Components of LangChain LangChain’s architecture comprises several essential components that facilitate the development of LLM applications. By leveraging these components, LangChain simplifies the process of building and deploying advanced LLM-based applications: **Data connectors:**These enable integration with various data sources, ensuring smooth data ingestion and processing from databases, APIs, and cloud storage.**Model integration:**LangChain supports multiple LLMs, including popular models like GPT-4 and BERT, allowing developers to choose the best fit for their needs.**Processing pipelines:**These tools help create and manage workflows for tasks such as data cleaning, transformation, and model training, ensuring efficient data processing and preparation.**Deployment modules:**LangChain offers tools for automating the deployment of applications, simplifying scaling and maintenance in production environments.**Monitoring and logging:**The platform provides real-time monitoring and logging tools that offer insights into application performance, helping ensure smooth and efficient operations. ### LangChain features LangChain is equipped with various features designed to make the development and deployment of LLM applications seamless and efficient. It supports multiple language models, providing the flexibility to choose the most suitable one for your project. The platform’s flexible data integration capabilities enable easy connection to diverse data sources, ensuring smooth data flow within your applications. LangChain’s robust pipeline management tools facilitate the creation and management of complex data processing workflows, ensuring efficient handling of tasks like data cleaning and transformation. LangChain Expression Language (LCEL) makes it easy to compose different components and chains together: “LCEL was designed from day 1 to support putting prototypes in production, with no code changes, from the simplest “prompt + LLM” chain to the most complex chains (we’ve seen folks successfully run LCEL chains with 100s of steps in production).” Automated deployment features simplify bringing applications to production, making scaling and maintenance easier. The platform is also designed for scalability, allowing applications to handle increasing volumes of data and user interactions. Real-time monitoring tools offer valuable insights into application performance, helping optimize and maintain efficiency. ### LangChain code example To illustrate the simplicity of the framework, here’s a short code snippet that shows how a pipeline in LangChain chains different stages together: ## LangChain use cases LangChain’s versatility makes it applicable to a variety of scenarios. It is particularly effective for creating chatbots and conversational agents capable of understanding and responding to user queries in natural language, thus enhancing customer interaction and support. **Other notable use cases include:** **Content generation:**Automate the creation of high-quality content for blogs, articles, and marketing materials, significantly reducing the time and effort required for content production.**Sentiment analysis:**Analyze text data to gauge customer sentiment and inform business decisions.**Document summarization:**Quickly extract key information from large documents, enabling efficient information retrieval.**Language translation:**Develop applications that translate text between different languages in real time, ideal for creating multilingual support systems.**Customer support automation:**Create systems that handle customer queries and support tickets automatically, improving response times and customer satisfaction. ## LangChain benefits Adopting LangChain offers numerous benefits that make it an attractive choice for developers and organizations. One of the primary advantages is simplified development; LangChain abstracts the complexities of working with large language models, making development faster and easier. This leads to cost efficiency, as it reduces the time and resources needed to build and maintain LLM applications. LangChain also offers enhanced flexibility, supporting a wide range of models and data sources, which allows for the creation of tailored solutions to meet specific needs. The platform’s scalability enables applications to handle increasing volumes of data and user interactions, ensuring they can grow with your business requirements. Built-in tools for monitoring and optimization ensure that your applications run efficiently, leading to improved performance. Additionally, LangChain’s streamlined development and deployment processes facilitate quicker delivery of applications, providing a competitive edge. ## How to get started with LangChain To get started, refer to the LangChain documentation for detailed guides and examples. Install the required LangChain modules so you are ready to write some code. The documentation covers various topics, including setting up language models, connecting to data sources, and constructing pipelines. Start by exploring the basic examples to understand how to create a simple pipeline. The docs also provide API references and advanced usage scenarios, helping you leverage the full power of LangChain for your specific needs. With the SDK and documentation, you can quickly build and deploy scalable AI applications. ## Couchbase LangChain integration LangChain integrates seamlessly with Couchbase, a high-performance NoSQL database, enhancing the handling and processing of large volumes of data. This integration allows developers to leverage Couchbase’s robust data management capabilities to store and manage data efficiently, which can then be accessed and processed by LangChain applications. Combining LangChain with Couchbase is especially beneficial for applications requiring fast data retrieval and real-time processing, such as chatbots and recommendation systems. Couchbase’s scalable data management allows for efficient handling of large datasets, while real-time data access ensures that data can be retrieved and processed quickly for responsive applications. This integration also contributes to enhanced performance, with Couchbase’s high throughput and low latency improving the overall efficiency of your applications. ## Key takeaways and additional resources In summary, LangChain is a versatile and powerful platform that simplifies the development of applications using large language models. Its integrated environment and robust features make it an ideal choice for developers seeking to build scalable and efficient solutions. LangChain’s tools for data connectivity, model integration, and deployment streamline the development process, allowing for quick and easy application creation. To get started with LangChain, sign up on the official website and explore the available documentation and tutorials. For additional resources, consider the following links: These resources provide valuable information and support as you begin working with LangChain. To learn more about concepts related to LLM and AI, you can visit our blog and concepts hub. ## FAQ **What is the purpose of LangChain?** LangChain provides a cohesive and flexible framework to simplify the development of applications that use large language models. **What is LangChain used for?** LangChain is used to develop applications such as chatbots, content generation tools, sentiment analysis systems, and more, all leveraging the power of large language models. **What is a LangChain agent?** A LangChain agent is an autonomous component within the platform that performs specific tasks, such as querying data, processing text, or interacting with other services to achieve a given goal. **What is the difference between LangChain and LlamaIndex?** LangChain focuses on providing a comprehensive platform for integrating and deploying large language models, whereas LlamaIndex is more focused on indexing and searching large-scale text data. --- # What Is Load Balancing? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-load-balancing/ Last modified: 2026-02-09T08:59:44+00:00 ## Load balancing definition Load balancing is like having a team of workers at a busy restaurant. Imagine the restaurant is a website, and the customers are the users trying to access it. Just like a host assigns customers to different seating sections to ensure no single waitperson is overwhelmed, load balancing distributes the user requests across multiple servers or resources to ensure smooth and efficient processing. This way, no single server gets too swamped with requests or sits idle while others are working hard. This page covers: - How does load balancing work? - Load balancing algorithms - Types of load balancers - Benefits of load balancing - Disadvantages of load balancing - Conclusion ## How does load balancing work? Load balancing is a process that distributes incoming network traffic evenly across a group of backend servers or resources. Balancing ensures that no single server bears too much load and decreases the risk of poor performance or outages. When a request comes in from a user, the load balancer decides which server in its pool to direct the request to. This process might involve evaluating which server is currently under the least strain. The criteria for the decision can include the current number of connections, the server’s response time, or its overall capacity. By evenly distributing the requests, load balancing helps maintain the speed and reliability of the network and ensures that each user request is processed efficiently. This approach is crucial for handling large volumes of web traffic and maintaining high availability and performance for web services. Implementing various load balancing algorithms optimizes the distribution process and enhances the stability of the network. ## Load balancing algorithms Load balancing algorithms are the rules or methods that efficiently distribute network traffic across multiple servers. These algorithms can be broadly categorized into two types, static and dynamic. Each type has its unique approaches suited to different network environments. **Static algorithms** distribute traffic without considering the current state of the servers, and they often use predetermined rules. **Dynamic algorithms** are more responsive and consider each server’s real-time load and performance to make better-informed decisions about traffic distribution. ### Static load balancing algorithms Static load balancing algorithms distribute network traffic evenly across servers using predetermined methods without considering the current state or performance of the servers. These algorithms are known for their simplicity and ease of implementation. Some common examples include: **Round-robin:**Distributes requests sequentially across all servers, ensuring an equal distribution over time. For example, you can use round-robin to distribute the load of a query over duplicate indexes.**Random:**Assigns incoming requests to any available server at random.**Hashing:**Uses a hash function to ensure that similar data consistently maps to the same node in a server cluster. For example, Couchbase Server uses vBuckets (shards) and the CRC32 hashing algorithm to distribute data effectively across a cluster without requiring a separate load balancing service. These static methods provide a straightforward, easy-to-configure approach to load balancing and are particularly effective in environments where servers have similar capabilities, the workload is consistently stable, and performance is a high priority. However, static load balancing is not the best choice for all use cases. Couchbase uses CRC32 for load balancing data storage ### Dynamic load balancing algorithms Dynamic load balancing algorithms are more sophisticated methods that distribute network traffic across servers by considering the current state and performance. These algorithms dynamically adjust to changing network conditions, server loads, and traffic patterns, making them ideal for environments with fluctuating workloads or diverse server capabilities. Key types of dynamic load balancing algorithms include: **Least connections:**Favors less busy servers by directing new requests to the server with the fewest active connections**Least response time:**Optimizes for speed by choosing the server with the shortest response time for recent requests**Resource-based load balancing:**Distributes requests to servers with the most available resources by considering their overall capacity or specific resources (like CPU and memory)**Weighted load balancing:**Assigns weight to servers based on capacity or performance metrics and sends more requests to higher-capacity servers Dynamic algorithms help ensure that no single server becomes a bottleneck, and they’re particularly useful in environments where server performance varies significantly or traffic spikes are common. The adaptability of dynamic load balancing makes it a preferred choice for many high-traffic, high-variability scenarios where maintaining performance and avoiding overloading servers is crucial. ### Static and dynamic load balancing pros and cons Static load balancing is simple to implement and offers predictability in traffic distribution, but it lacks the flexibility to adjust to sudden changes in server load or network traffic. Dynamic load balancing is adaptable and responsive, but it can be complex to configure and may introduce additional processing overhead. Couchbase’s CRC32 method is static, but Couchbase also offers multi-dimensional scaling (MDS), which allows you to scale individual database services separately. MDS provides more flexibility for managing traffic, including workload isolation and as much separation of query, data, indexing, search, analytics, and eventing services as you need. Couchbase’s multi-dimensional scaling provides a simplified configuration for balancing load on a per-service basis Couchbase Server and Couchbase Capella™ DBaaS don’t need an additional load balancer, but Couchbase’s Sync Gateway for mobile application data can benefit from a load balancer like NGINX for horizontal scaling. One benefit of using the cloud-managed version of Sync Gateway, Capella App Services, is that the load balancing is built in and doesn’t require additional deployment and configuration. This built-in balancing gives you one less service to manage, upgrade, and patch. ## Types of load balancers Each type of load balancer has unique advantages, and you should choose yours based on factors like network environment, performance requirements, scalability needs, and budget considerations. The main types of load balancers include: **Hardware-based load balancers:**These are physical devices designed for robust performance in high-traffic scenarios. They offer reliability, but at a higher cost and with physical deployment limitations.**Software-based load balancers:**These run on virtual machines or in cloud environments. They offer greater flexibility and easier scalability and are better suited for dynamic or changing workloads.**Cloud-based load balancers:**Provided by cloud service platforms, these integrate well with cloud services. They offer easy deployment and scalability without needing on-premises hardware.**Application load balancers:**Specialized for web applications, these operate at the application layer. They offer advanced traffic distribution based on content like URLs or headers. ## Benefits of load balancing Load balancing offers numerous benefits crucial for maintaining efficient, reliable, and robust network operations. These include: **Availability:** Load balancing enhances server availability by preventing individual servers from becoming overwhelmed and ensuring that no single point of failure disrupts the entire system. It also reduces response times and improves overall system performance. **Scalability:** Load balancing makes it easier to scale resources up or down in response to varying traffic loads. It ensures consistent performance during peak times and under changing demands. **Redundancy and failover:** If one server fails, load balancing can reroute traffic to other servers to ensure continuous service availability. **Maintenance and upgrades:** When servers are taken offline for updates, the load balancer can redirect traffic to other servers without disrupting service. Together, these benefits make load balancing an indispensable tool in modern network and web service management, ensuring smooth, uninterrupted service for users. ## Disadvantages of load balancing While load balancing brings significant advantages, it also comes with challenges. These include: **Complexity:** Implementing and managing a load balancing solution, especially in large and dynamic environments, can be complicated. This complexity often requires specialized knowledge and can increase hardware, software, and labor costs for setup and ongoing maintenance. **Latency:** The process of directing traffic through a load balancer can introduce a delay, although this is generally minimal. **Misconfiguration:** Misconfigured load balancing can lead to poor traffic distribution or even downtime. **Single point of failure:** If the load balancer fails without a proper failover system, this can lead to significant service disruptions. These disadvantages highlight the importance of careful planning, robust configuration, and ongoing management when you deploy load balancing solutions. ## Conclusion Understanding the nuances of load balancing algorithms, their types, and their impact on network performance is essential for efficient network management. While static algorithms like round-robin and Couchbase’s CRC32 offer simplicity and predictability, dynamic algorithms like least connections and resource-based load balancing provide adaptability in fluctuating environments. When considering load balancing, it’s essential to weigh the pros and cons of each type of algorithm. Static methods are straightforward but less flexible, whereas dynamic methods are adaptable but more complex. To find the right fit for your network needs, you should also explore various hardware-based, software-based, cloud-based, and application load balancers. The key to effective load balancing lies in choosing the right strategy and tools to align with your network’s requirements and challenges. For further exploration and detailed insights: - Dive into Couchbase’s documentation on the CRC32 algorithm and multi-dimensional scaling to understand how to implement static load balancing in specific scenarios - Review resources on dynamic load balancing techniques for a deeper understanding of handling high-traffic and variable environments - Evaluate different load balancer products and services like NGINX, AWS Elastic Load Balancing, and Azure Load Balancer to compare their features, scalability options, and integration capabilities with your existing network infrastructure - Explore additional concepts related to Couchbase --- # What Is Mobile Analytics? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-mobile-analytics/ Last modified: 2026-02-09T09:18:44+00:00 ## What is mobile analytics? Mobile analytics, also known as mobile app analytics, refers to the process of analyzing how users interact with a mobile application at scale. By monitoring overall app interactions with feature usage, friction points, crash rates, process bottlenecks, and abandonment, mobile analytics provides critical information that app developers can use to improve user experience (UX). Mobile analytics not only helps uncover app usability issues but also monitors the effectiveness of improvements, allowing app developers to make informed UX decisions based on usage metrics quickly. The better the UX, the more users an application attracts and retains. For these reasons, mobile analytics should be a vital part of the mobile app deployment and maintenance process, helping ensure that apps succeed and continue to evolve toward the needs and expectations of their users. Continue reading to dive into the differences between web and mobile analytics, types of mobile analytics, specific metrics you should track, and how teams in an organization can utilize mobile analytics to their benefit. - Web analytics vs. mobile analytics - Types of mobile analytics - Mobile analytics metrics - How different teams use mobile analytics in an organization - Mobile analytics best practices - Mobile analytics challenges - How to track mobile app analytics - How Couchbase Mobile can help ## Web analytics vs. mobile analytics While both are about analyzing how users interact with applications, web analytics is different from mobile analytics. Web apps have very different access and interaction patterns and metaphors than mobile apps. For example, interacting with web apps involves clicking links and scrolling through pages, while interacting with mobile apps is based on gestures such as taps, swipes, and slides. As such, each analytics effort has distinct differences. To break it down further: **Web analytics**measures and monitors interactions like views, ad clicks, top pages, total revenue, and event tracking.**Mobile analytics**measures and monitors metrics like application speed and uptime performance, as well as in-app engagement, monetization efforts, and UX bottlenecks, and must consider the differences between each mobile platform’s user interaction metaphors. Because of the differences, mobile analytics is not as one-size-fits-all as web analytics. While web analytics metrics apply to pretty much all web apps, many mobile analytics metrics may not apply to every mobile app. Because of this, you should have clear goals and a strategy outlined beforehand to ensure you’re tracking the metrics most relevant to measuring success. ## Types of mobile analytics There are many types of mobile analytics metrics to measure; however, the ones you employ depend on how your app works, its platforms, and the features powering the user interface (UI). Here are a few typical examples: **App performance** Measuring the performance of a mobile app involves capturing things like initial load times, speed of transition between screens and tasks, and error rates. Metrics like these help app developers understand where to spend their time to improve performance. **In-app engagement** Measuring user activities like time spent on a given screen or set of tasks can uncover UX bottlenecks and areas for usability improvements. **App monetization** Many app developers offer free versions and monetize them with in-app purchases and premium for-pay features. By measuring monetization efforts across time and demographics, developers can see what works best for monetization strategies for which types of users. **Mobile advertising** Analyzing the engagement rate of in-app advertising across user demographics benefits marketers, who can gauge the effectiveness of ads based on actual engagement. ## Mobile analytics metrics Metrics to measure for mobile analytics vary, but some of the most common include: **Downloads or install volume:**Tracking the number of downloads for a mobile app gives you a sense of its adoption rate and overall popularity.**Monthly and daily active users (MAU/DAU):**Tracking average user volume in daily and monthly time frames provides you with a sense of the overall usage of an app.**Retention rate:**Monitoring repeat usage over time helps determine app stickiness and popularity.**Conversion rate:**Tracking the volume of users who converted from free to paid or basic to premium tiers helps measure the success of your marketing efforts and provides insight into areas needing improvement.**Abandon rate:**Measuring the number of uninstalls, where they occurred in the app UX, and any associated ratings or feedback can help developers improve issues that lead to abandonment. ## How different teams use mobile analytics in an organization Depending on your organizational role or focus area, you may rely on different mobile analytics metrics and techniques. For example, what’s important to a product team might not be as important to a UX/UI, marketing, or engineering team. It’s also important to consider that upper management may have different goals than teams performing day-to-day tasks and might determine success via other metrics. Here are some of the ways teams within an organization may use mobile analytics: - Product managers and their teams rely on analytics to reveal the popularity of specific features and attributes of their apps. Analytics helps them decide where to invest time and effort in innovations and which features to sunset or improve. Through measurement, they can see the effectiveness of changes and adjust quickly. - UI/UX teams use techniques like A/B testing to measure feature discoverability and determine the best UI paths for optimal user experience. - Marketing teams use mobile analytics to gauge the effectiveness of app promotions and ad campaigns, allowing them to amplify or adjust messaging and tactics based on analysis results. - Engineering teams use mobile analytics to understand performance issues and code problems that lead to crashes and poor UX. ## Mobile analytics best practices Following mobile analytics best practices ensures you get the most out of your analysis efforts and don’t overlook crucial issues. Always be sure to: - Plan carefully and establish goals before beginning a new project. - Get executive buy-in early to streamline participation from stakeholders and their teams. - Identify metrics for analysis and clearly define what constitutes success. - Ensure privacy for sensitive data. - Take immediate action on analysis findings and track improvement or decline. ## Mobile analytics challenges Mobile analytics challenges often revolve around data. The most common obstacles include: **Data gathering:**If you don’t capture data from numerous devices at scale, you could overlook valuable insights into areas for improvement and potentially lose out on revenue.**Data volume:**You must have a foolproof way to store and handle large amounts of data for analysis.**Data cleanliness:**Data must be clean, consistent, and uncomplicated for traceability and actionable insights. Understanding these fundamental challenges upfront will help you prepare appropriately. ## How to track mobile app analytics There are many different key performance indicators (KPIs) to consider with mobile analytics; however, the most important ones to focus on are those that determine retention, growth, and abandonment rates. You can use these KPIs to analyze and predict future spending and growth. A poor user experience is the primary cause of mobile app abandonment. Because of this, it’s crucial to monitor navigation smoothness and speed and measure items like average wait time for common tasks such as installation, updates, and saving state, as well as crashes and unexpected behavior. It’s also important to track interaction with campaign ads and offers for marketing efforts. You can simplify tracking by segmenting users into demographic categories like age range, geographic region, and occupation. What works for users in some professions or areas of the country may not work for others, so it’s crucial to ensure you analyze these nuances properly to determine alternate courses of action. Lastly, you should consider why things are happening, not just what happened. If a crash happens intermittently during a specific task, look at the entire progression of the interaction. Are some users tapping too frequently while waiting and overloading your process handling, leading to the crash? If that is the case and the task is prone to frustrating delays, look into making it faster or displaying a wait indicator. ## How Couchbase Mobile can help Couchbase Mobile is helpful for mobile analytics initiatives because it captures data on device and syncs it to Couchbase Capella™ in the cloud, where it can be analyzed in aggregate at scale using Capella Columnar services. Specifically, our mobile offering provides: **A cloud-native database:** Capella Columnar allows real-time data analysis on the same platform as operational application workloads. You can quickly act on the information gained from analytics to make changes to your application. It can also quickly scale to meet changing application or analytical needs. This is ideal for the real-time operational analysis required for mobile analytics. **An embedded database:** Couchbase Lite is the embeddable version of Couchbase for mobile and IoT apps that stores data locally on the device. It provides full CRUD and SQL query functionality and support for vector search and predictive queries for calling AI models at the edge. **Data synchronization from the cloud to the edge:** A secure, hierarchical gateway for data sync over the web, as well as peer-to-peer sync between devices, with support for authentication, authorization, and fine-grained access control. ### Additional mobile resources If you’d like to continue reading more about mobile related to mobile applications and analytics, you can visit our blog and concepts hub and review the following resources: Capella Columnar product page Why you need a mobile database What is native mobile development? (benefits, tools, resources) Offline-first: A mindset for developing faster, more reliable mobile apps --- # What Is Multicloud? | Concepts Source: https://www.couchbase.com/resources/concepts/what-is-multicloud/ Last modified: 2026-02-09T09:27:53+00:00 ## Multicloud definition Multicloud refers to an organization using multiple cloud computing platforms and services from different providers to meet its computing needs. Organizations choose a multicloud strategy to distribute workloads, applications, and data across multiple cloud environments. These cloud environments can include any combination of public, private, and hybrid clouds. A multicloud approach takes advantage of the unique features, capabilities, and cost structures offered by different cloud providers. It also allows an organization to avoid vendor lock-in, reduce reliance on a single provider, and choose the best services on the market for specific requirements. To learn more about multicloud, continue reading. - Why you should use multiple clouds - Multicloud vs. hybrid cloud - Multicloud management - Multicloud benefits - Multicloud challenges - The value of multicloud ## Why should you use multiple clouds? A multicloud strategy offers an effective way to improve the stability and resilience of your systems while gaining more control over your costs and optimizing your application performance. By distributing your technology capabilities across multiple cloud providers, you can: **Reduce risks** - In simple terms, you don’t have all your eggs in one basket. You eliminate the danger of dependency on a single provider to keep your systems up and running, and you’re not held hostage to their pricing structures or technology limitations. **Lower TCO** - The flexibility of a multicloud architecture enables you to mix and match services from various cloud providers. By selecting the best services and prices for specific use cases, you can optimize your overall total cost of ownership. **Improve application performance** - You can optimize your data storage and processing by choosing cloud providers in regions and zones closer to your applications and users. Closer proximity improves performance and reduces latency. ## Multicloud vs. hybrid cloud The terms multicloud and hybrid cloud are sometimes mistakenly used interchangeably. While the two concepts are related, and the strategies are often combined, they are distinctly different. ### Multicloud The key aspect of multicloud is using multiple cloud providers to meet different business and technology needs. Multicloud does not necessarily require integration between the different cloud environments, and each cloud platform typically operates independently. ### Hybrid cloud Hybrid cloud refers to an integrated computing environment that combines both public and private cloud infrastructures. It allows organizations to maintain a portion of their workloads and data in a private cloud environment dedicated to their exclusive use, while also using public cloud services for other purposes. The hybrid cloud approach enables seamless data and application mobility between the private and public clouds, providing flexibility and scalability. It enables businesses to keep sensitive or critical workloads in a private cloud for enhanced security and control while leveraging the public cloud for burst capacity, cost-effective scalability, or accessing specific services. ### Synergy of multicloud and hybrid cloud Hybrid cloud and multicloud approaches complement each other and are often combined in enterprise settings. A hybrid multicloud architecture incorporates private and public cloud services from two or more cloud vendors to take advantage of both deployment models. ## Multicloud management The primary challenge of multicloud is managing the complex differences and interdependencies of multiple environments. It requires expertise in integrating and orchestrating different cloud services, ensuring data interoperability, managing security and access controls across various platforms, and monitoring costs and performance. Managing multiple clouds is especially complex because different cloud platforms, services, and management interfaces all operate uniquely. Key areas to plan for include: **Centralized visibility and control** - Implementing management tools or platforms that provide a unified view of all your cloud resources is critical. Administrators must be able to monitor performance, track costs, manage security, and enforce policies consistently across different cloud providers. **Interoperability and integration** - Integration tools, APIs, and middleware can enable interoperability and seamless communication between your various cloud platforms. Integration services help streamline data flows, automate workflows, and ensure smooth operations across different clouds. **Security and compliance** - Security tools, such as identity and access management (IAM), security information and event management (SIEM), and data loss prevention (DLP) solutions, can help ensure robust security across multiple cloud providers. You also need to address compliance requirements, taking into consideration the specific regulations that apply to your organization and its data in different regions. **Cost optimization** - To optimize across multiple cloud providers, you’ll need to implement tools that analyze usage patterns and manage costs. The goal is to match instance types and sizes to your workload performance and capacity requirements at the lowest possible cost. **Automation and orchestration** - Automation of deployment, scaling, and application and infrastructure management alleviate major operational headaches for development teams, and the benefits are compounded when multiple cloud environments factor into the equation. Automation helps streamline operations, reduces manual errors, and enhances overall efficiency. **Service-level agreements (SLAs) and vendor management** - When working with multiple cloud providers, it’s essential to establish clear SLAs and effectively manage relationships with each vendor. This process includes monitoring and evaluating vendor performance, negotiating contracts, understanding support mechanisms, and ensuring that the services provided align with your organization’s requirements and expectations. Overall, multicloud management requires a combination of technical expertise, robust management tools, and effective governance practices. ### Any cloud, any workload, any location Couchbase Capella™ is a fully managed and automated DBaaS designed to make multicloud management as simple and painless as possible. You can use our multicloud control plane to easily deploy and seamlessly manage clusters and nodes across AWS, Azure, and Google Cloud. As a cloud-native database, Capella is designed to take full advantage of the cloud to provide maximum flexibility, availability, and scalability for your modern applications. It fuses the agility and performance of NoSQL with the strength of an RDBMS, provides mobile syncing app services, and lets you use your familiar SQL skills for JSON. ## Multicloud benefits The challenges of a multicloud approach shouldn’t be taken lightly, but for businesses seeking to optimize their cloud infrastructure, the many advantages of multicloud usually outweigh the inconveniences. The significant benefits of multicloud include the following: ### Vendor diversity and avoiding vendor lock-in By using multiple cloud providers, a business avoids becoming overly dependent on a single vendor. Cloud diversification reduces the risk of becoming tied to a specific cloud provider’s services, technologies, or pricing models. When you’re already using the services of multiple providers, it’s easier to negotiate better terms or to leave for a better deal if you need to. ### Best-of-breed services Different cloud providers excel in different areas and offer unique services and capabilities. For example, one provider might have exceptional data analytics capabilities, while another specializes in machine learning or IoT services. By selecting the best cloud provider for specific workloads or applications, a business can optimize performance, scalability, and cost-efficiency for each aspect of its operations. ### Redundancy and disaster recovery By distributing workloads and data across multiple cloud platforms, a business can mitigate the impact of outages or service disruptions. If one of your cloud providers experiences issues, you can seamlessly shift your applications and data to another provider to ensure continuity and minimize downtime. ### Regional presence and data sovereignty Different cloud providers have data centers in different global regions. If your business has specific compliance or data sovereignty requirements, a multicloud strategy allows you to host data in different geographic locations to comply with regional regulations. This ensures that your sensitive data remains within specific jurisdictions while adhering to local laws and regulations. ### Cost optimization Having multiple cloud providers gives you the opportunity to continually compare prices, negotiate better deals, and optimize costs based on the specific needs of each workload. For new projects, you can select the most cost-effective cloud service that aligns with your budget and requirements. ### Innovation and future-proofing By embracing multiple cloud providers, your organization can continually explore new technologies, services, and features offered by each one. This variety promotes experimentation and agility, and the flexibility allows your business to adapt more quickly to emerging trends and take advantage of cutting-edge advancements in cloud computing. ## Multicloud challenges As explained above, the biggest challenge of a multicloud strategy is successfully managing multiple cloud environments in a consistent, efficient, and integrated manner. Before you can manage different environments cohesively, you need to connect them. This aspect of integration is known as multicloud networking (MCN). Multicloud networking requires specialized tools and techniques to ensure seamless communication, data transfer, and security between various cloud environments. It often involves complex configurations, dynamic workload management, and optimized routing to enable efficient resource usage across multiple cloud platforms. Here’s a more detailed look at other top challenges of managing and maintaining a successful multicloud strategy: ### Complexity of integration Managing and integrating multiple cloud platforms requires expertise in connecting different systems, ensuring data interoperability, and managing communication between various cloud environments. It involves dealing with different APIs, management interfaces, and security mechanisms. ### Security and compliance Each cloud platform may have its own security controls, access management systems, and compliance requirements. Ensuring data privacy, identity management, and regulatory compliance across different clouds requires diligent planning, robust security measures, and effective governance practices. ### Governance and control With multiple cloud providers, it becomes crucial to establish standardized policies, enforce consistent controls, and monitor operations across all platforms. Lack of centralized visibility and control can result in difficulties in managing costs, enforcing policies, and ensuring adherence to organizational standards. ### Skill and expertise gap Effectively managing a multicloud environment requires skilled professionals with expertise in different cloud platforms, integration techniques, security practices, and cost optimization strategies. The scarcity of skilled personnel with the necessary knowledge across clouds can be a hurdle for organizations adopting a multicloud strategy. ### Vendor lock-in risks While multicloud strategies aim to prevent vendor lock-in, there’s still a risk of becoming tied to specific technologies or services offered by different cloud providers. Migrating workloads or data between clouds can be challenging, and dependencies on certain cloud-specific features or services may limit the ability to switch providers easily. You must carefully evaluate the portability of your applications and data to mitigate vendor lock-in risks. ## The value of multicloud Overall, multicloud offers flexibility, resilience, and the ability to leverage the strengths of multiple cloud providers, enabling organizations to achieve their specific business goals efficiently. A multicloud environment introduces the complexity of integrating multiple cloud providers, but the significant advantages offset the challenges for many organizations. Learn more about popular cloud strategies: - Public Cloud vs. Private Cloud - Multicloud vs. Hybrid Cloud: Differences, Benefits, Strategies - A Multicloud Security Overview (Best Practices & Challenges) - How to Plan a Cloud Migration (Strategy, Tips, Challenges) Learn how Couchbase makes multicloud easier: --- # What Is a Workload? | Concepts Source: https://www.couchbase.com/resources/concepts/workloads/ Last modified: 2026-05-22T20:42:07+00:00 ## What is a workload? In computing, a workload refers to the tasks, processes, or jobs a system, service, or application executes. Workloads are not just about applications; they represent the activity or demand on the underlying infrastructure. In the rest of this resource, we’ll explore the difference between workloads and applications, common types of workloads, and how to manage, automate, and protect workloads in modern IT environments. We’ll also highlight real-world examples to make these concepts concrete. Continue reading to learn more. - Workloads vs. applications - Types of workloads - Examples of workloads - Workload management - Workload protection - Key takeaways and additional resources ## Workloads vs. applications At first glance, workloads and applications may seem interchangeable, but they serve distinct purposes in system design. An application refers to the software itself, whether it’s a web app, mobile app, or desktop software. Workload, however, is what the application demands from the underlying system, such as central processing units (CPUs), memory, or disk space. Think of an e-commerce application. The app’s workload is determined by the number of transactions (or orders) processed per minute, concurrent users, and the backend processes handling inventory updates, user sessions, or recommendation engines. The app is static in concept, but its workload fluctuates based on demand. Understanding this difference is critical when designing systems, especially for scalability and performance. While the application may be built with a certain number of features, its workload will change as user activity increases, new features roll out, and infrastructure evolves. ## Types of workloads Here are some common types: 1. **Transactional workloads:** Refers to systems that process high volumes of transactions, such as databases or online payment platforms. These workloads are characterized by their low latency requirements and high reliability. 2. **Batch workloads:** These workloads execute a series of jobs that can be processed in batches. Data analytics pipelines, nightly reporting, and extract, transform, load (ETL) jobs are good examples of batch workloads. 3. **Interactive workloads:** These workloads involve real-time activity, like interaction with end users, in both web and mobile apps. They demand quick response times to user inputs. 4. **Compute-intensive workloads:** Refers to applications that require significant processing power, such as machine learning model training, video rendering, or simulations. 5. **Data-intensive workloads:** Systems that must process, store, and retrieve massive amounts of data, such as large-scale databases or big data platforms. ## Examples of workloads **E-commerce websites:**This workload involves user requests for products, database queries to fetch inventory details, processing of payment transactions, and shipping updates.**Machine learning model training:**Requires intensive CPU or graphics processing unit (GPU) resources to train models on large datasets. This is often categorized as a compute-intensive workload.**Streaming services:**Platforms like Netflix handle interactive workloads where video is streamed on demand to users. This involves a data-intensive backend storing large multimedia files.**Real-time fraud detection:**A common use case for a financial application involves analyzing real-time transactions to detect potential fraud - this streaming workload processes thousands of transactions per second during peak times. ## Workload management Workload management involves distributing tasks within an available resource system, such as a CPU, memory, and storage, to ensure efficient performance. Proper workload management is crucial to applications running efficiently and effectively. Tools like OpenPBS and Slurm allow you to manage the workload in a cluster environment because they schedule tasks and assign resources dynamically within different nodes. These tools optimize hardware resources by scheduling workloads so that high-priority jobs receive resources and less important tasks can be delayed or queued until resources become available. ### Workload automation Scalable workload management requires automation. Workload automation refers to the process of automatically scheduling, running, and managing tasks inside an application or system. Due to its scalability, it supports resource optimization, minimizes hands-on effort, and delivers consistent performance, particularly in dynamic environments. #### Key concepts in workload automation **Task scheduling:**OS-level automation often involves scheduling tasks. Once configured with rules, such as specific times, events, or system thresholds, it can invoke tasks automatically. Examples of simple OS-level automation include cron jobs in Linux or a task scheduler on Windows.**Resource scaling:**Automation platforms like Kubernetes scale resources dynamically because of real-time demand. For instance, if there’s a spike in users on a web application, Kubernetes will automatically roll out new instances (containers) to balance the load and distribute it evenly.**Error handling:**Automated systems can handle task failures. Once a task fails, automation tools can retry, log an error, or cause an alert for manual input. That way, downtime is minimized and continues uninterrupted while the system does what it should.**Dependency management:**Because workload automation allows you to specify which tasks depend on what, it means you can ensure processes are executed in the proper sequence. Consider a data processing pipeline where ETL jobs have to run in order - extract must precede transformation and loading. #### Tools for workload automation 1. **Kubernetes:** The leading platform for managing containerized workloads, Kubernetes automates the deployment, scaling, and management of containerized applications. It uses controllers to monitor the system’s state and adjusts resources to match demand. 2. **AWS (Amazon Web Services) Lambda:** Serverless platforms like AWS Lambda allow you to run code in response to events without provisioning or managing servers. This automation model enables workloads to scale automatically and efficiently in response to user interactions, scheduled tasks, or other triggers. 3. **Apache Airflow:** Airflow is a popular open source platform for programmatic authoring, scheduling, and monitoring workflows. It’s especially useful for batch workloads where tasks must run in sequence or at specific times (e.g., data pipelines and ETL jobs). 4. **Terraform:** Terraform can automate workloads by provisioning and managing infrastructure as code (IaC). It can integrate with platforms like AWS and Google Cloud to automate scaling policies, provision servers, and manage complex infrastructure workflows. ## Workload protection With growing complexity, workloads are increasingly vulnerable to security threats, which makes workload protection vital. Workload protection involves securing applications, their data, and the infrastructure that supports them. A common strategy involves using zero trust security models, where every entity interacting with a workload (whether user or application) is authenticated and authorized before accessing resources. Tools like AWS Shield can help protect workloads from distributed denial of service (DDoS) attacks, while container security solutions like Falcon monitor Kubernetes workloads for anomalies. Cloud workload protection (CWP) involves continuously monitoring and removing threats from cloud workloads and containers. A CWP platform (CWPP) is a security solution that protects workloads of all types in any location, offering unified cloud workload protection across multiple providers. Cloud providers usually offer native workload protection services, such as data encryption at rest and in transit, identity and access management (IAM), and network isolation through virtual private clouds (VPCs). ## Key takeaways and additional resources **Workload:**Refers to the demand placed on a system, whereas an application is software.**Types of workloads:**Range from transactional and interactive to batch, compute-intensive, and data-intensive. Each workload should be handled according to the demands placed on it.**Workload management:**The efficient management of workloads is often automated. The aim is to utilize resources based on the system’s demands.**Protecting the workload:**Protection from threats to the workload is important, and cloud-native tools and security models help cater to this. We also leave you with some adjacent resources to help your business build and manage applications at scale. - High Availability Architecture: Requirements & Best Practices - What Is a Distributed Application? Definition and Examples You can visit our blog and concepts hub to learn more about workload-related concepts from Couchbase. --- # Write-Back Cache | Concepts Source: https://www.couchbase.com/resources/concepts/write-back-cache/ Last modified: 2026-02-09T09:22:42+00:00 ## What is write-back cache? Write-back cache is a caching strategy that enhances system performance by temporarily storing data in a high-speed medium (typically memory) and deferring updates to the primary storage (typically disk). Unlike other caching strategies, write-back prioritizes speed by first writing data to the cache and synchronizing with the main storage asynchronously. This strategy reduces latency for write operations but requires careful management to ensure data consistency. This resource will explore different caching strategies, compare write-back with other approaches, discuss its benefits and challenges, and provide guidance on when to use it. Whether you’re an application developer or architect, understanding write-back cache can help you optimize performance and scalability in your systems. - Caching strategies - Write-back vs. write-through - Write-back cache benefits and challenges - What about write-back data loss risks? - Write-back cache use cases - Choosing between write-back and write-through cache - Key takeaways and resources ## Caching strategies Caching is the practice of temporarily storing copies of data for faster retrieval. The most common example is RAM+disk. RAM is typically faster than disk but is also more expensive and limited. Using RAM to cache frequently accessed data can improve performance. Different caching strategies suit different use cases, balancing speed, consistency, and complexity. ### Write-back cache Write-back cache first stores data in the cache and queues it to be written to the primary storage at a later time. When a write occurs, it’s immediately considered successful as long as the data is stored in the cache, not waiting for the disk to be updated. The system asynchronously updates the main storage. Subsequent reads pull from memory, which provides another performance benefit. Write-back is particularly useful for applications requiring high throughput. Of course, there is a risk that the write to disk will fail. There are many ways to reduce that risk (we’ll explore that later), although mathematically, it will always be a risk. ### Write-through cache In a write-through cache, data is written to both the cache and the primary storage “simultaneously” (through a transaction/lock mechanism). This approach enforces data consistency across all storage layers at the cost of higher latency for write operations. ### Write-around cache Write-around cache bypasses the cache entirely for write operations, storing data directly in the primary storage. The cache is only updated when data is read. This strategy minimizes the overhead of writing to the cache but may lead to cache misses for frequently updated data. Write-around cache is well suited for scenarios with infrequent data updates, or situations where the data being written won’t be accessed immediately. Overall, write-around cache is used less frequently than write-back and write-through. ## Write-back vs. write-through Write-back and write-through caching represent two ends of the spectrum in terms of speed and consistency. **Write-back caching**prioritizes performance by deferring updates to primary storage, which reduces write latency. However, the risk of data loss increases if the cache fails before synchronizing with storage.**Write-through caching**emphasizes data consistency by ensuring every write operation updates both the cache and the main storage. The trade-off is increased latency and potentially higher resource usage. Choosing between the two depends on your application’s tolerance for latency and consistency. ## Write-back cache benefits and challenges ### Benefits **Enhanced write performance:** Writing data to cache is faster than writing to slower primary storage. **Reduced storage traffic:** As writes to the primary storage are batched or delayed, overall I/O (input/output) traffic decreases, reducing strain on storage systems. **Improved read performance:** Frequently accessed data remains in the cache, speeding up read operations. ### Challenges **Data consistency risks:** Data may be lost if the cache fails before synchronizing with storage. **Complex cache management:** Ensuring that cache and storage remain synchronized requires robust error handling and monitoring, especially if you integrate two different data systems (a database and a separate key-value cache store, for instance). **Durability:** Applications requiring immediate persistence might find write-back unsuitable unless there are ways to mitigate risk (which a caching system like Couchbase provides, for instance). ## What about write-back data loss risks? Couchbase provides a durable and distributed architecture to reduce the risk of data loss. The default setting in the Couchbase SDK is for writes to be completely asynchronous, meaning you risk losing data if a server fails. However, by simply increasing the durability level to “majority,” the operation becomes synchronous, reducing the risk of data loss (data loss would result from multiple servers failing simultaneously during the operation). Further, durability requirements can be increased to “majorityAndPersistActive” and “persistToMajority.” These make data loss even less likely (widespread server failure and disk loss during the operation would have to occur for data loss). In any of the above situations, data loss would only occur during the failure event. With increased durability, the risk still exists mathematically, in the same way that winning the lottery is possible. These settings also increase latency, but in a complex system, some operations benefit more from performance, and some require more durability. Write-back caching can prioritize certain data types (e.g., purchases need the highest durability, and steady-state log data is a lower priority). Couchbase’s write-back system and durability options give you the flexibility that write-through doesn’t. ## Write-back cache use cases Write-back cache is well suited for scenarios where write performance is critical and occasional delays in consistency are acceptable. Use cases include: **Gaming and user session management:**It can be used for multiplayer games and web applications that store session or player data to provide fast experiences with minimal latency.**E-commerce systems:**Shopping cart, browsing, user preferences, and other e-commerce operations are cached for speed, while less frequent but more critical purchases can use increased durability.**Video streaming platforms:**It can be used to cache metadata, such as watch history or recommendations, for faster access.**Social media:**Couchbase is a core technology of LinkedIn’s caching architecture, serving up profiles and social media content faster. A properly built caching system with a write-back approach, like Couchbase, is well suited for both performance and data reliability. ## Choosing between write-back and write-through cache The decision to use write-back or write-through caching depends on your application’s requirements. Consider the following: **Performance vs. durability:**Write-back is ideal when write speed is a priority and risks can be reduced (e.g., Couchbase’s durability options). Write-through can be adequate for systems where read operations far outweigh write operations.**Failure tolerance:**Systems with limited tolerance for data loss should avoid write-back unless additional redundancy mechanisms are in place (e.g., Couchbase’s distributed architecture).**Scalability:**Write-back caching is valuable in architectures where scalability is crucial. By reducing write loads to primary storage, systems can handle more concurrent users and improve responsiveness. ## Key takeaways and resources - Write-back cache provides superior write performance by delaying synchronization with primary storage, but it comes with risks to data consistency that a distributed system with durability options can address. - Write-through cache ensures data integrity by writing simultaneously to cache and storage, making it suitable for read-heavy applications where flexibility isn’t necessary. - Choosing the right caching strategy requires understanding your system’s performance needs, consistency requirements, and tolerance for risk. ### Suggested next steps - Explore Couchbase’s memory-first architecture, which implements caching strategies like write-back for enhanced performance. - Learn more about durable writes to mitigate risks associated with caching. - Review our blog and concepts hub to keep learning about topics related to caching. --- # What Is Zero-ETL? | Concepts Source: https://www.couchbase.com/resources/concepts/zero-etl/ Last modified: 2024-12-13T06:35:29+00:00 ## What is zero-ETL? Zero-ETL (extract, transform, and load) eliminates the need for traditional, costly ETL processes by allowing data to be seamlessly transferred and analyzed across systems in real time. It enables direct querying across platforms without relying on complex data pipelines and intermediate storage. Continue reading this resource to learn more about how zero-ETL works, its components and functions, and how it compares to traditional ETL methods. You’ll also learn about zero-ETL’s benefits and use cases. Additionally, you’ll find a list of tools that enable zero-ETL. - How zero-ETL works - Components of zero-ETL - Traditional ETL vs. zero-ETL - Benefits of zero-ETL - ETL challenges (and how zero-ETL solves them) - Use cases for zero-ETL - Zero-ETL tools - Key takeaways and resources ## How zero-ETL works Imagine an e-commerce platform using a cloud database (e.g., Couchbase Capella™) for transactional data and a cloud data warehouse (e.g., Amazon Redshift) for analytics. Here’s how the data flows with zero-ETL: ### User transaction occurs A customer purchases an item on the e-commerce platform. This action generates a transaction record in the operational database (Couchbase Capella). ### Automatic synchronization Without traditional ETL, the operational database automatically replicates this transaction data into the cloud data warehouse (Amazon Redshift) in near real time through Kafka Connect. This happens through a native integration provided by the cloud service (e.g., Couchbase Capella zero-ETL integration with Kafka). ### Data compatibility The data arrives in the warehouse without requiring complex transformation, as the systems are configured to share compatible formats (e.g., columnar storage or JSON). Any lightweight transformations required, like column renaming, are handled inline. ### Instant availability for analytics As soon as the data reaches the warehouse, it becomes available for querying, analytics, and reporting. Analysts can immediately access updated dashboards or run ad hoc queries using tools like Tableau or Microsoft Power BI. This seamless data flow from the source system to the target system eliminates the need for batch ETL jobs, reduces latency, and simplifies maintenance, making zero-ETL a powerful approach for modern data ecosystems. ## Components of zero-ETL Zero-ETL relies on a combination of technologies and approaches to streamline data integration without traditional ETL processes. Here are the key components: ### Source systems Source systems include applications, transactional systems, and operational databases. Examples are Couchbase Capella, Microsoft SQL Server, Amazon Aurora, and MongoDB Atlas. Source systems produce data and provide mechanisms (like event streams or change data capture) for synchronizing data in real time. ### Change data capture (CDC) and data streaming CDC and data streaming identify and record source system changes like deletions, updates, and inserts in real time. CDC captures incremental changes in a database and forwards them to the target system. Examples of tools that facilitate the CDC process include Kafka Connect, Debezium, and Amazon Web Services (AWS) Database Migration Service (DMS), which includes proprietary CDC features. Data streaming mechanisms ensure data is delivered in real time as it changes. Examples of data streaming tools include Apache Kafka and Amazon Kinesis. ### Target systems Target systems like data warehouses, analytics platforms, and databases receive and store data for further use. Examples include Amazon Redshift, Snowflake, and Google Cloud BigQuery. Target systems directly consume data without requiring significant preprocessing transformations. ### Real-time integration tools and connectors Real-time integration tools and connectors act as middleware, facilitating direct data flow between source and target systems. These are often built into modern cloud ecosystems. Examples of native integration tools include: - Amazon Aurora zero-ETL integration with Amazon Redshift - BigQuery Data Transfer Service - Kafka Connect for streaming data directly into warehouses Real-time integration tools and connectors efficiently handle data movement without requiring separate ETL pipelines. ### Data format and compatibility Zero-ETL relies on standardized or compatible data formats to minimize the need for transformations and ensure smooth integration. Examples of formats include: **Structured formats:**Apache Parquet, Apache Avro, and comma-separated values (CSV)**Semi-structured formats:**JSON (JavaScript Object Notation) and XML (Extensible Markup Language)**Binary formats:**Protocol Buffers (Protobuf) and MessagePack ### Real-time query engines Real-time query engines and tools allow data to be analyzed directly in the target system without requiring intermediate steps. Examples include Amazon Athena and BI tools like Tableau or Power BI. These tools enable real-time querying of integrated data, bypassing the need for data preparation workflows. ## Traditional ETL vs. zero-ETL The table below highlights the key differences between the two approaches regarding complexity, infrastructure, cost, and other aspects. Aspect | Traditional ETL | Zero-ETL | |---|---|---| | Process | Extract data, transform it in staging, load it into the target system | Direct data synchronization between systems happens in real time | | Latency | Batch processing causes delays | Near real time or instant updates | | Complexity | Involves multiple stages and tools, increasing complexity | Simplifies integration with fewer steps and tools | | Infrastructure | Requires separate ETL tools and infrastructure for pipelines | Often built into modern cloud platforms or APIs | | Data availability | Data is only available after ETL jobs are complete | Data is continuously updated and always available | | Transformation | Transformations are handled in staging or ETL tools | Inline or minimal transformations occur during sync | | Use case suitability | Ideal for large-scale batch operations | Best for real-time analytics and operational use cases | | Cost | Higher due to tool maintenance, computing, and storage requirements | Lower as it reduces pipeline maintenance and resource use | | Scalability | Challenging to scale with growing data sources | Easily scalable with modern cloud infrastructure | ## Benefits of zero-ETL Zero-ETL offers a range of advantages that significantly improve data integration processes and decision making. These include: **Accelerated time to insight (TTI):**Zero-ETL accelerates TTI by enabling real-time or near-real-time data ingestion and processing, minimizing transformation steps, and significantly reducing data latency.**Improved data quality:**Zero-ETL improves data quality by automating data validation and minimizing manual intervention to reduce human error and data inconsistencies.**Increased agility and scalability:**Zero-ETL offers flexibility and scalability by allowing easy integration of new data sources without significant changes to the data pipeline.**Reduced operational costs:**Zero-ETL reduces operational costs by minimizing the need for expensive data warehouses and ETL servers and automating data integration processes to reduce data engineer and analyst involvement. ## ETL challenges (and how zero-ETL solves them) Traditional ETL processes, while foundational, come with their fair share of headaches businesses struggle with. Here’s a closer look at some common challenges and how zero-ETL simplifies things: ### ETL jobs are time-consuming and slow ETL jobs often run on schedules, nightly or hourly, which means there’s always a delay between when data is created and when it’s ready for use. In fast-paced environments, this lag is frustrating and potentially costly. Zero-ETL enables real-time data synchronization, so data flows instantly from one system to another. With zero-ETL, it’s not necessary to wait around for batch jobs to complete. ### ETL pipelines are complex ETL pipelines involve multiple steps: extracting data from sources, transforming it to fit the destination schema, and loading it into the target system. Managing and troubleshooting these pipelines can feel like juggling a dozen spinning plates. Zero-ETL simplifies the process by removing the need for separate extraction and transformation steps. Modern tools handle direct data movement, removing complexity. ### ETL pipelines are high maintenance ETL pipelines are fragile. Every time your data sources or schemas change, your ETL process also requires updates. This leads to constant maintenance, eating into your team’s time that could be spent on higher-priority tasks. Zero-ETL leverages native integrations between systems or APIs that adapt more easily to changes. Native integrations help reduce the manual work required to keep data pipelines running. ## Use cases for zero-ETL Zero-ETL isn’t just a theory; it solves real problems in scenarios where traditional data pipelines fall short. Here are some practical use cases for zero-ETL. ### Real-time analytics for e-commerce In the world of online shopping, businesses need real-time insights. For example, tracking customer behavior or inventory levels in real time can make or break a sale. With zero-ETL, data flows directly from the operational database to the analytics platform, ensuring dashboards always relay accurate data. You can spot trends or stock shortages immediately instead of waiting for nightly ETL jobs to complete. ### Fraud detection in banking Fraud prevention systems must analyze transactions as they happen. A delay in identifying suspicious activity could lead to financial losses or reputational damage. Zero-ETL helps with real-time synchronization between transaction databases and monitoring systems, so potential fraud can be flagged and stopped within seconds. ### Personalized customer experiences Streaming platforms, social networks, and retail apps thrive because they’re able to tailor content and recommendations to individual users in real time. With zero-ETL, customer data flows continuously into analytics systems, enabling instant personalization. This allows streaming services to recommend shows based on what a user just finished watching without delay. ## Zero-ETL tools Zero-ETL tools simplify and automate real-time data movement between systems. These tools often rely on native integrations, event-driven architectures, and modern cloud infrastructure to enable seamless data synchronization. Here’s a look at some powerful zero-ETL tools and platforms: **Couchbase Analytics:**Couchbase’s analytics service eliminates ETL complexities by unifying operational and analytical data stores into a single platform, enabling zero-ETL, reducing costs, and improving TTI.**Amazon Aurora zero-ETL integration with Amazon Redshift:**AWS offers native zero-ETL integration between Aurora (a relational database) and Redshift (a data warehouse). Changes in Aurora are automatically transmitted to Redshift for analysis.**BigQuery Data Transfer Service:**This managed service from Google allows for native data transfer from sources like Google Cloud Storage, Google Ads, and other Google services directly into BigQuery. ## Key takeaways and resources When comparing zero-ETL to traditional ETL, it’s clear that each approach has its strengths, however, one is reshaping how businesses think about data integration. While traditional ETL served us well in the past, zero-ETL offers significant advantages for businesses looking to simplify operations and get faster insights from their data. Check out our blog and concepts hub to keep learning about topics related to data transfer and analysis. --- # GDPR Source: https://www.couchbase.com/resources/gdpr/ Last modified: 2026-04-30T19:42:26+00:00 ## Addressing the Requirements of the EU General Data Protection Regulation (GDPR) With GDPR, businesses incorporated in the EU or businesses transacting with end users in the EU must ensure data is processed and secured appropriately. This requires insight into the nature of the data at issue and the ability to enforce certain controls wherever this data resides. The emergence of GDPR highlights the regulatory role in ensuring a strong and up-to-date framework for the management and processing of personal data. A number of the principles in GDPR can be found in other regulations such as the Health Insurance Portability and Accountability Act (HIPAA) and the Payment Card Industry Data Security Standard (PCI DSS), which ensure data is processed and secured appropriately. Securing data, using it appropriately, and building trust is not just about regulation: **it’s the foundation for exceptional customer engagement.** At Couchbase, we view securing our customers’ data as one of the key building blocks for digital activity and digital interactions. It is important that each and every business takes the necessary steps to ensure their GDPR compliance. However, if your GDPR program is operating in a silo and solely focused on tick-box compliance, then your business is missing a trick. GDPR is really important, but it’s just one of many pieces of regulation that make up the fabric of interacting with customers in an increasingly digital world. It is better to keep an eye on the real challenge and, in fact, the real opportunity that we all want: supporting more digital interactions and transactions. Couchbase can help in these efforts around addressing your data privacy and regulatory requirements. --- # What Is NoSQL? A Guide to NoSQL Databases, Structure & Examples Source: https://www.couchbase.com/resources/why-nosql/ Last modified: 2025-06-04T09:56:31+00:00 ## Overview: NoSQL Structure & Key Concepts To better understand how NoSQL databases work, this page covers: ## What is a NoSQL database? A NoSQL database, short for “not only SQL (Structured Query Language),” is a non-relational database designed to handle diverse and flexible data structures. The NoSQL definition refers to databases that support multiple models-including document, graph, key-value, wide-column, and vector stores-offering greater scalability and adaptability compared to traditional SQL databases, which rely on structured tables and fixed schemas. The meaning of NoSQL has evolved with advancements in CPUs, RAM, cloud computing, and AI interactions, enabling modern databases to efficiently manage large, real-time datasets. By prioritizing horizontal scaling and performance, NoSQL databases ensure seamless data distribution across multiple nodes, making them the preferred choice for AI, big data, and real-time analytics, where traditional databases often struggle to keep up. NoSQL refers to databases that store data in flexible formats using models such as documents, key-value stores, and vector stores. Their scalability and performance make them ideal for modern applications that require real-time access and handle large dynamic workloads. ## What is the difference between SQL and NoSQL? SQL and NoSQL databases differ in how they store and query data. SQL databases rely on tables with columns and rows to retrieve and write structured data, while NoSQL databases use flexible data models better suited for unstructured and semi-structured data. SQL, first introduced in the 1970s, is now used by developers and data analysts worldwide to find and report on data stored in relational systems. SQL databases are ideal for applications that require data integrity and use structured relationships and standardized queries (e.g., enterprise resource planning software). Although NoSQL has been around since the 1960s, the term was first coined in the early 2000s as it became crucial for developers to use databases capable of storing and retrieving data for real-time applications. It’s worth noting that SQL has been expanding to support NoSQL access patterns. For example, many relational databases now support JSON (JavaScript Object Notation) as a data type. Some databases have even extended SQL to directly query JSON structures, including Couchbase, which supports SQL++ (SQL for JSON). The difference between SQL and NoSQL databases lies in their structure and use cases. SQL databases use tables, making them ideal for applications that require a rigid structure and normalized data. In contrast, NoSQL databases use flexible models, making them better suited for handling unstructured and semi-structured data while enabling real-time access. ## Types of NoSQL databases These are the most popular types of NoSQL database access patterns: **Key-value stores**group associated data in independent tables where records are identified by unique keys for easy retrieval. They have just enough structure to mirror the value of relational databases while adding the performance and accessibility benefits of a NoSQL data access structure. Key-value data is easily stored in a cache where frequently accessed data is kept in memory for fast reads. Writes, updates, and new read requests are programmatically routed to persistent storage. Key-value stores prioritize atomic access speeds above consistency, isolation, and durability.**Document databases**primarily store information as logical documents, including JSON documents. For example, these systems can also store XML documents or binary objects. Due to the flexible nature of the format and the degree of control it provides developers, document databases are preferred when building data-driven applications.**Wide-column and columnar databases**store data by columns rather than rows, which optimizes query performance for analytical workloads and large-scale data processing. Like key-value stores, wide-column databases have some basic NoSQL structure while preserving flexibility, data handling, and aggregation abilities.**Search databases**allow users to query semi-structured and unstructured data such as web pages, documents, maps, JSON, and XML documents. They use specialized inverted indexes to locate keywords within bodies of text to find relevant data, similar to “googling” something online.**Graph databases**use graph structures like nodes, edges, and properties to define the relationships between stored data elements. Graph databases are useful for identifying relationship patterns in unstructured and semi-structured information, creating social networks, parts assemblies, organizational structures, and ontologies. Graph databases are heavily used in recommendation engines, fraud pattern recognition, predictive AI functions, and linking social networks.**Time series databases**allow users to track data changes over time and detect anomalies in stock price charts, machine logs, health monitors, and alert systems. Because time series data changes rapidly, these databases generate massive amounts of information, potentially introducing scaling issues.**Vector databases**help improve the accuracy of generative AI models by providing hints (vectors) that help them find the “correct” answers within their training data. Vector databases operate within retrieval-augmented generation (RAG) processes to store vector embeddings that help reduce generative AI hallucinations and maintain model progress. Popular NoSQL data access patterns include key-value stores, document databases, wide-column and columnar databases, search databases, graph databases, time series databases, and vector databases. These NoSQL types each have unique characteristics, such as scalability, schema flexibility, and query efficiency. You should explore them in depth to decide which NoSQL database to use. ## Why use NoSQL? Enterprises favor NoSQL databases for their ability to handle large volumes of diverse and growing data. Specific advantages of NoSQL databases include: **Scalability:**NoSQL databases scale horizontally by distributing data across multiple servers, making them ideal for large workloads.**Flexibility:**Unlike relational databases, NoSQL allows schemaless data storage, making it easier to store and manage unstructured or semi-structured data.**High performance:**Optimized for fast reads and writes, NoSQL databases reduce query complexity and improve response times for real-time applications.**Various data models:**NoSQL databases favor key-value, document, wide-column, search, and time series data models, making them ideal for multiple use cases.**Big data and real-time processing:**NoSQL is designed to handle massive amounts of data, making it ideal for big data analytics, IoT, and caching and session management.**Cloud and distributed computing:**NoSQL databases work well in cloud environments by ensuring high availability and fault tolerance across distributed systems.**Easier development and iteration:**With NoSQL, developers can leverage existing SQL skills and use a database that integrates with familiar tools, integrated development environments (IDEs), and frameworks. Couchbase’s multipurpose NoSQL database is especially well suited for AI applications because it offers: **1. High performance and low latency** **Memory-first architecture:**Uses a distributed memory-first design for fast reads and writes, reducing AI model inference latency.**Sub-millisecond response times:**Ensures real-time data access, which is crucial for use cases like recommendation engines, fraud detection, and predictive analytics. **2. Scalability and distributed architecture** **Multi-dimensional scaling:**Can scale horizontally or vertically to handle massive AI datasets and growing workloads.**Cross data center replication (XDCR):**Supports multi-region and multicloud AI deployments with high availability. **3. Multi-model and flexible data storage** **JSON-based NoSQL database:**Stores unstructured and semi-structured data, which is essential for AI applications processing diverse datasets.**Support for vector search:**Helps developers build apps using vector search and integrates with LangChain and LlamaIndex. **4. Built-in AI and analytics capabilities** **SQL for JSON (SQL++):**SQL-like querying with indexing, full-text search, and analytics for AI model training and inferencing.**Eventing and stream processing:**Enables real-time AI insights using built-in functions and event-driven architecture.**Integration with AI/ML frameworks:**Works with TensorFlow, PyTorch, and Apache Spark for AI model training and deployment. **5. Multicloud and edge AI deployment** **Multicloud environment:**Runs on Amazon Web Services (AWS), Microsoft Azure, and Google Cloud, so developers can develop and deploy AI applications to the cloud of their choice.**Edge computing support:**Ideal for real-time AI applications on mobile and IoT devices, reducing cloud dependency and improving response times. **6. Security and compliance** **Enterprise-grade security:**Provides built-in encryption, role-based access control (RBAC), and compliance with regulations like GDPR, HIPAA, and SOC 2.**Data isolation and governance:**Supports AI-driven compliance monitoring and fraud detection. **7. Cost efficiency** **High performance at a lower cost:**Reduces cloud infrastructure costs by efficiently managing resources and minimizing data transfer.**Multimodal database:**Allows developers to store and query multiple data types, reducing the need for additional databases and saving on potential integration costs, licensing fees, and cloud spend. Specific use cases for AI applications with Couchbase include: **Personalized recommendations:**E-commerce and streaming services**Fraud detection and risk analysis:**Banking and cybersecurity**Chatbots and agentic AI:**Customer support and virtual assistants**IoT and edge AI:**Smart devices and autonomous systems Enterprises favor NoSQL databases for their flexibility, scalability, and high performance in handling large volumes of diverse and growing data. Additionally, NoSQL databases use horizontal scaling, distributing data across multiple servers to maintain performance as workloads grow. These capabilities make them well suited for AI applications, IoT systems, adaptive field services, and caching and session management. ## Global 2000 enterprises are rapidly embracing NoSQL databases to power their mission-critical applications: ## NoSQL tutorial How does NoSQL compare to relational databases? Let’s take a closer look. The following tutorial illustrates a NoSQL application used for managing resumes. It interacts with resumes as an object (i.e., the user object), contains an array for skills, and has a collection for positions. Alternatively, writing a resume to a relational database requires the application to “shred” (normalize) the user object. Storing this resume would require the application to insert six rows into three tables, as illustrated in **Figure 1**. Click to Expand And, reading this profile would require the application to read six rows from three tables, as illustrated in **Figure 2**. Click to Expand JSON not only eliminates the object-relational impedance mismatch but also the overhead of object-relational mapping (ORM) frameworks. It simplifies application development because objects can be read and written without normalizing them (i.e., a single object can be read or written as a single document), as illustrated in **Figure 3**. Click to Expand ### What about querying and SQL? Some may argue that querying NoSQL databases is tougher, but this is a common misconception. The inherent flexibility of document-oriented NoSQL databases allows them to handle structured and unstructured data equally well, and new tools allow for faster querying than ever before. Couchbase supports SQL++, which enables developers to leverage the power of SQL and the flexibility of JSON. It not only supports standard SELECT / FROM / WHERE statements but also aggregation (GROUP BY), sorting (SORT BY), joins (LEFT OUTER / INNER), and querying nested arrays and collections. Additionally, query performance can be improved with composite, partial, and covering indexes. ``` SELECT RTRIM(p.FirstName) + ' ' + LTRIM(p.LastName) AS Name, d.City FROM AdventureWorks2025.Person.Person AS p INNER JOIN AdventureWorks2025.HumanResources.Employee e ON p.BusinessEntityID = e.BusinessEntityID INNER JOIN (SELECT bea.BusinessEntityID, a.City FROM AdventureWorks2025.Person.Address AS a INNER JOIN AdventureWorks2025.Person.BusinessEntityAddress AS bea ON a.AddressID = bea.AddressID) AS d ON p.BusinessEntityID = d.BusinessEntityID ORDER BY p.LastName, p.FirstName; ``` ``` SELECT RTRIM(p.FirstName) || ' ' || LTRIM(p.LastName) AS Name, d.City FROM AdventureWorks2025.Person.Person AS p INNER JOIN AdventureWorks2025.HumanResources.Employee e ON p.BusinessEntityID = e.BusinessEntityID INNER JOIN (SELECT bea.BusinessEntityID, a.City FROM AdventureWorks2025.Person.Address AS a INNER JOIN AdventureWorks2025.Person.BusinessEntityAddress AS bea ON a.AddressID = bea.AddressID) AS d ON p.BusinessEntityID = d.BusinessEntityID ORDER BY p.LastName, p.FirstName; ``` NoSQL databases store data in flexible JSON documents, eliminating the need for complex object-relational mapping (ORM) and making it easier to manage structured and unstructured data. This approach simplifies application development by storing and retrieving objects as a single document rather than splitting them into multiple tables. Couchbase further enhances querying capabilities with SQL++, which supports familiar SQL syntax. ## Why relational databases fall short Relational database management systems were born in the era of mainframes and business applications - long before the internet, the cloud, big data, mobile, artificial intelligence, and today’s massively interactive enterprises. These databases were engineered to run on a single server - the bigger the better, and their design was intended to optimize the usage of scarce resources for storage, RAM, and processing. The only way to increase the capacity of these databases was to upgrade the servers (processors, memory, and storage) to scale up. Over the decades, most of their original design restrictions, including normalization, strong data typing, and referential integrity, have been eased or eliminated. NoSQL database management systems emerged due to the exponential growth of the internet and the rise of web applications. Google released the Bigtable research paper in 2006, and Amazon released the Dynamo research paper in 2007 - these papers detailed how the two companies designed their databases to meet the evolving needs of enterprises. Ultimately, modern databases focused on **developing with agility**, **meeting changing requirements**, and **eliminating data transformation**. Relational databases were originally designed for single-server environments to optimize limited resources, but as data needs grew, they faced scalability challenges. Driven by the rise of the internet and web applications, NoSQL databases emerged to address these limitations, focusing on agility, scalability, and reducing data transformation complexities. ## Conclusion So, what are NoSQL databases used for and why do they matter? As enterprises shift to artificial intelligence - enabled by cloud, mobile, social media, machine learning, and GenAI technologies - developers and operations teams must build and maintain web, mobile, and IoT applications faster and at greater scale. Flexible, high-performance NoSQL is increasingly the database technology they choose. Thousands of Global 2000 enterprise developers and millions of developers working in smaller businesses and startups have adopted NoSQL. For many, the use of NoSQL started with a cache, proof of concept, or a small application, then expanded to targeted mission-critical applications before becoming the foundation for all application development. With NoSQL databases, enterprises can develop with greater agility, operate at any scale, and deliver the performance and availability required to meet the demands of digital economy businesses. --- # Build AI Applications on Couchbase's Scalable NoSQL Database Source: https://www.couchbase.com/scalable-ai-applications/ Last modified: 2025-03-11T19:24:27+00:00 # Build Critical Applications on a Flexible, Scalable Data Platform ## Modern applications need a flexible data platform that integrates apps, data, and AI models while reducing system complexity for development through deployment. Learn why leading enterprises like FICO and SWARM Engineering choose Couchbase to build and run their critical applications. ### Your roadmap for AI agents - Learn how to overcome common challenges ## Flexibility, speed, security, and scale for AI-powered apps Get flexible JSON data document organization, microsecond speeds, advanced search (vector, full-text, geospatial), and real-time analytics with powerful SQL in a single unified data platform that includes tightly integrated AI services. ##### Why NoSQL for AI? Unlike rigid relational databases, Capella is built from the ground up to be flexible, scalable, and fast to respond to the demands of AI-powered applications. ##### Ready for tomorrow today Enterprise Strategy Group says Couchbase is ready for the future of AI today. This report provides their technical evaluation comparing Capella DBaaS to a top competitor. ## What customers are saying “We looked at Cassandra, we looked at Mongo. We found Couchbase replication technology across data centers superior, especially for large workloads.” **Claus Moldt,**CIO, FICO (100+ AI patents) **<1**ms response times **24x365**application uptime ## Create smarter, more efficient agentic apps with ease ###### Integrate fast LLM inferencing Create fast and efficient RAG applications using Groq in LangChain with Couchbase Vector Search. ###### Deploy securely at scale Use Capella’s Model Service to simplify the building of cloud-native AI applications and AI agents. ###### Use Capella for free Our free tier includes the Capella iQ coding assistant. Get up and running in minutes with no credit card. ### SWARM Engineering delivers customer ROI of 3-10x with Couchbase SWARM Engineering’s SaaS platform uses next-gen cognitive computing to optimize supply chains for their agri-food industry clients. SWARM chose Couchbase for fast prototype development, quick SQL implementation, a key-value store, and unlimited scalability to support future growth. ##### Start building Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. ##### Use Capella free Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. ##### Get in touch Want to learn more about Couchbase offerings? Let us help. --- # Run a Function on Data Change Source: https://docs.couchbase.com/server/current/eventing/eventing-overview.html # Run a Function on Data Change The Eventing Service lets you handle data changes in real time. ## Eventing Service The Eventing Service handles data changes that happen when applications interact. These changes in data are known as document mutations, and include operations such as insert, delete, update, and expiration. You can use the Eventing Service to: - Monitor specific parameters in a document - Set alerts in a document for when a preconfigured threshold is breached - Propagate data changes inside a database - Enrich documents in real time - Cascade delete to avoid orphaned documents You can also use the Eventing Service to scale your business logic and streamline your business workflows. The Eventing Service lets you: - Integrate with other Couchbase services such as Data, Query, GSI, FTS, and Analytics - Handle inconsistencies in business logic across multiple applications - Increase customer engagement by managing business logic across different applications in a timely manner - Scale your throughput without making changes to your data configuration and infrastructure - Create specialized tools to clean, enhance, and transform your data - Maximize your return on investment (ROI) by minimizing your total cost of ownership (TCO) - Test, debug, and troubleshoot on a single platform instead of on multiple applications ## Eventing Functions The Eventing Service can run one or more Eventing Functions in your database to handle data changes according to a real-time Event-Condition-Action model. Eventing Functions are standalone JavaScript fragments that trigger in real time as a response to document mutations. When you create, update, or delete documents, or when these documents expire, your Functions handle and process these events. You can use Eventing Functions to: - Integrate with the Data Service to read, write, and delete documents - Integrate with the Query Service to use inline SQL++ queries and statements - Enable Timers to schedule functions to run in the future - Interact with external REST endpoints through cURL functionality ## Eventing Service vs Other Implementations Unlike Message Queue or Polling-based external systems, the Eventing Service is native to Couchbase Server. This means you do not need to use multiple applications to track data mutations. The following table compares the implementation of the Eventing Service with the Message Queue method. | Eventing Service | Message Queue | |---|---| Native to Couchbase Server. Does not need a new layer to propagate data changes. | Needs an additional layer to propagate data changes. | Eliminates the dual-write problem. Multiple application servers can perform simultaneous write operations. | Has a dual-write problem. Every write operation gets pushed twice, once to the message queue and the second time to the cluster. | Eliminates the write-failure condition. | A write-failure condition can happen at any point. | Integrates with native debugger support. | No easy debug option during troubleshooting. | Provides a centralized control for aspects such as data auditing and data governance, reducing data leakages. | Leads to inefficient data governance and data leakages. | No additional expenses, so TCO is reduced. | Has added license, infrastructure, and deployment expenses, which increases TCO. | The following table compares the implementation of the Eventing Service with the Polling method. | Eventing Service | Polling | |---|---| Can record and propagate data changes to a database, message queue, end-point, or to another bucket inside the Couchbase cluster. | Needs multiple applications to record and propagate data changes. | Handles data mutations in real-time. | Batch systems are highly inefficient and are not reactive. | Implements as a state-less compute operation and utilizes latest trends in compute (multi-core CPU). | Consumes a lot of CPU resources. | No code duplication. | Leads to code duplication across multiple infrastructure applications. | Provides easy horizontal and vertical scaling options with built-in support. | Difficult to scale as you need to scale for applications and transport layer requirements. | ## Eventing Service Use Cases You can use the Eventing Service to track data changes in many different domains. For example, you can design a custom workflow to track a user’s credit limit, usage currency, and risk propositions when that user makes a credit card transaction. You can also create a workflow that automatically maintains a set stock threshold and triggers new stock replacements when that stock runs out. The following table provides use cases for the Eventing Service. | Domain | Eventing trigger | Condition check | Sample workflow | |---|---|---|---| Banking and financial services | Card transaction | Transaction threshold | Generates risk alerts and quarantines user when they hit the transaction threshold. | Inventory and warehousing | New sales voucher | Stock availability | Generates invoice to replenish stock. | New purchase order | Saved wishlist | Alerts user about price drops for wishlist items. | | Airline | New booking | Booking history | Enrolls user in frequent flyer programs and notifies them about special promotions. | Enquiry | User profile | Alerts user about price drops for airline tickets. | | Healthcare | New report | Check for vitals | Schedules an appointment for the user. | Sports and gaming | New user creation | User profile | Generates notifications about leaderboard and other statistics. | Media and entertainment | Breaking news | Query archives | Enriches existing news with archival information. | --- # Add Search to Your Application Source: https://docs.couchbase.com/server/current/fts/fts-introduction.html # Add Search to Your Application - concept Use the Search Service to create a customizable search experience for your cluster and your end-user applications. The Search Service offers near real-time search capabilities for a diverse range of data types. For example, you can use the Search Service with: - Structured or unstructured text - Dates - Numbers - CIDR notation - Geospatial data Use a Search index to efficiently store your data, and retrieve it with a Search query. For more information about how to size your cluster for using the Search Service, see Sizing Search Service Nodes. ## Search Indexes A Search index tells the Search Service what content to use from the documents in your cluster for processing Search queries. A Search index can use any field across multiple collections in a single scope. If your cluster is running Couchbase Server version 7.6.2 and later, it can also include any document metadata stored in Extended Attributes (XATTRs). You can choose to exclude content to improve search performance and improve the relevance of search results. A Search index can also analyze and modify the content in your Search index or Search query to improve matching and search results. The Search Service has default components that you can use to customize a Search index, or you can create your own. You need to create a Search index before you can use the Search Service to search the contents of your cluster from your application. For more information about how to create a Search index, see Create a Search Index. | Updating Search indexes Search indexes are updated automatically, reflecting changes from the Data Service. | You can create a Search index: As of Couchbase Server version 8.0, you can also add synonym collections to your cluster and Search index to run synonym searches on text fields. For more information about synonym searches, see Add Synonyms to a Search Index. ## Search Queries A Search query tells the Search Service what to search for in the contents of a Search index. Search queries use a simple string-based query syntax or JSON objects to control how the Search Service retrieves search results. For more information about how you can run a search against a Search index, see Run a Search With a Search Index. You can run a Search query: ## Vector Search for AI Applications Vector Search builds on Couchbase Server’s Search Service to provide vector index support for Retrieval Augmented Generation (RAG) with an existing Large Language Model (LLM). Vector Search adds a new index type to the Search Service to support AI application development, known as a Vector Search index. Using Vector Search and Couchbase Server, you can develop applications with an existing LLM while giving context and up-to-date information from your own data. For more information about Vector Search, see Vector Search Using Search Vector Indexes. --- # Overview Source: https://docs.couchbase.com/server/current/learn/architecture-overview.html # Overview A high-level summary of Couchbase Server technology, and an overview of information provided by other pages in this section. ## Introduction to Couchbase Server Couchbase Server is an open source, distributed data-platform. It stores data as *items*, each of which has a *key* and a *value*. Sub-millisecond data operations are provided by powerful services for querying and indexing, and by a feature-rich, document-oriented query-language, SQL++. Multiple instances of Couchbase Server can be combined into a single *cluster*. A *Cluster Manager* program coordinates all node-activities, and provides a simple, cluster-wide interface to all clients. Cluster administration is supported by a graphical, web-based administration console; as well as by REST and command-line interfaces. Individual nodes can be added, removed, and replaced as appropriate, with no down-time required for the cluster as a whole. Data can be retained either in memory only, or in both memory and storage, as judged appropriate by the administrator. Data can be replicated across the nodes of the cluster, to ensure that node-loss (or even rack-loss) does not entail data-loss. Data items can also be selectively replicated across data centers; for the purpose either of backup only, or of simultaneous, multi-geo application-access. Couchbase Server provides multiple *Services*. These can be deployed, maintained, and provisioned independently of one another, so as to allow *Multi-Dimensional Scaling*. For example, a development environment running the Couchbase Data, Index, Query, and Search Services might permit an instance of each on every node of a five-node cluster: Such a deployment might indeed be well-suited to a pure development context; with little or no distinction required between individual services, in terms of workloads, priorities, and corresponding resource-allocations. However, the same cluster, when moved to production, might require a more appropriately tuned service-configuration, such as the following: This production deployment would therefore anticipate a greater workload being placed on the Data and Index Services than on the Query and Search. The full list of services provided is as follows: - *Data*: Supports the storing, setting, and retrieving of data-items, specified by key. - *Query*: Parses queries specified in the SQL++ query-language, executes the queries, and returns results. The Query Service interacts with both the Data and Index services. - *Index*: Creates indexes, for use by the Query Service. - *Search*: Creates indexes specially purposed for Full Text Search. This supports language-aware searching; allowing users to search for, say, the word*beauties*, and additionally obtain results for*beauty*and*beautiful*. - *Analytics*: Supports join, set, aggregation, and grouping operations; which are expected to be large, long-running, and highly consumptive of memory and CPU resources. - *Eventing*: Supports near real-time handling of changes to data: code can be executed both in response to document-mutations, and as scheduled by timers. - *Backup*: Supports both the scheduling and the immediate execution of full and incremental data backups, either for specific individual buckets, or for all buckets on the cluster. Also allows the scheduling and immediate execution of*merges*of previously made backups. ### Additional Overview Information Further information on Couchbase Server’s technology high-points and business benefits can be found in Couchbase Server. ## About This Section This section of the Couchbase documentation-set allows the administrator or developer to learn about the principal features of Couchbase Server at an architectural and conceptual level. The contents are organized as follows: - **Data**: Couchbase Server stores data as*items*. Each item consists of a*key*, by which the item is referenced; and an associated*value*, which must be either*binary*or a*JSON document*.See Data for information. - **Buckets, Memory, and Storage**: Items are stored in named*Buckets*; some being kept only in memory, others both in memory and on disk.See Buckets, Memory, and Storage for information. - **Services and Indexes**:*Services*can be deployed to support different forms of data-access: for example, the*Data Service*allows items to be retrieved by*key*; while the*Query Service*allows them to be retrieved by means of*queries*, designed in the SQL++ query-language. Individual services can be configured to run across multiple cluster-nodes, allowing high-priority workloads to be distributed and scaled appropriately.*Indexes*support services, by enabling high-performance access to data.See Services and Indexes for information. - **Clusters and Availability**: A single node running Couchbase Server is considered a*cluster*of one node. As successive nodes are initialized, each can be configured to join the existing cluster.Across the nodes of each cluster, Couchbase data is evenly distributed and replicated: nodes can be removed, and node-failure handled, without data-loss. Data can be selected for replication across clusters residing in different data centers, to ensure high availability. See Clusters and Availability for information. - **Security**: Couchbase Server can be rendered highly secure, so as to preserve the privacy and integrity of data, and account for access-attempts. The security facilities provided cover areas including*Authentication*,*Authorization*, and*Auditing*.See Security for information. For detailed information on practical administration procedures, see the Overview provided for management documentation. ## Additional Documentation Use the navigation bar at the left, to access additional documentation, covering other aspects of Couchbase technology; including installation, development, and integration. --- # Cross Data Center Replication (XDCR) Source: https://docs.couchbase.com/server/current/learn/clusters-and-availability/xdcr-overview.html Cross Data Center Replication(XDCR) allows data to be replicated across clusters that are potentially located in different data centers. ## Introduction to XDCR Cross data center replication (XDCR) replicates data between a source bucket and a target bucket. The buckets may be located on different clusters, and in different data centers: this provides protection against data-center failure, and also provides high-performance data-access for globally distributed, mission-critical applications. | In Version 7.0, Couchbase made XDCR a commercial-only feature of Enterprise Edition. See Couchbase Modifies License of Free Community Edition Package, for more information about the license restrictions. Also see XDCR and Community Edition, for information about how the new restrictions affect the experience of Community-Edition administrators. | Data from the source bucket is pushed to the target bucket by means of an XDCR agent, running on the source cluster, using the Database Change Protocol. Any bucket (Couchbase or Ephemeral) on any cluster can be specified as a source or a target for one or more XDCR definitions. Note, however, that if an Ephemeral bucket configured to eject data when its RAM-quota is exceeded is used as a source for XDCR, not all data written to the bucket is guaranteed to be replicated by XDCR. (See Buckets, for information on ejection.) Cross Data Center Replication differs from intra-cluster replication in the following, principal ways: - As indicated by their respective names, *intra-cluster replication*replicates data across the nodes of a single cluster; while*Cross Data Center Replication*replicates data across multiple clusters, each potentially in a different data center. - Whereas intra-cluster replication is configured and performed with reference to only a single bucket (to which all active and replica vBuckets will correspond), XDCR requires *two*buckets to be administrator-specified, for a replication to occur: one is the bucket on the source cluster, which provides the data to be replicated; the other is the bucket on the target cluster, which receives the replicated data. - Whereas intra-cluster replication is configured at bucket-creation, XDCR is configured *following*the creation of both the source and target buckets. The starting, stopping, and pausing of XDCR all occur independently of whatever intra-cluster replication is in progress on either the source or target cluster. While running, XDCR continuously propagates mutations from the source to the target bucket. | Versions of Couchbase Server before 8.0 do not support XDCR replication between buckets with different numbers of vBuckets. They also do not support Magma buckets with 128 vBuckets. Due to both these limitations, you cannot replicate from a pre-8.0 cluster to a Magma bucket with 128 vBuckets. You can replicate in the opposite direction (from a Magma bucket with 128 vBuckets to a pre-8.0 cluster) because Magma buckets on Couchbase Server 8.0 and later can replicate to buckets with a different number of vBuckets. However, you should avoid doing so because bidirectional replication is impossible in this configuration. | ## Tools and Procedures for Managing XDCR Prior to XDCR management, source and target clusters should be appropriately prepared, as described in Prepare for XDCR. Then, XDCR is managed in three stages: - Define a *reference*to a remote cluster, which will be the target for Cross Data Center Replication. See Create a Reference. - Define and start a *replication*, which continuously transfers mutations from a specified source bucket to a specified target bucket. See Create a Replication. - Monitor the ongoing replication, pausing and resuming the replication if and when appropriate. See Monitor a Replication, Pause a Replication, and Resume a Replication. Couchbase provides three options for managing these stages, which are by means of: - *Couchbase Web Console*, which provides a graphical user interface for interactive configuration and management of replications. - *CLI*, which provides commands and flags that allow replications to be managed from the command line. - *REST API*, which underlies both the Web Console and CLI, and can be expressed either as a`curl` command on the command line, or within a program or script. For procedures that cover all main XDCR management tasks, performed with all three of the principal tools, see XDCR Management Overview. ## XDCR Direction and Topology XDCR allows replication to occur between source and target clusters in either of the following ways: - *Unidirectionally*: The data contained in a specified source bucket is replicated to a specified target bucket. Although the replicated data on the source*could*be used for the routine serving of data, it is in fact intended principally as a backup, to support disaster recovery. - *Bidirectionally*: The data contained in a specified source bucket is replicated to a specified target bucket; and the data contained in the target bucket is, in turn, replicated back to the source bucket. This allows both buckets to be used for the serving of data, which may provide faster data-access for users and applications in remote geographies. Note that XDCR provides only a single basic mechanism from which replications are built: this is the *unidirectional* replication. A *bidirectional* topology is created by implementing two *unidirectional* replications, in opposite directions, between two clusters; such that a bucket on each cluster functions as both source and target. Used in different combinations, unidirectional and bidirectional replication can support complex topologies; an example being the *ring* topology, where multiple clusters each connect to exactly two peers, so that a complete ring of connections is formed: ## XDCR Advanced Filtering *Filtering Expressions* can be used in XDCR replications. Each is a regular expression that is applied to the document keys on the source cluster: those document keys returned by the filtering process correspond to the documents that will be replicated to the target. For information, See XDCR Advanced Filtering. Optionally, *deletion filters* can be applied to a replication: these control whether the deletion of a document at source causes deletion of a replica that has been created. Each filter covers a specific deletion-context. For a description of the individual deletion filters, see Deletion Filters. For an explanation of the relationship between deletion filters and filters formed with regular and other filtering expressions, see Using Deletion Filters. ### Filtering Binary Documents Every JSON or binary document has a key, and also has Extended Attributes: XDCR filtering expressions can be applied to these. However, a binary document does *not* have a JSON body: therefore, an XDCR filter that references a JSON body cannot be applied to the body of a binary document. In consequence, administrators must decide whether binary documents should be replicated, when a filter has been configured to refer to a JSON body. For details on handling binary replications with Couchbase Web Console, see Filtering Binary Documents. For details on using the REST API’s filterBinary flag, see Creating a Replication. ## XDCR Payloads XDCR only replicates data: it does not replicate views or indexes. Views and indexes can only be replicated manually, or by administrator-provided automation: when the definitions are pushed to the target server, the views and indexes are regenerated there. When encountered on the source cluster, non-UTF-8 encoded document IDs are automatically filtered out of replication: they are therefore not transferred to the target cluster. For each such ID, the warning output `xdcr_error.*` is written to the log files of the source cluster. ## XDCR Using Scopes and Collections XDCR supports *scopes* and *collections*, which are provided with Couchbase Server 7.0 or a later version. Scopes and collections are supported in the following ways: - Replication based on *implicit mapping*. Whenever a*keyspace*(i.e. a reference to the location of a collection within its scope, provided as*scope-name*.*collection-name*) is identical on source and target clusters, XDCR replicates documents from the source collection to the target collection automatically, when the respective buckets are specified as source and target. - Replicaton based on *explicit*mapping. The data in any source collection can be replicated to any target collection, as specified by the administrator. - *Migration*. Data in the*default*collection of a source bucket can be replicated to an administrator-defined collection in the target bucket.Be aware that performing data migration may result in data loss when using XDCR filters to delete data. If you are running filters that remove data, be sure to read Configuring Deletion Filters to Prevent Data-Loss before attempting a migration. In each case, *filtering* can be applied. The source-bucket may be: - A bucket on a cluster with 7.0 or a later version, housing its data in administrator-defined collections. Thus, data can be replicated (optionally using XDCR Advancing Filtering), from one collection to another within the same bucket; or from a collection in one bucket to a collection in another bucket. - A bucket on a cluster with 7.0 or a later version, housing its data in the `_default` collection, within the`_default` scope (this being the default initial residence for all data in a bucket of a cluster which has been upgraded from a Couchbase Server version earlier than 7.0 to a 7.0 or a later version). Thus, XDCR can subsequently be used to redistribute the data into administrator-defined collections, either within the same or within different buckets (again, optionally using XDCR Advancing Filtering). Note that whereas *implicit* replication is available in both Couchbase Server Enterprise and Community Edition, *explicit* replication and *migration* are available only in Couchbase Server Enterprise Edition. For an introduction to scopes and collections, see Scopes and Collections. For more information on how XDCR works with scopes and collections, see XDCR with Scopes and Collections. Examples of collections-based XDCR are provided in Replicate Using Scopes and Collections. ## XDCR Process When a replication is created, it is stored internally as a *replication specification*. When the replication is started, XDCR reads the specification and creates a *pipeline*, which requests data from the source bucket, and examines every document in turn, to determine whether it is a candidate for replication to the target bucket. A document is only replicated if both of the following requirements are satisfied: - The document meets whatever filtering criteria may have been configured. For information, See XDCR Advanced Filtering. - The source collection within which the document resides can be mapped to a collection within the target bucket. For information, see XDCR with Scopes and Collections. If, for a given document, one or both criteria are not satisfied, the document is *dropped* from the XDCR replication pipeline, and therefore not replicated: however, the attempted replication of other documents is continued. Subsequent to the initial attempt to replicate all documents in the source bucket, documents are only replicated from the source bucket to the target bucket in the following circumstances: - The document is *mutated*: which is to say, it is created, modified, deleted, or expired.Replication of a deleted or expired document means that the document will be correspondingly deleted or expired on the target. Note that this is the default behavior; although options are provided for *not*replicating deletion or expiration mutations - so that the replicated documents are not removed. See the reference information for the CLI xdcr-replicate command. - On the target bucket, a collection is created that allows a new mapping to occur between a source collection and the new target collection. For information, see Target-Collection Removal and Addition. - The current replication is *restarted*, following the editing of filtering criteria. For more information, see Filter-Expression Editing. - The current replication is *deleted*, and a new replication is created and started. ## XDCR Priority When throughput is high, multiple simultaneous XDCR replications are likely to compete with one another for system resources. In particular, when a replication starts, its *initial process* may be highly consumptive of memory and bandwidth, since all documents in the source bucket are being handled. To manage system resources in these circumstances, each replication can be assigned a priority of *High*, *Medium*, or *Low*: - *High*. No resource constraints are applied to the replication. This is the default setting. - *Medium*. Resource constraints are applied to the replication while its*initial process*is underway, if the replication is in competition with one or more*High*priority replications. Subsequently, it is treated as a*High*priority replication. - *Low*. Resource constraints are applied to the replication whenever it is in competition with one or more*High*priority replications. ## XDCR Conflict Resolution In some cases, especially when bidirectionally replicated data is being modified by applications in different locations, *conflicts* may arise: meaning that the data of one or more documents has been differently modified more or less simultaneously, requiring resolution. XDCR provides options for *conflict resolution*, based on either *sequence number* or *timestamp*, whereby conflicted data can be saved consistently on source and target. For more information, See XDCR Conflict Resolution. ## XDCR-Based Data Recovery In the event of data-loss, the **cbrecovery** tool can be used to restore data. The tool accesses remotely replicated buckets, previously created with XDCR, and copies appropriate subsets of their data back onto the original source cluster. By means of intra-cluster replication, Couchbase Server allows one or more replicas to be created for each vBucket on the cluster. This helps to ensure continued data-availability in the event of node-failure. However, if multiple nodes within a single cluster fail simultaneously, one or more active vBuckets and all their replicas may be affected; meaning that lost data cannot be recovered locally. In such cases, provided that a bucket affected by such failure has already been established as a source bucket for XDCR, the lost data may be retrieved from the bucket defined on the remote server as the corresponding replication-target. This retrieval is achieved from the command-line, by means of the Couchbase **cbrecovery** tool. For a sample step-by-step procedure, see Recover Data with XDCR. ## XDCR Security XDCR configuration requires that the administrator provide a username and password appropriate for access to the target cluster. When replication occurs, the password is automatically supplied, along with the data. By default, XDCR transmits both password and data in non-secure form. Optionally however, a secure connection can be enabled between clusters, in order to secure either password alone, or both password and data. The password received by the destination cluster can be authenticated either locally or externally, as described in Authentication. A secure XDCR connection is enabled either by SCRAM-SHA or by TLS - depending on the administrator-specified connection-type, and the server-version of the destination cluster. Use of TLS involves certificate management: for information on preparing and using certificates, see Manage Certificates. Two administrator-specified connection-types are possible: - *Half*Secure: Secures the specified password only: it does not secure data. The password is secured by hashing with SCRAM-SHA, when the destination cluster is running Couchbase Enterprise Server 5.5 or later; and by TLS encryption, when the destination cluster is running a pre-5.5 Couchbase Enterprise Server. The root certificate of the destination cluster must be provided, for a successful TLS connection to be achieved.Before attempting to enable half-secure replications, see the important information provided in SCRAM SHA and XDCR. - *Full*Secure: Handles both authentication and data-transfer via TLS. For step-by-step procedures, see Secure a Replication. ## XDCR Advanced Settings The performance of XDCR can be fine-tuned, by means of configuration-settings, specified when a replication is defined. These settings modify *compression*, source and target *nozzles* (worker threads), *checkpoints*, *counts*, *sizes*, *network usage limits*, and more. For detailed information, see XDCR Advanced Settings. ## XDCR Bucket Flush The **flush** operation deletes data on a local bucket: this operation is disabled if the bucket is currently the source for an ongoing replication. If the target bucket is flushed during replication, the bucket becomes temporarily inaccessible, and replication is suspended. If either a source or a target bucket needs to be flushed after a replication has been started, the replication must be deleted, the bucket flushed, and the replication then recreated. ## XDCR and Expiration Buckets, collections, and documents have a TTL setting, which determines the maximum expiration times of individual items. This is explained in detail in Expiration. For specific information on how TTL is affected by XDCR, see the section Expiration and XDCR. ## Monitoring XDCR Couchbase Server provides the ability to monitor ongoing XDCR replications, by means of the Couchbase Web Console. Detailed information is provided in Monitor a Replication. ## XDCR Compatibility The following table indicates XDCR compatibility between different versions of Couchbase Server Enterprise edition, used for source and target clusters. | | | | 8.0.x | ✓ | ✓* | ✓** No ECCV | 7.6.6 and later | ✓* | ✓* | ✓** No ECCV | 7.6.5, 7.6.4, 7.6.3, 7.6.2, 7.6.1, 7.6.0, 7.2.x, 7.1.x, 7.0.x | ✓** No ECCV | ✓** No ECCV | ✓ | - XDCR Compatibility with vBucket Configuration (for both * and **) - Starting in Couchbase Server 8.0, Magma storage backend buckets can have either 128 or 1024 vBuckets. In earlier versions, all buckets had 1024 vBuckets, except on macOS. When creating XDCR replications between the Couchbase Server clusters, make sure of the compatibility of number of vBuckets with the Couchbase Server version as follows: - From pre-8.0 to 8.0: The source and destination buckets must have the same number of vBuckets. For example, when replicating from a 7.x cluster to an 8.x cluster, create the target 8.x bucket with 1024 vBuckets. - From 8.0 to pre-8.0: The vBucket counts do not need to match. However, the vBucket count mismatch, in the source and target buckets of an XDCR topology, does not support the bi-directional replication. - Between 8.0 and later versions: Replications are supported even if the buckets have different vBucket counts. For more information about Magma storage, see Storage Engines. For more information about vBuckets, see vBuckets. - - Cross Cluster Versioning (ECCV) Compatibility (for ** only) - Starting in Couchbase Server 7.6.6, buckets include the `enableCrossClusterVersioning` (ECCV) property, which is set to`false` (disabled) by default.If you set ECCV to `true` (enabled) on a bucket in an XDCR replication topology, then you must set ECCV to`true` on all buckets participating in the XDCR replication topology. Otherwise, dependent features may not function.As the Couchbase Server versions earlier than 7.6.6 do not support the `enableCrossClusterVersioning` bucket property, those buckets cannot participate in a replication topology containing ECCV-enabled buckets.XDCR does not automatically validate ECCV property consistency across buckets. If you want to prevent a bucket without ECCV from participating in an XDCR replication topology, then before creating or modifying XDCR replications, you must manually verify that ECCV is disabled for all participating buckets. For more information about ECCV, see XDCR enableCrossClusterVersioning. | --- # REST API reference Source: https://docs.couchbase.com/server/current/rest-api/rest-intro.html # REST API reference The REST API supports the management of Couchbase-Server clusters. The REST API supports the management of Couchbase-Server clusters. This includes cluster-creation and the definition of nodes, services, and server groups. The API also supports the extensive retrieval of statistics. This page provides a complete list of HTTP methods and URIs. It also lists HTTP Request Headers and HTTP Response Codes. ## Nodes and Clusters API The Cluster API provides support for managing and retrieving information on clusters. It also provides support for managing *rebalance*, *failover*, and *server group awareness*. The APIs for each area are assigned a table, below. ### Cluster Initialization and Provisioning | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | ### Node Addition and Removal | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ### Rebalance | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Manual-Failover | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ### Auto-Failover | HTTP Method | URI | Documented at | |---|---|---| | | | | | | POST | | | | | ### Settings and Connections | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Status and Events | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | ### Statistics | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ## Buckets API Couchbase Server keeps items in *buckets*. Before an item can be saved, a bucket must exist for it. Buckets can be created and managed by means of the following REST API. | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## Scopes and Collections API Couchbase Server provides *scopes* and *collections*; allowing documents to be categorized and organized, within a bucket. The REST API provided for the creation and management of scopes and collections is listed below. | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | ## Memory and Storage API *Memory quotas* can be allocated to services, and the current allocations retrieved. During cluster initialization, the *on-disk paths* for services can be specified on a *per node* basis. Reader and writer threads can be configured, to ensure that disk access is highly performant. *Compaction* can be managed: this is used by Couchbase Server to relocate on-disk data; so as to ensure the data’s closest-possible proximity, and thereby reclaim fragments of unused disk-space. The periodic compaction of a bucket’s data helps to ensure the ongoing efficiency of both reads and writes. | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## Server Groups API *Server Group Awareness* provides enhanced availability. Specifically, it protects a cluster from large-scale infrastructure failure, through the definition of groups. Its REST API is expressed by the following table. | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | ## XDCR API Cross Data Center Replication (XDCR) replicates data between a source bucket and a target bucket. The buckets may be located on different clusters, and in different data centers: this provides protection against data-center failure, and also provides high-performance data-access for globally distributed, mission-critical applications. XDCR is supported by the REST API shown in the table below. | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## Security API The Security REST API provides the endpoints for general security, for authentication, and for authorization. These APIs are listed in the tables below. ### General Security | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Authentication | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Authorization | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## Query Service API The *Query Service* provides a REST API that covers four requirements; which are the administration of Query Service nodes, the configuration of the Query Service, the execution of SQL++ statements, and the management of JavaScript libraries and objects used to create SQL++ user-defined functions. The REST API is detailed in the tables below. ### Query Service Administration | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Query Service Settings | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | ## Index Service API The *Index Service* REST API provides configuration options for the Index Service. The APIs are listed below. ### Index Statistics | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ## Backup Service API The *Backup Service API* supports management of the Backup Service, providing endpoints categorized as follows: *Cluster*, *Configuration*, *Repository*, *Plan*, *Task*, and *Data*. All calls require the Full Admin role, and use port `8097` . Each URI, in Couchbase Server Enterprise Edition Version 7.0 and later, must be prefixed with `/api/v1` . The individual endpoints are listed by category, in the tables below. ### Configuration | HTTP Method | URI | Description | |---|---|---| | | | | | | | | | | | | | | | | | ### Repository | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Plan | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | ### Task | HTTP Method | URI | Documented at | |---|---|---| | | | | | ## Search Service API The Search Service allows users to create, manage, and query *Full Text Indexes*, whereby searches can be performed and matches attained on character strings. The Search Service REST API allows such indexes to be created and maintained. The API is listed in the tables below. ### Node Configuration | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | ### Node Diagnostics | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | ### Node Monitoring | HTTP Method | URI | Documented at | |---|---|---| | | | | | ### Index Definition | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | ### Index Management | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ### Index Monitoring and Debugging | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | ### Index Querying | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ### Index Partition Definition | HTTP Method | URI | Documented at | |---|---|---| | | | | | ### Index Partition Querying | HTTP Method | URI | Documented at | |---|---|---| | | | | | ### Search Statistics | HTTP Method | URI | Documented at | |---|---|---| | | Get Query, Mutation, and Partition Statistics for the Search Service | | | ### Active Queries | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | ## Eventing Service API The *Eventing Service* REST API provides methods for working with *Eventing Functions*. The complete API is listed at Eventing REST API. ## Analytics Service API The *Analytics Service* provides a REST API for querying, configuration, and the management of links and libraries. The API is listed in the following tables. ### Analytics Query API | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | ### Analytics Admin API | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | | | | ### Analytics Config API | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | ### Analytics Settings API | HTTP Method | URI | Documented at | |---|---|---| | | | | | ### Analytics Links API | HTTP Method | URI | Documented at | |---|---|---| | | | | | | | | | | | | | | | | | ## HTTP Request Headers The following HTTP request headers are used to create requests: | Header | Supported Values | Description of Use | Required | |---|---|---|---| Accept | Comma-delimited list of media types or media type patterns. | Indicates to the server what media type(s) this client is prepared to accept. | Recommended | Authorization | | Identifies the authorized user making this request. | No, unless secured | Content-Length | Body Length (in bytes) | Describes the size of the message body. | Yes, on requests that contain a message body. | Content-Type | Content type | Describes the representation and syntax of the request message body. | Yes, on requests that contain a message body. | Host | Origin host name | Required to allow support of multiple origin hosts at a single IP address. | All requests | X-YYYYY-Client-Specification-Version | String | Declares the specification version of the YYYYY API that this client was programmed against. | No | ## HTTP Response Codes The Couchbase Server returns one of the following HTTP status codes in response to REST API requests: | HTTP response | Description | |---|---| 200 OK | Successful request and an HTTP response body returns. If this creates a new resource with a URI, the 200 status will also have a location header containing the canonical URI for the newly created resource. | 201 Created | Request to create a new resource is successful, but no HTTP response body returns. The URI for the newly created resource returns with the status code. | 202 Accepted | The request is accepted for processing, but processing is not complete. Per HTTP/1.1, the response, if any, SHOULD include an indication of the request’s current status, and either a pointer to a status monitor or some estimate of when the request will be fulfilled. | 204 No Content | The server fulfilled the request, but does not need to return a response body. | 400 Bad Request | The request could not be processed because it contains missing or invalid information, such as validation error on an input field, a missing required value, and so on. | 401 Unauthorized | The credentials provided with this request are missing or invalid. | 403 Forbidden | The server recognized the given credentials, but you do not possess proper access to perform this request. | 404 Not Found | URI provided in a request does not exist. | 405 Method Not Allowed | The HTTP verb specified in the request (DELETE, GET, HEAD, POST, PUT) is not supported for this URI. | 406 Not Acceptable | The resource identified by this request cannot create a response corresponding to one of the media types in the Accept header of the request. | 409 Conflict | A create or update request could not be completed, because it would cause a conflict in the current state of the resources supported by the server. For example, an attempt to create a new resource with a unique identifier already assigned to some existing resource. | 500 Internal Server Error | The server encountered an unexpected condition which prevented it from fulfilling the request. | 501 Not Implemented | The server does not currently support the functionality required to fulfill the request. | 503 Service Unavailable | The server is currently unable to handle the request due to temporary overloading or maintenance of the server. | --- # Couchbase Documentation Source: https://docs.couchbase.com/server/current/sdk/overview.html # Couchbase Documentation *Couchbase is the modern database for enterprise applications.* Couchbase is a distributed document database with a powerful search engine and in-built operational and analytical capabilities. It brings the power of NoSQL to the edge and provides fast, efficient bidirectional synchronization of data between the edge and the cloud. Find the documentation, samples, and references to help you use Couchbase and build applications. // List the schedule of flights from Boston // to San Francisco on JETBLUE SELECT DISTINCT airline.name, route.schedule FROM `travel-sample`.inventory.route JOIN `travel-sample`.inventory.airline ON KEYS route.airlineid WHERE route.sourceairport = "BOS" AND route.destinationairport = "SFO" AND airline.callsign = "JETBLUE"; ## Get Started Explore Couchbase Capella, our fully-managed database as a service offering. Take the complexity out of deploying, managing, scaling, and securing Couchbase in the public cloud. Store, query, and analyze any amount of data - and let us handle more of the administration - all in a few clicks. Capella Analytics is a real-time analytical database (RT-OLAP) for real time apps and operational intelligence. Capella Analytics is a standalone, cloud-only offering from Couchbase under the Capella family of products. Explore Couchbase Server, a modern, distributed document database with all the desired capabilities of a relational database and more. It exposes a scale-out, key-value store with managed cache for sub-millisecond data operations, purpose-built indexers for efficient queries, and a powerful query engine for executing SQL-like queries. Enterprise Analytics is a self-managed analytical database (RT-OLAP) for real time apps and operational intelligence. *Couchbase Mobile* brings the power of NoSQL to the edge. The combination of *Sync Gateway* and *Couchbase Lite* coupled with the power of *Couchbase Server* provides fast, efficient bidirectional synchronization of data between the edge and the cloud. Enabling you to deploy your offline-first mobile and embedded applications with greater agility on premises or in any cloud. The Couchbase AI Data Plane is a fully managed set of tools that help you build, deploy, and scale your agentic and retrieval-augmented generation (RAG) AI applications. These tools integrate seamlessly with the Couchbase Capella cloud platform, enabling you to develop your AI applications on the same platform as your data. ## Developer Tools Couchbase SDKs allow applications to access a Couchbase cluster and the big data Connectors enable data exchange with other platforms. Use the command-line interface (CLI) tools and REST API to manage and monitor your Couchbase deployment. A modern shell to interact with Couchbase Server and Capella, now available. ## More Developer Resources Explore a variety of resources - sample apps, videos, blogs, and more, to build applications using Couchbase. Explore extensive hands-on learning experiences through free, online courses or under the guidance of an in-person instructor. With open source roots, Couchbase has a rich history of collaboration and community. Connect with our developer community and get involved. ## Explore Products and Services | Cloud | Server | SDK and Connectors | Mobile | |---|---|---|---| ## Feedback and Contributions Provide feedback, and get help with any problem you may encounter. Couchbase Support provides online support for customers of Enterprise Edition who have a support contract. You can submit simple changes, such as typo fixes and minor clarifications directly on GitHub. Contributions are greatly encouraged. --- # NoSQL Use Cases Across Industries | Powered by Couchbase Source: https://www.couchbase.com/solutions/ ## Customers across industries count on Couchbase Organizations of all types rely on Couchbase to power a wide range of use cases-transforming operations, enhancing user experiences, and reducing cloud costs. Why? Because Couchbase simplifies complex performance challenges that traditional relational databases can’t handle. It lets busy teams keep using familiar SQL skills while benefiting from NoSQL flexibility. And with built-in scalability, Couchbase helps you adapt quickly to evolving user expectations. ##### Artificial intelligence Build predictive and generative AI into hyper-personalized apps with natural language conventions and adaptive functionality. ##### Adaptive product catalog Centralize product data to get real-time intelligence, enhance operational efficiency, and personalize AI-powered experiences. ##### Caching and session management Improve AI-enabled app performance and ensure hassle-free growth with built-in caching and session management. ##### Dynamic Internet of Things Build fast, secure, and scalable IoT apps that work even without the internet and include embedded storage and real-time sync. ##### Flexible field services Build AI-powered apps that work everywhere, all the time, so field service reps can work uninterrupted even without the internet. ##### Intelligent Customer 360 Gain holistic customer views and build AI-enabled applications that improve customer experiences, engagement, and outcomes. ##### Real-time analytics Use operational data for real-time analytics in a single integrated platform without compromising database performance. ##### Smart personalization and profiles Dynamically modify JSON-based account profiles and offer hyper-personalized AI-powered experiences in real time at scale. ##### Energy & Utilities Arm field service employees with highly reliable and responsive business applications even in remote locations with poor connectivity. ##### Financial Services Modernize your business with real-time risk management, enterprise-wide analytics, digital banking, and automated compliance. ##### Gaming Maintain 100% uptime and scale in real time to give millions of users responsive personalized experiences across every device. ##### Government Deliver innovative public services using a single platform connect citizens to their municipalities and governments. ##### Healthcare Bring scale, performance, flexibility, and reliability to modern applications that support virtual and proactive care. ##### High Tech Modernize your architecture to build and run highly engaging, responsive, and scalable AI-powered applications. ##### Manufacturing & Logistics Equip field employees with reliable applications that operate seamlessly from anywhere, regardless of network connectivity. ##### Media & Entertainment Meet spiky user demand with fast, highly scalable and engaging apps that maintain 100% uptime and provide a single view of the customer. ##### Retail & E-commerce Architect high-performance apps that give demanding customers fast, engaging, and contextualized omnichannel shopping experiences. ##### Telecommunications Support massive amounts of speedy and contextualized data for core and value-add services in real time without interruption. ##### Travel & Hospitality Use a microservices-based architecture to support your complex network of patrons and power fast, flexible, scalable apps. ##### Fix slow application performance Increase application responsiveness to users and server-side systems with caching, low latency response, and high availability. ##### Enable distributed workloads Clustering and replication offer global availability and fault tolerance while meeting regional data compliance requirements. ##### Improve application flexibility Easily adapt to user needs during development and after deployment using flexible JSON and powerful multi-model data access services. ##### Create mobile, edge, and IoT apps Save, modify, and sync data with or without the internet, boost performance with an embedded database, and sync devices automatically. ##### Boost developer productivity Let developers choose from their favorite programming languages (including SQL) and tools to deliver better applications faster. ##### Reduce the cost of operations Consolidate technology, optimize price-performance, and speed up development at scale to reduce cost and complexity. --- # Edge Computing Solutions Source: https://www.couchbase.com/solutions/edge-computing/ Last modified: 2026-06-30T14:18:55+00:00 Blog ## Couchbase Mobile data sync - demo See cloud to edge and peer-to-peer sync in action with Couchbase Mobile Couchbase Mobile is the only data platform that runs at every tier - cloud, edge data center, on-prem, and device - under one unified architecture. Every tier operates autonomously when disconnected and data syncs automatically when connectivity returns. Build mission-critical, AI-ready edge apps with SQL++, vector search, and real-time sync, on the edge data platform trusted by PepsiCo, Carnival Cruises, and PG&E. Apps stay fully functional when networks fail. Data syncs automatically when connectivity returns. Apps keep working when networks fail. Data syncs automatically when connectivity returns. Zero downtime, zero lost transactions. Native mobile, cross-platform, embedded devices, web apps, and Edge Server for constrained hardware. Secure from cloud to edge. On-device vector search powers semantic apps, RAG, and agentic AI locally - no internet roundtrip, full data privacy. Scale across thousands of edge locations and millions of devices, with the flexibility to add capacity in the cloud or at the edge. Data lives where it’s used - close to the apps and users that need it - so every read and write is local, fast, and resilient to network disruption. Couchbase Mobile syncs data bidirectionally from cloud to edge to device, between edge data centers and on-prem, and peer-to-peer between mobile devices over Wi-Fi and Bluetooth. Conflict resolution is built in and customizable - no fragile timestamp hacks. Choose fully managed Capella App Services or self-host Sync Gateway. Couchbase Edge Server runs anywhere on resource-constrained hardware at the edge, such as small single-board computers. It addresses the challenge of limited compute and IT support inherent in many edge deployments, which are often constrained by factors like space, power, and logistics. --- # Peer-to-Peer (P2P) Data Sync Source: https://www.couchbase.com/solutions/peer-to-peer/ Last modified: 2026-06-30T14:23:09+00:00 ### Latency slows down collaboration Roundtrips through the cloud and shared bandwidth slow sync - stalling real-time collaboration. PRODUCTS Couchbase Lite is a fully embedded NoSQL database - with SQL++ queries, full-text search, and on-device vector search - plus built-in peer-to-peer sync with automatic conflict resolution. Devices share data directly over local networks, no internet required. Devices share data directly over local networks, keeping users in sync when cut off from the cloud. Devices auto-discover peers, form an adaptive mesh, and reroute as devices come and go. Bluetooth peer-to-peer plus intelligent switching between Wi-Fi and Bluetooth. CUSTOMERS --- # SQL and JSON Source: https://www.couchbase.com/sql-and-json/ Last modified: 2026-05-06T09:25:29+00:00 BLOG ## Try SQL++ in your favorite IDE Couchbase IDE plugins help you migrate, navigate data, develop SQL++, and more. FEATURES - What’s included - SQL - ACID transactions - Flexible JSON - SQL++ (SQL for JSON) - Built-in caching - Multipurpose data access - Built-in horizontal scaling - Couchbase - Legacy databases - Limited CUSTOMERS CODE SNIPPET --- # Moving from SQL to NoSQL Source: https://www.couchbase.com/sql-server/ Last modified: 2026-05-26T04:05:40+00:00 Video ## SQL to NoSQL: Automated migration Migrating from SQL Server to Couchbase: Key strategies and tools. FEATURES - What’s included - SQL - ACID transactions - Schema flexibility - Horizontal scaling - Automatic replication - Built-in caching - Multi-model support - Mobile and edge sync - Automatic sharding - Multi-dimensional scaling - Database logic - REST management API - Couchbase - Eventing, UDF - SQL Server - Limited native sharding, complex - Sprocs, triggers, views CUSTOMERS CODE SNIPPET --- # SQL++ - Query Language for Managing JSON Data Source: https://www.couchbase.com/sqlplusplus/ Last modified: 2026-01-19T12:50:36+00:00 ###### SQL++ for Analytics demo ## Querying complex JSON data made easy #### JSON data access JSON data is ubiquitous: information exchange, object representation, API responses, and microservices all use JSON. Modern NoSQL databases, like Couchbase, also support JSON as a flexible data model. #### Extension of SQL standard SQL++ allows you to shorten development cycles by using existing SQL database skills to easily query and manage JSON data. Your knowledge of SQL is transferable and easily applied to JSON querying with the familiar syntax used by SQL++. #### Flexible schema support Relational models use SQL query standards but JSON databases have more flexible schemas and require additional query syntax to access more advanced data structures. Future-proof application development by using an open standard. ## SQL++ query examples Couchbase is leading the way in the early adoption of the SQL++ specification, using it to unlock analytical JSON data interaction in Couchbase Server. By using SQL++ as a standardized base for querying, users benefit by easily transferring their skills from traditional relational databases into the NoSQL domain. Lowering the barrier to querying NoSQL databases is essential to empowering enterprises to extract value from their JSON data holdings. SQL++ for Analytics is the Couchbase query language built on SQL++. ``` `````` SELECT c.custid, c.name, c.orderno, o.order_date, o.ship_date,FROM orders o JOIN customers c ON o.custid = c.custid WHERE o.orderno = 1004; ``` ``` `````` [ { "custid": "C35", "name": "J. Roberts", "orderno": 1004, "order_date": "2017-07-10", "ship_date": "2017-07-15" } ] ``` ``` `````` [ { "orderno": 1004, "custid": "C35", "order_date": "2017-07-10", "ship_date": "2017-07-15", "items": [ { "itemno": 680, "qty": 6, "price": 9.99 }, { "itemno": 195, "qty": 4, "price": 35.00} ] } ] ``` ``` `````` [ { "custid": "C31", "name": "B. Pitt", "address": { "street": "360 Mountain Ave.", "city": "St. Louis, MO", "zipcode": "63101" } }, { "custid": "C35", "name": "J. Roberts", "address": { "street": "420 Green St.", "city": "Boston, MA", "zipcode": "02115" }, "rating": 565 } ] ``` --- # Couchbase Technical Support Source: https://www.couchbase.com/support/working-with-technical-support/ Last modified: 2026-02-09T10:03:06+00:00 As with any software product, there is sometimes a need to get assistance in understanding or troubleshooting Couchbase products. A subscription to our Enterprise License comes with a support contract which gives you direct access to the Couchbase Support team. You can find more information about those options here. **If you do not yet have an Enterprise License, you will want to direct your questions to either the forums or the Couchbase mailing list (Couchbase)** If you would like to know more about our Subscription Tier SLAs and Product End-of-Life schedules, please read the Couchbase Support Policy page. The Couchbase Technical Support portal for Enterprise customers is located at: https://support.couchbase.com Once you login to the portal, instructions on collecting and uploading log files are provided. --- # Reduce TCO | Database Cost Comparison Source: https://www.couchbase.com/tco/ Last modified: 2026-06-30T14:31:31+00:00 WHITEPAPER Blog COMPARE Couchbase simplifies deployment, pricing, performance, management, global reach, and AI TCO compared to competitors - Feature or Challenge - Deployment needs - Licensing - Performance, caching, and scaling costs - Management overhead - Global application support - TCO for AI workloads - Couchbase - Supports both self-managed and cloud for hybrid control. - Usage-based with clear pricing and fewer add-ons. - Scales efficiently with fewer nodes using memory-first design. - Integrated services and self-healing reduce ops work. - XDCR enables low-cost, multi-region replication. - Lower TCO with native caching and vector support. - MongoDB - Offers both, but hybrid setups are harder. - Cluster or usage-based, extra costs for features. - Scales via sharding but often needs more nodes. - Needs more manual tuning; Atlas eases some burden. - Global clusters work but cross-region costs are high. - Solid AI support but higher node count inflates cost. - DynamoDB - Fully managed only, no self-managed option. - Pay-per-request or capacity; bills can spike. - Auto-scales easily but throughput costs rise fast. - Fully managed but limited customization and extra monitoring costs. - Global tables replicate but add egress and consistency fees. - Cheap for key-value AI, but lacks multi-model features. STATS Couchbase proves its value by reducing AI costs, cutting tech overlap, improving hardware efficiency, and lowering hidden operational expenses that inflate TCO. Contact All fields with an asterisk (*) must be filled out --- # Tools Source: https://mcp-server.couchbase.com/tools # Tools The Couchbase MCP Server exposes several tools across multiple categories. The list of supported tools is constantly evolving so check the GitHub readme for the latest set of tools. Each tool is available to LLMs through the MCP protocol. ## Cluster Setup & Health Tools for checking server status and cluster connectivity. | Tool | Description | |---|---| `get_server_configuration_status` | Get the server status and configuration without connecting to the cluster - reports read-only mode, disabled/confirmation-required tools, OAuth settings, and the resolved logging configuration | `test_cluster_connection` | Check the cluster credentials by connecting to the cluster | `get_cluster_health_and_services` | Get cluster health status and list of all running services | ## Data Model & Schema Discovery Tools for exploring buckets, scopes, collections, and document schemas. | Tool | Description | |---|---| `get_buckets_in_cluster` | Get a list of all the buckets in the cluster | `get_scopes_in_bucket` | Get a list of all the scopes in the specified bucket | `get_collections_in_scope` | Get a list of all the collections in a specified scope and bucket | `get_scopes_and_collections_in_bucket` | Get a list of all the scopes and collections in the specified bucket | `get_schema_for_collection` | Infer the document structure for a collection | ## Document KV Operations Tools for reading and writing documents by ID. Tools that modify data are disabled by default when `CB_MCP_READ_ONLY_MODE=true` . | Tool | Description | |---|---| `get_document_by_id` | Get a document by ID from a specified scope and collection | `upsert_document_by_id` | Insert or update a document by ID | `insert_document_by_id` | Insert a new document by ID (fails if document exists) | `replace_document_by_id` | Replace an existing document by ID (fails if document doesn't exist) | `delete_document_by_id` | Delete a document by ID | ## Query and Indexing Tools for running SQL++ queries, listing indexes, and getting index recommendations. Source (query) | Source (index) | Tool | Description | |---|---| `run_sql_plus_plus_query` | Run a SQL++ query on a specified scope | `explain_sql_plus_plus_query` | Provides information about the execution plan for the statement. This includes operators such as scans, joins, and filters; it aids in performance tuning by showing index usage, cost estimates, and data access paths | `list_indexes` | List all indexes in the cluster with their definitions, with optional filtering. Set `return_raw_index_stats=true` to return the unprocessed index information. | `get_index_advisor_recommendations` | Get index recommendations from Couchbase Index Advisor for a given SQL++ query | ## Query Performance Analysis Tools for identifying slow queries, missing indexes, and optimization opportunities. These tools query `system:completed_requests` . | Tool | Description | |---|---| `get_longest_running_queries` | Get longest running queries by average service time | `get_most_frequent_queries` | Get most frequently executed queries | `get_queries_not_selective` | Get queries that are not selective | `get_queries_not_using_covering_index` | Get queries that do not use a covering index | `get_queries_using_primary_index` | Get queries that use a primary index (potential performance concern) | `get_queries_with_largest_response_sizes` | Get queries with the largest response sizes | `get_queries_with_large_result_count` | Get queries with the largest result counts | --- # Distributed ACID Transactions in NoSQL Applications Source: https://www.couchbase.com/transactions/ Last modified: 2026-04-30T09:34:33+00:00 Blog ## Want to learn more about ACID transactions? Achieve ACID transactions at scale and get rich SQL support with Couchbase. Couchbase supports distributed, multi-document ACID database transactions at scale, without compromising performance or high availability. Migrate your relational database applications to Couchbase to achieve ACID compliance and leverage the power of SQL++ and JSON. Execute transactions across multiple documents and collections, simplifying complex operations without extra code. Get full ACID guarantees - even in distributed environments - so you can focus on building without worrying about data integrity. Leverage schemaless data modeling to facilitate easier migration from relational databases. Work natively in your preferred Couchbase SDK with intuitive, developer-friendly APIs. Perform all-or-nothing updates across multiple documents and collections within a single, atomic transaction to prevent partial states. Safely handle simultaneous read and write operations across distributed applications with built-in conflict detection and isolation. Leverage transactional guarantees that automatically undo all staged changes if a transaction is interrupted, reducing manual recovery logic. Implement ACID-compliant transactions on mobile and edge devices, with offline support and automatic sync when connectivity is restored. --- # Tutorials Source: https://developer.couchbase.com/tutorials/ The tutorials and learning paths available cover a wide range of topics related to Couchbase. These topics include CRUD operations, SQL querying, transactions, building REST APIs, and more. 164 30 13 121 164 Couchbase and the Java Client SDK - Learn how to use Couchbase's Java Client SDK - Explore real examples and demos along the way - Learn how to use transactions with Couchbase via the Java SDK Couchbase and the Node Client SDK - Take a deep dive on how to use Couchbase's Node.js Client SDK - Explore real examples and demos, including fully built sample applications Couchbase and Python SDK - Deep dive on how to use Couchbase's Python SDK with real examples and demos - Tutorials on Key Value Operations, Indexing, SQL++ Querying, Full Text Search, and Distributed Transactions using Python Couchbase Lite with Java for Android Developers - Take a deep dive into Couchbase Lite's Android Java SDK - View real examples and demos - Learn about QueryBuilder and Sync Gateway Couchbase Lite and Capella App Services with Kotlin and JetPack Compose - Deep dive on how to use Couchbase Lite Android Kotlin SDK with Capella App Services - Explore real examples and demos Couchbase Lite and Sync Gateway with Kotlin and JetPack Compose - Deep dive on how to use Couchbase Lite Android Kotlin SDK with Sync Gateway - Explore real examples and demos Couchbase Lite and Capella App Services with Dart and Flutter - Deep dive on how to use the community Dart SDK for Couchbase Lite with Capella App Services - Explore real examples and demos Couchbase Lite with Swift for iOS UIKit Developers - Take a deep dive into Couchbase Lite's Swift SDK - View real examples and demos - Learn about QueryBuilder and Sync Gateway JSON Data Modeling Guide - Learn about core elements used to handle data in Couchbase Server - Explore best practices for how to store documents from a Couchbase SDK - A well-thought-out data model can play a big role in ensuring your application performs as expected Couchbase Support Guide - This learning path describes how to best interact with Couchbase Technical Support - Explore how to provide your own internal tier 1 support - Learn how to contact support and open a ticket JSON Document Management Guide - Learn how to manage and adapt to change within your data model - Explore best practices for structuring documents - View illustrative examples and conceptual implementations N1QL Performance Best Practices Guide - View all the different ways to improve query performance in Couchbase Server - Explore different indexing options and view illustrative examples - Learn about best practices for fast querying ... Community Help In addition to the Couchbase Support Team, help can be found from the community in our forums, and our official Couchbase Discord Server. Learn MoreIntegrations Integrations on some 3rd-party SDK integrations, such as Spring Data, can be found in the SDK docs. Learn moreGet certified with Couchbase Academy Whether you’re managing Couchbase on premises, using CAO, using Couchbase Capella, or writing apps that use Couchbase, we have a certification for you. Get CertifiedStay sharp with our blog News breaks first on our blog. Stay up to date on the Couchbase ecosystem and learn tips and tricks from our engineers, developer advocates, and partners. Subscribe To Our Blog --- # Application Flexibility with Couchbase Database Platform Source: https://www.couchbase.com/use-cases/application-flexibility/ Last modified: 2026-04-30T13:09:04+00:00 ### Can't respond quickly to user feedback When you’re late to market with new apps or new updates, you lose customers to faster-moving competitors IMPROVE APPLICATION FLEXIBILITY Easily build flexible and powerful apps with a multi-model NoSQL database that adapts to changing business needs. With features like JSON support and tools to reduce complexity, Couchbase assists from development to post-deployment CHALLENGE + IMPACT Rigid architecture impedes your ability to react quickly and leads to lost revenue. Flexible applications let developers efficiently adapt to new user requirements and changing environments. When you’re late to market with new apps or new updates, you lose customers to faster-moving competitors If your app can’t deliver the functionality you and your users want, you can’t capitalize on it When you constantly have to find new solutions to meet new requirements, your costs keep adding up To keep users on your app, you need to deliver a great experience that includes a lot of data-driven features and easily evolves for personalization, product catalogs, and inventory information. - Fixed schemas are more labor-intensive for developers - Single model databases limit features and functionality - Schema changes can lead to downtime PRODUCTS To easily handle new requirements and mission-critical use cases - in development or after deployment - you need a flexible and secure database. JSON documents are easily extended to support diverse data. Overcome data sprawl with Couchbase’s versatile solutions. Examine the core design principles that make our database fast and flexible for app development. CUSTOMERS “With Couchbase with us building these kind of resilient large solutions, it puts us in a good place to really achieve our goal of a perfect customer experience.” 40M+ documents 61K users “There are many key factors that made us choose Couchbase: scalability, high availability, XDCR, flexible schema, and advanced monitoring, to name a few.” 50% faster sign-in times “Couchbase provides consistent sub-millisecond response times, which help ensure an enjoyable experience for application users.” 500k events processed every 3 minutes 1m transactions per second “With Couchbase and Capella, millions of players are able to have a consistent experience without any disruptions, even when network connectivity is unreliable.” 800 million downloads worldwide 10+ million monthly active users Video Tutorial Concepts Customers from all industries turn to Couchbase for a data platform capable of transforming their businesses - providing exceptional user experiences while lowering costs. Save and modify data with or without an internet connection. Capella simplifies querying, mobile sync, replication, and more. Increase application responsiveness to users and server-side systems. Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. Want to learn more about Couchbase offerings? Let us help. --- # Application Performance - NoSQL Use Case Source: https://www.couchbase.com/use-cases/application-performance/ Last modified: 2026-05-26T19:16:22+00:00 ### Lost revenue due to downtime When your systems go down, customers start looking at your competitors for a better experience PRODUCTS The #1 reason why customers choose Couchbase for its superior performance, driven by a design that blends in-memory caching, fast data access, and a flexible system for partitioning and clustering. The result? Optimized application services that users love. All interactions are cached in RAM for reuse, reducing pressure on back-end systems. All data access services (Key-value, JSON, SQL, Search and Eventing) run in memory and scale independently. CUSTOMERS --- # AI Use Cases for NoSQL Databases Source: https://www.couchbase.com/use-cases/artificial-intelligence/ Last modified: 2026-06-30T14:45:05+00:00 PRODUCT Product Artificial Intelligence Delight customers with hyper-personalized applications and empower employees with AI agents that streamline work. Ensure fast, quality results and reduce hallucinations with our operational data platform for AI. Give agents persistent memory across sessions, and simplify management of their tools, prompts, and traces - so you can debug, govern, and keep behavior grounded as it changes. Build real-time GenAI with more accurate, timely results powered by your corporate data. Our vector search options align to your needs to deliver milliseconds responses even at billion scale. Build superior search and recommendations systems. Our flexible indexing allows for sophisticated hybrid queries that combine vector, text, geospatial, and operational data with millisecond response. Power mobile apps with vector search and predictive analytics, even offline. Securely sync vector data and AI models from the cloud to the edge to empower teams with powerful new capabilities. Use our real-time database platform to empower machine learning models for predictive trend and anomaly detection to avoid fraudulent activities. Get quick answers to questions about AI for apps, databases, and more. A technique for data retrieval where objects (text, images, and videos) are represented as vectors (arrays of numbers) and objects are matched via similar numerical characteristics. Predictive AI is designed to forecast outcomes based on historical data and real-time analysis. Generative AI creates new content that mimics original data, often for natural language conversations. Common use cases include hyper-personalized content generation, chatbot Q&A, enhanced enterprise search, recommendation systems, hybrid search, and data analysis. Agentic and other AI-powered applications combine user information, real-time contextual data, predictive calculations, and NLP GenAI to deliver hyper-personalized experiences with the power of LLMs. Scattered agent infrastructure adds complexity, latency, and cost. Couchbase AI Data Plane keeps memory, data access, governance, and cache together to lower TCO and speed results. Couchbase delivers real-time performance with in-memory processing, highly efficient indexing, and a scalable distributed architecture. It also ensures data durability and supports complex SQL++ queries. --- # Customer 360 Use Case | NoSQL Customer Data Platform Source: https://www.couchbase.com/use-cases/customer-360/ Last modified: 2026-04-24T08:08:48+00:00 BLOG USE CASE # Intelligent Customer 360 Build an Intelligent Customer 360 that delivers actionable insights and measurable results. With Couchbase Capella’s NoSQL and AI-driven data platform, enterprises can integrate data in real time, uncover predictive insights, and personalize every interaction. --- # Improve Developer Productivity: All Your Tools in One Platform Source: https://www.couchbase.com/use-cases/developer-productivity/ Last modified: 2026-06-30T12:07:37+00:00 ### Sprawl slows you down Couchbase consolidates data sprawl with one solution for cache, key-value, SQL++, JSON, search, mobile, high scale vector workloads, and more. DEVELOPER PRODUCTIVITY Boost your development workflow with Couchbase - an all-in-one solution that helps developers work smarter by unifying their favorite and familiar tools in one easy-to-use platform. With powerful features that simplify data management, Couchbase offers the right developer productivity tools to streamline workflows and accelerate application development. CHALLENGE + IMPACT Developers waste time making diverse data and apps work together. Couchbase simplifies this with a single solution for cache, search, SQL++ queries, billion-scale vector indexing, and much more. Couchbase consolidates data sprawl with one solution for cache, key-value, SQL++, JSON, search, mobile, high scale vector workloads, and more. SQL++ enhances the developer experience by turning SQL’s widely used standard into a querying tool for JSON. Key integrations like Spring and LangChain accelerate your development and connect directly to AI frameworks. Diverse data, complex integrations, nonstandard tools, and fragmented workflows give developers too many responsibilities and not enough flexible options. - App experiences suffer - Teams can’t meet schedules - Development costs run too high PRODUCTS Couchbase powers feature-rich AI apps with simple data Capella enhances dev speed, now with vector and SQL++ query options. Fast global XDCR setup with active-active clusters and mobile sync. Try sample code, explore tools, and experiment. “Couchbase Full-Text Search allows us to deliver results from extremely large datasets very efficiently.” “For years we said, ‘Wouldn’t it be nice to have a data store where we could go from the Java object right into the database and back without lots of overhead?’ Well, this is it.” 4,000 transactions per second 30+ million documents “Couchbase is a highly scalable, distributed data store that plays a critical role in LinkedIn’s caching systems.” 10+ million queries per second <4 ms average latency for 2.5B+ items “Couchbase is a trifecta of value. We get more features, save time, and spend less money all at once.” 500% faster query speed 25% shorter development cycles “Couchbase is easy to manage, you can effortlessly scale horizontally, or build additional machines. We don’t have to do anything additional or worry about anything.” 20K operations/second <3 millisecond response times Guide Tutorial Webcast Enhance app flexibility and responsiveness. Improve throughput with low-latency ops. Power mobile, edge, and IoT apps with offline data - and scale AI agents using hybrid vector features. Easily adapt to user needs during development and after deployment. Increase application responsiveness to users and server-side systems. Save and modify data with or without an internet connection. Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. Want to learn more about Couchbase offerings? Let us help. --- # Distributed Workload Databases for Scalable Applications Source: https://www.couchbase.com/use-cases/distributed-workloads/ Last modified: 2026-04-24T07:52:17+00:00 ### Legacy relational systems can’t scale Users expect a fast and reliable experience wherever they go, or they won’t use the app PRODUCTS Couchbase provides data storage and processing that can span clusters, regions, countries, and continents. Deliver apps that can run anywhere and everywhere your users go. Globally distribute data to meet the demands of a worldwide user base. Distributed workloads maximize uptime to keep business running. CUSTOMERS Couchbase’s enterprise-class cloud database platform not only helps companies distribute their workloads for scale and high availability; it also helps with these other application challenges. Increase application responsiveness to users and server-side systems. Easily adapt to user needs during development and after deployment. Share and modify data with or without an internet connection. --- # Edge AI for Fast IoT & Mobile App Development - Computing Platform Source: https://www.couchbase.com/use-cases/edge-computing/ Last modified: 2026-05-25T18:20:49+00:00 ### AI cannot respond in real-time GenAI at the edge requires lightweight, secure, real-time data to engage users in context. PRODUCTS Couchbase Mobile is a powerful edge computing solution that helps you build mobile, IoT, and web apps that operate without an internet connection. On-device data storage, built-in sync, and vector search ensure the best possible experience for app users. Capella is a hosted DBaaS or deploy Couchbase Server on your own. Couchbase Lite eliminates internet dependencies for speed & uptime. Cloud scale & edge processing for GenAI. Use local or remote models. CUSTOMERS --- # NoSQL Database for Energy & Utilities | Offline-First Field Apps Source: https://www.couchbase.com/use-cases/energy-and-utilities/ Last modified: 2026-04-24T07:34:47+00:00 ### Data volume and scalability Databases need to efficiently handle the high ingestion rates and storage requirements for time-series data, especially in smart grid applications with real-time energy monitoring. WHY COUCHBASE Key features for why energy and utilities customers choose Couchbase’s NoSQL database solution for their mission-critical applications, including real-time analytics for utility operations and mobile-first capabilities. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. Capella Columnar, the analytics service in Couchbase, reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # Data Processing for Offline-First, AI-Powered Field Service Apps Source: https://www.couchbase.com/use-cases/field-service/ Last modified: 2026-05-26T03:49:13+00:00 Blog Field Service ## Top field services data processing use cases Couchbase Mobile helps you build AI-powered field service mobile applications that operate reliably all the time, even without the internet. On-device data storage, vector search, and cloud-to-edge sync ensure the best possible experience for app users. ### Utilities technician field service apps Utilities technicians diagnose issues, search for similar parts, and update task lists, maps, and inspection reports on hand-held devices even with no network connectivity. ### Field insurance apps Field insurance agents snap damage photos, search for similar accidents, file claim reports, and update customer policy information on mobile devices in remote locations with slow or unreliable internet. ### Restaurant and hospitality Restaurants and hospitality providers expedite customer facing processes, make preference-based recommendations, and reduce wait times with order-entry and check in kiosks. ### Mobile clinics and healthcare Healthcare workers access and sync patient records across the clinic, suggest possible diagnoses in real time, and write and submit prescriptions regardless of network availability. ### How can I ensure apps respond in real time? You can eliminate the latency that impacts performance by embedding data and AI processing directly into apps that run on field devices. ### How does Couchbase’s field service management software ensure app responsiveness and uptime in offline environments? Reduce dependencies on an inherently unreliable internet by storing and processing data locally on devices and syncing that data with peer devices to expedite cloud connections. ### How do I maintain data consistency and accuracy? Automatically and efficiently sync data between the cloud and the edge using delta sync, filters, compression, and built-in conflict resolution. ### How do I use AI where there's no internet? On-device vector search enables semantic search and RAG at the edge, no internet required! ### How can I support non-mobile platforms? Couchbase has APIs and SDKs for all popular platforms and languages, including C, allowing you to embed data processing on non-mobile devices like Raspberry Pi and Arduino. ### How can I offload managing the database and sync? Couchbase Capella provides a fully managed cloud backend DBaaS and app services for data sync and user security. --- # NoSQL for Financial Services & Transactions - Scalable Database Source: https://www.couchbase.com/use-cases/financial-services/ Last modified: 2026-05-25T12:55:20+00:00 ### Scalability Ensuring the financial services database can scale seamlessly to handle increased data and user load is crucial WHY COUCHBASE Key features for why financial services customers choose Couchbase’s NoSQL database solution. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. CUSTOMERS --- # NoSQL Database for Gaming Developement Source: https://www.couchbase.com/use-cases/gaming/ Last modified: 2026-04-24T07:38:18+00:00 ### Scalability and performance Online gaming applications need to handle a large number of concurrent players and high traffic volumes WHY COUCHBASE Key features for why customers choose Couchbase’s NoSQL database for game development and deployment of mission-critical experiences. Couchbase’s network-centric architecture allows developers to easily scale their game database while maintaining high performance under growing demand. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # Public Sector Database Software | NoSQL for Government Agencies Source: https://www.couchbase.com/use-cases/government/ Last modified: 2026-04-24T07:39:39+00:00 ### Undermanned IT teams and outdated systems IT departments in public agencies are often purely functional and lack the resources available in the private sector WHY COUCHBASE Key features for why government agency customers choose Couchbase’s NoSQL database solution for their mission-critical applications. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # Scalable NoSQL Medical Database Solutions for Healthcare Systems Source: https://www.couchbase.com/use-cases/healthcare/ Last modified: 2026-04-24T07:41:21+00:00 ### High availability Databases used in healthcare need applications to be available 24/7 to support continuous patient care WHY COUCHBASE Key features for why healthcare customers choose Couchbase’s NoSQL database solution for their mission-critical applications. Couchbase provides built-in high availability and flexible replication capabilities that support disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase drives the flexibility and increased operational efficiency needed to keep up with constantly changing data by adapting to the evolving demands of managing medical database systems. Couchbase ensures HIPAA compliance with enterprise-level security throughout the entire platform. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. CUSTOMERS --- # NoSQL Database for High Tech Applications Source: https://www.couchbase.com/use-cases/high-tech/ Last modified: 2026-04-24T07:42:49+00:00 ### Data modeling and schema design High-tech companies need to carefully structure their data to meet application requirements WHY COUCHBASE Key features for why high-tech customers choose Couchbase’s NoSQL database solution for their mission-critical applications. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines CUSTOMERS --- # NoSQL Database for Internet of Things (IoT) Applications Source: https://www.couchbase.com/use-cases/iot/ Last modified: 2026-04-24T08:05:20+00:00 BLOG IoT ## Top IoT Application Use Cases Avoid costly downtime by developing reliable IoT applications that work anywhere, with or without the internet. Easy connectivity and a fully managed backend enable quick deployment of IoT device fleets. ### Manufacturing Develop and deploy smart manufacturing applications that power device management, smart assembly lines, remote asset tracking, and more. ### Retail Use IoT devices to deliver smart shelves, dynamic inventories, and just-walk-out shopping. Personalize offers in real time and collect customer data. ### Healthcare Power Internet of Medical Things (IoMT) apps that include wearables, sensors, and mobile devices for data collection, activity logging, and health recommendations. ### Media & entertainment Create great user experiences by supporting millions of endpoints and devices for streaming content, collecting data, managing user profiles, and maintaining states. ### How can I ensure apps respond in real time? Embed data and AI processing directly into your apps that run on IoT devices to eliminate the latency that impacts performance. ### How do I guarantee reliability and uptime? Reduce dependencies on an inherently unreliable internet by storing and processing data locally on devices. ### How do I maintain data consistency and accuracy? Automatically and efficiently sync data between the cloud and the edge using delta sync, filters, compression, and built-in conflict resolution. ### How do I connect IoT devices to the cloud database? Leverage easy IoT connectivity using MQTT or preconfigured cellular SIM cards. ### How can I support my IoT device platforms? Couchbase has APIs and SDKs for all popular platforms and languages, including C, allowing you to embed data processing on non-mobile devices like Raspberry Pi and Arduino. ### How can I offload managing the database and sync? Couchbase Capella provides a fully managed cloud backend DBaaS and app services for IoT data sync and user security. --- # Couchbase Lite for JavaScript: Build Apps That Never Go Down Source: https://www.couchbase.com/use-cases/lite-for-javascript/ Last modified: 2026-06-30T13:14:18+00:00 ### Downtime costs revenue and trust Networks fail in dead zones, on cellular, mid-transaction. When apps stall, users churn and revenue stops. PRODUCTS Couchbase Lite for JavaScript embeds a full NoSQL database directly in the browser, so web apps read and write at memory speed and keep working when the network slows or drops. Paired with Couchbase Sync Gateway or hosted App Services, it delivers unified, bi-directional sync from cloud to mobile to web - one platform, zero downtime, one developer experience across every client. Same data and SQL across web and mobile - seamless UX, ship faster. Apps stay fast and fully functional offline - no failed transactions. embedded database help? --- # NoSQL Database for Manufacturing & Logistics Source: https://www.couchbase.com/use-cases/manufacturing-and-logistics/ Last modified: 2026-04-24T07:44:29+00:00 ### Data volume Need to develop robust data modeling strategies to ensure seamless management for immense volume of diverse data WHY COUCHBASE Key features for why manufacturing & logistics customers choose Couchbase’s NoSQL database solution for their mission-critical applications. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # NoSQL Database Solutions for Media & Entertainment Companies Source: https://www.couchbase.com/use-cases/media-and-entertainment/ Last modified: 2026-04-24T07:45:57+00:00 ### Data complexity and integration Media companies deal with diverse data types requiring efficient data pipelines and integration processes. Modern media database solutions like Couchbase unify structured and unstructured data into one reliable platform. --- # Flexible NoSQL Database for Cost-Effective Business Operations Source: https://www.couchbase.com/use-cases/operational-cost-reduction/ Last modified: 2026-05-26T17:22:51+00:00 ### Legacy databases stall success Maintaining legacy systems is expensive, limits innovation, and diminishes customer experiences REDUCE THE COST OF OPERATIONS Couchbase provides a cost-effective, flexible NoSQL database that reduces software, infrastructure, and operational costs. With high performance, a smaller stack, and lower overhead, it helps businesses replace legacy systems, simplify architectures, and optimize cloud expenses. CHALLENGE + IMPACT Applications relying on legacy databases or multiple data solutions often face architectural challenges, leading to high costs and production issues. Replacing these with a cost-effective, flexible NoSQL database helps streamline operations, reduce overhead, and support business growth. Maintaining legacy systems is expensive, limits innovation, and diminishes customer experiences Using two or more data technologies per application puts your license and integration costs way over budget Using too many cloud services to support your applications can introduce hidden fees and steep running costs Legacy databases and point solution technologies require extra integration work, additional license fees, and ongoing maintenance, leading to elevated infrastructure costs. Adopting a cost-effective database with a flexible NoSQL architecture reduces complexity, lowers operational expenses, and improves scalability. - Too many databases and technologies increase fees - Extra integration and maintenance efforts rob valuable time - Weak scalability leads to overprovisioning of infrastructure PRODUCTS For modern customer experiences, powered by applications spanning from cloud to edge, you need a cost-effective, scalable, and automated database. Tested against multiple alternatives, Couchbase scales and delivers low TCO. Couchbase’s cloud data platform drives down the total cost of ownership. “Couchbase is a trifecta of value. We get more features, save time, and spend less money all at once.” 500% faster query speed 25% shorter development cycles “What we value a lot is that Couchbase was able to embrace with us our vision to the cloud, and the fact that we wanted to operate data stores directly on PaaS.” 50% TCO reduction “Trendyol gets the performance and scale required for its e-commerce applications across 27 countries in Europe for more than 30 million users.” 75% increased operations 75% faster development cycles BLOG Executive summary Report Couchbase’s enterprise-class cloud database platform not only helps companies lower costs, it also helps with these other application challenges. Increase application responsiveness to users and server-side systems. Cluster processes to offer high availability and fault tolerance. Easily adapt to user needs during development and after deployment. Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials. Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started. Want to learn more about Couchbase offerings? Let us help. --- # AI-Powered Product Catalog Management | Database Use Case Source: https://www.couchbase.com/use-cases/product-catalog/ Last modified: 2026-04-24T08:02:36+00:00 Case study Product Catalog ## Top product catalog use cases Couchbase powers catalogs, inventory and customer interactions across industries. ### Retail Easily support price and promotions, stocking, shopping cart, supply chain, new products, inventory, and real-time pricing for tens of millions of products in stores and online. ### Media and entertainment Display digital entertainment options from multiple providers in different formats while providing personalized experiences and 100% uptime for users. ### Travel and hospitality Use dynamic digital catalogs with time- and inventory-sensitive data to support reservations, preferences, and loyalty programs for millions of travellers. ### Field service Give field service reps remote access to data so they can place orders and manage sales in stores, with or without internet connectivity. ### Why use a NoSQL database for product catalogs? NoSQL databases excel at managing varied and unstructured data. Their scalability and flexibility are ideal for integrating new sources into a catalog of product content. ### Why is JSON the preferred format for catalogs? Product information is dynamic and needs regular attention due to pricing changes, diminishing inventory, or AI-powered product description management and creation. ### What challenges come with NoSQL for adaptive catalogs? Challenges include maintaining data consistency as product information changes. Synchronizing data across diverse systems and mobile devices adds complexity. ### How does NoSQL handle scalability and performance? NoSQL product catalog databases use distributed architectures to scale out across multiple servers, supporting the large data volumes and high throughput crucial for processing diverse customer 360 datasets. ### What about data security and privacy concerns? Couchbase offerings secure data in transit and at rest, and process ACID transactions for JSON, which ensures purchases are complete. ### How do NoSQL DBs integrate with enterprise apps? NoSQL databases offer robust APIs and connectors for integration with enterprise applications, including inventory systems, employee scheduling systems and customer 360 analytic environments. --- # Real-Time Analytics Database Use Cases & Architecture Source: https://www.couchbase.com/use-cases/real-time-analytics/ Last modified: 2026-05-27T03:52:55+00:00 Blog Video Real-time Analytics Real-time analytics instantly transforms data into actionable insights, enabling large enterprises to adapt with agility and precision. Timely information enables better-informed decisions, optimizes operations, and uncovers new opportunities. Detect and prevent fraudulent activities by continuously monitoring transaction data and user behavior patterns. Flag anomalies and unusual activities for further investigation. Deliver personalized experiences by analyzing customer data as it’s generated. Real-time analytics applications can tailor recommendations, offers, and content based on customer preferences and context. Use your favorite BI tools like PowerBI for operational analytics. There is a native Tableau connector, too! Improve the analysis of product adoption and deliver better suggested content for end users. Couchbase effortlessly, ensuring that performance remains consistent as your data grows so you can efficiently analyze large datasets without compromising speed or reliability. Its **real-time analytics architecture** separates compute from storage and uses the infinite scale of AWS S3 and GCS for storage, or deploy on premises and scale as desired. Couchbase’s powerful query engine allows you to use SQL++ (SQL for JSON) to execute intricate data analyses efficiently. This flexibility enables you to extract valuable insights from your data. Absolutely. Couchbase Analytics maintains direct connections with Couchbase’s operational services using our Data Control Protocol. Data integration support for AWS S3, Google Cloud Storage including JSON, Parquet, Avro, CSV, Delta Lake and other text formats is available. Native support for Tableau, Power BI, and Apache Superset BI ad hoc query and visualization tools**.** --- # NoSQL Database for E-Commerce & Retail Source: https://www.couchbase.com/use-cases/retail-and-ecommerce/ Last modified: 2026-04-24T07:47:08+00:00 ### Data modeling complexity Inefficient data modeling can make data retrieval and analysis difficult, leading to poor user experiences and slower insights. WHY COUCHBASE Retail and e-commerce organizations rely on Couchbase’s NoSQL database to power mission-critical applications that demand high performance, scalability, and flexibility. Explore the key features and real-world use cases that make Couchbase a go-to NoSQL database for modern digital commerce. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # Database Session Management & Caching for Applications Source: https://www.couchbase.com/use-cases/session-management/ Last modified: 2026-04-24T08:03:59+00:00 WHITEPAPER Caching & Session Management ## Top caching and session management use cases Learn how organizations across industries use Couchbase’s database session caching and management as a tool for app improvement. ### High tech Speed up your apps with Couchbase’s powerful caching. Get fast data access and stable session storage, making your high-tech applications more efficient. ### Media and entertainment Ensure seamless streaming and personalized experiences by efficiently handling spikes in streaming traffic with robust caching and session storage. ### Travel and hospitality Enhance travel apps with fast, reliable session storage and caching, ensuring quick bookings and a problem-free user experience even during peak times. ### Telecom Use fast and powerful caching to support continuous and rapid access to massive amounts of telecom data for real-time personalized service. ### What is session storage, and how does it differ from caching? Session storage is temporary storage of user-specific data during a browsing session. Caching stores frequently accessed data to reduce the need to access the original source repeatedly. ### How does caching impact database performance? Caching can improve database performance and scalability by reducing the number of operations hitting the database. By serving frequently accessed data from the cache, databases experience less load. ### Why is flexibility important for session storage? Data flexibility and proper modeling enhance management of user-specific information by accommodating a variety of session attributes and optimizing storage, retrieval, and maintenance. ### How can a cache be cleared to keep data fresh? TTL, or time-to-live, specifies how long data remains valid in a cache before it expires and needs to be refreshed or removed. --- # Enterprise-Ready AI Personalization: Dynamic Profiles & Use Cases Source: https://www.couchbase.com/use-cases/smart-personalization/ Last modified: 2026-04-30T08:21:45+00:00 WEBPAGE USE CASE # AI-Powered Personalization Use Cases Couchbase enables AI-powered, enterprise-ready personalization by combining real-time performance with the flexibility of JSON-based profiles. Built for scale, Couchbase lets developers integrate GenAI, vector search, and dynamic context to deliver hyper-personalized experiences across every customer touchpoint. --- # Telecommunications Database | Scalable NoSQL Platform by Couchbase Source: https://www.couchbase.com/use-cases/telecommunications/ Last modified: 2026-04-24T07:48:16+00:00 ### Data modeling complexity Inefficient data modeling can result in difficulties in data retrieval and analysis, affecting user experience WHY COUCHBASE Key features for why telecommunication customers choose Couchbase’s NoSQL database solution for their mission-critical applications. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. The Analytics service in Couchbase reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # NoSQL Database Solutions for Travel and Hospitality Source: https://www.couchbase.com/use-cases/travel-and-hospitality/ Last modified: 2026-04-24T07:49:46+00:00 ### Data modeling complexity Inefficient data modeling in a hospitality industry database can result in difficulties in data retrieval and analysis, directly affecting user experience. WHY COUCHBASE Key features for why travel and hospitality customers choose Couchbase’s travel database solutions for their mission-critical applications. With Couchbase, organizations gain a modern hospitality database designed for scalability, real-time performance, and always-on customer experiences. Couchbase provides built-in high availability and flexible replication capabilities that supports disaster recovery. Couchbase Mobile extends apps from the cloud to the edge with an embedded NoSQL database and a web gateway for data sync. Couchbase’s network-centric architecture allows the database to be easily extended while maintaining performance at scale. Couchbase’s in-memory and distributed architecture consistently delivers the sub-millisecond responsiveness that users need. Couchbase drives the flexibility and increased operational efficiency you need to keep up with constantly changing data. Capella Columnar, the analytics service in Couchbase, reduces the time to insight on operational data and simplifies analytical data pipelines. CUSTOMERS --- # Why Choose Couchbase? Source: https://www.couchbase.com/why-couchbase/ Last modified: 2026-06-30T14:45:12+00:00 ### Fast Say goodbye to trade-offs between speed and reliability. We offer in‑memory performance, storage, and scaling. Tap into sub-millisecond latency, even for millions of operations at once. Couchbase is the only data platform that connects and mobilizes a variety of data sources, so you can power critical experiences, awaken possibilities in AI, and scale globally - all with less risk and lower overhead. Built for Global Business. Don’t let data slow you down. Instead, make it the foundation for your next breakthrough. We help you move fast and stay resilient, no matter what your future holds. Say goodbye to trade-offs between speed and reliability. We offer in‑memory performance, storage, and scaling. Tap into sub-millisecond latency, even for millions of operations at once. We scale linearly to hundreds of nodes, offering powerful, distributed data performance. Couchbase can handle many data access patterns at once: key-value, JSON document, search, time series, analytics, eventing, and SQL query. Consolidate databases and data services into one layer to improves visibility across your business and around the world. We saw the current JSON and AI revolutions before they started. We’ve been JSON-native since our inception, and it’s why we’re poised to build unified databases native to how developers lay infrastructure today. We play nice with all types of data, from account personalization information to metadata. With Couchbase, you no longer need to tape together a disconnected tech stack. All generative AI LLMs understand how to create and query JSON documents. It’s the ideal format to support many data access patterns from key-value to SQL++ to full-text search. CUSTOMERS ---