Coursera 笔记

Module 01 · Introducing NoSQL

Column-Based NoSQL Databases列式 NoSQL 数据库概述

Coursera ↗

欢迎观看关于列式 NoSQL 数据库的介绍视频。观看本视频后,您将能够描述列式 NoSQL 数据库的架构、技术优势与劣势,并列出适合的业务应用场景。


 列式数据库架构

列式数据库源于 Google 创建的架构——Bigtable。这些数据库通常被称为 Bigtable 克隆、列式数据库或 宽列数据库。正如名称所示,列式数据库注重列和列组在存储和访问数据时的作用。

列族(Column Families)

  • 列族由多个行组成。每一行都有一个唯一的键或标识符,并且属于一个或多个列。
  • 列通常根据访问模式被组合成列族,因为它们经常一起被访问。
  • 在同一个列族中的行不需要共享相同的列。行可以共享所有列、部分列或没有共享任何列,并且列可以只出现在某些行中。

 列式数据库的优势与应用场景

优势

  • 稀疏数据的存储:当处理大量稀疏数据时,列式数据库表现尤为出色。与行式数据库相比,列式数据库可以更好地压缩数据,从而节省存储空间。
  • 水平扩展性:列式数据库延续了水平扩展的趋势,可以通过多个节点集群来处理数据。

应用场景

  1. 企业日志记录:
    • 每个应用程序可以写入自己的一组列,每行的键格式化为便于按应用和时间戳快速查找。
  2. 计数器应用:
    • 某些列式数据库(如 Cassandra)提供特殊的列类型来进行简单的计数操作,适用于需要增量计数的应用场景。
  3. 时间到期(TTL)数据:
    • 列可以设置过期时间,这使得列式数据库适用于存储具有过期时间的数据,如试用期或广告时长等。

 列式数据库的局限性

  • 传统的事务支持不足:如果您需要传统的 ACID 事务,列式数据库可能不适合。读取和写入操作仅在行级别保证原子性。
  • 查询模式变化:在开发初期,如果查询模式发生变化,可能需要对列式数据库的设计进行多次修改,这可能会导致开发进度变慢,并且增加成本。

 数据仓库与列式数据库

在典型的数据仓库场景中,需要从多个来源收集并存储数据,包括科研数据、土地和业务资产、用户行为和电子商务数据等。

  • 行式数据库:将记录按行存储,每一行数据存放在连续的块中。
  • 列式数据库:将记录按列存储,所有同一列的数据存放在连续的列中。
    这种存储方式使得列式数据库在访问速度上更具优势,能提升组织的商业智能和报告能力。

 电子商务数据存储示例

在电子商务应用中,使用列式数据库存储数据时,可以按以下方式存储每一列的数据:

  • 列示例:产品 ID、总价等。
  • 查询示例:若需要查询产品 ID 为 P101 的所有订单的总价格,查询时只需要读取产品 ID 列和总价列的数据。

 列式数据库在数据分析中的应用

OLAP(联机分析处理)

列式数据库在财务分析、OLAP 中广泛应用。OLAP 主要用于分析不常变化的大量记录。
例如,您可以分析过去一年支付的保险费,并构建保险费用的直方图。

物联网(IoT)数据分析

物联网设备(如汽车、卡车、智能手机等)持续捕捉并传输数据,传统数据库可能无法高效存储和访问这些数据。列式数据库帮助解决这一问题,提供高效的存储和快速的数据访问,尤其适用于实时和近实时分析。


 物联网数据实例:商用卡车

商用卡车通过物联网设备报告多种数据,如车速、地理位置、刹车数据、车辆健康信息、司机影像等。这些数据传回公司进行定制报告分析,包括:

  • 司机表现分析
  • 车队需求分析
  • 物流预测
  • 合规性报告(包括股东和税务报告)

 流行的列式 NoSQL 数据库实现

一些流行的列式 NoSQL 数据库实现包括:

  • Cassandra
  • HBase
  • Hypertable
  • Accumulo

 总结

通过本视频,您了解了:

  • 列式 NoSQL 数据库源自 Google 的 Bigtable 存储系统。
  • 数据以列或列组的形式进行存储,列族由多个具有唯一键的行组成。
  • 主要应用场景包括:数据仓库、数据分析、商业智能以及物联网事件日志记录。