最近接触到的一个开发项目,该项目的业务比较复杂,角色众多,关联系统也多,数据安全要求高,甲方希望系统是面向未来五到十年,数据分析要足够高效。
数据库选型分析
对于甲方来说,数据安全是底线也是红线,要足够的安全性,满足三级等保等要求。具体在系统设计上的影响先不考虑,就技术选型上来说,数据库层面需要能支持透明加密(云数据库可以支持)。
要进行高效的数据分析,必须使用MPP数据库了,通常可以选择ck,对于大宽表的场景,ck是可以比较好的满足的。但是在这个场景下,因为业务比较复杂,是很难组成大宽表去做分析的(也不是完全不行,但是要做各种数据同步,代价会比较大)。而starrocks却可以比较好的解决这个问题,并发性能也比较好,而且性能据说也比ck要好(不过多表关联的查询性能估计是没有跟大宽表相比的,灵活性和高效有时就是很难兼得的)。
架构图
系统设计的大方向是四个关键词:安全,高效,智能,开放。(这四个点其实还应该有一个:灵活)
安全前面已经强调过了,高效是要系统响应时延要低,分析要高效出结果,第一阶段的系统重点应该关注的就是这两点。开放是要在安全的基础上开放,这个阶段也会涉及,但是不会太深入,至于智能这一阶段应该不需要考虑太多,可以有一两个智能的功能点作为系统亮点。
第一阶段的系统应该是以解决甲方用户当前的痛点问题为要,为后续的进一步打下基础。
整体架构下:
1. 系统是一个集群,需要完全的无中心状态;
2. 耗时任务提交到XXL去执行,如复杂的分析任务等;
3. 使用MQ对可能的写入高峰流量进行削锋,降低系统压力,减少数据丢失的可能性;
4. 敏感数据存储在支持透明加密的MySQL中,脱密数据村在MPP中,用于分析;
5. 所有文件存储到s3上,避免对本地存储的依赖;
6. 查询数据应该使用redis进行适当的缓存,避免所有查询都直接穿透到数据库;
7. 整个系统在开发和使用过程中一定要遵循最小权限原则,非必要不赋权。
开放平台的思考
包含两方面功能,一个是接入数据,另一个是输出数据,赋能社会。第一阶段只能是实现一个基础,这一块往大了看就是一个数据中台,功能非常丰富的。例如数据集成,数据地图,数据血缘,数据治理等,一套现代数据技术栈。
不过就甲方业务来看,最主要的是解决几个问题:
1. 怎么快速接入第三方系统的数据?是需要开发去实施开发接入,还是有一个还是有一个好的数据集成治理工具去接入?
2. 第三方系统数据结构变化的时候,能否快速响应?
3. 怎么能更好的用数据赋能政府及社会?前提是安全,这是否可以有一个安全的分享功能,例如一些统计类的数据可以快速进行分享。毕竟,数据需要流动起来才能产生更大的价值。
关于智能的思考
这一块可以做的可能就更多了,例如可以有一个健康数据的模型平台,全国的高校或者医疗机构等都可以基于上面做模型,产生更多有价值的研究成果,形成一个大的产学研平台。而数据做到完全脱敏,且不离开平台。
一些短期比较有用的,例如指标关联分析,异常值发现等,这些应该是可以产生价值的。
20220910