CouchDB Developer Profile: Nick Vatamaniuc

Nick Vatamaniuc is a Virginia-based software engineer at Cloudant and an Apache CouchDB committer. If his name sounds familiar, you might remember the post he wrote for our series “The Road to CouchDB 2.0” last year on the newly updated Replication feature.

Almost a year later, Nick shares some of his insights on CouchDB, Erlang, the latest updates to replication in 2.0, and where CouchDB is headed in the future.

Do you want to talk about your background, or how you got involved in CouchDB?

I discovered CouchDB around 2010 while looking for a replacement for an existing database. CouchDB had won over all the other alternatives because of its durability, master-to-master replication, and a built-in easy to use web interface to query and inspect data.

But technical merits are only half the equation. I was also impressed with the Apache CouchDB community. They were very welcoming, friendly, and knowledgeable. Always willing to listen and help.

For the next 5+ years I was a CouchDB user and designed it at the core of a few products. During that time it ended up on thousands of servers across the planet, some in harsh and isolated environments. There wasn’t a single instance where CouchDB lost a customer’s data.

Another thing that made CouchDB stand out was that it was written in Erlang. For me it was a new language, so I looked it up and liked what I found. It made it easy to build distributed and fault tolerant systems. So I started to learn it in my spare time.

In 2015 I started working at IBM Cloudant, and last year got elected as an Apache CouchDB committer. Currently, I enjoy contributing to the Apache CouchDB project and being part of the CouchDB community.

What areas of the project do you work on?

I work mainly on what CouchDB developers call “DB Core”. It includes things like data storage, clustering, replication and HTTP layer.

Recently I was involved in improving the replicator. We had just merged to master an updated replicator which can handle a much larger number replication jobs and has a simplified replication task monitoring API.

What’s a recent development/event/aspect of the project that you’re excited about?

Refactoring the project to use less source repositories. Previously most of the core applications were in separate source repositories. Now they are in a single repository and so it is easier to contribute, track changes and build the project from source.

What do you think are the top three benefits of using CouchDB as a database solution?

Master-to-master Replication: Few databases support this feature. It allows creating custom clustering topologies (a ring, star, or a tree for example) with various availability and scalability trade-offs.

Durability and Fault Tolerance: CouchDB is resilient in the face of crashes and power failures. Data is always appended to the end of database files and never directly re-written. This is a simple and robust design. Also because it is written in Erlang, with its famous fault tolerance capabilities, if some parts of the database crash they automatically restart while the rest of the database core stays up and serves client requests.

Built-In Web Interface: Being able to open Fauxton and inspect, query and modify data is a very powerful and useful feature. I can speed up product development, for example by letting a front end developer populate the database by hand with some “mock” data with a few mouse clicks so they can refine their design. It can also help in production when something is not working quite right and there is a need to see the state in the database. For newcomers it makes it easy to learn and experiment.

What do you look forward to in the future of CouchDB?

One of the most interesting new developments I think is the Pluggable Storage Engines work done by Paul Davis. It would allow creating custom data storage backends with various trade-offs and characteristics.

What advice do you have for someone who just discovered CouchDB?

Open Fauxton and experiment! Add some data, and then write some code to modify the data. Have some fun.

Find us on Slack or IRC. Ask questions.

Learn about _bulk_docs API endpoint to insert multiple documents at the same time. That is often a good way to improve insert performance.

Learn about change feeds and use them to create more responsive and dynamic applications.

 

For more about CouchDB visit couchdb.org or follow us on Twitter at @couchdb

Have a suggestion on what you’d like to hear about next on the CouchDB blog? Email us!

CouchDB Developer Profile: Garren Smith

On the road to CouchDB 2.0 last fall, Garren Smith introduced us to Fauxton, the new CouchDB web interface. Garren is the founder of Red Comet Labs, frequent PouchDB contributor, and an Apache CouchDB Project Management Committee (PMC) member.

He recently shared what’s new with Fauxton and his favorite latest feature in the project.

Do you want to talk about your background, or how you got involved in CouchDB?

I first discovered CouchDB in 2010, when I was investigating NoSQL databases. I really liked the way CouchDB worked. My first real usage was in 2012, where I used it in a product, Classroom 7, that I built with my wife. CouchDB was a very effective database to use for Classroom 7. The CouchDB community was also really friendly; so much so that I started looking for ways I could contribute. Around that time Cloudant had also started development on a new web dashboard, which was part of CouchDB, called Fauxton. Because I knew JavaScript, this was the perfect side of the project for me to get involved with.

What areas of the project do you work on?

I have done quite a lot of work on Fauxton, the CouchDB 2.0 web user interface. I am also a PouchDB contributor: my main contributions have been to pouchdb-find, which is PouchDB’s implementation of CouchDB Mango, the new query interface for CouchDB 2.0. Doing the PouchDB work has led me to work on CouchDB Mango, where I make sure that the two play nicely together and also squash any bugs I find along the way.

What’s a recent development/event/aspect of the project that you’re excited about?

There are a few new features that we are currently working on, or have just finished, that I think are really exciting.

The new Replicator and Replicator API, which has just landed in master, is exciting and brings some great performance and stability improvements.

We are working on making it possible to add different storage backends to CouchDB, so in the future it might be possible to use something like RocksDB or InnoDB as the backend for CouchDB. I think this could open up some interesting use cases and possibilities.

I’ve also noticed an increased usage of CouchDB and PouchDB together. This is really fantastic, as it allows developers to create great offline-first applications. For me offline-first applications have such great user-experience advantages, so I’m excited to see PouchDB growing in popularity.

What do you think are the top three benefits of using CouchDB as a database solution?

  • CouchDB’s replication, combined with PouchDB, allows developers to build interesting applications that work even when the user is offline.
  • CouchDB 2’s support for clustering means that CouchDB is a lot more fault-tolerant.
  • CouchDB is a proven technology. It’s been around for a while and has been used in a variety of applications. It’s a database you can trust.

What do you look forward to in the future of CouchDB?

Short term, I’m excited by a lot of the performance and stability fixes we have made since the release of CouchDB 2.0. I’m looking forward to our next release which will include all of these improvements.

The new Replication user interface in Fauxton is really cool and it supports the new Replication API. These two together will make replication more powerful and much easier to use.

In the long term we have planned a set of features that will improve the database per user paradigm; I think this will have massive benefits for people using PouchDB with CouchDB.

CouchDB has a vibrant community and a dedicated team of developers – the future is bright.

What advice do you have for someone who just discovered CouchDB?

CouchDB is an exciting and interesting database to use. If you are coming from the SQL world, it could be a little daunting, since it requires a bit of a mind shift in how you store and retrieve your data. It’s a good idea to first understand the concept of a document-orientated database before diving in completely. Start with the basics, use Mango for querying, and then add a dash of PouchDB for maximum enjoyment.

 

For more about CouchDB visit couchdb.org or follow us on Twitter at @couchdb

Have a suggestion on what you’d like to hear about next on the CouchDB blog? Email us!