【问题标题】:Data analytics architecture数据分析架构
【发布时间】:2015-12-06 16:24:09
【问题描述】:

我有数据库,其中包含一些数据。该数据在存储到该数据库之前会转换为所需的格式。生产应用程序也会查询该数据库。

请注意,没有原始数据数据库,所有数据都经过处理,以便在我们的应用程序中进一步使用,然后再将其插入到该 noSQL 中。 现在我需要根据这些数据实现一些报告。

例如通过在 UI 中选择日期范围来生成简单的图表以按日期显示收集的数据趋势:

当然这是一个简单的例子来了解我需要什么并试图实现,真正的报告会更复杂。

原则上,我正在寻找最常见和最聪明的方法来加入这两个子系统(数据数据库和分析)以实现以下结果:通过应用程序查询的报告查询相同的数据。 em>

我看到了一些挑战和困难,因为繁重的报告会影响数据库吞吐量,而且由于应用程序也使用相同的数据库也会减慢它们的速度。 如果已经有一些原则构建这样的系统,如果您在 cmets / answers 中提及它,我将不胜感激。

由于我找不到任何指导方针,我将描述我的想法如何实施分析:

  • 将这些计数像“事件”一样发送到某个消息传递平台 (RabitQM) 到另一个应用程序,该应用程序会将这些数据存储到单独的数据库并稍后在报告中使用它。我在这种方法中看到了以下优点和缺点:
    • 优点:对仪表板平台没有性能影响。
    • 缺点:数据重复

【问题讨论】:

  • 请更准确地了解“挖掘的数据”。数据挖掘是一个庞大的领域,有些人将这个流行词用于简单的聚合或网络抓取。不要在这里玩流行词宾果游戏,这不是商业推销。

标签: dashboard data-analysis


【解决方案1】:

所以你有一个事务应用程序当前使用的数据库, 并且您将在该数据库中的数据之上构建一个分析应用程序,但担心添加到事务性应用程序的性能影响。

一种常见的做法与您的想法类似,复制数据 进入另一个数据库进行分析。

应用子系统是一个OLTP系统, 分析子系统是一个OLAP系统。将数据从 OLTP DB 转换为 OLAP DB 的过程称为 ETL。您通过消息队列复制数据的想法 到另一个数据库是一种可能的自定义 ETL 方法。

通常在OLAP系统中,您使用星型模式或OLAP Cube来存储预先聚合的数据,以便报表应用程序可以更好地查询数据库中的数据。大多数报告工具(BI 工具),如 Tableau、Cognos、SSRS 都可以从星型模式中读取数据。即使您不打算使用任何这些工具,只想使用自定义代码构建报表 UI,星型模式也会有所帮助。

现在报告和应用程序使用不同的数据库,这两者之间会有时间延迟。如果使用消息队列将数据实时转换为分析数据库,那么时间延迟将是最小的。但是,将新数据添加到 OLAP DB 时会产生成本,如果您预先聚合数据以获得更好的查询性能。这就是为什么很多报告系统通常不会报告实时数据,如果时间延迟对于业务来说是可以接受的。

【讨论】:

    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多