Когда я должен использовать базу данных NoSQL вместо реляционной базы данных? Можно ли использовать оба на одном сайте?



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

881   6  

6 ответов:

реляционные базы данных принудительнокислоты. Таким образом, вы будете иметь схемы на основе транзакций ориентированных хранилищ данных. Доказано и соответствующе для 99% из применений реального мира. Вы можете практически все сделать с реляционными базами данных.

но есть ограничения на скорость и масштабирование, когда речь заходит о массивных хранилищах данных высокой доступности. Например, Google и Amazon имеют терабайты данных, хранящихся в больших центрах обработки данных. Запрос и вставка не выполняется в эти сценарии из-за характера блокировки/схемы/транзакции СУБД. Именно по этой причине они внедрили свои собственные базы данных (фактически, хранилища ключевых значений) для массового увеличения производительности и масштабируемости.

базы данных NoSQL существуют уже давно-просто термин новый. В качестве примеров можно привести базы данных graph, object, column, XML и document.

для вашего 2-го вопроса: можно ли использовать оба на одном сайте?

Почему нет? Оба служат разным целям, верно?

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

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

Я сам использую MongoDB и Riak для конкретных задач где СУБД не является жизнеспособным решением, для всех других вещей я использую MySQL (или SQLite для тестирования).

Если вы нужно a NoSQL db вы обычно знаете об этом, возможные причины:

  • клиент хочет 99,999% доступность на высокий трафик сайта.
  • ваш данных нет смысла в SQL, вы окажетесь выполнение нескольких запросов соединения для доступ к некоторой информации.
  • вы нарушаете реляционных модель, у вас есть Клобы этот магазин денормализованные данные и вы генерируете внешние индексы для поиска этих данных.

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

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

Мартин Фаулер имеет отличную видео что дает хорошее объяснение баз данных NoSQL. Ссылка идет прямо к его причинам, чтобы использовать их, но все видео содержит хорошую информацию.

  1. У вас есть большие объемы данных - особенно если вы не можете разместить все это на одном физическом сервере, поскольку NoSQL был разработан для хорошего масштабирования.

  2. объектно-реляционное несоответствие импеданса - ваши доменные объекты не вписываются в схеме базы данных перезапуска. NoSQL позволяет сохранять данные в виде документов (или графиков), которые могут отображаться гораздо ближе к вашей модели данных.

NoSQL-это система баз данных, в которой данные организованы в документ (MongoDB), пару ключ-значение (MemCache, Redis), форму структуры графа(Neo4J).

возможно, здесь возможны вопросы и ответы на "когда идти на NoSQL":

  1. требуется гибкая схема или иметь дело с деревом, как данные?
    Как правило, в гибкой разработке мы начинаем проектирование системы, не зная всех требований заранее, где позже во всей системе базы данных разработки может быть нужно приспособить частые изменения конструкции, демонстрируя MVP (минимальный жизнеспособный продукт). Или вы имеете дело со схемой данных, которая является динамической по своей природе. например, системные журналы, очень точный пример-журналы AWS cloudwatch.

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

  3. компромисс между масштабированием над последовательностью
    В отличие от RDMS, база данных NoSQL может потерять небольшие данные здесь и там(Примечание: вероятность есть .x%), но его легко масштабировать с точки зрения производительности. Пример: это может быть полезно для хранения людей, которые находятся в сети в приложении для обмена мгновенными сообщениями, токенов в БД, регистрации статистики трафика веб-сайта.

  4. Выполнение Операций Геолокации : MongoDB хэш-богатая поддержка для выполнения операций Геокверирования и геолокации. Мне очень понравилась эта особенность В MongoDB.

в двух словах, MongoDB отлично подходит для приложений, где вы можете хранить динамические структурированные данные в больших масштабах.

Я столкнулся с этим вопросом, ища убедительные основания для отклонения от дизайна РСУБД.

есть большая post Джулиан Браун, который проливает свет на ограничения распределенных систем. Концепция называется теоремой Брюера CAP, которая вкратце гласит:

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

и вот как я резюмировал это для себя:

вам лучше пойти на NoSQL, если согласованность-это то, чем вы жертвуете.

отсутствует необходимая информация для ответа на вопрос: Какие варианты использования должна охватывать база данных? Нужно ли проводить комплексный анализ на основе существующих данных ( OLAP) или приложение должно быть в состоянии обрабатывать много транзакций ( OLTP)? Что такое структура данных? Это далеко не конец времени вопрос.

на мой взгляд, неправильно принимать технологические решения на основе смелых модных слов, не зная точно что за ними стоит. NoSQL часто хвалят за его масштабируемость. Но вы также должны знать, что горизонтальное масштабирование (несколько узлов) также имеет свою цену, и не бесплатно. Тогда вам придется иметь дело с такими вопросами, как согласованность и определить способ разрешения конфликта данных, если они не могут быть решены на уровне базы данных. Однако это относится ко всем распределенным системам баз данных.

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

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

Если вы сделаете аргумент, что Google и Amazon разработали свои собственные базы данных, потому что обычные СУБД больше не могут обрабатывать поток данных, вы можете только сказать: Вы не Google и Amazon. Эти компании являются острием, около 0,01% из них сценарии, в которых традиционные базы данных больше не подходят, но для остального мира они подходят.

что не так незначительны: SQL существует уже более 40 лет, и миллионы часов разработки пошли в большие системы, такие как Oracle или Microsoft SQL. Это должно быть достигнуто с помощью некоторых новых баз данных. Иногда также легче найти администратора SQL, чем кого-то для MongoDB. Что подводит нас к вопросу технического обслуживания и управления. Тема это не совсем сексуально, но это часть технологического решения.

Comments

    Ничего не найдено.