《NoSQL权威指南》——第2章 列式数据库

第2章 列式数据库

NoSQL权威指南
简介
从打孔卡和磁带的年代开始,文件就是物理设备上连续的字节,访问的方式是从文件开始(打开文件)到文件结束(文件结束的标志为TRUE)。是的,存储可以在磁盘上被分割成数据页,并且各种数据页可以通过指针链连接,但这种模型仍然与前面提到的打孔卡、磁带是相同的。后来,文件被拆分成记录(record,更多物理连续的字节),记录又被拆分成字段(field,仍然是更多物理连续的字节)。

文件被一条记录一条记录地处理(读/取一条,然后下一条)或按照物理存储位置顺序地处理(从头到文件结尾,或遵循一个指针链前进/后退n条记录,等等)。在这种模型中没有任何并行。这里还有一个假设:文件中记录(行)和记录中字段是物理排序的。为了使对这些数据的访问有效,花了大量的时间和资源来对记录进行排序。在磁带上无法做到随机存取,打孔卡上也无法做到。

到了RDBMS和SQL时代,这种文件系统模型仍然占主导地位。Codd博士也陷入了困境。首先,他必须在所有表中拥有一个主键(PRIMARY KEY),主键对应于顺序文件的排列次序;后来,他意识到键就是键,没有必要在RDBMS中让其中一个键成为特殊的字段。但是,SQL已经纳入了已有的技术特性,而且早期的SQL引擎也是建立在既有文件系统上的,所以在这个环节上卡住了。

列式模式采用了一种完全不同的方法。但它是一种可以与SQL和关系模型很好地一起工作的模型。在RDBMS中,表(bable)是一个具有完全相同类型的行(row)的无序集合。一个行是相同类型的无序列(column)的集合,每列保存与既定列相关的标量值。可以通过列名称来访问对应的列,而不是通过存储中的物理位置,当然,也可以使用"SELECT*"等简单方式来访问,以节省要输入。

对应的逻辑模型如下:表是行的集合,有且仅有一种结构;行是一组列的集合;列是取自一个且仅一个已知域的标量值。存储通常会在传统的文件系统中遵循这种模式,用文件表示表,用记录表示行,用字段表示列。但这都与物理存储无关。

在列式模型中,我们设计一个表,并且使用列式数据库特有的数据结构来存储每个列。行和表可以从这些行重新组合生成。看看平常的表的设计,可以看到为什么它们称为垂直存储模型,而不是水平存储模型。

时间: 2024-09-25 09:52:09

《NoSQL权威指南》——第2章 列式数据库的相关文章

《NoSQL权威指南》——2.1 列式数据库的历史

