We rearchitected our B2B application opTEAMize from MySQL to Cloudant. A few thoughts on why the big move.
opTEAMize is a SaaS application that enables Operational heads of IT/ITeS to quickly and easily search and select teams for IT Projects. We started off with MySQL but in March 2014 after inking a business partnership agreement with IBM, we were more inclined to try the NoSQL-supported fork of CouchDB called Cloudant of which we had heard good things.
MySQL, CouchDB, and Cloudant
Since we wanted our application to be highly scalable running with minimal database operational interference, Cloudant it was for us. Their Database as a Service model really impressed us. The DBaaS and gaining the backing of the IBM brand since our challenge was to sell to B2B users were the primary reasons behind the move to NoSQL >> CouchDB fork >> Cloudant.
There is no denying that SQL databases have been a vital part of the IT infrastructure of most organizations for over 3 decades. Even MySQL, a relatively newer and most popular open-source RDBMS (since gobbled up by Oracle) powers many e-commerce and Online Transaction Processing (OLTP) applications. Google, Ticketmaster, Facebook, and eBay still depend on MySQL for running their businesses.
These days, technology changes are fast and furious and now the buzzword on the street is “Big Data”. The day Hadoop training posters swamp SAP, the tide has changed at least here in India! So what is Big Data and how does CouchDB fit into all this?
‘Big data’ is a catch-phrase, used to describe a massive volume of both structured and unstructured data that is so large that it’s difficult to process using traditional database and software techniques. In most enterprise scenarios the data is too big or it moves too fast or it exceeds current processing capacity. Big data has the potential to help companies improve operations and make faster, more intelligent decisions.
NoSQL databases by their inherent functionality tend to be able to handle Big Data better and hence the overlapping terminology in use currently though not technically accurate. Also, the NoSQL is so called because they quite don’t conform to Structured Query Language or SQL rules/requirements.
CouchDB is one form of NoSQL that has grown popular in recent times and with the added backing of IBM through Cloudant, we expect greater things in months to come as the competition with NoSQL market leader MongoDB intensifies.
Since this topic is all about Cloudant & MySQL, let’s take a deeper look at the differences between the two of them and why Cloudant may possibly work better for us.
Pros of CouchDB
CouchDB has some really amazing features. In addition to those mentioned on the Cloudant site, here are a few more that we wanted to state:
1. It stands up better to synchronous use by multiple users because it has utterly no read locks. This is possible because CouchDB never updates documents in place. Changes are always appended to the end of the database file. Consequently, writes that occur while views are being queried won’t ever interfere with those queries.
2. Non-Relational database means no table/key model: CouchDB databases are non-relational, hence, very different from SQL databases. They can be easily managed and are flexible and have several data models.
3. The open source nature of CouchDB databases means the development of a large application is comparatively more economical.
4. Easier scalability through support for Map Reduce. This scalability is not easily achieved by MySQL.
5. Database can be easily replicated unlike MySQL.
6. Any record can get involved in any index any number of times.
7. The addition of Lucene Search is a welcome feature especially in cases where the Map Reduce functionality cannot be fully realized.
Cons of CouchDB
1. CouchDB is relatively new and so the lack of decent forums and technical help groups may be troublesome to some.
2. A major problem is the lack of reporting tools for analysis. There is a need to identify alliances and collaborate better with open source charting tools & libraries such as D3.js and/or with IBM’s own arsenal of analytical tools.
3. CouchDB does not conform to ACID property. Guess that’s the embedded NoSQL part you will take some time to unlearn!
4. If the data can be denormalized, then CouchDB will work fine. Easier said than done.
5. It doesn’t support transactions. It means that enforcing uniqueness of one field across all documents is not safe. Another consequence of CouchDB’s inability to support the typical notion of a transaction is that things, like incrementing or decrementing a value and saving it back, are also possibly dangerous.
Conclusion and Why CouchDB Works
Despite these drawbacks, we still think CouchDB has the potential to revolutionize the way people write web apps. CouchDB is really exciting technology and will only grow bigger and better. We don’t need the server anymore! We only need the database! The database is the server!
More applications are being run on CouchDB and Cloudant databases every day and thus are worth looking into. For Opteamize, being at the forefront of this change has been a wonderful journey for us. Contact Opteamize now.