列式数据库是以列相关存储架构进行数据存储的
数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理。
这个简单的表包括员工代码(EmpId), 姓名字段(Lastname and Firstname)及工资(Salary).
这个表存储在电脑的内存(RAM)和存储(硬盘)中。虽然内存和硬盘在机制上不同,电脑的操作系统是以同样的方式存储的。数据库必须把这个二维表存储在一系列一维的“字节”中,由操作系统写到内存或硬盘中。
这只是一个简化的说法。此外,partitioning,
索引, 缓存机制, 视图,联机分析多维数据集, 以及诸如预写式日志和multiversion concurrency control此类的事务系统都在现实的应用环境中发挥作用。一般来说, 侧重于
联机事务处理(OLTP) 的系统更适用行数据库, 而侧重于
联机分析处理的系统就必须在行数据库和列数据库中找到适当得平衡。
因为硬盘寻址时间相较于计算机上其他部件的运行速度来说不是一般的慢,所以常用相同工作负载下的硬盘访问性能来比较行数据库和列数据库。通常,顺序读取数据要比随机访问更快。而且,硬盘寻址时间的提升比起CPU速度的进步要慢得多 (参看
摩尔定律),在使用硬盘作为存储媒介的系统上这种情况很可能还会持续一段时间。下面简单罗列了一些选择行数据库还是列数据库的权衡依据。当然,如果能够把数据全放在内存中,那么使用
内存数据库性能会更好。
在实际应用中,面向行的数据存储架构更适用于
OLTP-频繁交互事务的场景。面向列的数据存储架构更适用于
OLAP-(如
数据仓库)这样在海量数据((可能达到
terabyte规模))中进行有限复杂查询的场景。
列式数据库的代表包括:
SAP HANA、Amazon Redshift、
Sybase IQ、ParAccel、Sand/DNA Analytics、
Vertica、Aster Data Systems和
greenplum等。