База данных 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, которая используется для управления как виртуальной валютой в играх, так и реальными банковскими сделками.