标签:系统 业务 读取数据 lov 依次 有意思 生产者消费者 etl logs
写这篇文章主要是介绍一下我做数据仓库ETL同步的过程中遇到的一些有意思的内容和提升程序运行效率的过程。
项目初期:游戏的运营数据比较轻量,相关的运营数据是通过Java后台程序聚合查询关系型数据库MySQL完全可以应付,系统通过定时任务每日统计相关数据,等待运营人员查询即可。
项目中后期:随着开服数量增多,玩家数量越来越多,数据库的数据量越来越大,运营后台查询效率越来越低。对于普通的关系型来说,如MySQL,当单表存储记录数超过500万条后,数据库查询性能将变得极为缓慢,而往往我们都不会只做单表查询,还有多表join。这里假如有100个游戏服,每个服有20张表,而每个表有500W数据,那么:
总数据量 = 100 * 20 * 500W = 10亿 按当时的库表结构,换算成磁盘空间,约为100G左右
我的天呐,现在没有单机的内存能同一时间载入100G的数据
https://www.zhihu.com/question/19719997
所以,考虑到这一点,Hive被提出来解决难题!
在这里先说下初期项目架构的探索,因为数据流向,其实最终就是从MYSQL----->>>>Hive中,我使用的是Jdbc方式。为什么不使用下列工具呢?
version_1:
使用生产者消费者模型,中间使用内存,数据不落地,直接插入目标数据
使用一个生产者线程从MySQL中读取数据,并将数据依次存放在MQ中, 然后使用一个消费者线程从MQ中获取数据,并写入相应的txt文件中
标签:系统 业务 读取数据 lov 依次 有意思 生产者消费者 etl logs
原文地址:http://www.cnblogs.com/ITtangtang/p/7612237.html