Безсхемные финансовые данные, а NoSQL?

У нас есть приложение, которое работает с финансовыми данными без схемы. Точнее, данные без схемы - это информация о заказе, где поля настраиваются продавцом. Последовательность и долговечность важны.

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

Другой вариант - это документно-ориентированная база данных NoSQL, такая как MongoDB. После некоторых исследований выяснилось, что большинство людей не будут доверять базе данных NoSQL финансовым данным, поскольку она опирается на BASE, а не на ACID.

Кажется, я оказался в центре двух совершенно разных вариантов использования. Мои данные очень хорошо вписываются в документно-ориентированную базу данных (MongoDB), но мне нужна надежность базы данных ACID. В то же время сложные пользовательские отчеты являются необходимостью.

Так что у меня, кажется, есть три варианта:

  1. Используйте две базы данных MySQL: одну для хранения данных (блоб), а другую для пользовательских отчетов (множество таблиц).
  2. Используйте MongoDB, которая поддерживает большие базы данных, но имеет глобальную блокировку записи и является "в конечном итоге постоянной".
  3. Используйте MySQL для хранения данных (blob), затем скопируйте их в MongoDB для создания отчетов. Учитывая, что единственным индексом, вероятно, будет merchantID, насколько хорошо это будет работать?

Итак, какой из трех вариантов мой лучший (большая гибкость и долговечность)? Есть ли другие варианты, которые я не обдумал, зная, что я не могу изменить динамику данных? Кто-нибудь использует MongoDB для отчетности в производстве?

(Для нашей RDMS мы используем MySQL. Мысль о переходе на MariaDB. Выбор языка программирования - PHP. Мысля об использовании Sphinx для поиска в полном тексте, например, поиска чьего-либо имени.)

2 ответа

Решение

Всего пара моментов:

MongoDB в конечном итоге согласован, только если вы читаете со вторичных узлов. В противном случае, это соответствует.

Если вам нужны транзакции ACID с несколькими объектами, MongoDB не будет работать. Если вам нужна атомарность, согласованность и долговечность, вы можете получить этот MongoDB, если включите ведение журнала и рассудительное использование заботы о записи.

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

http://www.infoworld.com/d/data-explosion/first-look-oracle-nosql-database-179107

Это не документно-ориентированное решение, а решение пары ключ / значение

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

http://www.oracle.com/us/products/database/nosql/overview/index.html

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