本文介绍了什么

´ 电信级大数据分析典型需求

´ Vertica数据库特点及与其他数据库对比

´ Vertica核心技术介绍

´ 基于Vertica的典型分系统架构简介

电信级大数据分析典型需求

´ 海量数据存储:年分析数据量达到PB

  • Counter数据:各网元收集的统计数据,可用于监控和测量网络性能

  • MR详单:即手机向网络上报的无线性能测量报告,反映了用户实时无线环境真实情况

  • CDR数据:呼叫详单记录,由各个接口中与该事件相关的信令综合而成,是对用户在移动网络中的通话、短信、数据业务的事件记录

  • IUPS数据:对Iu-PS接口上采集的PS域信令面和用户面数据解析而成的话单数据

  • Gn数据:对Gn口原始码流解析得到的数据,主要反映用户使用各类数据业务的详细情况

  • 工参、投诉、设备告警、路测等其他数据

´ 高速数据汇总及分析:保证按天、按月滚动的分析模块能够及时完成

´ 少量的实时查询需求:从海量详单数据中迅速定位单个用户,例如用户轨迹查询

´ 结论:需要一种兼具数据仓库功能、数据分析功能的数据库;对信息检索速度要达到秒级;对超大数据集的汇总、关联操作要下降到分钟级(传统数据库如Oracle往往需要数小时)

 

Vertica特性

´ 大规模并行处理(MPP):基于廉价的X86服务器集群,获得高性能的分析处理能力。

´ 列式存储:为大多数分析型数据库所采用,区别于传统的交易型数据库(如Oracle),适用于按列高速查询,性能提升在50-1000倍。

´ 标准化的接口:基于SQL语句和传统的JDBC和ODBC等程序接口,利于现有数据分析系统移植。

´ 灵活的部署方式:既可部署于传统的本地硬盘存储,也可部署在HDFS存储系统上,方便与Hadoop系统集成。

´ 查询优化器:根据用户查询特性优化存储结构和查询算法,进一步提升查询性能(关联、分组等查询性能可再提高5-10倍)。

´ 丰富的管理和监控工具:为不同用户(数据分析、实时查询、数据导入等)分配各自系统资源(CPU、内存等),拥有图形化的网页监控界面。

 

Vertica与传统交易型数据库对比

传统数据库以交易型数据库为主,比如Oracle、MySQL,这些数据库的物理存储格式都是行存储,适合数据频繁的增删改操作(如股票交易系统),但对于统计分析类的查询,行存储其实效率很低。而以Vertica为代表的分析型数据库,采用了MPP列式存储方式,注重字段统计、汇总等分析操作,而弱化了记录的插入、删除操作。

下面对比两类数据库在执行分析任务时的差异。

 

Vertica与NoSQL数据库对比

随着“大数据”的兴起,互联网企业纷纷推出了所谓NoSQL的新型数据库。这类数据库最大的特点是不再使用SQL语句进行数据查询,而采用Map/Reduce等技术处理数据,适合处理互联网产生的海量 非结构化数据(不再以“表”来组织数据)。与之相比,Vertica数据库更倾向于使用传统的SQL语言,处理结构化的数据,最近几个版本的Vertica也引入了Hadoop接口,使之具备了一定的非结构化数据处理能力。

下面对比Vertica与Hbase,一种典型的NoSQL数据库。

 

Vertica与Impala对比

Impala是一款SQL on Hadoop开源数据库,最显著的特点是其结合了HDFS分布式存储系统和SQL查询语句,此外它采用“列式存储”的设计,这使其成为了一款高速的分析型数据库。尽管如此,Vertica与之相比,依然具有查询效率更高、运行更稳定、资源管理更方便等优势。

 

Vertica、Impala测试对比

针对日常分析常用的三类SQL查询:记录统计、关联、分组汇总,我们使用相同硬件和数据源做了如下测试,可以看出Vertica具有明显速度优势。

测试环境

5台HP-C7000刀片服务器组成的Vertica集群

1台主节点 + 5台从节点,HP-C7000刀片服务器组成的Impala集群

 

Vertica核心技术——大规模并行计算(MPP)

´ Vertica采用无资源共享的大规模并行处理架构,节点间通过TCP/IP网络进行通信,每个节点采用本地磁盘来存储数据。

´ Vertica根据数据表内容自动的在集群之间划分数据,查询规划器决定如何应对查询语句,并将相应的工作派发到不同的合作结点上,然后再收集每个结点的部分结果,最后将部分结果整理成最后的查询结果,返回给查询用户。

