Каковы различия между NoSQL и традиционной РСУБД?

Каковы различия между NoSQL и традиционной RDBMS?

За последние несколько месяцев NoSQL часто упоминается в технических новостях. Каковы его наиболее важные особенности по сравнению с традиционной СУБД? На каком уровне (физическом, логическом) возникают различия?

Где лучшие места для использования NoSQL? Почему?

70 голосов | спросил Spredzy 3 Jpm1000000pmMon, 03 Jan 2011 23:52:52 +030011 2011, 23:52:52

6 ответов


58

NoSQL означает «не только SQL» и обычно означает, что база данных не является реляционной базой данных, которая очень популярна в последние десятилетия.

Причина, по которой NoSQL была настолько популярна последние несколько лет, объясняется главным образом тем, что, когда реляционная база данных растет из одного сервера, она уже не так проста в использовании. Другими словами, они не очень хорошо масштабируются в распределенной системе. На всех крупных сайтах, о которых вы упоминали Google, Yahoo, Facebook и Amazon (я не очень разбираюсь в Digg), есть много данных и хранятся данные в распределенных системах по нескольким причинам. Возможно, данные не помещаются на одном сервере или существуют требования для высокой доступности .

Теорема CAP

Свойства распределенной системы можно описать с помощью теоремы CAP . Из трех свойств вы можете иметь не более двух:

  • C â €
  • А â €
  • толерантность к сети P â €

Amazon Dynamo использует Eventual Consistency , чтобы приблизиться к получению всех трех свойств. Статья Динамо: высокодоступное хранилище ключей от Amazon стоит прочитать при изучении баз данных NoSQL и распределенных систем. У Amazon Dynamo есть свойства A и P.

Google использует другой подход с BigTable , который имеет свойства C и A.

Другие базы данных NoSQL

Как я уже писал в начале, существует множество других типов баз данных NoSQL, которые предназначены для разных требований. Например. таких как Neo4j , базы данных документов, такие как CouchDB и базы данных с мультимодальными /объектами, например OrientDB .

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

ответил Jonas 4 Jam1000000amTue, 04 Jan 2011 04:29:47 +030011 2011, 04:29:47
21

NoSQL является очень широким термином и обычно упоминается как «Не только SQL». Этот термин не подходит для сообщества, не являющегося РСУБД.

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

  • хранится ключ /значение ценности
  • Базы данных, основанные на больших таблицах (на основе большой бумаги Google).
  • Базы данных, основанные на динамо.
  • распределенные базы данных
  • базы данных документов

Это огромный вопрос, но на него довольно хорошо ответил этот Обзор распределенных баз данных .

За короткий ответ:

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

Насколько использовать их, которые полностью зависят от потребностей вашего приложения.

ответил Jeremiah Peschka 4 Jam1000000amTue, 04 Jan 2011 00:21:59 +030011 2011, 00:21:59
11

NoSQL - это своего рода база данных, которая не имеет фиксированной схемы, такой как традиционная СУБД. С базами данных NoSQL схема определяется разработчиком во время выполнения. Они не записывают нормальные операторы SQL в базу данных, а вместо этого используют API для получения необходимых им данных. Базы данных NoSQL обычно могут масштабироваться на разных физических серверах без необходимости знать, на каком сервере находятся данные, которые вы ищете.

Однако существуют некоторые компромиссы для всей этой гибкости: базы данных NoSQL - это довольно сложная функция по сравнению с системами РСУБД, такими как SQL Server, Oracle, DB2, MySQL и т. д. Нет никакого сервисного брокера, ведения транзакций, пакетов ETL и т. д. .

NoSQL не является чем-то новым. Это на самом деле было около 50-60 лет. Тогда это называлось COBOL. Точно такая же идея, только другая группа придумала это.

ответил mrdenny 4 Jam1000000amTue, 04 Jan 2011 00:00:15 +030011 2011, 00:00:15
6

В основном отказ от реляционной установки, с первичными и внешними ключами, а также с дополнительными накладными расходами, связанными с обеспечением безопасности транзакций, часто дает вам экстремальный рост производительности. Однако это не уникально для новых баз данных /хранилищ данных, как, например, MySQL настроен для выполнения на уровнях «NoSQL» путем обхода слоев.

Короче говоря, вы можете часто получать впечатляющую производительность, если вы в порядке, рискуя потерять данные. Большинство систем NoSQL делают это. Например, MongoDB катит изменения данных, которые должны быть записаны, когда это удобно. Сами данные безопасны и безопасны в транзакции, но хранятся в энергозависимой памяти (памяти). Если вы потеряете питание, вы не можете быть на 100% уверены, что у вас нет потерянных данных или что у вас нет поврежденных данных.

Это компромисс между безопасностью и производительностью.

ответил Johanna Larsson 4 Jam1000000amTue, 04 Jan 2011 00:00:29 +030011 2011, 00:00:29
5

Хорошим местом для начала является запись в Википедии . По сути, вместо того, чтобы связывать данные в одной таблице с другой, вы храните вещи как пары ключевых значений, и нет схемы базы данных, она обрабатывается вместо этого в коде.

Несколько сайтов одновременно используют как NoSQL, так и типичные серверы РСУБД, но хранят разные данные. Поэтому вам не нужно выбирать тот или иной.

ответил steve.lippert 4 Jam1000000amTue, 04 Jan 2011 00:02:44 +030011 2011, 00:02:44
0

Я работал над базами данных MongoDB NoSQL и Oracle.

Схема

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

В базе данных NoSQL нет предопределенной схемы, здесь схема является наиболее динамическим элементом на основе элементов данных.

Масштабируемость

Базы данных SQL масштабируются по вертикали, а это означает, что если мы хотим масштабировать базовую базу данных SQL, нам нужно дать аппаратное повышение, на котором установлена ​​СУБД. Это иногда приводит к ограничению масштабируемости.

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

Поиск данных

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

В терминах базы данных NoSQL запросы сосредоточены на сборке и документах. Иногда это называется UnQL (язык неструктурированных запросов). Это все еще находится на этапе эволюции, поэтому он варьируется от поставщика к поставщику базы данных NoSQL.

Подробнее о ключевых различиях в моем блоге: Разница между базами данных SQL и NoSQL

ответил Virat Gaywala 7 Mayam14 2014, 11:21:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132