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

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

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

核心内容包括:

  • 数据库索引

  • 数据库视图

  • 分库分表与分区

  • 反规范化设计

  • 分布式数据库系统

  • 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

  • 大数据

相关推荐
数据库小学妹6 分钟前
AI时代数据库怎么选?多模融合、数据统一存储与选型实战指南
数据库·人工智能·经验分享·ai
Albert Edison15 分钟前
【Redis】Centos7.9 安装 Redis 5 教程
数据库·redis·缓存
@insist12332 分钟前
系统架构设计师-操作系统进程管理核心知识点详解
架构·系统架构·软考·系统架构设计师·软件水平考试
云计算磊哥@33 分钟前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
小二·1 小时前
Redis 内存溢出(OOM)排查与恢复实战
数据库·redis·bootstrap
pqk6V6Vep1 小时前
Redis 分布式锁进阶第一篇讲解
数据库·redis·分布式
giaz14n9X1 小时前
Redis 分布式锁进阶第六十一篇
数据库·redis·分布式
是一个Bug1 小时前
MongoDB:像搭积木一样存数据
数据库·mongodb
ULIi096kr1 小时前
MySQL解决Too many connections报错:连接数爆满排查、优化与永久解决方案
数据库·mysql·adb
SL-staff2 小时前
(一)数据源配置 —— JVS-Rules规则引擎 V2.5 操作说明介绍
数据库·jar·规则引擎·数据源·jvs-rules·api 接口·jvs低代码