Уровень: новичок.

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

Как на самом деле хранятся данные?

SQL: данные хранятся в виде кортежей / записей / строк в таблицах. Данные содержатся в ячейках таблиц, организованных в виде строк и столбцов.

NoSQL: данные хранятся в виде документов (BSON). Разница в том, что все соответствующие данные хранятся близко друг к другу, то есть «запись» хранится в виде большого двоичного объекта данных, а не распределяется по множеству столбцов, как в SQL.

Плюсы

  1. Создан для масштабирования. Базы данных NoSQL, как правило, лучше работают в крупномасштабных системах, однако SQL не сильно отстает.
  2. Обычно данные извлекаются и вставляются во все поля вместе, что является благоприятным в случае баз данных NoSQL из-за способа хранения данных в них. Более быстрая вставка и извлечение.
  3. Добавление столбца в таблицу SQL - очень дорогостоящая операция. Добавление поля в базу данных NoSQL ничего не требует. Итак, схема гибкая и легко изменяемая.
  4. Создан для агрегирования или аналитики. Это одна из основных причин, по которой большинство компаний трансформируют реляционные в нереляционные перед запуском аналитики и бизнес-аналитики (BI).

Минусы

  1. Несоответствие в обновлениях. Скажем, вы обновляете поле, но обновляется только это поле, другие - нет. Это вызывает несоответствие. В SQL ограничение внешнего ключа обеспечивает согласованность (ACID).
  2. Медленное время чтения. Когда вы захотите прочитать, NoSQL будет последовательно перебирать базу данных, сравнивать условное выражение и возвращать результаты, которые стоят недешево.
  3. Никаких неявных отношений. Большинство реальных проблем хорошо сочетаются с (реляционными) базами данных SQL. Представлять сущности и отношения легко. В NoSQL отношения не являются неявными.
  4. Никаких присоединений. Объединения не невозможны, однако они действительно трудны и сложны. Это нужно реализовывать вручную, тогда как системы баз данных SQL были в некотором роде созданы для объединений.

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

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