Безсхемные финансовые данные, а NoSQL? - PullRequest
5 голосов
/ 23 ноября 2011

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

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

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

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Просто пара баллов:

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

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

0 голосов
/ 23 ноября 2011

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

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

...