2.1 列式数据库的历史 列式存储以及倒排或不按顺序存储文件的方式并不是最新提出的.TAXIR是1969年为生物学建立的第一个列式数据库存储系统.加拿大统计局于1976年实现了RAPID系统,并将其用于加拿大人口和住房普查数据的处理和检索,以及其他与统计相关的一些应用.RAPID被拿来与世界各地的其他统计机构共享,并在20世纪80年代被广泛使用.直到20世纪90年代,它一直被加拿大统计局使用. 多年来,Sybase IQ是市面上唯一一个可以商用的列式DBMS.然而,当OLAP(online an

《NoSQL权威指南》——第1章 NoSQL和事务处理

第1章 NoSQL和事务处理 NoSQL权威指南简介本章讨论传统的批处理和事务处理.将作业队列读入大型计算机仍然是商业数据处理大量采用的方式.事务处理模型通过使用新的ETL工具来加载数据库,完成批处理作业.我们需要了解批处理和事务处理这两种模型以及它们在新技术中如何使用. 早期的时候,计算机系统只能做单路处理,也就是说计算机只能从头开始按照顺序完成一项作业.后来,有了多处理技术,多个作业可以共享计算机资源,但每个作业仍相互独立并在硬件队列中等着轮到自己执行. 这种方式演化为一种事务模型,并成为S

《NoSQL权威指南》——2.6 数据仓库和列式数据库

2.6 数据仓库和列式数据库 当只涉及少数列时,数据仓库可以将部分工作负载转移到列式数据库,以提高性能.多维数据库(Multidimensional database,MDB)或多维数据集(cube)是支持非常快速访问预先计算的汇总数据的不同的物理结构.当查询请求MDB大部分列的情况下,MDB将执行相当不错. 这些MDB数据库的物理存储是一个规范化的维度模型,通过存储计算结果消除了连接(join)操作.然而,随着列的增加,MDB会变得巨大,并且增长速度会比预期快.MDB中的数据可以使用与列式数据

《NoSQL权威指南》导读

引言 NoSQL权威指南"没有什么会比引入新秩序更难,因为创新者必须要面对那些在旧环境中已经做得很好的对手,以及那些在新环境中做得很好的冷漠者." --Niccolo Machiavelli [1] 在过去的几十年,我已经通过Elsevier/Morgan Kaufmann出版社出版了一系列的书,这些书几乎全部是关于SQL和RDBMS的.而这本书对行业媒体中所谓的大数据.新SQL或NoSQL(我们这些极客非常喜欢流行语)做了一些概述.第一个创造或挖掘了新名词的专栏作家或博主很可能会在维

海量高性能列式数据库HiStore技术架构解析

HiStore 介绍 HiStore是阿里中间件团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列式存储,是低存 储成本,低维护成本,海量数据OLAP存储引擎;有效的解决了海量数据存储的成本问题,以及在百亿数据场景下支持实时高效的多维度自 由组合的检索. 关键字: 列式,分布式,高压缩比; 一.HiStore HiStore 专门针对OLAP应用程序进行设计和优化,在常规X86服务器上,HiStore可以在百亿数据场景下进行高性能,多维度自由组合 的adho

海量高性能列式数据库HiStore介绍

HiStore是阿里中间件技术团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列式存储,是低存储成本,低维护成本,海量数据OLAP存储引擎:有效的解决了海量数据存储的成本问题,以及在百亿数据场景下支持实时高效的多维度自由组合的检索. HiStore的优势 • 存储数据量大:TB级数据大小,百亿条记录.数据量存储主要依赖自己提供的高速数据加载工具(2TB/小时)和高数据压缩比(>10:1): • 高压缩比:平均压缩比>10:1,远高于常规压缩算法,甚至可以达

分布式列式数据库 IndexR 开源啦!

2017新年好!IndexR开源啦! IndexR是一个专注于大数据实时分析的分布式列式数据库,它基于HDFS,能快速分析海量结构化数据,支持实时导入并且查询秒级延迟,特别适合ad-hoc场景下的OLAP查询. IndexR具体实现参考并使用了众多优秀的开源项目,比如 Infobright,Hbase,Druid,Drill 等,与Hadoop生态圈深度结合.目前它主要通过作为Apache Hive和Apache Drill的插件来使用. IndexR已经正式开源.我们希望通过这种方式为开源社区

《Netty 权威指南》样章

声明:本文是<Netty 权威指南>的样章目录,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文. 第 2 章  NIO入门 在本章节,我们分别对JDK的BIO.NIO和JDK1.7最新提供的NIO2.0的使用进行详细说明,通过流程图和代码讲解,让大家体会到随着Java IO类库的不断发展和改进,基于Java的网络编程会变得越来越简单,随着异步IO功能的增强,基于Java NIO开发的网络服务器甚至不逊色于采用C++开发的网络程序. 本章主要内容包括:  传统的同步阻塞式IO编程

《NoSQL权威指南》——2.5 执行一个ALTER语句

2.5 执行一个ALTER语句 ALTER语句能够改变模式(schema)中的结构.在列式模型中,ADD COLUMN和DROP COLUMN是很容易的,创建一个新的列结构或从一个物理存储中删除旧的列结构.在面向行的模型中,每个行必须被压缩或延伸,索引也需要被重组. 因为同样的空间问题,在传统的面向行的数据库中修改数据类型也是很难的.在现实世界中,大部分变更是增加一列的物理存储.数字变得更大,字符串变得更长:只有日期类型似乎是不会膨胀的数据值,自从有了ISO-8601标准,一个固定的范围是000