@driverx18

Зачем использовать реляционные субд для этой ситуации?

Читаю книгу по MongoDB, вижу, что автор дает пример: чтобы отобразить статью на сайте с помощью РСУБД вам нужно иметь бд с таблицами: posts, authors, comments, tags, posts_tags, etc. Все эти таблицы джойнятся, и на больших объемах мы жертвуем временем отдачи результата, в то время когда Монго может одним документом отдать нужный результат и хранить данные так:
{
"title”: “Title of post”,
“comments”: [

],
“author”: “Author’s name”
...
}

В принципе, в таком случае, мне действительно непонятно зачем нужна в данной ситуации РСУБД с большим кол-вом джойнов, если все так легко с монго. Я ранее когда делал новостной раздел, то приходил таки к путям РСУБД.
Хотелось бы узнать, в чем смысл использования mysql в этой ситуации, и какой минус использования nosql, а то описаны в книге только плюсы
  • Вопрос задан
  • 407 просмотров
Решения вопроса 1
@xfg
Если комментариев к статье неограниченное количество, то хранить данные таким образом - неудачная идея. В mongodb документ по умолчанию не может превышать более 16 mb, но даже при отсутствии подобного ограничения, это привело бы к единовременному считыванию большого объема данных в память. В таком случае данные следует моделировать также, как и в РСУБД.

Есть CAP-теорема и выбирать тип базы данных нужно исходя из того, какие 2 из 3 свойств для вас важнее. РСУБД дают согласованность и доступность (CA), но жертвуют возможностью разделения такой базы, nosql решения идут другим путем и жертвуют согласованностью в пользу доступности и устойчивости к разделению (AP). Согласованность данных в таких системах достигается при помощи шаблона Saga вместо ACID.

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

Для проекта с крохотными объемами данных логичнее выбирать РСУБД и тем самым значительно упростить себе жизнь. Но в целом как используют NoSQL, шардируют данные и как достигают согласованности данных при отсутствии ACID знать желательно, хотя бы в общих чертах.

Самое ужасное, это выбрать базу данных и использовать её неправильно, как пример документа с вложенными комментариями при условии их бесконечности в mongodb. Пишем скрипт генерирующий триллион комментариев к статье, а затем просим нам выдать эту статью и сайт уходит в офф. Хорошо что в mongodb есть защита от дурака.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bkosun
Одним из основных преимуществ реляционных БД является соответствие требованиям ACID (Atomicity):
  • Атомарность
  • Согласованность
  • Изолированность
  • Долговечность


Реляционные БД подходят для данных, структура которых не часто подвергается изменениям (ваш пример).

https://ru.wikipedia.org/wiki/ACID
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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