列式数据库

-{zh-cn:列式数据库; zh-tw:直欄式儲存}-（）是以-{zh-cn:列; zh-tw:欄}-相关存储架构进行数据存储的数据库，主要适合于批量数据处理和即时查询。相对应的是-{zh-cn:行式数据库; zh-tw:列式儲存}-，数据以-{zh-cn:行; zh-tw:列}-相关的存储体系架构进行空间分配，主要适合于小批量的数据处理，常用于联机事务型数据处理。

描述
数据库以-{zh-cn:行; zh-tw:列}-、-{zh-cn:列; zh-tw:欄}-的二维表的形式存储数据，但是却以一维字符串的方式存储，如下表：

RowId EmpId Lastname Firstname Salary00110 Smith Joe 4000000212 Jones Mary 5000000311 Johnson Cathy 4400000422JonesBob55000

这个简单的表包括员工编号(EmpId)、姓名字段(Lastname and Firstname)及工资(Salary). 

这个表存储在电脑的内存(RAM)和存储(硬盘)中。虽然内存和硬盘在机制上不同，电脑的操作系统是以同样的方式存储的。数据库必须把这个二维表存储在一系列一维的“字节”中，由操作系统写到内存或硬盘中。

-{zh-cn:列式数据库; zh-tw:直欄式儲存}-把一-{zh-cn:列; zh-tw:欄}-中的数据值串在一起存储起来，然后再存储下一-{zh-cn:列; zh-tw:欄}-的数据，以此类推。
 10:001,12:002,11:003,22:004;
 Smith:001,Jones:002,Johnson:003,Jones:004;
 Joe:001,Mary:002,Cathy:003,Bob:004;
 40000:001,50000:002,44000:003,55000:004; 
-{zh-cn:行式数据库; zh-tw:列式儲存}-把一-{zh-cn:行; zh-tw:列}-中的数据值串在一起存储起来，然后再存储下一-{zh-cn:行; zh-tw:列}-的数据，以此类推。
 001:10,Smith,Joe,40000;
 002:12,Jones,Mary,50000;
 003:11,Johnson,Cathy,44000;
 004:22,Jones,Bob,55000;
这只是一个简化的说法。此外，、索引、缓存机制、视图、，以及诸如预写式日志和多版本并发控制此类的事务系统，都在现实的应用环境中发挥作用。一般来说，侧重于联机事务处理 (OLTP) 的系统更适用-{zh-cn:行式数据库; zh-tw:列式儲存}-，而侧重于联机分析处理的系统就必须在-{zh-cn:行式数据库; zh-tw:列式儲存}-和-{zh-cn:列式数据库; zh-tw:直欄式儲存}-中找到适当得平衡。

特点
因为硬盘寻址时间相较于计算机上其他部件的运行速度来说不是一般的慢，所以常用相同工作负载下的硬盘访问性能来比较-{zh-cn:行式数据库; zh-tw:列式儲存}-和-{zh-cn:列式数据库; zh-tw:直欄式儲存}-。通常，顺序读取数据要比随机访问更快The Star Schema Benchmark and Augmented Fact Table Indexing , Pat & Betty O’Neil, Xuedong Chen and Stephen Revilak, TPC Technology Conference 8/24/09。而且，硬盘寻址时间的提升比起CPU速度的进步要慢得多 (参看 摩尔定律)，在使用硬盘作为存储媒介的系统上这种情况很可能还会持续一段时间。下面简单罗列了一些选择-{zh-cn:行式数据库; zh-tw:列式儲存}-还是-{zh-cn:列式数据库; zh-tw:直欄式儲存}-的权衡依据。当然，如果能够把数据全放在内存中，那么使用内存数据库性能会更好。

 在只需要根据某几-{zh-cn:列; zh-tw:行}-来聚合数据的时候，按-{zh-cn:列; zh-tw:行}-的数据组织方式更有效。因为这样只需要读取一部分数据，要比读取全部数据更快。
 当只需要修改某一-{zh-cn:列; zh-tw:行}-值的时候，按-{zh-cn:列; zh-tw:行}-的数据组织方式更有效。因为可以直接找到某-{zh-cn:列; zh-tw:行}-数据并修改，而与-{zh-cn:行; zh-tw:列}-中的其他-{zh-cn:列; zh-tw:行}-无关。
 当需要某-{zh-cn:行; zh-tw:列}-的多-{zh-cn:列; zh-tw:行}-数据的时候，按-{zh-cn:行; zh-tw:列}-的数据组织方式更有效。当-{zh-cn:行; zh-tw:列}-中数据不是太多的情况下一次硬盘寻址就可以获得该-{zh-cn:行; zh-tw:列}-的所有数据。
 在新增-{zh-cn:行; zh-tw:列}-数据的时候，如果各-{zh-cn:列; zh-tw:行}-都有值，那么按-{zh-cn:行; zh-tw:列}-的数据组织方式会更有效，因为只需要一次硬盘寻址就可以写入整-{zh-cn:行; zh-tw:列}-的全部数据。

在实际应用中，面向-{zh-cn:行; zh-tw:列}-的数据存储架构，更适用于OLTP-频繁交互事务的场景。面向-{zh-cn:列; zh-tw:行}-的数据存储架构，更适用于OLAP-(如数据仓库)这样在海量数据（可能达到 terabyte规模）中进行有限复杂查询的场景。

实现

自由和开源软件
+数据库名字实现语言注释Java开始于2011年，用于低延迟大规模的摄取和查询。可从获得的支持和扩展。C++发行于2016年，用以使Apache Hadoop生态系统完全。Java开源于2015年，用于实时低延迟分析。可从StarTree获得支持和扩展。C++ClickHouseC++发行于2016年，用于分析实时更新的数据。JavaDuckDBC++可嵌入的、进程内、面向列的SQL OLAP RDBMS。DatabendRust可伸缩和可靠的Serverless Data Warehouse。InfluxDBGo数据库C可从VMware获得支持和扩展。C++MariaDB ColumnStoreC & C++曾经的。C++C开源（自从2004年）列式关系DBMS先驱。PostgreSQL cstore fdw vopsCcstore_fdw使用格式。StarRocks Java & C++开源、统一的分析平台，用于批量和实时分析。可从CelerData获得支持和扩展。

平台即服务（PaaS）
Amazon Redshift
 Microsoft Azure SQL Data Warehouse
 Google BigQuery
 Oracle Autonomous Datawarehouse Cloud Service

MariaDB SkySQL
 Avalanche
 Accelerator
CelerData

专有软件
专有的-{zh-cn:列式数据库; zh-tw:直欄式儲存}-的代表包括：kdb+、SAP HANA、、、等。

参见
 数据仓库




 引用 

Category:数据库
Category:各種類資料庫
Category:数据库管理系统