在DBMS中,有两种组织数据的方式–一种是 面向行的数据库 ,另一种是 面向列的数据库。 两者的基本区别是,面向行的数据库按行存储数据表,而面向列的数据库按列存储数据表。
阅读本文,了解更多关于面向行的数据库和面向列的数据库,以及它们之间有什么不同。
什么是面向行的数据库
面向 行的数据库是一种传统的数据库,如Oracle、MySQL等。它按行存储数据表,存储表的常用方法是将每行数据序列化。基于行的系统被设计为有效地返回整个行,或记录的数据。在面向行的数据库中,行是按顺序存储的,这意味着行将紧随其后。
面向行的数据库的缺点是它的速度较慢,因此需要较长的时间。这是因为面向行的数据库需要多次磁盘读取。面向行的数据库最适合于OLTP(在线事务处理)。
什么是列式数据库
面向 列的数据库 是一种 “无SQL “数据库,如HBase和Cassandra。面向列的数据库不支持 “传统 “的事务性二级索引。维护 “倒置索引 “是用户的责任。
在基于列的数据库中,数据是以列的形式存储和检索的。因此,由于列中的唯一值,它们允许高压缩率。基于列的数据库在执行操作时更有效率。这些类型的数据库最适合用于OLAP(在线分析处理)。
面向行的数据库和面向列的数据库之间的区别
下表强调了面向行的数据库和面向列的数据库之间的所有重要区别 –
关键 | 面向行的数据库 | 面向列的数据库 |
---|---|---|
基础 | 它按行存储数据表。 | 它按列存储数据表。 |
数据访问 | 数据访问是按行进行的 | 数据访问是按列进行的 |
存储 | 由于基于行的系统的数据压缩能力降低,存储大小的优化受到限制。 | 基于列的系统提供了更好的存储尺寸优化能力。 |
性能方面 | 它比面向列的数据库需要更长的时间,因为它需要多次磁盘读取。 | 它比面向行的数据库快 |
使用案例 | 最适合OLTP | 最适合OLAP |
结论
这两种类型的数据库之间最显著的区别是,在面向行的数据库中,数据是逐行访问的;而在面向列的数据库中,数据是逐列访问的。
你应该根据你的应用程序的具体需求和最经常执行的查询类型来选择一个面向行的数据库或面向列的数据库。面向行的数据库为事务处理而优化,而面向列的数据库最适合分析和报告。