Какая база данных NoSQL лучше всего подходит для финансовых систем OLTP?

Мы разрабатываем финансовую систему OLTP. он должен поддерживать 10 000 транзакций в секунду и иметь функции отчетности.

Итак, мы пришли к идее использования:

  • База данных NoSQL в качестве основного хранилища
  • MySQL DB (фактически Percona-сервер) делает некоторые ETL из базы данных NoSQL для хранения данных отчета

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

  • Какую базу данных NoSQL вы бы использовали для Финансовая система OLTP?
  • Как было ваш опыт масштабирования MongoDB/Riak?

Ответы

Ответ 1

Нет никаких мыслимых обстоятельств, когда я бы использовал базу данных NOSQl для чего-либо, связанного с финансами. У вас просто нет необходимой целостности данных или внутренних элементов управления. Dow Jones использует SQL Server для выполнения своих транзакций, и если они могут правильно спроектировать высокопроизводительную, высокую транзакционную реляционную базу данных, то можете ли вы. Вам придется инвестировать в некоторых людей, которые знают, что они делают, хотя.

Ответ 2

Базы данных NoSQL, основанные на глобальном хранилище - Cache от InterSystems и GT.M от FIS - широко используются в финансовых услугах и на протяжении многих лет. Кэш, в частности, используется как для базовой базы данных, так и для OLTP.

Ответ 3

Нужно думать о проблеме по-разному. Понятие последовательности транзакций связано с UD (обновление) в CRUD (создание, чтение, обновление, удаление). Базы noSQL представляют собой CRAP (создание, репликация, добавление, процесс), ориентированных на работу, путем аккреции данных с отметкой времени. При правильной модели домена нет причин, по которым невозможность аудита и эквивалент ссылочной целостности не могут быть достигнуты.

Ответ 4

Я могу ответить на мой опыт по масштабированию Riak.

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

Откидной стороной является то, что во многих отношениях этого недостает. Некоторые примеры:

  • Вы не можете сделать что-то вроде count(*) или list keys в производственном кластере. Это потребует работы, если вы хотите сделать ETL из Riak в MySQL - или как вы узнаете, что (E) xtract? (Одна возможная работа - поддерживать ведро с известной ключевой последовательностью, которая сопоставляет значения, содержащие ключи, которые вы вставили в свои другие ковши).
  • Бесплатная версия Riak поставляется без консоли управления, которая позволяет вам знать, что происходит, и тот, который включен в версию Enterprise, не является большим улучшением.
  • Вам понадобится версия Enterprise, которую вы хотите реплицировать по WAN (например, для DR/высокой доступности). Это хорошо, если вы не против платить, но имейте в виду, что цены на Башо очень высоки.

Ответ 5

Я работаю с Starcounter (поэтому Im предвзято), но я думаю, что могу с уверенностью сказать, что для обработки финансовых транзакций системы вам нужно беспокоиться о последовательности транзакций. К сожалению, это то, что двигатели, используемые для Facebook и Twitter, должны были отказаться, чтобы их масштабная стратегия обеспечивала производительность. Это связано не с тем, что такие двигатели, как MongoDb или Cassandra, плохо разработаны; скорее, это следует из теоремы CAP (http://en.wikipedia.org/wiki/CAP_theorem). Проще говоря, изменения, внесенные вами в вашу базу данных, будут перезаписаны другими изменениями, если они будут близки по времени. Хорошо для обновлений статуса и новых твитов, но катастрофически, если вы имеете дело с деньгами или другими количествами. Суммы будут просто ошибочными, если многие чтения и записи выполняются параллельно. Таким образом, для необходимой пропускной способности, база данных NoSQL с поддержкой ACID, вероятно, будет способна работать.

Ответ 6

Вы можете использовать некоторые базы данных NoSQL (Cassandra, EventStore) в качестве хранилища для финансового обслуживания, если вы реализуете свое приложение с использованием источников событий и концепций из DDD. Я рекомендую вам прочитать этот мини-альбом http://www.oreilly.com/programming/free/reactive-microservices-architecture.html

Ответ 7

OLTP может быть достигнуто с использованием NoSQL с пользовательской реализацией,

есть две вещи: 1. Как вы собираетесь достичь свойств ACID, которые дает СУРБД. 2. Предоставьте настраиваемый блокирующий или неблокирующий concurrency и механизм обработки транзакций.

Чтобы приблизиться к решению, Apache Phoenix, apache trafodion или машина для сращивания.

Ответ 8

Trafodion имеет полную поддержку ACID над HBase, вы должны взглянуть.

Ответ 9

Cassandra может использоваться как для OLTP, так и для OLAP. Хорошая репликация и согласованная последовательность данных дают вам выбор в ваших руках. Необходимо правильно спроектировать систему. И в конце концов, это бесплатно, но не бесплатно от разработчика, попробуйте