База данных nosql хороша для управления онлайн-транзакциями

Я планирую использовать базу данных nosql в качестве серверной части для моего веб-продукта. У меня есть несколько очень простых сомнений.

1) Я прочитал в блоге, что база данных Nosql не очень хороша для онлайн-транзакций, т. Е. Там, где целостность данных имеет первостепенное значение.(Мой продукт имеет онлайн-транзакции)

2) Ежедневно будет минимум 1000 пользователей.

3) Будет ли доступность проблемой?

Не могли бы вы указать больше плюсов и минусов, связанных с базой данных Nosql. Я планирую использовать MongoDb. Может ли это удовлетворить мои вышеупомянутые запросы.

Мой вопрос ясен или мне нужно дать больше информации? Пожалуйста, прокомментируйте, и я внесу необходимые изменения.

2 ответа

Решение

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

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

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

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

(на ваши вопросы)

  • Ежедневно будет минимум 1000 пользователей.

    1000 пользователей в день - это крайне низкий объем, если вы не выберете решение NoSQL, которое было написано вчера в 3 часа ночи, в качестве проверочной концепции, здесь не стоит беспокоиться. Но если вы добьетесь успеха и через пару месяцев у вас будет 100 000 000 пользователей, то NoSQL будет проще масштабировать.

  • Будет ли доступность проблемой?

    Твердые решения NoSQL позволяют вам указать то, что называется quorum: " Количество реплик, которые должны ответить на запрос на чтение или запись, прежде чем он будет считаться успешным ". Некоторые решения также делают то, что называется hinted handoff: " соседние узлы временно принимают операции хранения для отказавшего узла ". В общем, вы должны иметь возможность контролировать доступность в зависимости от ваших требований.

(из ваших комментариев)

  • Мы планируем расширяться. И не хочу, чтобы база данных была ограничением

Expanding это очень относительный термин. "Финансовая индустрия довольно расширяется", и они по-прежнему в основном используют RDBMS для повседневных операций. Facebook использует MySQL. Основные банки, на которых я работал, используют Oracle / MySQL / PostgreSQL / DB2 / и т. Д., И только некоторые из них используют NoSQL, но НЕ для данных, для которых требуется постоянная согласованность 100%. Даже Facebook использует Cassandra только для таких вещей, как "поиск по входящим сообщениям". Но если под расширением вы подразумеваете больше данных и больше пользователей (запросов, соединений и т. Д.), То NoSQL будет намного легче масштабировать. Опять же, это не значит, что вы не можете масштабировать RDBMS, это просто более утомительно / сложно.

  • Из того, что я прочитал, ни в одной базе данных SQL нам не нужно много думать о схеме

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

  • Обслуживание, необходимое для базы данных NoSQL, очень меньше

Я бы не сказал, что это правда в целом, если мы не говорим о BigData. Возьмите PostgreSQL для примера. Это чрезвычайно классная программа, с которой легко работать и поддерживать. Еще один плюс к миру СУРБД => люди чувствуют себя намного комфортнее с SQL. По этой причине, например, ребята из Кассандры, выпустили CQL в 0,8, что является очень ограниченным подмножеством SQL. Условия как maintenance также должны стоять плечом к плечу с такими терминами, как Talent, Knowledge, Expertise, Так как, например, если вы используете Cassandra, эта девушка очень "требовательна", но не для парней из DataStax, у которых есть Expertise, но вам придется заплатить за это.

Ваш главный вопрос

  • Я читал в блоге, что база данных NoSQL не очень хороша для онлайн-транзакций, т. Е. Где целостность данных имеет первостепенное значение.(Мой продукт имеет онлайн-транзакции)

Не зная точно, что представляет собой ваш продукт, трудно сказать, подойдет ли / не будет база данных NoSQL. Если основной целью продукта является "Операции с деньгами в Интернете", я бы рекомендовал использовать базу данных NoSQL (по крайней мере, сегодня, в 2011 году). Если "онлайн-транзакция денег" является лишь одним из требований, но не "ядром" вашего продукта, в зависимости от того, что такое "ядро", вы, безусловно, можете попробовать базу данных NoSQL и, например, использовать внешнюю службу для обработки.(например, Google Checkout и т. д.) ваши транзакции с гарантированной согласованностью.

В качестве технического примечания: если проблема, которую вы пытаетесь решить, выигрывает от решения с помощью дистрибутива, я бы порекомендовал базы данных, написанные на Erlang (например, Riak, CouchDB и т. Д.), Поскольку Erlang как язык уже успешно решает большинство распределенных вещи на протяжении десятилетий.

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

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