Why Google's BigTable referred as a NoSQL database?
Asked Answered
T

3

2

From Wikipedia:

Notable production implementations [of NoSQL databases] include Google's BigTable, Amazon's Dynamo and Cassandra.

But Google's BigTable does have some variant of SQL, called GQL.

What am I missing?

Triangular answered 23/11, 2010 at 12:13 Comment(1)
Most NoSQL languages have some kind of query language. That one happens to be called something similar to SQL (though this is probably no accident).Houri
I
18

NoSQL is an umbrella term for all the databases that are different from 'the standard' SQL databases, such as MySQL, Microsoft SQL Server and PostgreSQL.

These 'standard' SQL databases are all relational databases, feature the SQL query language and adhere to the ACID properties. These properties basically boil down to consistency.

A NoSQL database is different because it doesn't support one or more of these key features of the so-called 'SQL databases':

  • Consistency
  • Relational data
  • SQL language

Most of these features go hand in hand.

Consistency

Consistency is where most NoSQL databases differ from SQL databases. You can pull the plug from a SQL database and it will make sure your data is still consistent and uncorrupted. NoSQL databases tend to sacrifice this consistency for better scalability. Google's Bigtable also does this.

Relational data

SQL databases revolve around normalized, relational data. The database ensures that these relations stay valid and consistent, no matter what you throw at it. NoSQL databases usually don't support relations, because they don't support the consistency to enforce these relations. Also, relational data is bad for performance when the data is distributed across several servers.

An exception are graph databases. These are considered NoSQL databases, but do feature relational data. In fact, that's what they're all about!

SQL language

The SQL language was designed especially for relational databases, the so-called 'SQL databases'. Since most NoSQL databases are very different from relational databases, they don't have the need for SQL. Also, some NoSQL databases have features that simply cannot be expressed in SQL, thus requiring a different query language.

Last, but not least, NoSQL is simply a buzzword. It basically means 'anything but the old and trusty MySQL server in the attic', which includes a lot of alternative storage mechanisms. Even a simple text file can be considered a NoSQL solution :)

Ivanaivanah answered 23/11, 2010 at 12:55 Comment(3)
Niels, Re: "Relational data". The only way I can interpret what you wrote is that you don't know what "relational" means or what a relation is. A graph database is definitively not relational and does not support relational data. The statement that "relational data is bad for performance when the data is distributed" is vague and not credible.Coruscate
@dportas: I was talking about entities that are related to one another (e.g. a customer and an address) and this relation being represented by a structure that is comprehended by the database (e.g. a foreign key). I was not talking about the relation data structure. Graph databases do comprehend the relations between entities, otherwise graph operations such as 'the shortest path between A and B' wouldn't be feasible.Ivanaivanah
@dportas, Right. You are talking about relationships and constraints, not relations or relational databases. However it would be wrong to say that NOSQL databases other than graph databases don't support relationships or constraints. It's just that graph databases also support certain navigational structures - they are network databases in fact. The term "relational data" is not the right way to describe a graph.Coruscate
K
7

When people say "NoSQL" what they generally mean is "non-relational". To the best of my knowledge BigTable does not feature primary / foreign keys, JOINs, or relational calculus of any type.

The fact that BigTable features a query syntax that includes the words "SELECT" and "WHERE" does not mean it adheres to the principles of relational databases. It's more of a convenience, or a "hook", to make single-entity-type matches more familiar to programmers coming from relational databases.

Krishnakrishnah answered 23/11, 2010 at 12:18 Comment(0)
T
0

Google's BigTable does have some variant of SQL, called GQL

Well, that is the whole point. They do have a language that is No(t) SQL. Only that is reason enough to be classified apart.

The only thing that you should look in common across al NoSQL databases (graph, document, big table...) is that they do not answer to SQL queries.

Supporting SQL has a huge restriction on how data is organized internally and the algorithms you can use. NoSQL refuse those restrictions to implement alternative algorithms to improve important features that are victims of a full SQL compliance.

Trooper answered 3/2, 2014 at 15:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.