010-87748857
CASE
新闻

HiStore 介绍

HiStore是阿里中间件团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列式存储,是低存 储成本,低维护成本,海量数据OLAP存储引擎;有效的解决了海量数据存储的成本问题,以及在百亿数据场景下支持实时高效的多维度自 由组合的检索。

 

关键字: 列式,分布式,高压缩比;

 

一.HiStore

HiStore 专门针对OLAP应用程序进行设计和优化,在常规X86服务器上,HiStore可以在百亿数据场景下进行高性能,多维度自由组合 的adhoc查询. 相对比常规事务引擎,其查询速度提升了数倍甚至数十倍。此外HiStore完全兼容MySQL通讯协议和SQL语法,可以支持客户端 无代码修改进行迁移,并且无缝配合现有的MySQL客户端工具以及中间件数据层产品.

 

HiStore经过多个版本的迭代和深度定制化开发.现在HiStore各项指标(查询性能,数据装载效率)均超过原始版本,此外HiStore还增加了批量 数据Load,并发查询以及数据块复制等自研技术. 在我们团队所测试过的同类产品中(InfiniDB,Infobright等),HiStore的单机性能处于领先地位。

 

1.1 Histore 技术特性

1.2 Histore适用场景

1.3 外部同类产品

 

二.HiStore 技术架构

2.1 HiStore 引擎

HiStore 采用基于知识网格分析和SMP优化的列式存储引擎. 该引擎为海量数据背景下的分析型(OLAP)应用而设计, 通过列式数据存储,知 识网格过滤,高效数据压缩和并行查询等特性, 为应用提供低成本和高性能的数据查询支持.

2.2 基于列(Column)的数据存储

在描述HiStore的列存技术之前,可以先看看常见的行(row)式存储引擎的实现方式. 以MySQL为例,常见的事务引擎(InnoDB,TokuDB等)均采用基于ROW的存储模型:

总结一下行(row)式存储引擎的适用场景:

但是针对海量数据背景的OLAP应用,随着数据量不断增长,行(row)式存储会出现诸如查询性能,存储效率和数据库维护等一系列问题:

如上述所,在海量数据背景下,行(row)式存储引擎无法从引擎自身解决查询性能和维护成本等问题.


与行(row)式存储不同,HiStore引擎将数据按照关系列(Column)进行存储,每列占用单独的物理存储空间,查询时在内存中高效组装各列的值,最 终形成关系记录集:

数据按照列(Column)进行存储,每个列所对应的单元值(Cell)是最小的逻辑存储单元.

当数据记录按行式存储,应用程序必须读取每一条完整记录;当数据记录按列式存储,数据库只返回与部门相关的值。在分析应用程序中(不可 预测的ad-hoc查询),列式存储的方法可以显著减少IO消耗和降低查询响应时间,特别是大数据量查询和用户创建复杂即席查询的情况下:

最后提一下列(Column)存的不适用场景:

2.3 数据组织结构与知识网格

为了达到合理利用IO资源,且高效,快速查找所需数据的目标. HiStore引擎将数据组织为两个层次:

物理数据块(DN)

数据块是存储的最低层,列中每份大小固定的单元组成一个数据块。数据块比列更小,具有更好的压缩比率;又比磁盘默认存储单元单元更
大,具有更好的查询性能。

知识网格(KG)

HiStore引擎利用知识网格架构来对查询优化器,计划执行和压缩算法等提供支持. 知识网格是HiStore 引擎进行快速数据查询的关键.


在查询计划分析与构建过程中,通过知识网格可以消除或大量减少需要解压的数据块,降低IO消耗,提高查询响应时间和网络利用率。 对于大部分统计/聚合性查询, HiStore引擎往往只需要使用知识网格就能返回查询结果(而不需要读取数据), 这种情况下在1s时间内就可 以返回查询结果。

 

HiStore 知识网格由数据元信息节点(MD)和知识节点(KN)组成:

通过知识网格, HiStore 引擎无需通过传统数据索引、数据分区、预测、手动调优或特定架构等方式就能高速处理复杂的分析查询。

2.3 计算引擎

知识网格优化器

对于来自客户端的查询请求,首先由查询优化器进行基于知识网格的优化,产生执行计划后再交给执行引擎去处理.

 

 

