SQL is a relational database management system (RDBMS) and, as the name implies, it is built around relational algebra and tuple relational calculus. It has been the primary database solution since the ’70s and only recently made room for newcomers. Whatever some people may say, this primarily signifies that it has been, and still is, good enough for a wide range of tasks. Its primary advantages are as follows:
- It uses a single uniform language (DDL) for different roles (developer, user, DBA).
- It uses a single standardized language for different RDBMS.
- It uses an advanced and non-structural querying language.
- It sticks to ACID principles (atomicity, consistency, isolation, durability), thus guaranteeing stability, security, and predictability both of the entire database and every transaction in particular.
As you can see, a lot of SQL’s benefits come from its uniformity, comfort, and ease of use. Even with a very limited knowledge of SQL (or entirely without it, if need be) you can reliably use it with the help of special tools like an online SQL Query Builder.
The drawbacks, however, make it highly unsuitable for certain types of projects. The main problem with SQL is that it is very difficult to scale as much as a database grows larger. Sharding is quite problematic as well.
One of the reasons NoSQL and NewSQL appeared was the fact that old RDBMS weren’t designed to handle the number of transactions modern databases have to deal with every second. Giants like Amazon or Alibaba deal with staggering amounts of data that will choke an old RDBMS in a matter of minutes.
NoSQL (Not Only SQL)
NoSQL is accomplishing more noteworthy and more prominent ubiquity as time passes, its most critical usage being such products as Apache Cassandra, MongoDB, and others. It has been fundamentally evolved to address the adaptability issue normal for SQL. Subsequently, it is without construction and based on circulated frameworks, which makes it simple to scale and shard.
In any case, these advantages come at the expense of loosening up ACID standards: rather than keeping each of the four boundaries steady all through each exchange, NoSQL utilizes the rule of inevitable consistency. This implies that if there are no new updates for a specific data thing for a specific timeframe, in the long run all gets to it will restore the last refreshed worth. That is the reason such frameworks are generally portrayed as giving BASE ensures (Basically Available, Soft state, Eventual consistency) — instead of ACID.
While this methodology incredibly expands access time and versatility, it might prompt data misfortune – the seriousness of the issue relies upon database worker uphold and the nature of utilization code. Sometimes, this issue may be intense.
Another issue introduced by NoSQL is the way that there are numerous sorts of NoSQL frameworks, and there is little consistency among them. Such qualities as adaptability, execution, unpredictability, versatility, etc shift extraordinarily among various frameworks, which makes browsing among them troublesome in any event, for experienced trained professionals. By and by, when appropriately picked in concordance with the undertaking’s idiosyncrasies, NoSQL can give a substantially more proficient arrangement than a SQL framework without a huge misfortune in solidness.
There are a lot of myths and misconceptions surrounding SQL: for example, that SQL is outdated and should be replaced by NoSQL or New SQL whenever possible. Of course, that’s not true. Currently, there is no clear-cut leader among the three basic alternatives – each of them is more suitable for some projects and less suitable (or outright unsuitable) in other situations. Therefore, there is no universal ideal choice. For example, if your primary consideration is that a database should always be immediately available to accept new and provide existing content, you should consider an eventual consistency solution like Cassandra or Riak. If you go for fast in-memory SQL, a new in-memory database like VoltDB seems to be the obvious choice; and so on.
Other links : SQL