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

​译者 | 布加迪

审校 | 孙淑娟

说到为具体应用选择数据库,有很多不同的选项。经常讨论的话题似乎是选择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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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