From information era’s dawn, has existed the need to store, manage and maintain the most basic resource that a company has and generates throughout its lifespan: data. Thus, this need made the creation of databases to become possible.
Actually we can find two types of databases from “how data is structured” standpoint: SQL and NO-SQL.
Are relational, structured, table-based, keyed with one or more fields, constrained to maintain integrity, have static or predefined schemas, vertically scalable, use SQL as handling database language, preferred for not hierarchical storage, more stable, large community to help with problems, preserves data integrity, emphasizes “ACID” properties (Atomicity, Consistency, Isolation and Durability).
Some SQL database examples are: My-SQL, SQL-Server, Oracle.
Are non-relational, distributed, document-based, key-value pairs, have a dynamic schema for unstructured data, horizontally scalable, use UnQL which doesn’t follow a structured standard as it varies from database to database, favored for hierarchical storage, the community isn’t very large as they are not so widespread, follows the “Brewers CAP theorem” (Consistency, Availability and Partition tolerance).
Some NO-SQL database examples are: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j and CouchDb.
So the question that now arises is: What kind of database do I use? SQL database, or NO SQL database?
The answer to this question probably would be: if data in your application is growing fast and you need to be able to scale out quickly and efficiently, the way to go is NO-SQL; on the other hand, if the data that you manage isn’t changing in structure or nature and the growth of data is linear, your alternative points to SQL.
Written by Carlos Alberto Teruel