摘要   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 :基于列存储的关系型数据库系统相关推荐

  1. 什么是列存储?一文秒懂

    导读:在讲<Apache Druid 底层存储设计>时就说过要讲一讲列式存储.现在来了,通过本文你可以了解到行存储模式.列存储模式.它们的优缺点以及列存储模式的优化等知识. 今日格言:不要 ...

  2. 行存储(Row-Based)和列存储(Column-Based)

    目前大数据存储有两种方案可供选择:行存储(Row-Based)和列存储(Column-Based). Hadoop的HBase采用列存储,MongoDB是文档型的行存储,Lexst是二进制型的行存储. ...

  3. 数据库-行存储及列存储区别

    参考:https://blog.csdn.net/Xingxinxinxin/article/details/80939277 目录 概述 什么是列存储? 在数据写入上的对比 在数据读取上的对比 优缺 ...

  4. 传统的行存储和(HBase)列存储的区别

    1 为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的.简单来说两者的区别就是如何组织表(翻译不 ...

  5. SQL Server 2014聚集列存储索引

    转发请注明引用和原文博客(http://www.cnblogs.com/wenBlog) 简介 之前已经写过两篇介绍列存储索引的文章,但是只有非聚集列存储索引,今天再来简单介绍一下聚集的列存储索引,也 ...

  6. parquet格式_【存储】基于列存之Parquet格式

    " Parquet 是一种支持嵌套结构的列式存储格式,非常适用于 OLAP 场景,按列存储和扫描." 01 - 概述 数据存储是信息技术对您每天所需的数据内容(从应用到网络协议,从 ...

  7. 行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)

    1.为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的.简单来说两者的区别就是如何组织表: Ø  ...

  8. 行存储和列存储小介绍

    .定义 1.1定义 Sybase在2004年左右就推出了列存储的Sybase IQ数据库系统,主要用于在线分析.数据挖掘等查询密集型应用.列存储,缩写为DSM,相对于NSM(N-ary storage ...

  9. 列存储、行存储之间的关系和比较

    目录(?)[-] 一定义 定义 优点 场合 发展史 二sysbase iq 列存储介绍 列存储 数据压缩 索引 Low Fast 索引 Bit-Wise索引 High Group索引 Word 索引 ...

最新文章

  1. Java中创建String的两种方式差异
  2. 用python画爱心动图_编写Python爬虫抓取暴走漫画上gif图片的实例分享
  3. iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案...
  4. 基于朴素贝叶斯的垃圾邮件分类-着重理解拉普拉斯变换
  5. 小s结尾与大S结尾的汇编语言差异
  6. object-c中归档的用法
  7. C++中string与int\double等互转
  8. 端午安康 | 6月14日 星期一 | B站首个破亿视频诞生;荣耀50系列预约人数超百万;贝索斯太空船票拍出2800万美元...
  9. 8086架构/流水线及其优化
  10. 使用Toolbar + DrawerLayout快速实现高大上菜单侧滑
  11. super方法 调用父类的方法
  12. 2.74-写出具有如下原型的函数的代码:
  13. 《DSP using MATLAB》Problem 7.16
  14. WebRTC禁用NACK
  15. 安卓10(Android10\API29)保存图片到相册DCIM/Camera
  16. 为什么要有ID发号器、原理是什么以及如何实现?
  17. 宣布发布 .NET 7 Release Candidate 1
  18. python支持复数类型以下什么说法是错误的_python测试开发面试题1
  19. windows上注册控件/反注册控件
  20. 忘掉 Snowflake,感受一下性能高出587倍的全局唯一ID生成算法

热门文章

  1. python特效电子相册_用Python和Conky做个电子相册,美化你的Linux桌面
  2. c语言 字符串 正序再倒序_python字符串
  3. linux 如何查看fb中分辨率_西门子S71200,如何在FB块中使用操作定时器?
  4. 解析身份证_你需要知道的与身份证相关的7个函数,让你的工作效率快速提升!...
  5. 人工学院2卡顿_浙大宁波理工学院就业率怎么样 | 就业情况 | 前景好的专业
  6. html5技术英文论文参考文献,英文论文的参考文献范例(精选8篇)
  7. session登录状态保持html,Flask使用Session和上下文处理器保持登录状态
  8. SpringSecurity SecurityContextHolderSecurityContext
  9. werkzeug SharedDataMiddleware
  10. shell 执行脚本