大数据平台OLTP应用场景案例分析
前言
Hadoop大数据平台在当今的IT业界是非常热门的话题, 如果你关注它们的应用场景,大多数情况是做OLAP智能分析以及数据挖掘。鲜有类似于传统关系型数据库擅长的OLTP事务处理场景。今天和大家分享一个在大数据平台上OLTP应用场景案例。
背景
某国内车联网企业A,主要提供给各类大巴,货车公司安装各类传感器服务,并通过传感器收集日常车辆轨迹及各种告警违规数据。基于这些数据提供给客户实时的轨迹和告警查询,以及历史统计信息的查询。
业务需求
车辆每隔10秒中上传一条数据,同时在线的车辆数量在7万辆,要求用户能做近实时的车辆轨迹信息查询,数据加载要达到每秒8000条。为获得最佳的用户体验,查询响应时间要小于1秒,用户的并发查询数要大于100。
业务平台每天产生超过200万条告警记录,查询跨度为15天,响应时间要求在1秒以内。
业务平台每天产生5亿多条违规记录,每天需要对这些记录进行读取和统计并存储到统计表中。由于数据量较大,统计SQL复杂,该操作可在夜间闲时进行。数据读取,统计以及存储过程不能超过8小时。
工作负载特性分析
通过上面章节的分析,这是典型的混合负载。数据库既要面对汽车传感器频繁的数据加载请求迅速完成数据插入(INSERT),同时也要满足前台用户对此类数据的近实时的查询需求(SELECT). 这就意味着要对数据库进行频繁的读和写操作。同时要对每天生成的大规模数据进行读取和分析以及统计。
解决方案
针对前章所述的的工作负载特性,并对比市场上不同的产品方案,最终采取了Trafodion+Vertica的混合解决方案。
Trafodion是基于Hadoop/Hbase的数据库,它擅长于处理OLTP负载,对于高压力的数据插入有很好的性能表现。同时能够提供秒级的查询响应时间。在累计一天的数据后,在同一表内进行数据的ETL处理并生成违规日统计数据。
Vertica是基于列存储的数据库方案,对于复杂的查询读操作有很快速的响应速度。通过JDBC可以把Trafodion中的日违规统计数据直接插入到Vertica日违规统计表中。基于日违规统计表,通过数据统计处理生成月违规统计以及违规统计总表供用户查询。
客户端可通过调用标准JDBC/ODBC接口进行WEB应用程序的开发,以及BI和数