What is Apache CouchDB?
Apache CouchDB is document database with seamless multi-master synchronization and an intuitive HTTP/JSON API that is designed from the ground up for reliability.
In my latest lightboarding video, I go through the benefits of CouchDB, explain how it works, and show how it can let your applications access data wherever it needs it to be—offline or online.
Learn more about data and databases
- What is a Cloud Database?
- Databases on IBM Cloud
- How to Choose a Database on IBM Cloud
- A Brief Overview of the Database Landscape
What is Apache CouchDB?
Hi, my name's Adam Kocoloski with IBM Cloud, and I'm here to talk to you today about Apache CouchDB—a database we depend on extensively within the IBM Cloud and one that powers a lot of innovative, modern cloud-native applications.
CouchDB is built of the web
The first thing you'll notice about CouchDB is the way it is built of the web.
Users make HTTP requests to the database and the database responds with JSON payloads.
A natural fit for the microservices era
Developers tend to find this to be a really natural fit in this era of microservices applications, where all of your app's functionalities is itself being decomposed into these different web services.
Durable storage engine
The other critical features about the database are under the covers, so to speak. The database has a very durable storage engine—something that was built from the ground up for this modern world of variable cloud infrastructure. It’s a crash friendly design that always knows how to pick itself up back up and keep on moving.
It's also a very reliable system. CouchDB was developed in a programming language called Erlang that hails from the telecommunications industry and benefits from its decades of experience running production telephony switches.
Scalability as a NoSQL database
And finally, Couch is a NoSQL database, it's a non-relational database and that means that it makes some trade-offs. You have to think about how to model your data in a JSON document form, and you have to have a pretty good understanding of the kind of queries you want to make of the database so that you can design the right you know views and indexes to support those queries.
But if you do in exchange for that, you get scalability. You get predictable, reliable performance of the application as the data volume grows and as the number of users of your application increase.
But really the killer feature about CouchDB is its synchronization capabilities. Let's say you started building your cloud application over here in U.S. West, and you have decided that you need to add a disaster recovery site so you can, at any point in time, replicate the data from U.S. West over here to U.S. East. And now you've got an always-up-to-date copy of the data over here in this other cloud region.
But it doesn't stop there, you can also choose to set up that replication in an active bidirectional fashion. Now, not only do you have another site for fault tolerance and high availability, but you also have the ability to direct your users over on the East Coast to the U. S. East region for lower latency.
Flexibility via single replication mesh
But Couch doesn't stop there. In fact, you can include any number of different other databases in different locations into a single replication mesh.
You could have on-premises systems, you could have edge locations, you could have databases running into other cloud providers. And each of those is able to take a filtered subset of the data down from one of these regions, make changes to it, and push it back up.
That kind of flexibility is really without peer in this world of cloud databases, and I think it's something that is particularly valuable in this hybrid cloud, multicloud world in which we live today.