Сценарии использования NoSQL или КОГДА использовать NoSQL

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

  1. Должен ли я использовать NoSQL для пользовательских данных? Например, профили, имена пользователей + пароли и т. Д.
  2. Должен ли я использовать NoSQL для важного контента? Например, статьи, сообщения в блогах, товарный инвентарь и т. Д.

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

Также, если вышеприведенные 2 примера плохие, не могли бы вы дать мне конкретные случаи использования в бизнесе, где я бы использовал NoSQL? Я вижу много общих описаний, но не так много реальных примеров. Единственное, о чем я могу думать, это обмен сообщениями между пользователями и аналитика.

Спасибо!

2 ответа

Решение

Это действительно вопрос "это зависит". Некоторые общие моменты:

  • NoSQL, как правило, хорош для неструктурированных /"без схемы" данных - обычно вам не нужно явно определять свою схему заранее, и вы можете просто включить новые поля без какой-либо церемонии
  • NoSQL обычно предпочитает денормализованную схему из-за отсутствия поддержки JOIN для мира RDBMS. Таким образом, у вас обычно будет плоское, денормализованное представление ваших данных.
  • Использование NoSQL не означает, что вы можете потерять данные. Разные БД имеют разные стратегии. например, MongoDB - вы можете выбрать, какой уровень компромисса между производительностью и потенциалом потери данных - лучшая производительность = более широкие возможности для потери данных.
  • Часто очень легко масштабировать решения NoSQL. Добавление большего количества узлов для репликации данных - это один из способов а) обеспечения большей масштабируемости и б) большей защиты от потери данных в случае отказа одного узла. Но опять же, зависит от БД / конфигурации NoSQL. NoSQL не обязательно означает потерю данных, как вы делаете вывод.
  • ИМХО, сложные / динамические запросы / отчеты лучше всего обслуживать из РСУБД. Часто функциональность запросов для NoSQL DB ограничена.
  • Это не должно быть 1 или другой выбор. Мой опыт использования RDBMS в сочетании с NoSQL для определенных случаев использования.
  • БД NoSQL часто не способны выполнять элементарные операции над несколькими "таблицами".

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

Для MongoDb в качестве примера, посмотрите их варианты использования, чтобы увидеть то, что они предлагают как "хорошо подходящие" и "менее подходящие" варианты использования MongoDb.

Я думаю, что Nosql является "более подходящим" в этих сценариях, по крайней мере (более дополнительные приветствуются)

  1. Легко масштабируется, просто добавляя больше узлов.

  2. Запрос большого набора данных

    Представьте себе тонны твитов, публикуемых в твиттере каждый день. В RDMS могут быть таблицы с миллионами (или миллиардами?) Строк, и вы не хотите делать запросы к этим таблицам напрямую, даже не говоря уже о том, что в большинстве случаев объединения таблиц также необходимы для сложных запросов.

  3. Узкое место дискового ввода / вывода

    Если веб-сайт должен отправлять результаты различным пользователям на основе информации пользователей в реальном времени, мы, вероятно, говорим о десятках или сотнях тысяч запросов на чтение / запись SQL в секунду. Тогда дисковый ввод-вывод станет серьезным узким местом.

Другие вопросы по тегам