База данных nosql хороша для управления онлайн-транзакциями - PullRequest
12 голосов
/ 13 сентября 2011

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

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

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

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

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

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

Ответы [ 2 ]

30 голосов
/ 23 сентября 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я бы не сказал, что это вообще так, если только мы не говорим о BigData. Возьмите PostgreSQL для примера. Это чрезвычайно классная программа, с которой легко работать и поддерживать. Еще один плюс к миру СУБД => люди чувствуют НАМНОГО более комфортно с SQL. По этой причине, например, ребята из Cassandra выпустили CQL в 0.8, что является очень ограниченным подмножеством SQL. Такие термины, как maintenance, также должны стоять плечом к плечу с такими терминами, как Talent, Knowledge, Expertise. Поскольку, например, если вы используете Cassandra, эта девушка очень «требовательна», но не для парней из DataStax, у которых есть Expertise, но вам придется заплатить за это.

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

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

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

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

1 голос
/ 27 июля 2012

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

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