Финансовые данные без схемы и NoSQL?

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

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

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

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

Итак, у меня есть три варианта:

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

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

(Для нашей RDMS мы используем MySQL. Думаю о переходе на MariaDB.Выбранный язык программирования - PHP. Подумайте об использовании Sphinx для ПОЛНОГО ТЕКСТА, например, о поиске чьего-либо имени.)

5
задан Luke 23 November 2011 в 19:07
поделиться