HUABASE :基于列存储的关系型数据库系统
摘要 HUABASE 是基于列存储的关系型数据库系统。列存储技术的特点是数据查询效率高,读磁盘少,存储空间少,是构建数据仓库的理想架构。 HUABASE 实现了多种数据压缩机制、查询优化和稀疏索引技术,在支持高效率的商业智能方面具有良好的发展前景,可以帮助企业轻松做出明智的业务经营决策。
HUABASE 主页: http://www.huabase.cn/
HUABASE: A Column-Oriented Relational Database System
Abstract HUABASE is a column-oriented relational database system. The three main features of column-oriented database are better query efficiency, fewer disk accesses and less storage. Column-oriented database is an ideal architecture for data warehouse natively. HUABASE implements multiple data compression mechanisms, query optimization and sparse indexing technologies. By supporting business intelligence efficiently, HUABASE can help the enterprises to make wise business decision.
HUABASE Home Page: http://www.huabase.cn/
随着互联网技术的发展,企业及政府信息化的不断深入,应用的复杂性日益增强。这些需求推动着数据密集型应用向海量和智能的方向发展。同时,数据仓库和在线分析等应用迫切需要实时高效的数据处理技术。传统的基于行存储的数据库技术已经出现了技术瓶颈。如何在快速执行复杂查询的同时,还能缩小存储空间和节约成本是目前数据库技术研究的热点问题。本文介绍一种新型数据库技术及其验证系统——基于列存储的关系型数据库 HUABASE 。
列存储技术的特点是数据查询效率高,读磁盘少,存储空间少,是构建数据仓库的理想架构。列数据库的应用价值来自于它对复杂查询的快速响应以及数据压缩所带来的存储优势,使其在商业智能方面具有良好的发展前景。根据 Gartner 2010 年 1 月关于数据仓库的分析报告,列数据库与传统关系型数据库相比,在数据分析方面表现出卓越的性能,因此,列数据库技术的研究和产品开发在学术界和工业界受到广泛关注。
列数据库的学术价值在于其独特的数据存储理念,以及基于列的存储为企业决策分析、数据仓库、商业智能这些应用领域所带来的效率和空间上的方便和优势。目前开源列数据库有 C-Store , rasdaman , MonetDB 等,商用列数据库有 Sybase IQ 、 Vertica Analytic Database 、 ParAccel Analytic Database 、 EXASOL EXASolution 等。近 5 年来在国际一流的数据库会议 VLDB 、 SIGMOD 、 ICDE 上有关这个领域的优秀论文也频频出现。
1 HUABASE 简介
关系型数据库是一个用以存储及处理结构化数据的软件系统,其数据分为两个层次:一是逻辑数据,它是由表、记录等组成;另一是物理数据,它代表数据库怎样存储逻辑数据。不同的关系数据库系统或许有相同的逻辑数据,但它们通常有不同的物理数据。实现数据库物理数据的方法有两种:一是基于行存储,另一是基于列存储。对于基于行存储的实现方法,它把逻辑数据的整条记录存储到数据块中,为了提高查询速度,要为某些列建立 B+ 树等类型的索引;对于基于列存储的实现方法,逻辑数据中的记录不直接按条映射到物理数据中,而是把记录按列分开,把所有记录相同列的值存在一起,同时提供连接数据能够把记录相应的列值重新组合起来形成记录。
如图 1 所示, HUABASE 将记录进行分段存储,表段内数据按列排序存储,表段中列值的个数有一个上限,连接数据存储记录号与数据块序列号。数据插入时,尽管列值的位置会发生变化,只要它仍然在同一个数据块中,连接数据就不需要更新,除非由于数据块溢出导致列数据被移到新的数据块中,数据块的序列号才发生变化。连接数据可以用来把相应的列值连接起来形成一条记录。
图 1 逻辑数据与物理数据示例
HUABASE 非常适合于商业智能分析领域,如图 2 所示, HUABASE 用户可以利用 ETL 工具从多种数据源抽取元数据然后存放到 HUABASE 数据库中, HUABASE 可以存放和管理海量的数据并用于智能分析,比如:一个数据库最大可以支持 232 个表空间;一个表空间最大可以支持 256 个数据文件;一个数据文件最大可支持 32TB 数据。
图 2 HUABASE 概况
2 HUABASE 体系架构
HUABASE 数据库管理系统是一个三层架构:核心层、接口层和应用层。核心层完全基于 Java 实现,包括支持列存储的所有关键组件。接口层支持 ODBC 和 JDBC 标准接口。应用层支持各种数据库应用开发, HUABASE 本身提供了多种基于 JDBC 接口的数据库管理工具。如图 3 所示。
图 3 HUABASE 体系架构
1) 核心层组件:
列式存储 :支持记录的按列存储、实现了高效的数据压缩和稀疏索引技术,可以极大地提高存储效率和查询性能。
缓存策略 :支持多种数据块缓冲机制,比如持久缓冲区、时钟缓冲区、 FIFO 缓冲区、 LRU 缓冲区。
加锁机制 :数据块锁是为了保持数据块的操作一致性,支持排它锁、共享锁、增量排它锁、增量共享锁。
查询处理 :支持 SQL-92 和部分 SQL-99 标准、应用多种查询优化策略,在复杂查询上具有比基于行存储的数据库系统更优越的性能。
安全管理 :支持数据的加密存储和传送,保护用户数据的隐私和安全。
事务处理 :支持事务的原子性、一致性、隔离性和持久性。
日志管理 :支持日志的回滚和重做,确保系统数据的完整性。
全文搜索 :支持对大文本列的全文搜索方式,可以有效提高大文本的查询效率。
2) 接口层组件:
ODBC :支持 ODBC 标准接口,应用程序可以通过该接口访问 HUABASE 数据库。
JDBC :支持 JDBC 标准接口, Java 应用程序可以通过该接口访问 HUABASE 数据库。
3) 应用层组件:
应用程序 :可以基于 ODBC 和 JDBC 接口开发列数据库应用。
数据库管理器 :基于 Web 的数据库管理器,可以从 Web 浏览器登录,方便远程管理 HUABASE 数据库。根据用户角色,可以管理当前数据库的模式、表或用户等。
命令编辑器 :基于图形界面的命令编辑工具,可以方便地提交各种查询和操作命令。
命令行工具 :命令行工具支持交互模式、命令模式和批处理模式。适合管理员做各种管理和维护操作。
3 HUABASE 关键技术
HUABASE 支持关系型数据库的核心功能,在列存储方面的关键技术包含以下三个方面:
1) 数据压缩技术
基于行存储的关系型数据库一般只能做到对数据块的压缩。而基于列存储的 HUABASE ,采用了多种数据压缩机制,比如同一列中相同的值只存放一份;对于整型数据,只存放相邻列值的差。这些机制可以实现更高的数据压缩效率。列数据库按列存储并在列上进行压缩的技术,在构建大型数据仓库的时候可以表现出突出的优势,节省大量的存储空间。
2) 查询优化技术
基于行存储的关系型数据库查询时,不能只读取部分列,所有列都必须读取到内存中然后再去掉不需要的列,这样就导致很多不必要的硬盘输入输出。而基于列存储的 HUABASE ,由于它把记录的列分开存储,查询引擎可以按需读取列,从而减少了硬盘输入输出,提高了数据库的查询性能。
3) 稀疏索引技术
基于行存储的关系型数据库一般都是稠密索引,不仅增加存储空间,也增加了数据更新时的代价。因此,为表的所有列都建立索引就不太现实,如果对一个未加索引的列进行查询,系统不得不做全表扫描,导致数据库的性能严重恶化。而基于列存储的 HUABASE 所建立的索引是稀疏索引,列值已被排序存储,索引只建立到数据块级,当查询通过索引定位到数据块后,就可以使用二分法查找,这样索引的存储空间很小,维护代价很低,可以给所有需要索引的列都建立索引,从而显著提高了数据库的查询性能。
https://blog.csdn.net/huabase/article/details/5686981
HUABASE :基于列存储的关系型数据库系统的更多相关文章
- SQL Server 2014聚集列存储索引
转发请注明引用和原文博客(http://www.cnblogs.com/wenBlog) 简介 之前已经写过两篇介绍列存储索引的文章,但是只有非聚集列存储索引,今天再来简单介绍一下聚集的列存储索引,也 ...
- 应运而生! 双11当天处理数据5PB—HiStore助力打造全球最大列存储数据库
阿里巴巴电商业务中历史数据存储与查询相关业务, 大量采用基于列存储技术的HiStore数据库,双11当天HiStore引擎处理数据记录超过6万亿条.原始存储数据量超过5PB.从单日数据处理量上看,该系 ...
- Vertica: 基于DBMS架构的列存储数据仓库
介绍 Vertica(属于HP公司),是一个基于DBMS架构的数据库系统,适合读密集的分析型数据库应用,比方数据仓库,白皮书中全名称为VerticaAnalytic Database.从命名中也可以看 ...
- HBase与列存储
传统的行存储和(HBase)列存储的区别 1.为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的 ...
- ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间
一.doc_values介绍 doc values是一个我们再三重复的重要话题了,你是否意识到一些东西呢? 搜索时,我们需要一个“词”到“文档”列表的映射 排序时,我们需要一个“文档”到“词“列表的映 ...
- amazon redshift 分析型数据库特点——本质还是列存储
Amazon Redshift 是一种快速且完全托管的 PB 级数据仓库,使您可以使用现有的商业智能工具经济高效地轻松分析您的所有数据.从最低 0.25 USD 每小时 (不承担任何义务) 直到每年每 ...
- SQL Server 列存储索引强化
SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...
- Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】
翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column ...
- Google Supersonic列存储查询库的介绍、安装、测试
查询引擎库介绍: http://www.infoq.com/cn/news/2012/10/Google-Supersonic/ Supersonic是一个面向列存储数据库的查询引擎库,它提供了一组数 ...
随机推荐
- gitlab入门
目录 git下载 注册ssh git客户端及图形化工具tortoisegit下载: git客户端安装: https://git-scm.com/download (git客户端 此种需要命令行执行 ...
- BBS-基于forms组件和ajax实现注册功能
http://www.cnblogs.com/yuanchenqi/articles/7638956.html 1.设计注册页面 views.py from django import forms c ...
- JS中,如何判断一个被转换的数是否是NaN
var x="abc"; //isNaN()函数判断是否是NaN if (isNaN(parseInt(x))) { alert("非数字"); } else{ ...
- native.js 判断是否安装某app
例:是否安装微信 function isWeixin() { var UIApplication = plus.ios.importClass("UIApplication"); ...
- jquery接触初级----jquery 选择器
css 选择器主要有:元素选择器,ID选择器,类选择器,群组选择器,后代选择器,普通配符选择器等,通过css选择,我们可以很方便的给元素添加样式,使网页看起来更加好看 jquery 选择器也有相似的功 ...
- docker之数据卷管理
转自:https://www.cnblogs.com/jsonhc/p/7777811.html docker之数据卷的备份和还原 1.现在利用镜像创建一个nginx的服务容器,并挂载一个数据卷 [r ...
- ADO 动态链接数据库
ADO(ActiveX Data Objects)是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统. 下面内容转载自:http://www.vckbase.com/document/ ...
- Haskell语言学习笔记(84)Concurrent
Control.Concurrent Prelude> import Control.Concurrent Prelude Control.Concurrent> Control.Conc ...
- Redis进阶实践之二如何在Linux系统上安装安装Redis(转载)(2)
Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了“如何安装VMware Pro虚拟机”和在虚拟机上安装Linux操作系统.那是第一步,有了Linux操作系统,我 ...
- 转: jquery.qrcode.js生成二维码插件&转成图片格式
原文地址: https://blog.csdn.net/u011127019/article/details/51226104 1.qrcode其实是通过使用jQuery实现图形渲染,画图,支持can ...