列数据库是什么东东?何时应该使用它?

​译者 | 布加迪

审校 | 孙淑娟

说到为具体应用选择数据库,有很多不同的选项。经常讨论的话题似乎是选择SQL数据库还是选择NoSQL数据库,即数据应该存储在关系数据库中,还是存储在键值、文档或图形数据库之类的NoSQL数据库中。

另一种选择是索性使用列数据库。本文介绍为什么有必要做出这种选择,以及列数据库的一些优缺点。

列数据库的定义

顾名思义,列(或列式)数据库将按列组织而不是按行组织的数据存储在磁盘上。以物联网传感器为例,基于行的数据库会如图所示将数据存储在磁盘上:

而列数据库将组织相同的数据,以便每个列值按顺序存储在磁盘上:

列数据库的主要优点是,由于压缩比提高,它可以大大缩减存储数据所需的磁盘空间。此外,列数据库在处理分析型查询时比基于行的传统数据库要快得多。

为什么列数据库适合分析型工作负载?

那么,改变数据的存储格式究竟如何提升性能的呢?与传统数据库相比,有几个因素导致列数据库能够为联机分析处理(LAP)工作负载提供高得多的性能。

第一个原因是压缩比提高。这是由于列数据库能够为每种类型的数据使用最佳压缩算法,因为每列都是相同类型的数据,而不是一行混合类型的数据。这不仅降低了磁盘上的存储成本,还提高了性能,因为需要的磁盘寻道更少,内存可以容纳更多的数据。

列数据库提升性能的另一种方法是实际上在底层存储同一列的多个不同版本,这些版本按不同的顺序进行排序,以便为某些查询加快过滤和选择的速度。

列数据库还可以通过许多其他方法来提升性能。下面是几个例子:

  • 查询数据时进行自适应索引
  • 矢量化处理
  • 列的连接经过优化,变得更有效
  • 列的后期物化

这篇​​论文​​分析了列数据库的性能,作为论文一部分进行的测试的示意图显示了上述优化的结果。基于TPC-H数据仓库基准数据集,列数据库的运行速度比传统的行结构数据库快10倍左右。

该图显示了哪些优化对列数据库的性能影响最大,在此处,后期物化带来的性能提升最大。

列数据库性能方面的取舍

与计算机科学界的几乎所有事情一样,列数据库性能方面也进行了一番取舍。它们针对分析型工作负载进行了优化,本身不适合传统的联机事务处理(OLTP)工作负载,而关系数据库为这种工作负载而设计。

最大的性能牺牲将出现在试图更新特定数据点或写入单个数据点的情况下。就列数据库而言,您希望尽可能批量插入数据。

列数据库还会对读查询有影响,您获取一行中的所有数据,就像使用关系数据库一样。由于必须重新构造每一列才能创建整行,因此性能会受到影响。

列数据库的用例

列数据库非常适合您想要分析大量数据的任何情况。不妨看一下几个常见的用例。

商业智能

列数据库非常适合分析销售数据,因为它们让您可以以各种方式划分信息。这可以帮助您确定可能无法看到的趋势和模式。比如说,可以使用列数据库按位置、品牌或产品类别来比较一段时间不同产品的销售数据。

应用程序性能监控

应用程序性能监控是使用列数据库帮助提高软件可靠性和性能的另一种常见情况。通过跟踪和分析有关应用程序运行状况的数据,您可以在问题导致应用程序崩溃或变慢之前发现问题。这有助于避免停运时间,并确保用户获得最佳体验。如果使用列数据库,您可以存储粒度更细的数据以获得更深入的洞察力,同时因出色的数据压缩而降低成本。

物联网

组织在部署越来越多的联网设备,其中许多设备收集用于分析工作负载的数据。列数据库可用于存储这些数据,以实现实时警报,还可用于生成预测,在许多不同行业提高效率。

专门化列数据库的示例

到目前为止,我们已经大体了解了列数据库及其优点。虽然所有列数据库有相同的特征,可以有效地用作通用数据仓库或数据湖,不过下面介绍如何针对更具体的性能特征对它们进行调优和优化。

InfluxDB IOx

InfluxDB IOx是一款面向InfluxDB的开源列存储引擎,为处理时间序列数据进行了优化。时间序列数据在性能方面带来了独特的挑战:

  • 分析类型的查询,只需要几列数据,比如从传感器获得过去一周的平均温度。
  • 关系类型的查询,用户需要过去5分钟内来自许多不同传感器的所有可用信息。

时间序列数据还往往大批量到达,这需要快速获取能力,以便能够快速索引和查询数据,用于实时监控和警报。此外,许多用户希望能够长期存储这些数据,用于历史分析和预测,又不必担心成本过高。

InfluxDB让用户可以集两者之所长,其办法是管理数据的生命周期,并在热存储和冷存储之间移动数据,历史数据方面获得快速性能,同时通过对未频繁查询的数据使用更便宜的对象存储来降低存储成本。

实现这一目标的关键手段就是构建和贡献Apache Arrow、DataFusion和Parquet之类的项目。Arrow允许数据在内存中以列格式压缩,并在数据库的不同部分之间移动。Parquet用于高效的持久性存储,DataFusion提供高性能查询和SQL支持。其他许多主要项目和厂商也在夯实Parquet和Arrow项目,这些项目还能够与更广泛的大数据生态系统实现集成和兼容。

ApacheDruid

Apache Druid是一款拥有底层列数据结构的实时数据库。Druid适用于典型的数据仓库类型工作负载,比如您期望从列数据库获得的工作负载,但它也优先考虑低延迟响应时间,常常用于交互式用户界面之类的对象。

DuckDB

DuckDB是为OLAP工作负载设计的进程内数据库,实际上旨在成为面向分析的SQLite。DuckDB使用列式矢量化处理,以出色的性能运行SQL查询,可以轻松嵌入到应用程序中。DuckDB的主要卖点是,在大多数OLAP数据库要么云托管要么需要复杂安装过程的环境下,它很容易在本地设置和运行。

选择适合具体任务的工具

说到底,技术决策归结为什么技术对您的用例有意义。说到长期构建应用程序,选择数据库可能是最重要的选择之一,因此有必要了解所有可用的选项,选择最适合的那一种。

如果您在处理主要用于分析的大量数据,那么列数据库可能是个不错的选择。

原文标题:​​What Is a Column Database and When Should You Use One?​​,作者:Charles Mahler​

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/247070.html<

(0)
管理的头像管理
上一篇2025-04-26 22:55
下一篇 2025-04-26 22:56

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注