´ 与Hadoop等集群采用的主-从节点规划不同,Vertica所有节点完全对等,数据加载可以并发在所有节点同时执行,数据的查询也可以在任意节点发起。

´ Vertica支持在线集群扩展,并在完成节点添加/删除后重新分配数据。

 

Vertica核心技术——Projection与列式存储

对于典型的分析查询而言,往往不需要读取整张表的没一行数据,而只需要获取所有列数据的一个子集。列式存储正是基于这一原则,在执行分析查询时跳过无关的列,从而节省了大量的I/O资源消耗。

在Vertica中,“表”仅仅表示逻辑上的二维数据结构,真正存储的数据结构是将表拆分得到的列的组合,称为Projection

Projection存储的不仅仅是数据。为了优化查询性能,Vertica系统针对每列数据的特点,会采用不同的编码和压缩算法、不同的排序方式及系统冗余设置等规则组织projection,再分散存储到数据库集群的各个节点上。

这些Projection的建立规则可以通过查询优化器(下面会介绍)自动生成,也可以由有经验的数据库管理员手动设置。通过这一系列的压缩及优化存储,可以进一步降低系统I/O消耗,提高查询效率。

 

Vertica核心技术——K-Safety容错机制

Vertica通过维护数据的多个冗余备份来实现高可用性。Vertica保证冗余数据被散列存储在不同的结点上,Vertica将其称之为K级系数安全性(K-safety),K指的是Vertica能够容忍的可能发生故障数据结点的个数。系统会按K的取值在各节点上设置数据备份。

上图是一个典型的5节点集群,设置K=1,其中节点1存储有节点2的备份projection,节点2存储有节点3的备份projection,以此类推。在此设置下,任一节点宕机都不会影响数据库的正常运转。

通过合理的集群配置,可以在同时宕机数超过K值的情况下依然正常运转,理论上最大宕机节点数可以达到集群节点总数的一半。例如上图中,当节点2已经宕机,此时若节点4或5再发生宕机,依然不会发生数据丢失;但此时若节点1或3发生故障,数据丢失将不可避免。

 

Vertica核心技术——查询优化器

查询优化器通过分析数据库的负载与常用数据分析的计算特性,调整库内数据的存储、压缩、分布方式,从而根据用户需求优化数据库的数据装载或查询性能。

优化流程

  1. 首先根据数据平台常用查询,结合日常数据库监控数据,分析优化需求。

  2. 将优化需求(如样例查询及优化参数)提供给优化器,生成数据库优化脚本。

  3. 检查、部署优化脚本,测试优化效果。

优化关键点:

´ 存储速度优先VS查询速度优先

´ Projection建立数量和建立方式

´ 优化流程是一个循环、往复、不断提升的过程

 

Vertica在分析系统中的定位

´ Vertica数据库并不是用来取代传统的数据库(Oracle、MySQL等)或各类基于Hadoop的数据库系统的,而更多地是互补与整合的关系。

´ 在一个完善的分析系统中,传统的数据库往往是那些规范化的数据来源,比如电信运营商的用户帐单、工参信息等,又或者是互联网行业的用户资料、交易信息等。

´ Hadoop系统则是那些非结构化的数据来源,如电信运营商各网元、接口采集的数据,又或者是互联网的各类XML、JSON文件。此外,Hadoop的Map/Reduce机制还非常适于各类海量数据的规整和缩减。

´ 在此基础上,Vertica分析型数据库利用其快速、灵活、易用的特性,完成各类数据的关联、汇总等分析工作。

´ 在顶层采用SAS、R等拥有成熟的回归、聚合模型工具做深度数据挖掘和数据可视化。

 

Vertica应用案例1:某电信运营商数据分析系统

电信运营商大数据分析的典型应用包括:

  • 终端用户行为分析

  • 详单分析

  • 网络优化/性能分析

  • 信令分析

  • 用户粘性和ARPU分析

……

 

Vertica应用案例2:Twitter用户分析系统

Twitter大数据分析典型应用:

  • 客户行为分析

  • 交易分析

  • 社交关系分析

  • 个人需求识别和信息推送

……

What is More

´ 一个优秀的数据分析平台起始于高质量的数据归整与数据引入。

´ 将Vertica与SAS、IBM SPSS Modeler等分析工具对接,利用这些工具搭建模型,实现更加灵活、深入的数据分析。

´ 利用Vertica提供的C++、Java和R语言接口,编写用户自定义扩展程序(User-DefinedExtensions, Udx),可以满足那些使用SQL无法实现或对性能要求更高的分析需求。

