首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在堆栈中哪里可以最好地将分析数据仓库数据与来自第三方API的数据scraped+cached合并?

在堆栈中哪里可以最好地将分析数据仓库数据与来自第三方API的数据scraped+cached合并?
EN

Stack Overflow用户
提问于 2021-10-14 15:35:26
回答 1查看 25关注 0票数 0

背景信息

我们向用户出售一个API,用于分析和显示从公共记录中获得的公司财务组合数据。

我们有一个“分析数据仓库”,其中包含用于计算金融投资组合的所有原始数据。这个数据仓库是由ETL管道提供的,因此我们的API服务器本身并不“拥有”数据仓库。(例如,API服务器只具有对分析数据仓库的只读权限;数据仓库中数据的模式迁移与ETL管道而不是API服务器同时存在;等等)

我们还有一个小文档存储(实际上是一个配置了持久性的Redis实例),它属于API层。API层运行各种作业来写入这个存储,然后根据需要查询数据。您可以将此存储看作API层内存状态的各种位的共享持久缓存。API层在这里存储类似API键黑名单的内容。

问题陈述

我们所有的输入数据都是以美元计算的,我们的计算是以美元计算的。然而,我们给我们的客户一个查询时间选项,以便及时将响应转换为另一种货币。我们通过让API层运行一个后台作业来抓取汇率数据,然后将其缓存在文档存储中来实现这一点。然后,每当需要将查询结果转换为特定货币时,单个API层节点就会从存储中的此交换速率键中提取(内存中的缓存-带有-TTL)。

起初,我们认为这个单元转换不是真正“关于”我们的数据,而是关于API的UX,所以我们认为这完全是API层的关注,在这里将汇率数据存储到我们的文档存储中是有意义的。

(另外,我们注意到,如果不预先将DB结果转换为DB端的特定货币,则对特定组合的查询的计算结果会变得更容易缓存;按照我们所做的方式,我们可以在查询之间缓存和重用组合查询结果,即使查询希望以不同的货币查询结果。)

但是最近我们已经扩展到允许合作客户端也可以直接针对我们的分析数据仓库执行复杂的数据--科学/商业智能查询。而且事实证明,他们通常也需要在BI查询中进行最终的汇率转换--尽管这里没有API层。

看来,为了满足BI查询的需要,汇率数据“实际上应该”与金融数据一起存在于分析数据仓库中;而ETL管道“应该”负责进行获取和输入汇率数据所需的API抓取。

但这感觉是错误的:汇率数据与我们的金融数据有着不同的生命周期和完整性约束。汇率是肮脏而短暂的时间点样本,而金融数据是一个可靠的历史事件流。汇率被不断更新/覆盖,而金融数据仅被附加.等。

为“查询结果表示”需要访问后端“应用程序状态”的分析性查询提供服务的最佳实践是什么?或者我一开始就把这些汇率数据看作是“应用状态”,我是否错了?

EN

回答 1

Stack Overflow用户

发布于 2021-10-14 17:13:38

我对你的方案感兴趣的是汇率数据何时适用。

在API的例子中,所有这些都是关于另一种货币中的实时值的,在API应用范围(Redis)中拥有最新的值是有意义的。

但是,我假设您的分析数据仓库有一些表,其中包含在特定时间进行的采购。在这些情况下,当前汇率实际上与交易价值无关。

这可能意味着您希望将汇率历史记录存储在您的仓库中,或者展开“购买”表,以存储当时所有货币的价值。

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

https://stackoverflow.com/questions/69573524

复制
相关文章

相似问题

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