Чем именно, когда и где NoSQL-решения предпочтительнее традиционных SQL?

Ищутся конкретные ответы на поставленный вопрос. Чтобы прувы и примеры хотя-бы достоверно прогугливались.

Дисклеймер — интересуют только свободные решения.

Спасибо!
  • Вопрос задан
  • 2977 просмотров
Пригласить эксперта
Ответы на вопрос 3
biduin
@biduin
Например при составлении сложных каталогов.
Представьте например каталог market.yandex.ru

Есть товар и есть его параметры. Привязывать всё ко всему — не целесообразно. Холодильникам ненужна цветность сканирования, а сканерам не нужен параметр количество сменных ножей.

В noSQL это делается элементарно. В RSQL все ненужные поля будут пустовать, либо будет «неповоротливая» сложная в обслуживании связь многие-ко-многим.
Ответ написан
CKOPOBAPKuH
@CKOPOBAPKuH
мне больше sql-решения нравятся, но можно я отвечу?

1. нет sql оверхеда. чем меньше и проще запрос — тем больше влияние этого оверхеда. при тысячах запросов на выборку по PK большая часть процессорного времени расходуется как раз на это. смотрите, например, бенчмарки mysql+handlersocket или mongodb в сравнении с обычным mysql

2. нет необходимости в «реляционности», «таблицах», «строгой типизации». у разных nosql решений есть разные возможности, например, какие-то из них ориентированы на хранение не-униформных данных (что в sql решается добавлением таблицы «ключ объекта — id атрибута — значение атрибута»), какие-то позволяют хранить графы (и делать специфичные для задач на графах выборки и операции). посмотрите, например, на git или svn. оба они используют свои базы данных, не-sqlные, для своих специфических целей.
Ответ написан
Комментировать
afiskon
@afiskon
MongoDB и Riak дофига где используются. Гуглите оффсайт, смотрите в описании логотипы компаний.

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

При этом однако нет никаких транзакций. Но можно поднять рядом PostgreSQL. Нужна транзакционность - фигачим в PostgreSQL, не нужна - фигачим в Riak кластер. В итоге нагрузка на PostgreSQL становится сильно меньше, что хорошо, так как РСУБД не очень хорошо масшабируются.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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