数据库应用系统中的数据以二维表的方式直接存储目标数据。
一个表由行和列组成的,行数据代表具体的生活中的实体数据,列经常被称作是域,也就是行的某个特性,从实体对象本身出发就是对象的属性。
表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。
扩展资料
行存储和列存储的应用场景
行存储的适用场景:
(1)适合随机的增、删、改、查 *** 作;
(2)需要在行中选取所有属性的查询 *** 作;
(3)需要频繁插入或更新的 *** 作,其 *** 作与索引和行的大小更为相关。
列存储的适用场景:
(1)查询过程中,可针对各列的运算并发执行,在内存中聚合完整记录集,降低查询响应时间;
(2)在数据中高效查找数据,无需维护索引(任何列都能作为索引),查询过程中能够尽量减少无关IO,避免全表扫描;
(3)因为各列独立存储,且数据类型已知,可以针对该列的数据类型、数据量大小等因素动态选择压缩算法,以提高物理存储利用率;如果某一行的某一列没有数据,在列存储时,就可以不存储该列的值,这将比行式存储更节省空间。
列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表。1)行存储的写入是一次完成。如果这种写入建立在 *** 作系统的文件系统上,可以保证写入过程的成功或者失败,数据的完整性因此可以确定。2)列存储由于需要把一行记录拆分成单列保存,写入次数明显比行存储多(意味着磁头调度次数多,而磁头调度是需要时间的,一般在1ms~10ms),再加上磁头需要在盘片上移动和定位花费的时间,实际时间消耗会更大。所以,行存储在写入上占有很大的优势。
3)还有数据修改,这实际也是一次写入过程。不同的是,数据修改是对磁盘上的记录做删除标记。行存储是在指定位置写入一次,列存储是将磁盘定位到多个列上分别写入,这个过程仍是行存储的列数倍。所以,数据修改也是以行存储占优。
列存储不同于传统的关系型数据库,其数据在表中是按行存储的,列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量,一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。传统的(Oracle)行存储和(Hbase)列存储的区别
这里写图片描a
1、数据是按行存储的
2、没有索引的查询使用大量I/O
3、建立索引和物化视图需要花费大量时间和资源
4、面对查询的需求,数据库必须被大量膨胀才能满足性能需求
这里写图片描述
1、数据按列存储–每一列单独存放
2、数据即是索引
3、只访问查询涉及的列–大量降低系统IO
4、每一列由一个线索来处理–查询的并发处理
5、数据类型一致,数据特征相似–高效压缩
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)