软考高级系统架构设计师备考(十九):数据库系统—数据库设计

软考高级系统架构设计师备考(十九):数据库系统---数据库设计

在软考高级系统架构设计师考试中,数据库不仅考基础理论,还重点考察工程实践能力与架构设计能力 。本篇聚焦高阶考点,常见于案例分析题与架构设计题

核心内容包括:

  • 数据库索引

  • 数据库视图

  • 分库分表与分区

  • 反规范化设计

  • 分布式数据库系统

  • NoSQL数据库

  • 大数据技术体系


一、数据库索引

1 索引的作用

索引(Index)用于提高查询效率,本质是数据结构(如B+树)。

类比:

复制代码
索引 ≈ 书的目录

2 常见索引类型

(1)按结构分类
  • B+树索引(最常用)

  • 哈希索引

  • 位图索引


(2)按功能分类
  • 主键索引

  • 唯一索引

  • 普通索引

  • 联合索引(复合索引)


3 B+树索引特点

  • 所有数据在叶子节点

  • 叶子节点有序链表

  • 支持范围查询


4 索引失效场景

常见导致索引失效的情况:

  • 使用函数:WHERE YEAR(date)=2025

  • 模糊查询:LIKE '%abc'

  • 隐式类型转换

  • 违反最左前缀原则(联合索引)


例题

以下哪种情况最可能使用索引

A. LIKE '%abc' B. WHERE id = 10 C. WHERE YEAR(date)=2025 D. WHERE name LIKE '%张%'

答案:B


二、数据库视图

1 视图定义

视图(View)是虚拟表,基于查询结果生成。

复制代码
CREATE VIEW v_student AS
SELECT name FROM Student;

2 视图特点

  • 不存储数据(一般)

  • 提高安全性

  • 简化复杂查询


3 视图更新限制

视图可更新需满足:

  • 单表

  • 无聚合函数

  • 无分组(GROUP BY)


例题

视图的本质是:

A. 存储数据 B. 虚拟表 C. 索引结构 D. 缓存数据

答案:B


三、分库、分表、分区

1 为什么要拆分?

原因:

  • 数据量过大

  • 并发压力高

  • 单机瓶颈


2 分表(水平拆分)

将数据按规则拆到多个表:

复制代码
User_1, User_2, User_3

规则:

  • 按ID取模

  • 按时间分表


3 分库

将数据分布到不同数据库:

复制代码
DB1, DB2, DB3

4 分区(Partition)

数据库内部逻辑划分:

  • 范围分区

  • 哈希分区

  • 列表分区


对比总结

技术 是否跨库 透明性
分区 对应用透明
分表 可能 部分透明
分库 不透明

例题

将用户表按用户ID取模拆分到多个表,属于:

A. 垂直分表 B. 水平分表 C. 分区 D. 反规范化

答案:B


四、反规范化(设计权衡)

1 什么是反规范化

为了提高性能,故意增加冗余。


2 常见手段

  • 冗余字段

  • 冗余表

  • 预计算字段


3 优缺点

优点:

  • 查询快

  • 减少JOIN

缺点:

  • 数据不一致风险

  • 更新复杂


例题

为了减少JOIN,将用户姓名冗余到订单表,这属于:

A. 规范化 B. 反规范化 C. 分区 D. 索引优化

答案:B


五、分布式数据库系统

1 定义

数据分布在多个节点,通过网络协同工作。


2 关键特性

  • 数据分片(Sharding)

  • 复制(Replication)

  • 一致性控制


3 CAP理论

分布式系统三大特性:

  • C(Consistency)一致性

  • A(Availability)可用性

  • P(Partition Tolerance)分区容错

结论:

复制代码
三者不可兼得,只能选两个

4 常见架构

  • 主从复制

  • 多主架构

  • 分布式事务(2PC、3PC)


例题

在网络分区情况下必须保证的特性是:

A. 一致性 B. 可用性 C. 分区容错性 D. 安全性

答案:C


六、NoSQL数据库

1 特点

  • 非关系型

  • 高扩展性

  • 高性能

  • 灵活结构


2 分类

(1)键值型

如:Redis


(2)文档型

如:MongoDB


(3)列族型

如:HBase


(4)图数据库

如:Neo4j


3 与关系数据库对比

项目 关系型 NoSQL
结构 固定 灵活
扩展 较难 容易
事务

例题

适合存储JSON数据的是:

A. MySQL B. MongoDB C. Oracle D. DB2

答案:B


七、大数据技术

1 核心特点

  • 数据量大(Volume)

  • 速度快(Velocity)

  • 类型多(Variety)

  • 价值密度低(Value)


2 典型技术栈

(1)存储
  • HDFS
(2)计算
  • MapReduce

  • Spark


3 处理模式

  • 批处理

  • 流处理


例题

用于大规模分布式存储的是:

A. MySQL B. HDFS C. Redis D. Oracle

答案:B


八、综合案例分析

题目

某电商系统:

  • 用户数据量巨大

  • 订单查询频繁

  • 需要高并发支持

问:应采用哪些技术?


分析

  1. 用户表 → 分库分表

  2. 订单查询 → 建索引

  3. 热数据 → 缓存(Redis)

  4. 历史数据 → 数据仓库


答案要点

  • 水平分表

  • 索引优化

  • 缓存 + NoSQL

  • 数据仓库分析


九、总结

数据库进阶重点如下:

索引:

  • B+树

  • 索引失效

视图:

  • 虚拟表

  • 安全性

架构:

  • 分库分表

  • 分区

设计:

  • 反规范化

分布式:

  • CAP理论

  • 分布式事务

新技术:

  • NoSQL

  • 大数据

相关推荐
你觉得脆皮鸡好吃吗1 小时前
SQL注入 基础防御
数据库·sql
_Evan_Yao2 小时前
缓存金字塔上的红色闪电:Redis 如何借力 CPU 的 L1/L2/L3 与 TLB 飞驰
java·数据库·redis·后端·缓存
Teable任意门互动2 小时前
多维表格哪家最好用最容易上手?国产开源 Teable 测评
开发语言·数据库·开源·excel·飞书·开源软件
weixin_381288182 小时前
Layui怎么在表格标题栏中嵌入一个迷你的HTML搜索表单
jvm·数据库·python
m0_747854522 小时前
C# 文件系统Filter Hook C#能否在用户模式下拦截文件系统调用
jvm·数据库·python
z4424753262 小时前
MySQL如何配置自动清理失效事务锁_结合定时任务清理
jvm·数据库·python
2301_800976932 小时前
数据库的基本操作
数据库·sql·oracle
cyber_两只龙宝2 小时前
【Oracle】Oracle之使用DML语言管理表
linux·运维·服务器·数据库·云原生·oracle
电商API_180079052472 小时前
获取淘宝商品原价、券后价的区别在哪里?难度以及解决办法
数据库·性能优化·数据挖掘·数据分析·网络爬虫