Каковы различия между базами данных NoSQL и чем они отличаются от традиционных реляционных баз данных? - PullRequest
3 голосов
/ 23 ноября 2010

Кажется, есть много новых баз данных типа "NoSQL".Некоторые из популярных - CouchDB, Cassandra и MongoDB.

В чем различия между такими базами данных и чем они отличаются от традиционных реляционных баз данных?Каковы преимущества и недостатки выбора NoSQL DB по сравнению с SQL DB?

Ответы [ 6 ]

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

Термин NoSQL охватывает множество различных подходов к хранению данных, начиная от простейшего хранилища ключей / значений и заканчивая сложными базами данных документов. Это броское модное слово, но не очень разборчивое ИМХО.

Для быстрого ознакомления вы можете взглянуть на запись в Википедии для NoSQL

3 голосов
/ 24 ноября 2010

Согласен, вопрос заключается в том, «не что лучше», а «какое решение или набор решений лучше всего подходит для данной конкретной ситуации».

NoSQL охватывает множество различных технологий хранения, таких как CouchDB, MongoDB, Cassandra и Solr.

CouchDB и MongoDB хранят многомерные структуры данных. MongoDB также не содержит схем. Cassandra - это механизм хранения на основе столбцов для быстрого поиска, а Solr помогает решать другие проблемы, такие как огранка.

NoSQL просто относится к любому хранилищу, с которым не взаимодействуют запросы SQL.

1 голос
/ 23 ноября 2010

Они не лучше.NOSQL не содержит никаких инноваций или специальных функций.NOSQL означает просто набор программных продуктов, которые используются для определенных типов приложений, но не обязательно имеют много общего друг с другомNOSQL не обязательно означает нереляционную базу данных.

0 голосов
/ 19 января 2017

Что ж, основные различия обсуждаются ниже. Конечно, сейчас No-SQL концепции становятся популярными день ото дня. Но все же, какой из них нам нужно использовать в зависимости от потребностей или требований проекта.

1) Базы данных SQL в основном называются RDBMS . тогда как база данных NoSQL в первую очередь называется нереляционной или распределенной базой данных.

2) СУБД будет следовать КИСЛОТУ свойств, таких как Atomcity, Consistency, Isolation, Durability. Но в No-Sql она соответствует CAP (Согласованность, доступность и порционирование).

3) В SQL мы храним данные только в табличных форматах. Но в No-SQL он использует коллекцию пар ключ-значение, документы, базы данных графиков или хранилища с широкими столбцами. Так что No-SQL равен Схема свободна и может обрабатывать структурированные, полуструктурированные и неструктурированные данные. Но SQL не является схемой free.SQL имеет Предопределенную схему .i.e В SQL, если у вас есть таблица и в этом первом столбце тип данных int, вы не можете хранить строковые значения или значения с плавающей запятой.

4) СУБД следует SQL (язык структурированных запросов) для определения и обработки данных, что является очень мощным. В базе данных NoSQL запросы ориентированы на сбор документов. Иногда его также называют UnQL (неструктурированный язык запросов). Синтаксис использования UnQL варьируется от базы данных к базе данных. Также базы данных SQL хорошо подходят для среды со сложными запросами, тогда как базы данных NoSQL не подходят для сложных запросов. На высоком уровне NoSQL не имеет стандартных интерфейсов для выполнения сложных запросов, а сами запросы в NoSQL не так мощны, как язык запросов SQL.

Для напр. Возьми Social Eng. сайты, мы загружаем фотографии / видео / музыку / альбом .. и т.д. Для этого мы получаем комментарии, ответы на комментарии, например ... и т.д. Здесь мы можем получить числа, специальные символы ..., поэтому почти мы не можем предсказать, что может быть ответ или комментарии. В этом случае мы используем No-SQL в документированном виде, как показано ниже, для хранения комментариев.

{
   user_id: ObjectID("65f82bda42e7b8c76f5c1969"),
   update: [
    {
      date: ISODate("2015-09-18T10:02:47.620Z"),
      text: "Nice picture."
},
{
  date: ISODate("2015-09-17T13:14:20.789Z"),
  text: "1234@some smile symbol"
}
{
    date: ISODate("2015-09-17T12:33:02.132Z"),
    text: "...Oh my god.."
  }
 ]
}

Выше, если мы пойдем на SQL, мы не сможем хранить комментарии (текст выше) только в столбце. Нам нужно хранить данные на основе типа. Так что в итоге мы получим большой сложный запрос с количеством объединений с разными таблицами. Но SQL хорошо для сделок.

5) В большинстве типичных ситуаций базы данных SQL Вертикально масштабируемые . Вы можете управлять увеличением нагрузки, увеличивая CPU, RAM, SSD и т. Д. На одном сервере. С другой стороны, базы данных No-SQL Горизонтально масштабируемые . Вы можете просто добавить еще несколько серверов в инфраструктуру базы данных No-SQL для обработки большого трафика.

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

7) Примерами для No-SQL являются MangoDB, Cassandra..etc, а для SQL - MySQL, SQL Server и т. Д.

0 голосов
/ 15 апреля 2015

RDBMS - полностью структурированный способ хранения данных.Пока NoSQL - это неструктурированный способ хранения данных.И еще одно основное отличие заключается в том, что объем хранимых данных в основном зависит от физической памяти системы.Хотя в NoSQL у вас нет таких ограничений, вы можете масштабировать систему по горизонтали.

Вы обнаружите, что база данных NoSQL имеет мало общих характеристик.Их можно условно разделить на несколько категорий:

хранилища ключей / значений. Базы данных на основе Bigtable (на основе статьи Google Bigtable) Базы данных на основе Dynamo распределенные базы данных Базы документов

0 голосов
/ 15 апреля 2015

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

While RDBMS uses relations and joins to make data simpler in database tables     
NoSQL don't use joins for performance.
NoSQL scales freely when we talk in terms of schema and data, while its very tough to scale a RDBMS if data grows.
There are restriction in size of data in RDBMS in terms of data-types capability,  files of any size can be used in NoSQL databases.
Data integrity enforcement comes to play only in RDBMS not in NoSQL databases.
ACID is not the cup of tea for NoSQL databases but for RDBMS.
RDBMS supports complex transactions whereas NoSQL keeps mum for transactions.
NoSQL does not support constraints and validations while its the basic ingredient in RDBMS.
Data is not structured in NoSQL but is highly structured in form of tables in RDBMS.

Все зависит от характера и потребностей проекта, использовать ли SQL или NoSQL.

...