实在项目使用mysql做数仓库的ODS层,这仅仅是带领大家入门,用mysql做数仓存在很多问题。以实战项目一为例:
1 存在的问题
- 目前调度用的kettle,数据分析,计算都是落表到mysql
- mysql表数量庞大,乱,不知道表用途。
- 没有集群,hdfs、hive、spark、kafka、flink等等都没有
2 解决方案
- mysql数据同步尽量和业务系统保持一致,以便后期出现问题排查。
- mysql同步到数仓,数仓表必须是分区存储;同步方式前期可以全量同步,后期数据多了,可以全量变增量。
- 向上反馈落表到mysql的潜在风险项,且记录文档,留下证据,以防后期背锅
- 表太多同步哪些表?根据需求寻求业务方,让他提供表来源
3 潜在风险
在将MySQL用作数据仓库时,可能会面临一些潜在的风险和挑战。以下是一些可能出现的风险项:
**读写性能:**大规模的数据查询可能导致性能下降,数仓需要支持高吞吐的数据写入,而MySQL可能在大量写入的情况下面临性能瓶颈。
**水平扩展:**MySQL相对较难实现水平扩展,当数据量增加时,可能需要更强大的硬件或垂直扩展。
**分区和分片:**大规模数据仓库可能需要实现分区和分片来有效地管理和查询数据,这在MySQL中可能涉及复杂的配置和管理。
数据一致性和完整性:
ETL过程: 在将数据从源系统导入到MySQL中的过程中,可能会发生数据一致性和完整性的问题,尤其是在复杂的ETL流程中。
**事务处理:**MySQL的事务处理可能受到数据量和复杂性的影响,需要确保数据的一致性和可靠性。
安全性和访问控制:
**安全性:**需防范SQL注入等安全威胁,数据恢复:数据仓库的大规模数据恢复可能需要较长时间,需要仔细计划和测试。
**成本问题:**成本和性能之间可能也需做出权衡,且维护mysql需要专业人员维护
**语法问题:**mysql可能不支持复杂的语法(hive开窗等)