NoSQL, most commonly expanded as ‘Not only SQL’, is a family of database management models that deviates from traditional RelatIonal DBMS principles embodied by databases like MySQL. The most fundamental difference between NoSQL and MySQL is that while MySQL makes use of tables for storing and retrieving data, NoSQL utilizes others means like key-value stores, document stores, BigTables (Google) and graphs. The following sections analyze some of the major differences between the two.
USE OF SQL AS QUERY LANGUAGE
All traditional RDBMS structures, including MySQL, use versions of SQL as their query language. This applies well to data that has a fixed schema, which responds uniformly to SQL commands like JOIN and GROUP BY. In the present Internet scenario, where large volumes of variably-structured data have to be handled quickly, new methods have been developed that focus primarily on efficient retrieval. For example, video streaming deals with large datasets that don’t necessarily follow a fixed schema. NoSQL databases generally treat this data as key-value pairs stored on a multitude of servers, which can be retrieved by traditional programming methods. Relational operations like JOIN don’t apply to such data.
ACID vs CAP
MySQL, like all RDBMS, has built-in atomicity, consistency, isolation and durability (ACID) characteristics. NoSQL systems, on the other hand, guarantee at most two of the following three:
- Tolerance to network Partitioning
Many implementations of NoSQL, like Google’s BigTable, guarantee consistency and availability, but not the third attribute. Other examples like the Amazon Dynamo guarantee eventual consistency, which nearly, but not truly, capture all three. This means that given enough time, all updates are likely to propagate through the entire distributed system.
Unlike MySQL, NoSQL systems employ a distributed architecture that makes use of a large number of servers to mitigate size limitations and for high availability or redundancy. This makes retrieval fast and reliable, minimizing the dependence on system failure. Even if one of the servers breaks down, the data can be retrieved from one of the others. This is particularly applicable to modern systems, where real-time performance is preferred over consistency. Also, the distributed architecture makes NoSQL databases scalable, wherein the system can be expanded simply by adding more machines.
FEATURES VS PERFORMANCE
MySQL is significantly more feature-intensive than most NoSQL systems, and offers greater run-time flexibilities. However, handling large data volumes (documents, high-traffic websites etc.) requires stripped-down models that focus on performance. In this regard, NoSQL is a more suitable choice, as it jettisons the transactional safety overheads of MySQL (ACID guarantees) to deliver highly efficient appending and retrieval functionalities. Recently, however, MySQL has been tuned to perform close to the operational levels of NoSQL, by bypassing layers.
Choosing between the two types of DBMS is dependent primarily on the type and volume of the data being handled. For limited, structured data, MySQL is a better choice as it offers many features like Transaction Logging and ETL packages that NoSQL models don’t. For large volumes where scalability and performance are the major issues, NoSQL systems like the Google BigTable, the Amazon Dynamo and the Apache Cassandra are preferable.