本文介绍了什么

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

´ 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. 字符串截取函数-c语言

    1 #include<stdio.h> 2 #include<stdlib.h> 3 4 char* substring(char* ch,int pos,int length ...

  2. String.prototype运用

    1.去掉字符串前后空格 String.prototype.ltrim = function () { return this.replace(/^\s+/, ""); } Stri ...

  3. 对CPU做下性能测试

    任务管理器里把pi.exe优先级调到“高” I5-4308U  (2.80Ghz)     PI-1M最佳成绩11.719秒(MACBOOK PRO 13inch,插电,电源选择高性能模式) G202 ...

  4. [MOSEK] Stupid things when using mosek

    1.2016-8-14 我希望把一个qp问题的代码从conic constraints改为无外加约束,仅适用variable bounds的线性不等式约束 于是原来的约束代码为 if (r == MS ...

  5. codeforces 446C DZY Loves Fibonacci Numbers 线段树

    假如F[1] = a, F[2] = B, F[n] = F[n - 1] + F[n - 2]. 写成矩阵表示形式可以很快发现F[n] = f[n - 1] * b + f[n - 2] * a. ...

  6. 《笨办法学C》笔记之基础语法

    这篇笔记不怎么系统,只记录自己比较生疏的知识 变量定义 类型 定义 格式化符号 备注 整数 int %d 长整型 long %ld 单精度浮点 float %f 双精度浮点 double %f 字符 ...

  7. .Net Framework运行机制

    首先谈谈.net framework的组成 主要是有两大部分组成:CLR(公共语言运行库)和FCL(Framework类库) CLR的主要功能:和Java虚拟机一样也是一个运行时环境,是一个可由多种编 ...

  8. win10U盘 安装

    转载自网络: 首先,现在WIN10镜像文件 1.地址和具体信息如下: 下载提示:请用迅雷等支持P2P的下载工具下载 Win10 TH2正式版微软官方原版ISO系统镜像下载(2016年4月更新版): W ...

  9. spring知识大全(3)

    4 Spring对持久层的支持 Spring对持久层的支持:① JDBC,② O/R Mapping(Hibernate,TopLink等) 一.Spring对持久层支持采用的策略: 1.Spring ...

  10. Maven插件之maven-archetype-plugin

    Maven插件之maven-archetype-plugin 时间:2014-03-29 学过Maven的人,都知道用MyEclipse的Maven插件生成一个项目骨架,比如maven-archety ...