Почему именно мы используем NoSQL? - PullRequest
22 голосов
/ 18 июня 2010

Поняв некоторые преимущества, которые предлагает NoSQL (масштабируемость, доступность и т. Д.), Я до сих пор не понимаю, почему веб-сайт хотел бы использовать нереляционную базу данных. Могу ли я получить помощь по этому вопросу, желательно с примером?

Ответы [ 10 ]

20 голосов
/ 18 июня 2010

Лучшая производительность

Базы данных NoSQL иногда имеют лучшую производительность, хотя это зависит от ситуации и оспаривается.

адаптивность

Вы можете добавлять и удалять «столбцы» без простоев. На большинстве серверов SQL это занимает много времени и загружается.

Дизайн приложения

Желательно отделить хранилище данных от логики. Если вы присоединяетесь и выбираете вещи в запросах SQL, вы смешиваете бизнес-логику с хранилищем.

13 голосов
/ 01 октября 2011

Базы данных NoSQL предназначены для решения нескольких задач, в основном:

  • (гудение) BigData => думать о ТБ, ПБ и т. Д.

  • Работа с Распределенными системами / наборы данных => скажем, у вас есть 42 продукта, поэтому 13 из них будут жить в дата-центре Чикаго, 21 в Нью-Йорке и еще один, а 8 где-то в Японии, нокак только вы запросите все 42 продукта, вам не нужно будет знать, где они находятся: NoSQL DB будет.Это также позволяет задействовать гораздо больше интеллектуальных ресурсов (серверов) для решения сложных вычислительных задач [кажется, это не подходит для вашего варианта использования, но это интересно отметить]

  • Разделение => благодаря тому, что ваша БД будет легко распространяться, помимо этих крутых 8 продуктов в Японии, также можно легко реплицировать данные, поэтому эти 42 продукта будут реплицироваться, например, с коэффициентом 3, чтоозначает, что ваша БД будет иметь 3 копии для каждого продукта.Следовательно, если что-то пойдет не так, нет проблем => здесь доступна реплика.Это где базы данных NoSQL действительно лучше, чем RDBMS.Конечно, вы можете сегментировать, разбивать и кластеризовать Oracle / MySQL / PostgreSQL / и т. Д. НО это сложный процесс на несколько величин и обычно боль в обслуживании для большинства людей, которых вы бы наняли.

НО на ваш вопрос:

  • почему веб-сайт хочет использовать нереляционную базу данных

Когда большинство людей, с которыми я работал / встречался / общался, выбирали NoSQL для своего «веб-сайта», это, к сожалению, НЕ по вышеуказанным причинам, а просто потому, что это COOLER для этого.И на самом деле многие проекты терпят неудачу / испытывают чрезвычайные трудности по этой причине.

Если большинство гуру NoSQL снимают свои маски, они все согласятся, что большинство проблем (или, как их называют люди websites)что разработчики решают изо дня в день, можно и , а точнее решить с помощью SQL-решения, такого как PostgreSQL, MySQL и т. д. с каким-нибудь классным слоем кэша Redis поверх него.И только небольшая часть проблем ДЕЙСТВИТЕЛЬНО выиграет от NoSQL.

Мне лично нравится Riak, так как я твердо убежден, что отказоустойчивая БД NoSQL должна иметь чрезвычайно прочную, гибкую и естественно распределенную основу.=> например Erlang OTP.Плюс я фанат простоты.Но опять же, учитывая проблему, я бы выбрал то, что работает лучше всего, и большую часть времени мне НУЖНА эта согласованность (особенно, если мы говорим о деньгах / финансовый мир / критическая миссия / и т. Д.).

11 голосов
/ 18 июня 2010

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

Такое приложение, как Facebook , может't должен работать для простой базы данных SQL, за исключением массового разделения и разбиения, что также требует значительных корректировок логики приложения.Вот почему Facebook разработал Cassandra.

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

8 голосов
/ 19 июня 2014

Нам нужно понять, в чем ваша проблема в текущем приложении?

  • Сделки
  • Количество данных
  • Структура данных

NoSQL решает проблемы масштабируемости и доступности по сравнению с проблемой атомарности или согласованности.

Основные приводят нас к теореме CAP. Эрик Брюер также отметил, что из трех свойств систем с общими данными - Согласованность, доступность и допустимость для сетевых разделов - только два могут быть достигнуты в любой данный момент времени. (Теорема CAP)

enter image description here

Подход NOSQL

  • Представление данных без схемы:
    • Большинство из них предлагают представление данных без схемы и позволяют хранить полуструктурированные данные.
    • Может продолжать развиваться со временем - включая добавление новых полей или даже вложение данных, например, в случае представления JSON.
  • Время разработки:
    • Нет сложных запросов SQL.
    • Нет операторов JOIN.
  • Скорость:
    • Очень высокая скорость доставки и в основном встроенное кэширование на уровне объекта
  • Планируйте масштабируемость заранее:
    • Как избежать переделок
4 голосов
/ 01 июля 2011

Другим аргументом для NoSQL является «Сначала данные, потом структура» - подход.

2 голосов
1 голос
/ 06 января 2018

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

Простое маломасштабное приложение или веб-сайт

СУБД - лучший кандидат.Это зрелая система с огромной поддержкой, доступной онлайн.Данные организованы логически, поэтому их довольно легко изучить по сравнению с некоторыми другими типами баз данных.Независимо от того, какую технологию СУБД вы выбрали, ядро ​​синтаксиса SQL и лучшие практики будут применимы к любому.

Ожидается, что структура данных будет часто меняться

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

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

Хранилище документов База данных NoSQL наиболее подходит здесьпоскольку системы RDBMS изначально не предназначены для простого масштабирования.

Система учета или управления платежами

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

Бизнес-аналитика

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

Социальная сеть

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

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

Обнаружение мошенничества

База данных графиков - лучший выбор технологии здесь.

Многопользовательская игра

Хранилище ключей для сохранения состояния игрока.

Веб-сайт электронной торговли

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

Для получения более подробной информации вы можете посетить эту страницу:

Когда NoSQL лучше, чем RDBMS, а когда нет

1 голос
/ 21 августа 2013

Вот технический доклад о причинах использования различных баз данных NoSQL и сравнения между различными типами баз данных NoSQL: Технический доклад о сравнении NoSQL .

0 голосов
/ 13 октября 2016

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

Могут быть добавлены дополнительные столбцы

Использование JSON для упрощения разработки

0 голосов
/ 15 января 2016

Существует много типов баз данных NoSQL. Веб-приложения используют базы данных на основе документов. Документ db позволяет нам хранить документы JSON, XML, YAML и даже Word и манипулировать ими. Итак, NoSQL является очевидным выбором, особенно MongoDB, который является базой данных документов, которая поддерживает формат JSON по умолчанию, является наиболее предпочтительным выбором разработчиков и дизайнеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...