NoSQL became a widely discussed technology in 2010 (even though some people just call it hype). There are multiple arguments/discussions on this topic. People’s opinions range from total neglect of NoSQL to “let’s-rewrite-everything-done-so-far”attitude. At Sphere, we believe that every technology has its pros and cons. You need to know them in order to make the most effective solutions. So the goal of this post is to describe the pros and cons of NoSQL solutions compared to traditional databases.
Since the 1970’s, relational databases became the mainstream due to several reasons. Some of them are:
- Simplicity of relational model.
- Solid theoretical basis and normalization rules.
- Simple and very powerful SQL language which was resembling human language.
- Easy data manipulation.
- ACID properties.
- High level of standardization.
- Standardized API’s.
The “Relational approach” was very elegant and so powerful compared to other software technologies that led it to total domination. Nowadays there’s increased demand for scalability and people started looking at NoSQL (or non-relational) solutions. There’s a plethora of NoSQL solutions of different maturity levels now. We’ve compiled most common pros and cons of NoSQL. Important disclaimer: Some of the NoSQL projects have functionality that is not typical for this kind of databases (like indexing), we were considering “typical” NoSQL solution.
NoSQL pros (not ordered by importance):
- Mostly open source.
- Horizontal scalability. There’s no need for complex joins and data can be easily sharded and processed in parallel.
- Support for Map/Reduce. This is a simple paradigm that allows for scaling computation on cluster of computing nodes.
- No need to develop fine-grained data model – it saves development time.
- Easy to use.
- Very fast for adding new data and for simple operations/queries.
- No need to make significant changes in code when data structure is modified.
- Ability to store complex data types (for document based solutions) in a single item of storage.
- Immaturity. Still lots of rough edges.
- Possible database administration issues. NoSQL often sacrifices features that are present in SQL solutions “by default” for the sake of performance. For example, one needs to check different data durability modes and journaling in order not to be caught by surprise after a cold restart of the system. Memory consumption is one more important chapter to read up on in the database manual because memory is usually heavily used.
- No indexing support (Some solutions like MongoDB have indexing but it’s not as powerful as in SQL solutions).
- No ACID (Some solutions have just atomicity support on single object level).
- Bad reporting performance.
- Complex consistency models (like eventual consistency). CAP theorem states that it’s not possible to achieve consistency, availability and partitioning tolerance at the same time. NoSQL vendors are trying to make their solutions as fast as possible and consistency is most typical trade-off.
- Absence of standardization. No standard APIs or query language. It means that migration to a solution from different vendor is more costly. Also there are no standard tools (e.g. for reporting)
At Sphere, we believe that there’s still no silver bullet in technologies. We embrace NoSQL but at the same time we understand that there’s no need to give up using relational databases. The pragmatic approach is to use the best of both worlds (see http://martinfowler.com/bliki/PolyglotPersistence.html). For transactional data, reporting and business intelligence, we still use SQL solutions. At the same time we recommend to consider NoSQL for logging, caching, session storage and self-sufficient data like incoming email, product reviews, etc. We also recommend evolutional development of applications and refactoring application modules in order to use NoSQL solutions on demand.
Sphere Consulting, Inc., is a global provider of software development, testing and technology consulting services. We are passionate about bringing the best commercial software to market from start up businesses to Fortune 500, as well as businesses that rely on software to drive their business growth and customer satisfaction.
As a software development company Sphere Consulting provides custom application development for web in Ruby on Rails, .NET, LAMP, Java and mobile (iOS and Android).
Our business intelligence solutions engineers are experts at creating OLAP Data Warehouses and Big Data analytics solutions with open-source and licensed tools.
We've proven our expertise developing high performance applications that scale since 2005.
Our Research and Development Centers are staffed with experienced software craftsmen that bring years of experience in all facets of development. Our methodologies for hybrid projects utilize onshore business analysts and project managers to create detailed plans aligned with your business strategy. Our talented offshore team located in Ukraine and Russia converts the plans into a tangible product. This approach gives you the best mix of western business practices with the cost savings of offshore talent.