In this blog, I am going to discuss Eventing with Couchbase. And to understand eventing, let us first understand what is a mutation? Any changes to the data or metadata in a database are called mutation.
Mutation in Couchbase
The term ‘mutation’ generally refers to document changes happening in the Couchbase cluster. The Couchbase cluster considers create, update, expiry, or delete operations as a data mutation.
Let us understand by an example: Consider the data cluster of an e-Commerce application. Every action is a mutation like when a customer places a new order, a new transaction record gets created, a new purchase-transaction gets appended with the User account, the stock-inventory of the seller gets updated with an every purchase order. Each of these data mutations qualifies as an event in the cluster.
Why is capturing the happening of mutation value-able?
If put simply “Updating data is usually not the end, but usually progress of a workflow cycle.” So knowing the instance of the occurrence of a mutation can help to trigger a lot of following workflows and this indeed can help in real time server-side processing. So to see it let us take a few examples :
- Set alerts to a preconfigured threshold breached
- Monitor specific parameters in a document/json
- Propagate changes to other systems
- Enrich a document in real time
- Cascade deletes to downflow applications
- Streamlining business workflows
What is Couchbase Eventing?
Eventing Service is natively integrated with the Couchbase Data Platform, Couchbase organically manages the data mutations and does not require any third party solutions. In an event-based architecture, all data changes are reactive and in real-time.
Couchbase Eventing is a highly available, performant, and scalable service which 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 from a centralized platform.
Problems without Eventing?
- Difficulty capturing changes: Business requirements and workflows change constantly, and developers find it difficult to capture these changes across all business-critical applications in a timely manner.
- Unreliable execution at scale: It’s difficult to develop an infrastructure that can reliably execute business logic under high-velocity changes in data.
- Inconsistent business logic: When data-driven business logic is not managed centrally, maintaining consistency across multiple client applications is difficult and especially when those applications are managed by different business owners.
Eventing with Couchbase
Couchbase has ‘Functions’, that offers a computing paradigm that can be used to handle data changes and these Functions allow data handling using Event-Condition-Action model. These Functions offers a platform using which you can focus on building the business logic, then over configuration or infrastructure. Functions are used to handle the event that are generated when a document is created, updated, or deleted. The serverless computing infrastructure gets closer to the datastore as the Couchbase Functions integrates with the Couchbase Data Platform.
What to do with the Eventing ‘Functions’?
These functions can be used to various kinds to transformations and operations like :
- generate threshold-based alerts, trigger an alert upon a threshold breach
- monitor specific parameters inside a document
- propagate data changes inside or outside couchbase
Create Eventing Function
Setting up eventing is a simple Five Step process: Start with Addition of a new Function (Import is also possible)
Eventing Tab -> Add Function -> Specify the Source Bucket for Eventing -> Specify Bucket to store metadata -> Provide name to the function
Provide Implementation and Deploy Eventing Function
Save the function and deploy.