2025年23个最佳Cassandra面试问题及答案
面向应届生的Cassandra面试问题
1) 解释一下什么是Cassandra?
Cassandra 是一个在 Facebook 开发的开源数据存储系统,用于收件箱搜索,旨在存储和管理跨商品服务器的大量数据。它可以作为
- 实时数据存储系统,用于在线应用程序
- 也可以作为读取密集型数据库,用于 商业智能 系统
2) Cassandra 的用途是什么?为什么要使用 Cassandra?
Cassandra 被设计用于处理跨多个节点的、没有单点故障的大数据工作负载。使用 Cassandra 的各种因素包括:
- 它容错且一致
- 从千兆字节到拍字节的可扩展性
- 它是一个面向列的数据库
- 无单点故障
- 无需单独的缓存层
- 灵活的模式设计
- 它具有灵活的数据存储、轻松的数据分发和快速的写入
- 它支持 ACID(原子性、一致性、隔离性、持久性)属性
- 支持多数据中心和云部署
- 数据压缩
3) 解释一下 Cassandra 中的复合类型是什么?
在 Cassandra 中,复合类型允许使用不同类型数据的连接来定义键或列名。您可以使用两种类型的复合类型:
- 行键
- 列名
4) Cassandra 如何存储数据?
- 所有数据都以字节形式存储
- 当您指定验证器时,Cassandra 会确保这些字节按照要求进行编码
- 然后,比较器会根据特定编码的顺序来排序列
- 虽然复合类型只是具有特定编码的字节数组,但对于每个组件,它会存储一个两字节长度,然后是字节编码的组件,最后是一个终止位。
5) 提及 Cassandra 数据模型的主要组成部分是什么?
Cassandra 数据模型的主要组成部分是:
- 集群
- 键空间
- 列
- 列和列族
6) 解释一下 Cassandra 中的列族是什么?
在 Cassandra 中,列族是指一组行的集合。
7) 解释一下 Cassandra 中的集群是什么?
集群是键空间的容器。Cassandra 数据库分布在多个协同工作的机器上。集群是最外层的容器,它以环状格式组织节点并将数据分配给它们。这些节点具有副本,在数据处理失败时负责接管。
8) 列出 Cassandra 的其他组件?
Cassandra 架构的其他组件包括:
- 节点
- 数据中心
- 集群
- 提交日志
- 内存表
- SSTable
- 布隆过滤器
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 值被视为已删除。
这些面试问题也将有助于您的口试