数据库基础面试一
1.数据库基础
1.概念:
常见说法:存储和操作数据的仓库; 专业说法:用于存储数据和操作数据的文件系统
本质:一个文件系统,操作数据就是操作文件(IO操作)
数据库分为两种:关系型数据库(RDBMS)和非关系型数据库(NoSQL)
关系型数据库:
基于二维表来存储
1.行,通过约束(Constraints)和事务(ACID)来实现完整性
2.列,通过定义数据类型(如INT、VARCHAR)和约束(如NOT NULL、UNIQUE)限制数据的输入格式和范围
3.表之间通过主键与外键建立关系(如一对一、一对多),支持JOIN操作关联数据。
4.选择条件,需要强事物,复杂查询,数据一致性优先
非关系型数据库:
- 灵活的数据模型:支持多种形式,如键值对(Key-Value)、文档(Document)、列族(Column Family)、图(Graph)等。
- 无固定模式(Schema-less):数据可以动态扩展字段,适合半结构化或非结构化数据。
- 选择条件:数据量大、结构多变、高并发写入、拓展性优先
2.内容
1.关于主键生成(雪花算法)
概念:
一种分布式环境下生成全局唯一ID的常用方案。它的核心是通过:时间戳+机器ID+序列号组合成一个趋势递增且不重复的数值型主键
2.存储过程
除开银行系统可能会使用存储过程,之外的大多都是禁止使用存储过程(阿里开发)
理由如下:
1.维护成本高
- 逻辑分散:业务逻辑分散在应用代码和数据库中,导致代码库碎片化,增加维护复杂度。
- 调试困难:存储过程的调试工具有限(如断点、日志追踪),错误排查效率低。
- 版本控制难:存储过程通常不纳入Git等版本控制系统,协作时容易引发冲突。
2.移植性差
- 数据库方言差异:不同数据库(MySQL、Oracle、PostgreSQL)的存储过程语法差异大,迁移成本高。
- 绑定数据库厂商:存储过程深度依赖数据库特性,更换数据库时需重写逻辑。
3.拓展性下降
- 计算能力瓶颈:数据库的CPU和内存资源有限,复杂业务逻辑可能导致性能问题。
- 难以水平扩展:存储过程运行在数据库服务器上,无法像应用服务器一样轻松扩容。
3.触发器
概念:
一种特殊的存储过程
作用:在对表中数据进行增删改查之后(之前)的时机,触发一些事件比如:记录日志,校验数据等
浙公网安备 33010602011771号