NoSQL is an umbrella term for all databases other than "standard" SQL databases, such as MySQL, Microsoft SQL Server, and PostgreSQL.
These โstandardโ SQL databases are relational databases, have a SQL query language, and conform to ACID properties . These properties basically come down to consistency.
The NoSQL database is different in that it does not support one or more of these key functions of the so-called "SQL databases":
- Coherence
- Relational data
- SQL language
Most of these features go hand in hand.
Constancy
Consistency is where most NoSQL databases differ from SQL databases. You can pull the cork from the SQL database and make sure that your data is still consistent and intact. NoSQL databases tend to sacrifice this consistency for better scalability. Google Bigtable also does this.
Relational data
SQL databases revolve around normalized relational data. The database ensures that these relationships remain valid and consistent no matter what you throw on it. NoSQL databases generally do not support relationships because they do not maintain consistency to enforce these relationships. In addition, relational data is bad for performance when data is distributed between multiple servers.
The exception is graphical databases . They are considered NoSQL databases, but have a relational data function. In fact, this is what they are all about!
SQL language
The SQL language was developed specifically for relational databases, the so-called "SQL databases". Since most NoSQL databases are very different from relational databases, they do not need SQL. In addition, some NoSQL databases have functions that simply cannot be expressed in SQL, which requires a different query language.
Last but not least, NoSQL is just a buzzword . This basically means "nothing but an old and reliable MySQL server in the attic," which includes many alternative storage mechanisms. Even a simple text file can be thought of as a NoSQL solution :)