什么是 Apache Cassandra?

在本文中,我们将在高层次上了解 NoSQL 概念,因为它的家族在大数据市场中起着至关重要的作用,我们还将详细讨论什么是 Cassandra,它是市场领先的 NoSQL DB、Cassandra 架构、关键组件及其用例。

1. NoSQL 数据库介绍

术语“NoSQL”是指一种不同于典型关系数据库管理系统 (RDBMS) 的数据库方法,要了解NoSQL,首先要了解SQL,它是关系数据库使用的一种查询语言。

模式用于组织和检索关系数据库中的数据,另一方面,NoSQL 数据库不依赖于这些结构,而是使用更灵活的数据模型。

NoSQL 数据库已被主流组织采用,因为 RDBMS 逐渐无法满足下一代数据密集型应用程序的性能、可扩展性和灵活性要求。

Not SQL”或“not only SQL”是两个可用于描述 NoSQL 的术语。

非结构化数据的增长速度比结构化数据快得多,并且不适合 RDBMS 关系结构,因此 NoSQL 对于存储非结构化数据特别有用。

用户和会话数据;聊天、消息传递和日志数据;时间序列数据,例如 IoT 和设备数据;视频和照片等大项目都是非结构化数据的例子。

2. NoSQL 数据库的类型

2.1. 键值存储

这通常被认为是 NoSQL 数据库的最基本形式,这种无模式数据模型被安排为键值对字典,每个项目都有一个键和一个值。

它经常用于缓存和存储用户会话数据,如购物车。但是,当您需要一次提取大量记录时,这不是最佳选择。

为了提供可扩展性和可用性,数据在整个集群中进行分区和复制,因此,键值存储很少支持事务。

他们非常擅长扩展处理高速、非事务性数据的应用程序。Amazon DynamoDB、Redis和Riak是流行的键值存储数据库。

什么是 Apache Cassandra?

2.2. 文档

文档数据库通过将文档分组到集合中,使键值数据库概念更进一步,它们允许对文档中的任何属性进行查询,并支持嵌套的键值对。

数据在应用程序代码中主要表示为对象或类似 JSON 的文档,因为它对开发人员来说是一种高效且直观的数据范式。

MongoDB和Amazon DocumentDB是文档数据库的示例。

什么是 Apache Cassandra?

2.3. 面向列

面向列的数据库侧重于列,每列单独寻址,当跨数据库中的特定列进行查询时,面向列的数据库在存储数据和跨行稀疏数据查询方面效率更高。它们在诸如 SUM、COUNT、AVG、MIN 之类的聚合查询上表现良好,因为数据在列中很容易获得。

HBase、Apache Cassandra是面向列的数据库的最佳示例。

什么是 Apache Cassandra?

2.4. 基于图

图数据库跟踪实体及其连接,实体表示为节点,而连接/关系表示为边。

边在节点之间建立连接,为每个节点和边分配唯一标识符。图数据库本质上是多关系的。

Neo4J , Infinite Graph , OrientDB是流行的图数据库。

什么是 Apache Cassandra?

3. 什么是 Apache Cassandra?

Apache Cassandra 是一个开源、面向列的分布式数据库管理系统,可以处理跨多个数据中心和云的大量数据。

它管理大量数据的能力使其对大型企业特别有用。因此,包括 Apple、Instagram、Facebook、Uber、Twitter、Cisco、eBay 和 Netflix 在内的几家大公司现在都在使用它。

Cassandra的亮点:

  • 开源
  • 极具可扩展性
  • 高可用性
  • 无单点故障
  • 高性能
  • 容错

4. Cassandra 架构

Apache Cassandra 旨在管理多个节点上的大型数据工作负载,没有单点故障。它的设计建立在系统和硬件故障是不可避免的假设之上。

Cassandra 通过在同构节点之间部署对等分布式系统并跨集群分发数据来解决故障问题。

Cassandra 的架构是基于环的,它没有任何主节点或单点故障。

  • 使用点对点八卦通信协议,每个节点经常跨集群传输关于自身和其他节点的状态信息。为了保证数据的持久性,每个节点都有一个顺序写入的提交日志,记录写入活动。
  • 数据随后被索引并写入memtable,这是一种模拟回写缓存的内存结构。每当内存结构完成时,数据就会写入SSTables数据文件中的磁盘。
  • 所有写入都在整个集群中自动分区和复制/复制。Cassandra 使用称为压缩的过程定期组合 SSTable,消除使用墓碑标记为删除的过时数据。使用各种修复程序来确保集群中的所有数据保持一致。
  • Cassandra 是一个分区行存储数据库,其中的行被分组到表中,并且需要一个主键。使用 CQL,任何授权用户都可以连接到任何数据中心的任何节点并访问数据。CQL 具有与 SQL 类似的语法,并且可以处理表数据。
  • 集群中的任何节点都可以接收客户端读取或写入请求。当客户端向节点发送请求时,该节点将成为该特定客户端操作的协调器。在客户端应用程序和拥有所请求数据的节点之间,协调器充当代理。根据集群的设计方式,协调器选择环中的哪些节点应该接收请求。
什么是 Apache Cassandra?

5. Cassandra 的关键组件

  • 节点:它是存储数据的服务器,Cassandra 的基础设施就是围绕它构建的。
  • 数据中心:服务器的集合。
  • 集群:一个或多个数据中心组成一个集群。
  • SSTable : Sorted Strings Table 是一个包含已按键排序的键/值字符串对的文件。对于每个 Cassandra 表,SSTables 单独附加并按顺序保存在磁盘上。
  • 提交日志:为了持久性,所有数据最初都写入提交日志。一旦它的所有数据都被排空到 SSTables,它就可以被归档、删除或回收。
  • 内存表:内存驻留数据结构称为内存表。数据将在提交日志后写入内存表。有时,单列族可能有许多内存表。
  • 布隆过滤器:Cassandra 使用布隆过滤器来确定是否有任何 SSTable 可能具有所需的分区键,而无需读取其内容。

6. 在哪里使用 Cassandra?

Cassandra 已被证明在各种应用中都非常有用。

以下是投身 Cassandra 时的一些关键考虑因素:

  • 当应用程序的本质是“写”密集型而与“读”相比时,我们必须更喜欢 Cassandra 。节点之间的数据分发速度快,写入成本低。
  • Cassandra 还适用于跨各种数据中心和云可用区的数据分发。
  • 当与 Apache Spark 和其他工具结合使用时,Cassandra 可以成为实时分析的强大“支柱”。它也以线性方式缩放。因此,如果您希望实时数据增长,Cassandra 无疑是最佳选择。

7. Cassandra 的理想用例

  • 消息传递:由于 Cassandra 可以处理大量数据,因此它是消息传递服务的最佳选择。
  • 传感器应用:Cassandra 适用于处理来自各种传感器设备的高速数据。
  • Ecom 应用程序:许多零售商依靠 Cassandra 来确保可靠的购物车安全和快速的产品目录输入和输出。
  • 推荐引擎:Cassandra 特别适用于消费者分析和推荐,使其成为在线业务和社交网络平台的热门选择。

8. 总结

在本文中,我们已经对 NoSQL 数据库概念和 Cassandra 的基本架构进行了概述。我们将在接下来的文章中介绍 Cassandra 的安装。

THE END
点赞20 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容