Module 01 · Introducing NoSQL
Column-Based NoSQL Databases列式 NoSQL 数据库概述
欢迎观看关于列式 NoSQL 数据库的介绍视频。观看本视频后,您将能够描述列式 NoSQL 数据库的架构、技术优势与劣势,并列出适合的业务应用场景。
列式数据库架构
列式数据库源于 Google 创建的架构——Bigtable。这些数据库通常被称为 Bigtable 克隆、列式数据库或 宽列数据库。正如名称所示,列式数据库注重列和列组在存储和访问数据时的作用。
列族(Column Families)
- 列族由多个行组成。每一行都有一个唯一的键或标识符,并且属于一个或多个列。
- 列通常根据访问模式被组合成列族,因为它们经常一起被访问。
- 在同一个列族中的行不需要共享相同的列。行可以共享所有列、部分列或没有共享任何列,并且列可以只出现在某些行中。
列式数据库的优势与应用场景
优势
- 稀疏数据的存储:当处理大量稀疏数据时,列式数据库表现尤为出色。与行式数据库相比,列式数据库可以更好地压缩数据,从而节省存储空间。
- 水平扩展性:列式数据库延续了水平扩展的趋势,可以通过多个节点集群来处理数据。
应用场景
- 企业日志记录:
- 每个应用程序可以写入自己的一组列,每行的键格式化为便于按应用和时间戳快速查找。
- 计数器应用:
- 某些列式数据库(如 Cassandra)提供特殊的列类型来进行简单的计数操作,适用于需要增量计数的应用场景。
- 时间到期(TTL)数据:
- 列可以设置过期时间,这使得列式数据库适用于存储具有过期时间的数据,如试用期或广告时长等。
列式数据库的局限性
- 传统的事务支持不足:如果您需要传统的 ACID 事务,列式数据库可能不适合。读取和写入操作仅在行级别保证原子性。
- 查询模式变化:在开发初期,如果查询模式发生变化,可能需要对列式数据库的设计进行多次修改,这可能会导致开发进度变慢,并且增加成本。

数据仓库与列式数据库
在典型的数据仓库场景中,需要从多个来源收集并存储数据,包括科研数据、土地和业务资产、用户行为和电子商务数据等。
- 行式数据库:将记录按行存储,每一行数据存放在连续的块中。
- 列式数据库:将记录按列存储,所有同一列的数据存放在连续的列中。
这种存储方式使得列式数据库在访问速度上更具优势,能提升组织的商业智能和报告能力。
电子商务数据存储示例
在电子商务应用中,使用列式数据库存储数据时,可以按以下方式存储每一列的数据:
- 列示例:产品 ID、总价等。
- 查询示例:若需要查询产品 ID 为 P101 的所有订单的总价格,查询时只需要读取产品 ID 列和总价列的数据。
列式数据库在数据分析中的应用
OLAP(联机分析处理)
列式数据库在财务分析、OLAP 中广泛应用。OLAP 主要用于分析不常变化的大量记录。
例如,您可以分析过去一年支付的保险费,并构建保险费用的直方图。
物联网(IoT)数据分析
物联网设备(如汽车、卡车、智能手机等)持续捕捉并传输数据,传统数据库可能无法高效存储和访问这些数据。列式数据库帮助解决这一问题,提供高效的存储和快速的数据访问,尤其适用于实时和近实时分析。
物联网数据实例:商用卡车
商用卡车通过物联网设备报告多种数据,如车速、地理位置、刹车数据、车辆健康信息、司机影像等。这些数据传回公司进行定制报告分析,包括:
- 司机表现分析
- 车队需求分析
- 物流预测
- 合规性报告(包括股东和税务报告)
流行的列式 NoSQL 数据库实现
一些流行的列式 NoSQL 数据库实现包括:
- Cassandra
- HBase
- Hypertable
- Accumulo
总结
通过本视频,您了解了:
- 列式 NoSQL 数据库源自 Google 的 Bigtable 存储系统。
- 数据以列或列组的形式进行存储,列族由多个具有唯一键的行组成。
- 主要应用场景包括:数据仓库、数据分析、商业智能以及物联网事件日志记录。