NoSQL databases are quickly becoming the hottest buzzword technology, and for good reason. According to a survey done by couchbase, the developers behind couchDB, nearly half of the 1,300 respondents surveyed indicated that they had invested in NoSQL projects in the first half of the year. Couchbase also claims that 70% of companies with more than 250 developers responded saying they would fund NoSQL projects in 2012. NoSQL databases offer some very promising features, that may provide advantages for start-ups who choose to use a NoSQL solution for their databases. This article will strictly show how NoSQL pertains to start-ups, and hopefully give the reader plenty to chew on when deciding whether or not to use a NoSQL database. Below is a quick breakdown of the reasons the respondents in Couchbase’s survey are considering the switch to NoSQL.
I wont say NoSQL is in its infancy, however it does still remain far from the level of maturity of SQL databases and comes in many flavors. These flavors have several key differences and will influence the decision-making process. NoSQL, in short, has not yet gone through the natural selection that SQL databases have and is just now starting to gain ground with some important pioneers of the technology.
NoSQL enhances the ability to implement rapid and agile development methodologies. Often, with a start-up, having the “perfect” product isn’t necessarily as important as having a product that can be out the door and capitalized on as quickly as possible. NoSQL is schema-less and absorbs changes to record structures without complaint. A database schema is a way to logically group objects such as tables, views, stored procedures etc. With a traditional RDBMS, releases of code might contain data migration scripts. Further, each release should have a reverse migration script in case a rollback is necessary. ALTER TABLE operations can be very slow and result in scheduled downtime. This schema design can also mean very rigid requirements for what and how your going to store your data. In a start-up environment, some flexibility with business goals and direction is often a good thing, and could mean stumbling on a “pot of gold” you may have been initially unaware of. With a schemaless database, 90% of the time adjustments to the database become transparent and automatic. For example, if we wish to add GPA to the student objects, we add the attribute, resave, and all is well — if we look up an existing student and reference GPA, we just get back null. Further, if we roll back our code, the new GPA fields in the existing objects are unlikely to cause problems if our code was well written.SQL based development environments require modifications to the schema before new code can be implemented. NoSQL follows your code, whereas SQL drives the coding effort.
One of the key benefits for choosing NoSQL is its simplicity in implementation. This simplicity allows for someone with very little technical knowledge to get by with using a NoSQL solution. NoSQL’s ease of use could potentially eliminate the need for a specific DBA. Although, a DBA may eventually still be neccessary, NoSQL’s flexibility and shallow learning curve allow for someone with little technical knowledge to get by. This could mean a substantial payroll savings potential for the all too familiar cash-strapped start-up. By cutting out another salary, funds can obviously be invested directly into the other crucial aspects of the product.
NoSQL is intrinsically scalable, due to its schema-less nature and eventually consistency. Have no schema means that you can throw any datatype at it and it will run with it. This allows for quick ramp-up should your application suddenly take off. NoSQL takes the initial pressure off, both in cost and time, and allows for growth as your product grows. This should in-turn mean a growth in revenue, keeping the start-up at a level they can afford instead of the upfront demands SQL requires. Many will argue that unless your Google, you don’t need to be able scale. Although this may be true, NoSQL is far cheaper than preparing the perfect scaling SQL solution. Absent a crystal ball, start-ups have no idea what their scalability requirements will be, therefore it just seems to make good business sense to be prepared, especially with the reduced cost and workload of the NoSQL solution.
NoSQL is built for the cloud and because of that, seems to reflect the direction of the future. Keeping everything in the cloud has become the easiest and most cost-effective method for database and IT systems development/management. Big companies are running to the cloud in droves, and it seems to be more than just a passing phase. If it works for the big guys, and is easily accessible by anyone, why wouldn’t a start-up employ these same methods.
NoSQL is non-transactional meaning that it eliminates SQL multiple table write operations in a transaction. Using NoSQL, one can pull an entire document with its “child records” contained in a single key-value pair as an array. This allows you to modify the entire document and put it back in a single write operation.
NoSQL eliminates the insanity of the typical database architecture. Developers don’t want to write a bunch of code to accomplish complex joins. This in turn requires the DBA to provide them with a non-normalized view of their normalized data. Essentially, the DBA designs the database architecture to be normalized, however the data in nearly every case must be consumed by the application in a non-normalized form. NoSQL has no problems with non-normalized data and can be stored in exactly the same form that its consumed. Why do the extra step of normalizing the data, just to denormalize it later?
This isn’t to say that SQL is obsolete or out-dated, however NoSQL is on the rise and doesn’t appear to be going anywhere anytime soon. I think that as the technology matures, we will see far more benefits from using it. While there is as of yet no clear winner for the NoSQL database of the future, the cost of migration is essentially nothing. This allows for huge flexibility should your start-up gamble on the wrong NoSQL database.
Some examples of start-ups and companies that are using NoSQL databases, specifically MongoDB and CouchDB are listed below.
- craigslist – archiving
- foursquare – social networking
- codeacademy – education
- justin.tv – internal analytic
- SAP – content management