Мне нужно создать систему аналитики (отчетность, составление диаграмм и графиков) в моем приложении Django. В идеальном мире я мог просто запросить у меня Postgres DB и получить нужные данные, но когда объем данных в БД проходит через крышу, я поражу узкие места производительности и другие проблемы, такие как индексный ад.
Мне интересно, можете ли вы указать мне в правильном направлении, чтобы реализовать это:
- Хороший ли сценарий использования NoSQL DB (CouchDB, MongoDB, Redis) и запрашивать данные?
- Поскольку Postgres и Django не поддерживают OLAP/MDX, я должен идти со звездообразной схемой в другой базе данных и запрашивать это?
Я хочу избежать двух вещей:
- Я не хочу запрашивать свою фактическую БД для аналитики, так как это может сильно пострадать.
- Я хочу, чтобы мои аналитики были как можно более актуальными, то есть я хотел бы постепенно обновлять свой хранилище данных, чтобы иметь последние данные. Каждый раз, когда в моей транзакционной БД выполняется CRUD-операция, я хотел бы обновить хранилище данных.
Это еще один сценарий, с которым я не работал, и пытаюсь понять самый быстрый и лучший способ выполнить.
Надеюсь, я был достаточно подробным. Если нет, я с удовольствием объясню больше.
Спасибо всем
После копания в Интернете и использования знаний, которые у меня есть, я пришел к этому решению:
Используйте Postgres для хранения реляционных данных. В каждой операции CRUD вызовите код аналитики для выполнения вычислений по данным и сохраните данные в базе данных NoSQL, например Redis/CouchDB.
Глядя на это хорошее сравнение базы данных NoSQL (http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis), я думаю, что Redis или CouchDB вписываются в порядок. Целевая для аналитики.
Я мог бы хранить рассчитанную Analytics в Redis/CouchDB и обновлять их постепенно, когда меняются исходные данные.
Это хорошее решение?