我刚开始从事系统开发,我想知道是否有一个比我更有经验的人能帮助我解决有关数据库、web服务和总体架构的一些问题。
我有一个,一个网络刮刀,应该每天运行。它将从多个可公开获得的政府数据中收集、整理和汇总有关本地企业的数据。此数据将转到Postgres DB。
然后,用户将拥有一个管理仪表板,在那里他们可以看到一些指标和趋势。我不知道的是,每当用户加载仪表板时,这个仪表板是否应该查询DB。
我认为这不是最明智的方法,因为它会使DB超载,并减缓使用多个JOIN、SUM、COUNT等的DB。我认为最好是在一夜之间编译这些指标并将其存储在某个地方。还是每小时?
我当时正在做一些研究,偶然发现了这些“分析数据库”。这就是我该用的吗?这个similar question似乎已经解决了这个难题,特别是在公认的答案上的@samxli's comment。
我真的需要一些方向-指向这里。分析在生产中通常是如何处理的?提前谢谢你!:大拇指:
解决方案详细信息:
F 224
样本记录:
{
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 },
...
}样本度量:
)
发布于 2019-12-17 05:40:41
我能看到一些选择。我同意您的观点,在规模上,您希望将读写分开,这样分析就不会影响您的系统性能。
您可能需要查看复制- https://www.brianstorti.com/replication/。您可以从“replica”读取数据,并获得几乎实时的数据视图,但不会对写入性能造成巨大的破坏性影响。
或者,如果您想做更多的工作,并获得一些可以在规模上很好地工作的东西,请深入挖掘您在分析数据库(OLAP)上的发现,并考虑构建一个星型模式(https://en.wikipedia.org/wiki/Star_schema)。您可以将ETL (提取、转换、加载)进程放在适当的位置,以便以一种更易于聚合和使用的格式将数据从事务数据库中提取到分析数据库中。我已经完成了类似的工作,数百个数据源在30分钟内被同步到一个数据仓库中。不过,如果您只有一个数据源,这可能会造成过度的后果。
最后,如果您主要处理的是时间序列数据和度量,那么也可以考虑弹性堆栈( Elastic,https://hackernoon.com/elastic-stack-a-brief-introduction-794bc7ff7d4f)。
如果您不走弹性路线,也可以考虑一些BI (商业智能)工具,比如PowerBI来构建您的仪表板,而不是重新发明轮子。
https://stackoverflow.com/questions/59357483
复制相似问题