Building climate change strategies with Geodesign Hub and CouchDB

We were excited to connect with Dr. Hrishikesh Ballal, the Managing Director at Geodesign Hub this past week.

Geodesign Hub provides advanced collaborative design technologies to enable their customers to build climate change and resilience strategies, plan for infrastructure investments, and develop cultural, tourism, and environmental management strategies.

Hrishi spoke with us about how he first discovered CouchDB and what his experience has been like employing it in applications.

How did you hear about CouchDB, and why did you choose to use it?

I heard about CouchDB when I was doing research about NoSQL databases, I was looking for a solution where I could use a different data storage technology that complements the primary PostgreSQL database.

The ability to handle many requests and the sync engine are the two main reasons we chose CouchDB. It it important for us to be able to replicate data and also maintain a good throughput on the server, so CouchDB was a obvious choice. Additionally, CouchDB is excellent at being stable and responding to many requests. CouchDB also has, in my opinion, the best in-class sync protocol and with PouchDB, you can jump in the JavaScript toolset and browsers as well.

Did you have a specific problem that CouchDB solved?

In our case, the main problem was that all connected clients requested different versions of data at the same time, thereby flooding our server with requests. It also meant that our database got clogged responding and fetching.

In addition, we had code that parsed each request to check the version to route it to a different database. Caching and other techniques solved this problem partially but it all seemed like a hack and we always had to tweak the settings. So CouchDB solves this problem very elegantly: to be stable under large loads, automatically version the data and transmit it reliably.

For the folks who are unsure of how they could use CouchDB–because there are a lot of databases out there—could you explain the use case?

First off, the use case for CouchDB is around data management and syncing over a distributed network. If you have data that needs to move over a network (public or private), I would really recommend looking at CouchDB.

Secondly, CouchDB very elegantly handles changes and versioning inside the database, and while one can do it using software (we did it originally), inbuilt versioning is very nice if you have data that changes. So far, we have been able to handle all sorts of requests with no major changes to hardware or need for beefy servers.

Finally, the CouchDB toolset allows transmission and propagation of these seamlessly so I recommend taking a look at PouchDB, they have excellent documentation and a great community.

What would you say is the top benefit of using CouchDB?

I would list:
– Sync
– Stability
– Versioning

Also, HTTP API, the Python library, and PouchDB, among others.

What tools are you using in addition for your infrastructure? Have you discovered anything that pairs well with CouchDB?

I have put CouchDB behind Nginx and it works quite nicely as a proxy and you can use all the web server features with CouchDB. I have heard that a CDN can be built using tools like Cloudflare, and it is something we are looking at. Of course, Cloudant works nicely as well, we use it as a secondary data source. The folks at Cloudant are really great and just for the support they provide, I would highly recommend them. I have been with them for a number of years.

What are your future plans with your project? Any cool plans or developments you want to promote?

We are a platform for collaborative urban planning and design and I am passionate about geodesign, so I am always happy to talk to people who are interested in urban issues.

Geodesign provides really important toolset in the context of urban management and changes in climate. The best place to know more is to join our community and introduce yourself. On the technical side, you can take a look at our API here and here, or find your way to our GitHub page to contribute.

 

Use cases are a great avenue for sharing useful technical information. Please consider joining the fun! Additionally, if there’s something you’d like to see covered on the CouchDB blog, we would love to accommodate. Email us!

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