2025年23个最佳Cassandra面试问题及答案

此处为应届生和有经验的候选人准备的Cassandra面试问题及答案,助您找到理想工作。

面向应届生的Cassandra面试问题

1) 解释一下什么是Cassandra?

Cassandra 是一个在 Facebook 开发的开源数据存储系统,用于收件箱搜索,旨在存储和管理跨商品服务器的大量数据。它可以作为

  • 实时数据存储系统,用于在线应用程序
  • 也可以作为读取密集型数据库,用于 商业智能 系统

👉 免费PDF下载:Cassandra面试问题及答案


2) Cassandra 的用途是什么?为什么要使用 Cassandra?

Cassandra 被设计用于处理跨多个节点的、没有单点故障的大数据工作负载。使用 Cassandra 的各种因素包括:

  • 它容错且一致
  • 从千兆字节到拍字节的可扩展性
  • 它是一个面向列的数据库
  • 无单点故障
  • 无需单独的缓存层
  • 灵活的模式设计
  • 它具有灵活的数据存储、轻松的数据分发和快速的写入
  • 它支持 ACID(原子性、一致性、隔离性、持久性)属性
  • 支持多数据中心和云部署
  • 数据压缩

3) 解释一下 Cassandra 中的复合类型是什么?

在 Cassandra 中,复合类型允许使用不同类型数据的连接来定义键或列名。您可以使用两种类型的复合类型:

  • 行键
  • 列名

4) Cassandra 如何存储数据?

  • 所有数据都以字节形式存储
  • 当您指定验证器时,Cassandra 会确保这些字节按照要求进行编码
  • 然后,比较器会根据特定编码的顺序来排序列
  • 虽然复合类型只是具有特定编码的字节数组,但对于每个组件,它会存储一个两字节长度,然后是字节编码的组件,最后是一个终止位。

5) 提及 Cassandra 数据模型的主要组成部分是什么?

Cassandra 数据模型的主要组成部分是:

  • 集群
  • 键空间
  • 列和列族
Cassandra Interview Questions
Cassandra 面试问题

6) 解释一下 Cassandra 中的列族是什么?

Cassandra 中,列族是指一组行的集合。


7) 解释一下 Cassandra 中的集群是什么?

集群是键空间的容器。Cassandra 数据库分布在多个协同工作的机器上。集群是最外层的容器,它以环状格式组织节点并将数据分配给它们。这些节点具有副本,在数据处理失败时负责接管。


8) 列出 Cassandra 的其他组件?

Cassandra 架构的其他组件包括:

  • 节点
  • 数据中心
  • 集群
  • 提交日志
  • 内存表
  • SSTable
  • 布隆过滤器
Cassandra Architecture Diagram
Cassandra 架构图

9) 解释一下 Cassandra 中的键空间是什么?

在 Cassandra 中,键空间是一个决定数据在节点上复制的命名空间。一个集群每个节点只有一个键空间。


10) 在 Cassandra 中创建键空间的语法是什么?

在 Cassandra 中创建键空间的语法是:

CREATE KEYSPACE <identifier> WITH <properties>


面向有经验者的 Cassandra 面试问题

现在我们来看面向有经验者的进阶级 Cassandra 面试问题。

11) 提及 Cassandra 列中存储的值是什么?

在 Cassandra 列中,基本有三个值:

  • 列名
  • 时间戳

12) 提及何时可以使用 Alter keyspace?

ALTER KEYSPACE 可用于更改键空间的属性,例如副本数量和 durable_write。


13) 解释一下 Cassandra-Cqlsh 是什么?

Cassandra-Cqlsh 是一种查询语言,它允许用户与数据库进行通信。使用 Cassandra cqlsh,您可以执行以下操作:

  • 定义模式
  • 插入数据,以及
  • 执行查询

14) 提及 shell 命令“Capture”和“Consistency”确定什么?

Cassandra 中有各种 Cqlsh shell 命令。命令“Capture”将命令的输出捕获并添加到文件中,而命令“Consistency”显示当前的一致性级别或设置新的一致性级别。


15) 在 Cassandra 中创建表时,什么属性是必须的?

创建表时,主键是必需的,它由表的一个或多个列组成。


16) 提及添加列时需要注意什么?

添加列时,您需要注意:

  • 列名不能与现有列名冲突
  • 表未定义 compact storage 选项

17) 提及 Cassandra-CQL 集合是什么?

Cassandra CQL 集合帮助您在一个变量中存储多个值。在 Cassandra 中,您可以通过以下方式使用 CQL 集合:

  • List (列表):当需要维护数据顺序,并且一个值需要存储多次时使用(包含唯一元素的列表)。
  • SET (集合):用于存储一组元素并按排序顺序返回(包含重复元素的集合)。
  • MAP (映射):一种用于存储键值对元素的数据类型。

18) 解释 Cassandra 如何写入数据?

Cassandra 数据写入涉及三个组件:

  • 提交日志写入
  • 内存表写入
  • SStable 写入

Cassandra 首先将数据写入提交日志,然后写入内存表(memtable),最后写入 SStable。


19) 解释一下 Cassandra 中的 Memtable 是什么?

  • Cassandra 将数据写入一个称为 Memtable 的内存结构中。
  • 它是一个内存缓存,内容以键/列的形式存储。
  • Memtable 中的数据按键排序。
  • 每个 ColumnFamily 都有一个单独的 Memtable,它从键中检索列数据。

20) 解释一下 SStable 由什么组成?

SStable 主要由 2 个文件组成:

  • 索引文件(布隆过滤器和键偏移对)
  • 数据文件(实际列数据)

21) 解释一下 Cassandra 中的 Bloom Filter 用于什么?

布隆过滤器(Bloom Filter)是一种空间效率高的数据结构,用于测试一个元素是否是集合的成员。换句话说,它用于确定 SSTable 是否包含特定行的数据。在 Cassandra 中,它用于在执行 KEY LOOKUP 时节省 I/O。


22) 解释 Cassandra 如何将更改的数据写入 commitlog?

  • Cassandra 将更改的数据连接到 commitlog。
  • Commitlog 作为数据崩溃恢复日志。
  • 在将更改的数据连接到 commitlog 之前,写入操作永远不会被视为成功。

一旦 commitlog 被刷新到文件,数据就不会丢失。


23) 解释 Cassandra 如何删除数据?

SSTables 是不可变的,无法从 SSTables 中删除行。当需要删除一行时,Cassandra 会将该列的值分配给一个称为 Tombstone 的特殊值。读取数据时,Tombstone 值被视为已删除。

这些面试问题也将有助于您的口试