Финансовые данные без схем и NoSQL?
У нас есть приложение, которое работает с финансовыми данными без схем. Точнее, данные без шемали - это информация о заказе, где поля настраиваются продавцом. Последовательность и долговечность очень важны.
Из-за того, насколько динамичны наши данные, отчетность очень сложна. Каждая запись может немного отличаться или быть совершенно разной. Если мы продолжим использовать реляционную базу данных, то, по-видимому, наш единственный вариант-сериализовать "документ" в виде большого двоичного объекта. Учет это должно быть сделано отдельно, возможно, путем копирования данных в общую структуру, определенную пользовательскими отчетами (каждый "отчет" будет иметь пользовательскую таблицу).
Другой вариант-это документ-ориентированная база данных NoSQL, такая как MongoDB. После проведения некоторых исследований оказалось, что большинство людей не доверяют базе данных NoSQL с финансовыми данными, потому что она полагается на BASE, а не ACID.
Похоже, я оказался в середине двух совершенно разных вариантов использования. Мои данные очень хорошо вписываются в документ-ориентированную базу данных (MongoDB), но мне нужна надежность базы данных ACID. В то же время сложные пользовательские отчеты являются необходимостью.
Итак, у меня есть три варианта:
- используйте две базы данных MySQL: одну для хранения данных (blob), а другую для пользовательских отчетов (множество таблиц).
- используйте MongoDB, который поддерживает большие базы данных, но имеет глобальную блокировку записи и является "в конечном счете последовательным".
- используйте MySQL для сохраните данные (blob), а затем скопируйте их в MongoDB для создания отчетов. Учитывая, что единственным индексом, вероятно, будет merchantID, насколько хорошо это будет работать?
Итак, какой из трех вариантов является моим лучшим вариантом (наибольшая гибкость и долговечность)? Есть ли другие варианты, которые я не рассматривал, зная, что не могу изменить динамику данных? Кто-нибудь использует MongoDB для отчетности в производстве?
(для наших RDMS мы используем MySQL. Подумываю переключиться на Мариадб. Язык программирования-это PHP. Размышляющий об использовании Sphinx для полнотекстового поиска, например, поиска чьего-то имени.)
2 ответа:
Всего несколько пунктов:
MongoDB в конечном счете непротиворечив, только если Вы читаете из вторичных узлов. В остальном она последовательна.
Если вам нужны многообъектные транзакции ACID, то MongoDB не будет работать. Если вам нужна атомарность, согласованность и долговечность, вы можете получить этот MongoDB, если вы включите ведение журнала и разумно используете функцию записи.
Я только что видел несколько положительных замечаний о новом предложении NoSQL от Oracle, которое, похоже, больше фокусируется на надежности, чем другие продукты NoSQL. По-видимому, он доступен как community edition (лицензия с открытым исходным кодом, не знаю, какая именно), так и enterprise edition (сюрприз...)
Http://www.infoworld.com/d/data-explosion/first-look-oracle-nosql-database-179107
Это не документально ориентированное решение, а решение пары ключ / значение
Обратите внимание, что у меня есть не работал с этим, но я подумал, что вы, возможно, захотите взглянуть на это:
Http://www.oracle.com/us/products/database/nosql/overview/index.html