´ 数据平台的搭建,仅仅是大数据分析的第一步,如何从这海量数据中发掘出真正的金矿,有赖我们打破固有思路,积极学习和探索,共同迎接这个大数据的时代!

vertica在电信的应用的更多相关文章

  1. Vertica 数据库知识汇总篇

    Vertica 数据库知识汇总篇(更新中..) 1.Vertica 集群软件部署,各节点硬件性能测试 2.Vertica 创建数据库,创建业务用户测试 3.Vertica 数据库参数调整,资源池分配 ...

  2. Vertica 7.1安装最佳实践(RHEL6.4)

    一.前期准备工作 1.1各节点IP和主机名 1.2上传脚本并设定环境变量 1.3添加信任 1.4前期准备检查并调整 二.Vertica安装 三.集群性能评估 一.前期准备工作: 1.1各节点IP和主机 ...

  3. Vertica 安装,建库,新建测试用户并授予权限,建表,入库

    测试环境:RHEL 6.4 + Vertica 6.1.3-7 需求:搭建Vertica数据库3节点的测试环境,建立测试用户,建表,测试数据入库. 1.各节点关闭防火墙和SELinux,配置主机名,I ...

  4. Troubleshooting:重新安装Vertica建库后无法启动

    环境:RHEL6.5 + Vertica7.1.0-3 1.故障现象 2.重装集群 3.再次定位 4.解决问题 5.总结 1.故障现象 故障现象:Vertica集群安装成功,但是创建数据库后一直无法u ...

  5. Vertica 分区表设计

    Vertica数据库中的表只是一个逻辑概念. 实际存储在磁盘上的是projection. 当创建一张表,没有创建projection时,那么插入数据的时候会自动创建一个默认的projection.如果 ...

  6. Vertica 分区表设计(续)

    在上篇Vertica 分区表设计中,已经提过了Vertica的分区表创建和分区删除,但举例上并不系统, 本篇文章将系统的对分区表设计及后续的删除分区进行讲解. 概述:Vertica分区表(天和月)创建 ...

  7. Vertica 业务用户指定资源池加载数据

    之前在"Vertica 安装,建库,新建测试用户并授予权限,建表,入库"这篇文章也简单介绍过入库部分的内容. 但之前测试用例若用于生产环境有明显的局限性: 1.是用dbadmin管 ...

  8. Vertica 导出数据测试用例

    需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...

  9. Vertica增加一个数据存储的目录

    Vertica增加一个数据存储的目录 操作语法为: ADD_LOCATION ( 'path' , [ 'node' , 'usage', 'location_label' ] ) 各节点添加目录,并 ...

随机推荐

  1. 文本提交带单引号引起mysql报错

    mysql插入数据时报错:MySQL server version for the right syntax to use near 'Microsoft YaHei', 经过反复测试,原因是提交的编 ...

  2. const用法小结

    const与指针 char *const p --> char *(const p) --> 指针常量 char const *p --> char (const *p) --> ...

  3. Linux入门学习,开启端口号

    之前买了一个阿里云Centos 7服务器,默认开启22端口和80端口,想开启其他端口号如何做 1.开启端口号 [root@localhost ~]# /sbin/iptables -I INPUT - ...

  4. jQuery与Ajax的应用——《锋利的jQuery》(第2版)读书笔记3

    第6章 jQuery与Ajax的应用 jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第2层是load().$.get()和$.post()方法,第3层是$ ...

  5. 安装一些包管理的记录 win10

    我大php的composer 国内镜像包http://pkg.phpcomposer.com/  还是全局的爽些: omposer config -g repo.packagist composer ...

  6. ABP的语言切换

    在ABP官网http://www.aspnetboilerplate.com/创建一个Multi Page Web Application项目并打开,在Web项目下可以找到一个Controllers/ ...

  7. 5. Singleton(单例)

    意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 适用性: 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时. 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代 ...

  8. nginx编译模块详解

    –prefix= 指向安装目录–sbin-path 指向(执行)程序文件(nginx)–conf-path= 指向配置文件(nginx.conf)–error-log-path= 指向错误日志目录–p ...

  9. C、C++、Java、go的语法区别

    详细C++.Java比较:http://www.cnblogs.com/stephen-liu74/archive/2011/07/27/2118660.html 一.C.C++的区别 在很大程度上, ...

  10. DOM查找元素

    1. 查找元素5种: 1. 按id查找1个元素对象: var elem=document.getElementById("id值"); 何时使用:1. 元素必须有id 2. 精确查 ...