数据库-面试收录P0

从今天开始,本专栏专门收录一下个人觉得比较可能会在Java后端开发的面试中遇到的问题,个人角色,复习是非常需要有一个体系的,平日里碎片化的学习可能当时解决了某些问题,但后续可能就会忘记或在相似之处无法感知到,因此个人这里做了整理,用作本人复习的路径。

先从数据库开始,数据库作为后端开发的重中之重,必然不能轻视,要牢记掌握一些概念八股,他们其中很多不错的设计理念和方案非常值得思考。我主要是整理题目,内容大部分由AI生成。有不对的地方敬请理解。

        数据库是用来存储、管理和操作数据的系统,广泛应用于各种软件系统中。它不仅涉及如何存储和检索数据,还包括如何确保数据的完整性、并发性和安全性。以下是一些核心概念,帮助你深入理解数据库:

1. 数据库定义

  • 数据库:数据库是一个有组织的、可通过计算机系统进行访问和管理的数据集合。它存储的数据通常是经过结构化的,便于查询和修改。

2. 数据库管理系统(DBMS)

  • DBMS(Database Management System)是管理数据库的软件,它提供了存储、查询、修改、删除和备份数据的功能。常见的DBMS包括 MySQL、PostgreSQL、Oracle、SQL Server 等。

3. 关系型数据库(RDBMS)

  • 关系型数据库是基于关系模型的数据库。数据以表格的形式存储,其中表与表之间通过外键关系建立联系。常见的关系型数据库包括 MySQL、PostgreSQL、Oracle、SQL Server 等。

核心特性

  • :关系型数据库中的数据存储在表中,表是由行和列组成的。每行代表一个记录,列代表该记录的各个字段。

  • 关系:表与表之间的关系通过外键进行连接。

  • SQL(Structured Query Language):用于操作和管理关系型数据库的标准语言。

4. 非关系型数据库(NoSQL)

  • 非关系型数据库不使用传统的关系模型,而是采用多种数据存储模型,如键值对、文档、列族、图形等。常见的 NoSQL 数据库包括 MongoDB、Redis、Cassandra、CouchDB 等。

特点

  • 灵活的数据模型:支持结构化、半结构化和非结构化数据。

  • 可扩展性:适用于大规模数据存储和分布式架构。

  • 高性能:通常能在高并发、高吞吐量的环境下提供更好的性能。

5. 数据库设计

  • ER模型(实体关系模型):是数据库设计的基础,它通过实体、属性和关系来描述数据及其相互关系。实体通常对应数据库中的表,属性对应列,关系对应外键。

  • 范式:范式是一组设计规则,用于减少数据库中的冗余数据。常见的范式有:

    • 第一范式(1NF):要求每个字段值是原子性的,即不可再分。

    • 第二范式(2NF):在1NF的基础上,要求所有非主属性完全依赖于主键。

    • 第三范式(3NF):在2NF的基础上,要求不存在传递依赖。

6. 数据完整性

  • 完整性约束:确保数据库中数据的准确性和一致性。常见的完整性约束包括:

    • 实体完整性:每个表的主键必须唯一且不可为空。

    • 参照完整性:外键必须指向已存在的记录。

    • 域完整性:数据的取值必须符合预定的类型和范围。

7. 事务管理

  • 事务:是数据库中的一组操作,具有原子性、一致性、隔离性和持久性(ACID特性)。事务保证了数据库操作的可靠性和一致性。

    • 原子性(Atomicity):事务中的操作要么全做,要么全不做。

    • 一致性(Consistency):事务执行前后,数据库的状态应该是合法的。

    • 隔离性(Isolation):并发事务之间互不干扰。

    • 持久性(Durability):事务提交后,对数据库的修改是持久的,即使系统崩溃也不会丢失。

8. 并发控制

  • 在多个事务同时执行时,如何保证数据的一致性和完整性。常见的并发控制机制包括:

    • 锁机制:通过加锁避免多个事务对同一数据进行修改,常见的锁有行锁、表锁、共享锁和排他锁。

    • 乐观锁:假设事务冲突的概率较低,事务执行前不加锁,在提交时进行检查并保证没有冲突。

    • 悲观锁:在事务开始时就对数据加锁,防止其他事务的访问。

9. 索引

  • 索引是数据库中用于加速查询操作的数据结构。通过在某些列上创建索引,可以大大提高查询效率。常见的索引类型包括:

    • 单列索引:为单个列创建索引。

    • 联合索引:为多个列一起创建索引。

    • 全文索引:用于加速全文搜索。

    • B树索引哈希索引:不同类型的索引适用于不同的查询场景。

10. 数据库的备份与恢复

  • 备份:将数据库的数据复制并存储,以防止数据丢失。常见的备份方式包括:

    • 物理备份:备份数据库文件。

    • 逻辑备份:备份数据库的逻辑结构(如表、索引等)。

  • 恢复:在数据库发生故障或数据丢失时,恢复备份数据以恢复到正常状态。

11. 数据库性能优化

  • 查询优化:通过改写SQL语句、增加索引、调整数据库设计等方法提高查询性能。

  • 分区:将大表分成多个小表,便于管理和提高查询效率。

  • 数据库缓存:通过缓存机制减少数据库的读取压力,提高响应速度。

12. 分布式数据库

  • 分布式数据库:通过将数据分布到多个物理节点上来提供高可用性和可扩展性。常见的分布式数据库系统包括 Google Spanner、Cassandra、HBase 等。

分布式系统特点

  • 分片:将数据分割到不同的数据库服务器上。

  • 复制:通过数据复制提高系统的可靠性。

  • 一致性、可用性、分区容错性(CAP定理):描述分布式系统在一致性、可用性和分区容错性之间的权衡。

13. SQL 与 NoSQL的比较

  • SQL:使用结构化查询语言(SQL)进行数据操作。适合需要强一致性和复杂查询的场景。

  • NoSQL:非结构化数据存储,支持灵活的数据模型,适合大数据和高并发场景。


这些概念构成了数据库的核心知识框架。你可以根据这些内容逐步深入研究每个领域,进一步理解和掌握数据库的相关技术。如果有具体的子主题或者更深层次的疑问,可以进一步提出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值