目录
信息化水平提升,很多企业已经接受并高频使用多样的业务系统进行日常作业,而在不断的使用过程中,部分行业和业务,如:直播电商、基础制造、公关传媒等,由于自身特点的原因,常常积累了海量的数据。巨大的数据资产怎样进行开发、运维、管理,就成为了IT部门长久以来的“心病”。
遇到这些问题,IT部门这时可能选择重新审视应用程序(业务逻辑)的设计,然而只是“杯水车薪”。原因本质上是:
数据库的“写”(写10000条数据到oracle可能要3分钟)操作十分耗时。
而数据库的“读”(从oracle读10000条数据可能只要5秒钟),但大量多次的请求对数据库有着高并发的压力。
在互联网的系统应用是一个读多写少的应用,常常具有数据量大、并发量高、高可用要求高、一致性要求高的特点,比如电商系统中,商品浏览的次数是比下单要多的。
也就是说,如何不让数据库的读成为业务瓶颈,同时也保证写库的成功率才是提升响应能力与稳定性的关键。
一、什么是读写分离
读写分离是一种数据库架构策略,它将数据库的读操作(查询)和写操作(更新、插入、删除)分开处理。这种分离通常通过将读请求和写请求分别发送到不同的数据库服务器来实现。
二、读写分离的应用场景
1.高并发访问
当应用面临大量用户同时访问时,读写分离可以有效地分散请求,提高系统的整体性能。
2.数据分析和报告
对于需要进行大量数据读取的分析和报告生成任务,读写分离可以确保这些操作不会影响在线事务处理的性能。
3.数据仓库
在数据仓库场景中,数据的读取操作远多于写入操作,读写分离可以优化资源分配,提高效率。
4.在线事务处理(OLTP)与在线分析处理(OLAP)分离
在需要同时进行事务处理和复杂查询分析的系统中,读写分离可以分别优化这两种类型的操作。
三、实战案例——如何实现读写分离?
下面将通过介绍业务系统读写分离方案,说明其具体的方案和内涵,为业务数据量大的行业进行高效数据调用提供一些新思路。
(一)背景与挑战
某公司目前存在以下问题:
1.BI直连业务数据,加载更新速度慢
直连业务库取数,数据约20-30亿,一次更新时间耗费7-8小时,甚至直到第二天早上,数据仍然未更新完成。
2.关联分析直连多系统,报表性能压力大
BI直连多个业务系统进行关联分析,不仅影响分析性能,还对业务库造成很大的性能压力,导致前端报表加载慢,重新启动更新代价太大。
3.数据孤岛,打通成本高
关联分析所需的目标数据分散在多个业务系统,像订单系统、ERP等常用系统、橱柜部门自己收集的客户需求信息,这些多源异构数据,以代码或者人工导出,时间人力成本高,难以维护。
(二)解决方案
IT决定采用一套基于FineDataLink(FDL)建设的高效离线数仓方案。该方案主要包括以下内容:
读写分离:采用数仓完成读写分离,将BI看板所需的高纬度汇总数据前置处理在数仓中完成,避免直接连接业务库。
数据同步:使用FDL进行批处理和流处理,从业务库获取数据并将其同步到数仓中。具体分层方式为:ODS层(原始数据层)- DW层(数据仓库层,包括DWD层-数据明细层和DWM层-数据汇总层)- ADS层(应用数据服务层)。
1、ODS层:制造中心将多个业务系统(如订单、物流和财务系统)数据进行实时同步,同时将业务数据做维度退化和清洗。
2、DWD层:制造中心依据业务处理逻辑,对20-30张表做关联形成宽表。后从DWD层中取数据,对不同维度做轻度汇总,汇总后数据量从20-30亿行降到8-9亿行。
3、DWM层:该层负责对数据进行更细致的汇总——橱柜部门匹配自定义的维度表,生成材料数量、面积等数据的BI看板。
4、ADS层:橱柜部门将制造中心的DWM层的板件信息,与客户定制化需求表进行匹配,汇总后数据量从8-9亿行降到约1亿行。
编辑
5、BI看板连接ADS层:最后,在BI里面根据不同的维度对轻度汇总表再做一层汇总,形成自助数据集
汇总后不同维度对应的数据集
数据降维:通过数仓的分层设计,对原始数据进行清洗、转换、整合和汇总等操作,将原始数据量从20-30亿行降至约1亿行,提高了数据分析的效率和准确性。
(三)实施效果
通过搭建基于FDL的离线数仓并实施读写分离方案后,该家居集团取得了以下显著效果:
1、BI可视化报表的使用更稳定:由于数据量的大幅减少(从20-30亿行降至约1亿行)和数仓的高效处理,BI可视化报表的秒级呈现,使用更加稳定可靠。
2、数据的决策分析更有力:经过数仓处理和降维的数据质量更高,为橱柜部门和研发部门的决策分析提供了更加准确和有力的支持。
3、关联分析需求快速满足:数仓的读写分离和前置处理满足了橱柜部门和研发部门对关联分析的快速需求,为定制化业务的发展插上了腾飞的翅膀。
FineDataLink是一款低代码/高时效的数据集成平台,它不仅提供了数据清理和数据分析的功能,还能够将清理后的数据快速应用到其他应用程序中。FineDataLink的功能非常强大,可以轻松地连接多种数据源,包括数据库、文件、云存储等,而且支持大数据量。此外,FineDataLink还支持高级数据处理功能,例如数据转换、数据过滤、数据重构、数据集合等。使用FineDataLink可以显著提高团队协作效率,减少数据连接和输出的繁琐步骤,使整个数据处理流程更加高效和便捷。