2010-06-18 3 views
20

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

+5

Может быть, лучше взглянуть на некоторые другие вопросы, связанные с http://stackoverflow.com/questions/2875432/use-cases-for -nosql –

+5

NoSQL не подразумевает «никаких отношений». Во всяком случае, он просто позволяет другим (нетрадиционным способам RDBMS) определять данные, отношения и операторы. db4o, neo4j и даже Tutorial D (!) - это «NoSQL». Одно из преимуществ этих альтернатив заключается в том, что в некоторых случаях это позволяет * значительно улучшить производительность *, особенно обновление. Еще одно преимущество заключается в том, что некоторые отношения просто не соответствуют модели SQL - рассмотрим, например, граф объектов (и особенно тот, который является циклическим!). (Сравните это с некоторыми «RDBMS» двигателями, которые просто не могут обеспечить соответствующие реляционные ограничения.) – 2010-06-18 07:34:24

+0

Вы использовали бы альтернативу NoSQL, потому что традиционный подход просто не обрабатывал бы нагрузку на веб-сайт. Вот обсуждение NoSQL в Twitter: http://www.computerworld.com/s/article/9161078/Twitter_growth_prompts_switch_from_MySQL_to_NoSQL_database –

ответ

19

Повышение производительности

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

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

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

дизайн Применение

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

+0

+1 для упоминания не только производительности – tawmas

11

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

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

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

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

13

базы данных NoSQL есть решить несколько вещей, в основном:

  • (гудение) BigData => думаю, TB, PB, и т.д ..

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

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

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

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

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

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

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

1

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

7

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

  • Сделки
  • объем данных
  • структуры данных

NoSQL решает проблемы масштабируемости и доступности, что против атомарности или консистенции.

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

enter image description here

NoSQL подход

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

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

-1

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

Extra columns could be added

Use of JSON for easier development

0

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

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

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

Структура данных должна измениться часто

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

система Масштабный, которая генерирует много данных

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

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

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

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

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

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

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

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

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

базы данных Graph является лучшим выбором технологии здесь.

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

ключ-значение магазин для поддержания состояния игрока.

электронной коммерции сайт

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

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

When NoSQL is better choice than RDBMS and when it's not

Смежные вопросы