User Tools

Site Tools


architect:fin-data-system

金融数据型系统的思考

处理OLTP&OLAP

既然是数据型,就意味着不断的流入数据,会有大量的数据做计算与分析。

这就引出了个概念:在线事务(On-Line Transaction Processing)和在线分析(On-line Analytical Processing)。

像应用程序,不断地读取或写入数据,算作OLTP。
像不断地预先把一些数据分析处理好的场景,如果这个换成在线实时地进行,就算作OLAP。
一旦数据量大了以后,这两件事情无法做到在同一组数据库里完成,OLAP会消耗大量性能从而影响OLTP,进一步影响用户体验。
传统的做法就是分成两个副本,不断把OLAP分析好的结果,同步到OLTP的副本上。

(不太复杂的系统不要去尝试追新)
现在业界有一种新思路的实践(源于1994):Hybrid Transaction Analytical Processing 混合事务分析,
希望做到同一组数据库,既完成OLTP又完成OLAP。
同时能保证足够好的性能,不至于影响在线用户体验。

给人感觉,就是用分布式体系,把数据库也做成分布式的相当于一套数据库有几个副本,
然后某一个副本在做OLAP时不影响其他副本给应用程序提供OLTP服务。

最核心需求

1 数据的不断流入,总的数量会越来越大(还是小于ToC互联网系统的数据量级)
2 数据的展示以及可视化(就是查询几条数据给用户看,或者通过一定的图表显示)
3 数据的分析(无论是计算各种模型,还是调用第三方算模型,或者本系统内做各类统计)
4 数据的搜索
5 数据的合规与安全(包括出入境管理,跨境同步等等)


6 系统的合规(为满足合规要求的灾备体系,高级环境和低级环境的完全隔离;用户信息的保存与维护)
7 系统的安全(监控所有API的调用;不能被大量爬取还一无所知;不能无授权地获取到不该碰触的数据)


至于预警功能,应该算在OLAP范畴,根据用户动态定制化的在线数据分析。

短期内不存在的需求:高并发

一般的金融数据系统,更多的是ToB,当然现有的启信宝,爱企查,企查查,都是ToC的。 只是毕竟金融数据的查询和分析的需求,还是局限在少部分人手上。 不像日常聊天,购物,信息分享,刷视频,点外卖如此频繁而广泛。

普通的系统,每个接口调用都是免费的,至少绝大部分都是免费的,而且还是给所有ToC用户,会出现高并发情况。
分析mysql性能的时候,都是几百,几千个用户同时做查询操作,每秒总共的查询次数是上万次。
下面的图片才变得有意义

正因为ToB,且很多接口虽然是程序调用,但是可能都会按照接口的次数来收费的。

所以并发量上不去,大量地调用意味着用户大量的费用支出。那种对表的每秒几千次查询,都不在mysql要做性能调优的考虑范围内。

若全是统计查询时,就算每秒一两次都会有问题。

最核心需求的解决方案

1 数据的不断流入: 专门的一套系统只做数据验证和流入,可以从任何不同渠道流入,
比如sqlsever, oss,excel, ftp, 第三方api,mysql
2 数据的展示以及可视化: 专门的一套前端系统和后端查询系统
3 数据的分析:专门的一套系统做各类数据分析
4 数据的搜索:看情况如果直接mysql索引就能支持可以直接用,实在不行专门让ES处理
5 数据的合规与安全:


6 系统的合规:
7 系统的安全:

值得关注的问题:慢,体验差

因为金融数据,有些数据本系统不能存,只能实时从第三方获取,接口本身就可能慢,

常常会出现一些接口超过十几秒,几十秒都没返回,因为太慢,严重影响用户体验。

architect/fin-data-system.txt · Last modified: 2022/09/11 12:49 by morgan0329

Except where otherwise noted, content on this wiki is licensed under the following license: 沪ICP备12046235号-2
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki