欢迎投稿

今日深度:

数据库表按行存储和按列存储比较,

数据库表按行存储和按列存储比较,


行列存储比较

将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的。行存储法是将各行放入连续的物理位置,这很像传统的记录和文件系统。然后由数据库引擎根据每个查询提取需要的列。列存储法是将数据按照列存储到数据库中,与行存储类似;

1. 基于行的储存

基于行的存储是将数据组织成多个行,这样就能在一个操作中找到所有的列。这种做法的缺点是必须每次处理一整行,而不是只处理自己需要的列。不过,这样在处理相同实体的两个或多个列的查询时能够取得更快的速度,而且可以提高更新、插入和删除操作的速度。
基于行的存储系统可以进行并行处理,并且不需要模仿顺序文件系统,尽管有许多产品仍然在这样做。这种做法的缺点是,一旦确定了这种体系结构,那么使用的代码就不仅仅是“老式代码”,甚至比像“家族的诅咒”那样的代码还要难懂。
Teradata是一种非常流行的数据仓库产品,它使用了散列处理,并且从一开始就具有并行处理机制。最开始的时候它是一种数据库机,不过当前版本采用的是在标准硬件上建立虚拟机的方式。它从设计上就总是采用并行处理方式。各结点根据实际需要彼此交谈,而不是由一个中央点来控制。万维网就是采用了这种工作方式,因此对程序员而言,这种模型应该不会太陌生。(结点)数量将数据值尽可能均匀地分散到硬件存储设备中。如果结点数改变了,那么系统会重新分布这些数据。由于采用逻辑地址代替了人们在传统索引模型中使用的物理地址,因此用户根本不会看到这些过程。故障结点会对其数据进行重新定位,并将自身从系统中删除。新结点则会从现有结点将数据传送到其本地存储区,刀片服务器上使用了一种建立在内存中的模型。这里没有索引;数据都是尽可能多地保存在主存储器中,并在这里进行扫描。

2. 基于列的存储

基于列的访问存在的缺点是载入速度通常比较慢,因为源数据在外部来源中是以行或者记录的形式表示的。这样做的优点是针对某个列中的值进行简单查询的速度非常快,需要的内部存储资源最少。这表示对某个列中特定值的搜索可以直接进入该列的存储区,而不需要扫描整行的数据。这样也使得数据压缩变得更容易,因为一个列中的数据通常具有相同的数据类型。这种体系结构在处理数据仓库使用的海量数据时没有问题,但不适合需要进行大量以行的方式进行访问和更新操作的联机事物处理。就是这种数据库之一。在由一万亿行组成的测试数据集中,输入数据共很明显,这是一种适合数据仓库的技术。这种技术虽然在压缩和快速访问方面有优势,但也存在插入操作复杂的缺点。
引擎也采用了一种基于列的处理方式,但是它还对值进行标记,以获得更高的速度和更好的数据压缩效果。它们使用一种专用的位向量方案,可以在压缩的状态下进行搜索。这种技术非常适合档案处理,但是必须将标记恢复成其原始数据值才能显示,以及在表达式内使用。不过,在压缩方面鼓励将一个数据列分解成更多更详细的列。

www.htsjk.Com true http://www.htsjk.com/teradata/36641.html NewsArticle 数据库表按行存储和按列存储比较, 行列存储比较 将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的。行存储法是将各行放入连续的物理位置,这很像传统的记录和文...
相关文章
    暂无相关文章
评论暂时关闭