快讯

电信业海量数据存储中的数据库实践

2011-04-20 12:15:46

    4月16日,2011数据库技术大会在京召开,来自在2011数据库技术大会的商业智能、数据分析专场上来自神舟通用数据技术有限公司技术总监冯柯就迈向100TB:电信业海量数据存储中的数据库实践作为了精彩的主题发言。

    ▲神舟通用数据技术有限公司技术总监冯柯

    给你1秒钟时间,如何在几千亿条话单数据中找到用户想要的数据呢?在分区、并行查询、列存、集群等技术统统粉墨登场仍无法满足响应要求时,数据压缩和索引技术成为了致胜的关键。但先别忙着庆祝,无论是使用传统的B树索引,或通用的压缩算法,都不是问题的正解,在如此大的数据量下,我们需要使用更加专业高效的技术方法。

    ▲2011数据库技术大会的商业智能、数据分析专场

    当前电信行业数据面临的问题:

    数据:

    海量话单文件,500亿行/月,每行70列,450字节

    需要保存2+6(1)月

    数据总量超过200TB

    查询

    基于特定条件(通话起止时间、主被叫号码、局内外交换机号、产品名称等)组合的详单查询

    绝大多数查询只会返回少量的结果

    ▲压缩总体结构

    数据如何压缩?

    压缩的主要目的不是减少空间占用,而是提高查询性能

    CPU平均处理带宽3.6GB/秒(7000万行/秒/核),I/O平均处理带宽300MB/秒

    通过压缩提升I/O带宽,实现CPU与I/O处理均衡,提高查询性能

    ▲列内规则1

    使用通用压缩算法?

    LZMA:CPU处理带宽太低

    压缩比18.9:1,解码速度171MB/秒/核

    (折算后)CPU处理带宽991MB/秒,I/O处理带宽5.7GB/秒

    LZOP:压缩率太低

    压缩比7.2:1,解码速度891Mb/秒/核

    (折算后)CPU处理带宽2.4GB/秒,I/O处理带宽2.2GB/秒

    ▲列内规则2

    我们对压缩的要求

    压缩率不低于15:1

    CPU处理带宽不低于5GB/秒

    挑战2:如何索引?

    查询高选择率的特点适合选择索引

    选择传统索引?

    空间占用大

    维护成本高,对装载速度影响大

    我们对索引的要求

    占用空间对压缩率贡献可忽略不计

    维护开销对装载速度无明显影响

    选择率接近于数据的实际选择率,远快于表扫描

    ▲列内规则4

    传统索引的不足

    维护成本高

    对数据装载速度影响极大

    先建模式下:索引需要同步维护,随机插入影响性能,插入过程中无法引入压缩

    后建模式下:需要大规模的排序,创建成本高

    空间占用大

    以B树为例,<键值,ROWID>二元组,按照键值顺序排列,按列压缩

    ROWID随机性强,难以被压缩,整体空间成本>6字节/

    分片索引

    技术要点:

    将表按照一定行数据分成多个数据包

    为每个压缩包建立其中各列的摘要信息(如最大值、最小值),所有数据包上的属于特定列的全部摘要信息,构成该列的分片索引

    利用摘要信息,来判定对应的数据包中是否包含满足特定的查询条件的行,如确定不存在这样的行,则整个数据包无须被解压

    主要优点:

    索引在每个数据包生成之后即自动生成,无后续维护成本

    摘要信息空间占用小,通常不足被索引的数据的1/10

    采用合适的摘要信息,可以实现接近于传统索引的过滤效果

    KSTORE主要技术特性

    数据压缩

    高压缩比、高性能,对应用完全透明

    支持行列混合存储

    水平分区

    支持多种方式的分区策略,支持二级分区

    支持并行查询和智能化分区过滤

    高可靠性

    支持多粒度备份恢复,提供在线并行备份恢复支持

    支持与Veritas、HACMP、HeartBeat等第三方软件的集成

    行业特色

    分级存储、插值更新、数据自动采集

    其它特性

    支持数据库集群(使用神通CLUSTERWARE)

    物化视图、位图索引、数据在线管理

    演讲嘉宾:冯柯:神舟通用数据技术有限公司技术总监

    冯柯,神舟通用数据技术有限公司技术总监,具有十多年从事国产数据库系统设计与实现的经验,先后作为主要负责人和技术骨干,承担多个国家核高基和863数据库重大专项及产业化项目,发表各类论文、专利和国防报告十余篇。

{{news.title}}

{{news.author}} {{news.time}}