在Django / Postgres应用程序中进行数据挖掘
我需要在我的Django应用程序中构建一个分析(报告,制图和图形)系统。 在一个理想的世界中,我可以查询我的Postgres数据库并获取我想要的数据,但是当数据库中的数据量超过屋顶时,我会遇到性能瓶颈和其他问题,如索引地狱。
我想知道你是否可以指出我正确的方向来实现这一点:
我期望避免两件事情:
这是我还没有合作过的又一场景,并且试图理解最快和最好的完成方式。
我希望我一直冗长。 如果不是,我很乐意解释更多。
感谢大家
在挖掘网络并使用我所拥有的知识之后,我已经找到了这个解决方案:
使用Postgres来存储关系数据。 在每个CRUD操作中,调用分析代码对数据进行计算并将数据存储在Redis / CouchDB等NoSQL数据库中。
看看NoSQL DB的这个比较好的例子(http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis),我认为Redis或CouchDB非常合适。 针对分析。
我可以将计算的Analytics存储在Redis / CouchDB中,并在源数据更改时以增量方式更新它们。
这是一个好的解决方案吗?
你可能想考虑Cube。 它不是一个Django应用程序,但它有很多很棒的功能,并且Django可以轻松地与它沟通。 另外,它很可爱。
你可以让你Django的应用程序只是发生事件到MongoDB发生。 系统的这种分离可以防止Django应用程序产生额外的压力。
抱歉Mridang Agarwalla,有时候你的问题会回到脑海中...
我认为保持同步两种数据库 ,OLAP和OLTP的方式在OLTP中影响最小。
在2002年,我成功地将这种技术用于类似的问题。 它的工作原理如下:
您可以优化守护进程行为,例如,如果表没有新事件,守护进程可以休眠15秒。
在我的情况下,只有事实表有触发器。 如果事实表参考数据不在OLAP数据库中,我此时创建了数据(OLTP和OLAP有不同的模式)。
如果你分析你的数据库,你可以找到数百个表,但只有几个表是真正的事实表。
那么,我知道这只是你答案的部分答案。 你的问题的第二部分讨论分析数据的强大工具 。 我无法向您推荐任何开源产品(因为我还没有使用开源分析工具的经验)。 我在前端使用了Microsoft Analysis Services + Tableau软件。 这是一个非常好的解决方案,但我不知道它是否与你的filosofy相匹配。 对于数据挖掘,您有KNIME(康斯坦茨信息挖掘工具),这是一个用户友好且全面的开源数据集成,处理,分析和探索平台(但您需要一个先前的ETL任务)。
请向我发送有关您项目的消息,我非常感兴趣。 我有一个django学生考勤解决方案,我想添加分析功能。
链接地址: http://www.djcxy.com/p/66405.html