执行引擎

2.4 高效数据压缩

HiStore 基于列数据类型和特定领域优化的高效压缩技术能提高查询速度,降低数据库磁盘容量。HiStore 引擎通过优化后的高效压缩处 理,可以在没有特意数据库调优和管理情况下确保性能需求;随着数据量的增长,可以最小化所需的存储和服务器容量,从而节约成本,达到具有 高性能、低成本的解决方案。

2.5 其他特性

预处理数据导入

针对异构数据源背景海量数据背景, HiStore还提供了外部预处理导入支持,方便客户端应用在不增加HiStore 负载的情况下告诉导入外部 数据.

近似查询(Approximate Query)

近视值查询依据存储在知识网格中每个数据节点的概率样本值, 进一步过滤不会对最终查询结果造成重点影响的数据节点(DN). 对于某些 对数据精确性要求不高的场景,近视值查询可以利用统计信息去除大量不影响最终结果的数据节点,显著提升查询性能.
常见的近似查询场景: 海量数据下查询 top 10 记录.

2.6 HiStore 架构总结

 

三.HiStore未来规划

3.1 HiStore 管控平台

HiStore引擎可以提供强大的数据查询和低成本的数据存储. 但是其自身的安装和管理需要一定的学习曲线. 为了更有效的推广HiStore存 储引擎,我们团队也正在开发配套的HiStore引擎管控平台. 通过HiStore管控平台,用户可以直接部署HiStore引擎到指定目标机器上. 目前这一 块正在和UDP团队合作,其最终目标为打造成为一款集HiStore Engine自动部署,实例管控,运行时监控,数据备份/恢复以及自动化运维的一体化产品.

3.2 HiStore 高可用集群

HiStore 本身与常见关系数据库的高可用架构一样(例如MySQL),为了保证强一致性,都会将数据更新在Master上执行,然后通过复制技术 将副本导入到Slave节点.


但是与MySQL标准的binlog 复制不同. HiStore引擎中存储的不是原始数据,而是压缩后的数据块(DN).此时如果使用binlog的方式来进行复制, 会导致网络上产生大量数据流量.


为了解决这一点, HiStore目前正计划实现基于压缩后DP块的高效数据复制支持.相对于binlog复制,该技术可以大大降低网络传输所需的数据 量.


此外, HiStore也会可选地支持透明的读写分离,方便客户端在不修改的代码的情况下,扩展查询性能.


最后提一下, HiStore后续的集群技术将会朝Share-nothing的方向发展(自动处理数据分片与事务一致性),这部分的架构设计目前也正在团 队中进行技术讨论与原型验证.

3.3 HiStore Roadmap

此外我们团队也正在讨论和验证HiStore引擎/集群与中间件团队其他产品结合的可能.

 

四.相关参考

术语解释:

OLAP

: OLAP is an acronym for Online Analytical Processing. OLAP performs multidimensional analysis of business data and provides the capability for complex calculations, trend analysis, and sophisticated data modeling.

OLTP

: Online transaction processing, or OLTP, is a class of information systems that facilitate and manage transaction-oriented applications, typically for data entry and retrieval transaction processing.

DN

: Data Node: 数据节点. 数据块是存储的最低层,列中每份大小固定的单元组成一个数据块。

MD

: Meta data: 数据元信息节点(MD)与数据节点(DN)之间保持1:1关系,元信息节点中包含了其对应数据块中数据的相关信息.

KN

: Knowledge Node: 知识节点(KN)除了基础元数据外,还包括数据特征以及更深度的数据统信息. 知识节点在数据查询/装载过程中会动态计算.

KG

: Knowledge Grid: 知识网格是HiStore 引擎进行快速数据查询的关键. 在查询计划分析与构建过程中,通过知识网格可以消除或大量减少需要 解压的数据块,降低IO消耗,提高查询响应时间和网络利用率。

 

来源:阿里中间件团队博客

原文:http://jm.taobao.org/2016/06/30/histore-internal/

免费获取网站建设方案及报价

没有找到您想要的信息?可以直接拨打 7*12 小时一对一资深技术支持  热线电话:010-87748857

*请认真填写需求信息,我们会在5分钟内与您取得联系。

首页
电话
咨询
地图