Почему Google BigTable называется базой данных NoSQL? - PullRequest
2 голосов
/ 23 ноября 2010

Из Википедии:

Известные производственные реализации [из баз данных NoSQL] включает в себя Google BigTable, Amazon Динамо и Cassandra.

Но Google BigTable имеет некоторый вариант SQL, называемый GQL .

Что мне не хватает?

Ответы [ 3 ]

18 голосов
/ 23 ноября 2010

NoSQL - это общий термин для всех баз данных, которые отличаются от «стандартных» баз данных SQL, таких как MySQL, Microsoft SQL Server и PostgreSQL.

Все эти «стандартные» базы данных SQL - это реляционные базы данных,использовать язык запросов SQL и придерживаться свойств ACID .Эти свойства в основном сводятся к согласованности .

База данных NoSQL отличается тем, что она не поддерживает одну или несколько из этих ключевых функций так называемых «баз данных SQL»:

  • Согласованность
  • Реляционные данные
  • Язык SQL

Большинство этих функций идут рука об руку.

Согласованность

Согласованность - это то, где большинство баз данных NoSQL отличаются от баз данных SQL.Вы можете извлечь плагин из базы данных SQL, и он позаботится о том, чтобы ваши данные оставались согласованными и не поврежденными.Базы данных NoSQL, как правило, жертвуют этой согласованностью для лучшей масштабируемости.Google Bigtable также делает это.

Реляционные данные

Базы данных SQL вращаются вокруг нормализованных, реляционных данных.База данных гарантирует, что эти отношения остаются действительными и последовательными, независимо от того, что вы на них бросаете.Базы данных NoSQL обычно не поддерживают отношения, потому что они не поддерживают согласованность для обеспечения этих отношений.Кроме того, реляционные данные ухудшают производительность, когда данные распределены по нескольким серверам.

Исключением являются графовые базы данных .Они считаются базами данных NoSQL, но содержат реляционные данные.Фактически, это то, о чем они все говорят!

Язык SQL

Язык SQL был разработан специально для реляционных баз данных, так называемых «баз данных SQL».Поскольку большинство баз данных NoSQL сильно отличаются от реляционных баз данных, они не нуждаются в SQL.Кроме того, некоторые базы данных NoSQL имеют функции, которые просто не могут быть выражены в SQL, поэтому требуется другой язык запросов.

И последнее, но не менее важное, NoSQL - это просто модное слово .В основном это означает «все, кроме старого и надежного сервера MySQL на чердаке», который включает в себя много альтернативных механизмов хранения.Даже простой текстовый файл можно считать решением NoSQL:)

6 голосов
/ 23 ноября 2010

Когда люди говорят «NoSQL», они обычно имеют в виду «нереляционные». Насколько мне известно, в BigTable нет первичных / внешних ключей, JOIN или каких-либо реляционных исчислений.

Тот факт, что BigTable имеет синтаксис запроса, который включает слова «SELECT» и «WHERE», не означает, что он придерживается принципов реляционных баз данных. Это скорее удобство, или «ловушка», чтобы сделать совпадения типа одного объекта более знакомыми для программистов из реляционных баз данных.

0 голосов
/ 03 февраля 2014

BigTable от Google действительно имеет некоторый вариант SQL, называемый GQL

Ну, в этом весь смысл. У них действительно есть язык No (t) SQL. Только этого достаточно для того, чтобы быть классифицированным.

Единственное, что вам следует искать во всех базах данных NoSQL (график, документ, большая таблица ...), это то, что они не отвечают на запросы SQL.

Поддержка SQL имеет огромное ограничение на внутреннюю организацию данных и алгоритмы, которые вы можете использовать. NoSQL отказывается от этих ограничений для реализации альтернативных алгоритмов для улучшения важных функций, которые являются жертвами полного соответствия SQL.

...