当前位置: 首页 > 知识库问答 >
问题:

使用哪种数据库/服务架构来查询和存储指标数据?

都超英
2023-03-14

我是系统开发的新手,想知道是否有比我更有经验的人可以帮助我解决有关数据库,Web服务和整体架构的一些问题。

我有一个应该每天运行的网络刮刀。它将从多个公开的政府数据中收集、筛选和汇总当地企业的数据。这些数据将被存储到Postgres数据库中。

然后,用户将拥有一个管理仪表板,可以在其中查看一些指标和趋势。我不知道的是,这个仪表板是否应该在用户每次加载仪表板时查询数据库。

我想这不是最明智的方法,因为它会过载并通过多个JOINSUMCOUNT等减慢数据库的速度。我相信最好在一夜之间编译这些指标并将其存储在某个地方?还是每小时?

我在做一些研究,偶然发现了这些“分析数据库”。我应该用这个吗?这个类似的问题似乎解开了谜题,尤其是@samxli对公认答案的评论。

我真的需要有人指点一下方向。生产中通常如何处理分析?提前谢谢大家了!:竖起大拇指:

解决方案详细信息:

    < li >绕过验证码的NodeJS web scraper每天收集公共数据 < li >对来自多个来源的数据进行筛选、汇总并保存到Postgres数据库中 < li >数据包含有关当地企业的公共信息-参见下文 < li >仪表板显示历史数据(时间序列)、指标和趋势

样本记录:

{
  trade_name: "ACME Inc.",
  legal_name: "Watchmen Hero Services Incorporated"
  active: true,
  foundation_date: "2018-11-23",
  sector: "services",
  main_activity: { id: 12318, name: "Law enforcement" },
  secondary_activities: [],
  address: {} // standard address object
  location: { lat: -23.2319, long: 42.1212 },
  ...
}

样本指标:

  • 每个部门和活动的活跃和不活跃公司总数
  • 每个地区和活动的估计税收收入
  • 每个城市地区最常见的N项活动

共有1个答案

钦景胜
2023-03-14

我可以看到一些选择。我同意你的观点,在规模上,你想将读写分开,这样分析就不会影响你的系统性能。

您可能希望了解复制-https://www.brianstorti.com/replication/.您可以从“读取副本”中读取数据并获得接近实时的数据视图,但不会对写入性能造成巨大的中断影响。

或者,如果你想做更多的工作,得到一些在规模上可以很好地工作的东西,请深入研究你在分析数据库(OLAP)上的发现,并考虑构建一个Star模式(https://en.wikipedia.org/wiki/Star_schema). 您可以设置ETL(提取、转换、加载)流程,以更容易聚合和使用的格式将数据从事务数据库拉入分析数据库。我曾经做过类似的工作,将数百个数据源以30分钟的时间批量同步到数据仓库中。但是,如果您只有一个数据源,那么这可能有些过分。

最后,如果您主要处理时间序列数据和指标,也可以考虑弹性堆栈(https://hacker noon . com/Elastic-Stack-a-brief-introduction-794 BC 7 ff 7d 4 f),而不是Postgress。

如果你不走弹性路线,也可以考虑使用一些BI(商业智能)工具,比如PowerBI来构建你的仪表盘,而不是重新发明轮子。

 类似资料:
  • 我怀疑为每一个传入的事件记录执行postgresql操作将是一个性能问题。 对于这种情况,有什么更好的或可供选择的设计?

  • 我有一个似乎工作正常的查询。 } 但是当我尝试将它与JPA一起使用并键入统计DTO时,我得到了以下错误: 具有路径 [/api] 抛出的异常的上下文 [请求处理失败; 嵌套异常是组织.springframework.core.convert.converter不常见: 找不到能够从类型 [org.springframework.data.jpa.repository.query.query.Abs

  • SqliteOpenHelper只是一个工具,是SQL世界和OOP之间的一个通道。我们要新建几个类来请求已经保存在数据库中的数据,和保存新的数据。被定义的类会使用ForecastDbHelper和DataMapper来转换数据库中的数据到domain models。我仍旧使用默认值的方式来实现简单的依赖注入: class ForecastDb( val forecastDbHelper:

  • 问题内容: 我读过我应该用 钱 ,但是在当今快节奏的世界里,现在也许已经过时了。 我应该使用什么? 问题答案: 不,钱应该还是可以的。

  • 我试图使用JPA继承来表示这些。 nnm\U tran实体 便宜货实体 我认为到目前为止,这一切都连接正确。当我使用自定义查询附加Spring数据存储库时,我的问题就来了。 存储库 当代理该方法并执行该方法时,它会生成SQL语句,选择不同的nnm\U tran。nnm\U tran t1 LEFT OUTER JOIN io\U plan t0 ON(t1.plan\U number=t0.pla

  • 它是否将其存储在缓存中?我有一个应用程序,但应用程序中没有任何地方。属性是提到的db详细信息。我可以通过邮递员存储数据和查询它。