什么是 Apache 卡桑德拉 | 卡桑德拉简介

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

1. NoSQL 数据库简介

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

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

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

“不是 SQL” 或者 “不仅仅是 SQL” 是可以用来描述 NoSQL 的两个术语。

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

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

2. NoSQL 数据库的类型

2.1. 键值存储

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

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

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

他们非常擅长扩展处理高速、非事务性数据的应用程序。 亚马逊动态数据库, 雷迪斯里亚克 是流行的键值存储数据库。

2.2. 文档

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

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

MongoDB亚马逊文档数据库 是 example 用于文档数据库。

2.3. 面向列

面向列的数据库专注于列,每列单独处理。 在跨数据库中的特定列进行查询时,面向列的数据库在存储数据和跨稀疏数据行查询方面效率更高。 它们在 SUM、COUNT、AVG、MIN 等聚合查询上表现良好,因为数据在列中很容易获得。

HBase, Apache 卡桑德拉 是面向列的数据库的最佳示例。

面向列的数据库

2.4. 基于图

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

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

Neo4J, 无限图, 东方数据库 是流行的图形数据库。

图数据库

3. 什么是 Apache 卡桑德拉?

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

它管理大量数据的能力使其对大型企业特别有用。 结果,包括苹果在内的几家大公司, Instagram, Facebook优步, Twitter、思科、eBay 和 Netflix,现在正在使用。

卡桑德拉的亮点:

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

4. Cassandra 架构

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

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

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

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

五、Cassandra的关键组件

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

6. 在哪里使用 Cassandra?

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

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

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

7. Cassandra 的理想用例

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

8. 总结

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

阅读下一篇:

  • 如何在 CentOS 中安装 Cassandra

资源: