我需要在我的Django应用程序中内置一个分析(报告,图表和绘图)系统。在理想情况下,我可以只查询Postgres数据库并获得我想要的数据,但当数据库中的数据量达到顶峰时,我会遇到性能瓶颈和其他问题,比如索引地狱。
我想知道您是否可以为我指出一个正确的方向来实现这一点:
我希望避免两件事:
这是我还没有尝试过的另一个场景,我正在尝试理解完成的最快和最好的方法。
我希望我已经说得够多了。如果没有,我很乐意解释更多。
谢谢大家
在深入挖掘网络并使用我所掌握的知识之后,我得到了以下解决方案:
使用Postgres存储关系数据。在每个CRUD操作中,调用分析代码对数据进行计算,并将数据存储在Redis/ NoSQL之类的CouchDB中。
看一下Redis DB (http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis)的良好比较,我认为NoSQL或CouchDB非常适合。以分析为目标。
我可以将计算分析存储在Redis/CouchDB中,并在我的源数据发生变化时逐步更新它们。
这是一个好的解决方案吗?
发布于 2011-11-30 09:36:04
您可能会考虑使用Cube。它不是一个Django应用程序,但它有很多很好的特性,Django可以很容易地与它通信。而且,它也很可爱。
你可以让你的Django应用程序在事件发生时将事件发送到MongoDB中。这种系统分离将防止Django应用程序上的任何额外压力。
发布于 2011-12-04 05:16:02
对不起,Mridang Agarwalla,有时你的问题会浮现在我的脑海中。
我认为保持,OLAP和OLTP两个数据库同步的方法是最新的,对OLTP的影响很小。
在2002年,我成功地使用了这种技术来解决类似的问题。它的工作原理如下:
数据库。
您可以优化守护进程的行为,例如,如果表没有新事件,守护进程可以休眠15秒。
在我的escenario中,只有事实表有触发器。如果事实表引用的数据不在OLAP数据库中,则我在此时创建该数据(OLTP和OLAP具有不同的模式)。
如果您分析您的数据库,您可以找到数百个表,但只有几个表是真正的事实表。
好吧,我知道这只是你答案的一部分。您问题的第二部分谈到了用于分析data的强大工具。我不能向你推荐任何开源产品(因为我没有开源分析工具的经验)。我在前台使用过Microsoft Analysis Services + Tableau软件。这是一个非常好的解决方案,但我不知道它是否与您的filosofy相匹配。对于数据挖掘,您有KNIME (Konstanz Information Miner),它是一个用户友好的、全面的开源数据集成、处理、分析和探索平台(但您需要一个以前的ETL任务)。
请把你的项目的消息发给我,我很感兴趣。我有一个django学生出勤解决方案,我想添加分析功能。
https://stackoverflow.com/questions/8317478
复制相似问题