在生产环境中使用postgres进行数据挖掘 - 有更好的方法吗?

时间:2015-04-12 18:42:35

标签: postgresql relational-database bigdata data-mining

有一个运行了多年的Web应用程序,在其生命周期内,应用程序收集了大量用户数据。数据存储在关系DB(postgres)中。运行应用程序(执行业务)并不需要所有这些数据。但是,不时的商务人士要求我提供此数据数据的报告。这会导致一些问题:

  1. 有时这些SQL查询长时间运行
  2. 对生产数据库(非酷)执行quires
  3. 不太容易按周或按月提供报告
  4. 数据的某些部分以不适合的方式存储 查询(查询效率低下)
  5. 我的想法(请注意,我是开发人员而不是数据挖掘专家)如何改进整个报告流程:

    1. 创建单独的数据库,定期更新生产数据
    2. 优化数据的存储方式
    3. 创建信息中心以显示报告
    4. 问题:但是有更好的方法吗?还有另一个DB更适合这种数据分析吗?或者我应该研究现代数据挖掘工具吗?

      谢谢!

3 个答案:

答案 0 :(得分:4)

真的进行数据挖掘(如:分类,聚类,异常检测),或者是"数据挖掘"为你报告数据?在后一种情况下,所有现代数据挖掘工具"会让你失望,因为他们有不同的目的。

您是否使用过Postgres的索引功能?您的方案听起来好像选择和聚合是大部分工作,而SQL数据库非常适合这一点 - 如果设计得很好。

例如,物化视图和触发器可用于将数据处理为更适用于报告的方案。

答案 1 :(得分:3)

有一千种方法可以解决这个问题,但我认为对你来说阻力最小的路径就是postgres复制。查看此Postgres replication教程,了解快速,概念验证。 (当您使用Google进行postgres复制时,有很多点击,而该链接只是其中之一。)这是一个记录来自PostgreSQL网站维基的streaming replication的链接。

我建议这样做,因为它符合您的所有标准,并且仍然符合您熟悉的技术范围。唯一的学习曲线是复制部分。

复制解决了您的问题,因为它会创建第二个数据库,该数据库将有效地成为您的“只读”#34; db将通过复制过程进行更新。您可以保持架构相同,但可以更改索引并自定义报表/仪表板。这是您要查询的数据库。您的主数据库将是为用户提供服务的事务数据库,而复制的数据库将为利益相关者提供服务。

这是一个广泛的主题,所以请尽职尽责并研究它。但它也可以为您提供帮助,并可以快速转身。

答案 2 :(得分:2)

如果您真的想尝试使用PostgreSQL进行数据挖掘,可以使用一些工具。

  1. 非常简单的方法是KNIME。它易于安装。它具有全功能的数据挖掘工具。您可以直接从数据库访问数据,处理并将其保存回数据库。

  2. 硬核方式是MADLib。它直接在Postgres中安装Python和C中的数据挖掘功能,因此您可以使用SQL查询。

  3. 这两个项目都足够稳定,可以尝试。