首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django/Postgres应用程序中的数据挖掘

Django/Postgres应用程序中的数据挖掘
EN

Stack Overflow用户
提问于 2011-11-30 04:44:51
回答 2查看 4.5K关注 0票数 20

我需要在我的Django应用程序中内置一个分析(报告,图表和绘图)系统。在理想情况下,我可以只查询Postgres数据库并获得我想要的数据,但当数据库中的数据量达到顶峰时,我会遇到性能瓶颈和其他问题,比如索引地狱。

我想知道您是否可以为我指出一个正确的方向来实现这一点:

  • 这是使用NoSQL DB (CouchDB,MongoDB,Redis)并查询其中数据的好方案吗?
  • 由于Postgres和Django不支持联机分析处理/MDX,我是否应该在不同的数据库中使用星型架构来查询?

我希望避免两件事:

  • 我不想在我的实际数据库中查询分析,因为这可能会对性能造成巨大的影响。
  • 我想让我的分析尽可能保持最新,例如,我想增量地更新我的数据仓库,以获得最新的数据。每当我的事务数据库上有CRUD操作时,我都想更新数据仓库。

这是我还没有尝试过的另一个场景,我正在尝试理解完成的最快和最好的方法。

我希望我已经说得够多了。如果没有,我很乐意解释更多。

谢谢大家

在深入挖掘网络并使用我所掌握的知识之后,我得到了以下解决方案:

使用Postgres存储关系数据。在每个CRUD操作中,调用分析代码对数据进行计算,并将数据存储在Redis/ NoSQL之类的CouchDB中。

看一下Redis DB (http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis)的良好比较,我认为NoSQL或CouchDB非常适合。以分析为目标。

我可以将计算分析存储在Redis/CouchDB中,并在我的源数据发生变化时逐步更新它们。

这是一个好的解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2011-11-30 09:36:04

您可能会考虑使用Cube。它不是一个Django应用程序,但它有很多很好的特性,Django可以很容易地与它通信。而且,它也很可爱。

你可以让你的Django应用程序在事件发生时将事件发送到MongoDB中。这种系统分离将防止Django应用程序上的任何额外压力。

票数 10
EN

Stack Overflow用户

发布于 2011-12-04 05:16:02

对不起,Mridang Agarwalla,有时你的问题会浮现在我的脑海中。

我认为保持,OLAP和OLTP两个数据库同步的方法是最新的,对OLTP的影响很小。

在2002年,我成功地使用了这种技术来解决类似的问题。它的工作原理如下:

  1. 您可以为每个事实表编写触发器。当事实数据被修改时,触发器在一个表中插入一行来反映这个事件(idEvent + update | delete | insert +事实表的外键)。OLAP
  2. 低优先级守护进程执行无限循环,对于每个循环迭代,您将从表中‘弹出’10个事件,并使用这些新信息更新

数据库。

您可以优化守护进程的行为,例如,如果表没有新事件,守护进程可以休眠15秒。

在我的escenario中,只有事实表有触发器。如果事实表引用的数据不在OLAP数据库中,则我在此时创建该数据(OLTP和OLAP具有不同的模式)。

如果您分析您的数据库,您可以找到数百个表,但只有几个表是真正的事实表。

好吧,我知道这只是你答案的一部分。您问题的第二部分谈到了用于分析data的强大工具。我不能向你推荐任何开源产品(因为我没有开源分析工具的经验)。我在前台使用过Microsoft Analysis Services + Tableau软件。这是一个非常好的解决方案,但我不知道它是否与您的filosofy相匹配。对于数据挖掘,您有KNIME (Konstanz Information Miner),它是一个用户友好的、全面的开源数据集成、处理、分析和探索平台(但您需要一个以前的ETL任务)。

请把你的项目的消息发给我,我很感兴趣。我有一个django学生出勤解决方案,我想添加分析功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8317478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档