Coursera 笔记

Module 03 · Introducing Apache Cassandra: An Open-Source NoSQL Database

Apache Cassandra OverviewApache Cassandra 概述

Coursera ↗

欢迎观看关于 Apache Cassandra 的介绍视频。通过本视频,您将能够:

  • 描述 Apache Cassandra 是什么,
  • 解释 Apache Cassandra 在 NoSQL 空间中的作用,
  • 解释与 MongoDB 的区别,
  • 描述 Apache Cassandra 的主要能力,
  • 识别 Apache Cassandra 的最佳使用场景,
  • 描述适合使用 Apache Cassandra 的常见用例。

 Apache Cassandra 简介

Apache Cassandra 是一个开源、分布式、去中心化、弹性可扩展、高可用、容错、可调一致的数据库。它的设计基于 Amazon Dynamo 的分布式架构,数据模型基于 Google Bigtable。最初由 Facebook 开发,现在已经广泛应用于一些全球知名的网站,如 Netflix、Spotify 和 Uber。


 Cassandra 与 MongoDB 的对比

在 NoSQL 数据库中,不同的数据库解决了不同的使用场景。比如,MongoDB 是一个文档型数据库,适用于需要高一致性和复杂查询的场景。

而 Cassandra 则侧重于那些需要快速存储大量数据并快速读取的应用场景,特别是在数据写入远多于读取的情况下。它非常适合处理高写入量的应用,如记录在线商店交易、用户访问信息或像 Netflix 这样的大型服务的用户档案数据。

Cassandra 与 MongoDB 的主要区别:

  • 架构:MongoDB 使用主从架构,而 Cassandra 使用对等架构,所有节点都是平等的。
  • 一致性与可用性:Cassandra 优先保证 高可用性,即使在发生故障时也能继续提供服务。
  • 适用场景:MongoDB 更适合需要复杂查询、聚合和事务支持的应用,而 Cassandra 更适合处理大量的写入操作和要求高可用性的场景。

 Cassandra 的主要能力

  • 分布式和去中心化:Cassandra 的节点是对等的,这意味着每个节点都可以处理请求,不存在单点故障。
  • 高可用性与可调一致性:Cassandra 支持 可调一致性,允许您根据需要在 可用性 和 一致性 之间进行权衡。
  • 容错性:Cassandra 能够自动处理节点失败,保证数据的冗余和系统的持续运行。
  • 极快的写入性能:Cassandra 特别适合需要快速写入的大规模应用,保持高性能。
  • 水平扩展性:Cassandra 可以在不停止服务的情况下,快速增加节点来扩展系统。
  • 多数据中心部署支持:适用于需要全球分布式访问的应用,支持跨多个数据中心的部署。

 Cassandra 的最佳使用场景

Cassandra 适用的情况:

  • 写密集型应用:当应用程序的写入次数远高于读取次数时,Cassandra 是一个理想的选择。例如,记录网站点击、用户登录尝试、交易日志等。
  • 数据追加性强:如果您的数据更新较少,更多的是追加数据(如时间序列数据),Cassandra 也非常适合。
  • 基于主键(分区键)的数据访问:通过分区键对数据进行分片,Cassandra 能够高效地进行数据访问。
  • 不需要复杂的联接或聚合查询:Cassandra 适用于不需要复杂联接(JOIN)或聚合(aggregation)的场景。

典型的应用场景:

  • 全球可用的在线服务:如 Netflix、Spotify 和 Uber 等,需要高可用、快速扩展的数据库支持。
  • 电子商务网站:记录交易数据和用户行为数据,进行实时分析。
  • 时间序列应用:如气象数据、传感器数据等,按时间顺序追加数据。

 Cassandra 的局限性

尽管 Cassandra 在高可用性和写入性能方面表现优秀,但它并不适合所有场景。特别是在以下方面,您可能需要考虑其他数据库系统:

  • 不支持 JOIN 操作:Cassandra 不支持复杂的联接操作。
  • 有限的聚合支持:Cassandra 对聚合操作的支持有限。
  • 有限的事务支持:虽然 Cassandra 的写入操作是原子性的,但它不支持传统的关系型数据库事务。

 总结

通过本视频,您学习了:

  • Apache Cassandra 是一个分布式、去中心化、高可用、容错且可调一致的数据库,广泛应用于大规模写入密集型场景。
  • Cassandra 适用于需要 高可用性、高写入性能、全球分布式部署 的应用,如 Netflix、Spotify 和 Uber等。
  • 与 MongoDB 相比,Cassandra 更侧重于高可用性和快速写入,但不支持复杂的查询和事务操作,因此并非关系型数据库的直接替代品。