2025 年软考笔记(2),包含第八章,第九章的一些知识点。
第九章
NoSQL 非关系型数据库。Google BigTable, Amazon Dynamo, Facebook Cassandra, Apache HBase
CAP 理论:一致性、可用性、分区容忍。
BASE:基本可用、软状态、逐渐一致
与 ACID 相比较。
分区主要方法:内容缓存、集群、读写分离、Sharding
存储:行存/列存,带群组的列存,LSM-Tree
查询:结合SQL,分散/集合本地搜索,分布式 B+,哈希/分布式 Trie
NoSQL 种类介绍:1.文档 MongoDB;2.键值 Memcached, Redis, 列存储(BigTable, Hypertable, HBase, Cassandra), 图存储, 其他;
应用举例:HBase, GeminiDB
CH10 系统开发和运行知识
开发软件流程:可行性分析与项目开发、需求分析、概要设计、详细设计、编码和单元测试、综合测试、维护
开发模型:
1.瀑布模型。到项目 后期 可能才发现设计不合理。
2.增量模型。增量作为瀑布模型的一个变体,需要成本和时间很少,增量大小表示承担风险不大。
3.演化模型。一经过开发就能进入测试。
4.螺旋模型。制定计划-风险分析-实施工程-用户评估。
5.喷泉模型。迭代意味着模型开发活动需要多次,迭代过程要不断完善。
软件开发流程。
需求分析文档
方法:结构化(TOP-Down)、原型化开发、面向对象开发方法、敏捷方法(水晶法、并列征求法、自适应软件开发)。
软件管理:成本估算、风险分析、进度管理、人员管理
系统分析:范围定义、问题分析、需求分析
结构化分析:DFD、UML
系统设计:概要设计(软件总体、数据结构、编写概要设计阶段、评审)、详细设计(算法设计、数据结构、物理设计、其他)
系统设计原理:抽象、模块化、信息隐藏、模块独立
结构化:信息流、变换分析、事务分析
系统测试:测试出没发现的错误。原则如下
1)尽早测试、不断测试;
2)避免由开发人员承担;
3)设计方案,要预期输出;
4)包含不合理失效的输入;
5)检验程序是否做了不该做的事情;
6)避免随意测试;
7)妥善保存用例;
8)纠正错,重新测试。
测试策略:1.单元测试;2.集成测试;3.确认测试;4.系统测试;
CH11 数据库设计
软件生命周期 6 个阶段:制定计划、需求分析、系统设计、程序编制、测试及运营维护。
基本步骤:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施阶段、数据库运营和维护。
概念结构设计:以用户的观点,从现实世界到信息世界的第一轮 抽象。ER方法,分类、聚集、概括。
步骤是,选择局部应用、逐一设计分ER图、ER图合并。
ER关系转换:1.实体向关系模式转换;2.联系向关系模式的转换(一对一、一对多、多对一)。
物理设计:确定数据分布、确定数据存储结构、确定数据访问方式。
数据库实施:数据库实施阶段、数据库实施(建立实际结构、模式和子模式、完整性描述、安全性描述、物理存储参数、数据加载、运营和评价)。
数据库运行:制定运行、监控对象和监控方式、数据库系统管理计划。
逻辑结构设计
物理结构设计
部署实施
运行维护部分,制定数据库策略、确定数据库系统监控对象和监控方式、数据库系统管理计划
运行维护:监控数据收集分析、稳定运行中的业务特性、数据库维护、数据库系统运行统计、数据库系统审计。
如何管理数据系统?数据字典管理、数据完整性维护、数据库存储管理、备份和恢复、并发控制与死锁管理、数据安全性管理。
上述管理方式,整理几个点,一是存储管理,二是如何备份,六是安全性管理。
存储管理:(1)索引文件、数据文件分开存,LOG在高速设备;(2)适时修改数据文件、索引文件页面大小;(3)定期对数据进行排序;(4)增加必要索引项。
备份恢复:(1)备份要选择业务量最小的时候;(2)日志文件在最稳定的设备上;(3)加入检查点。
SQL编码检验:(1)减少多表查询,建立物化视图;(2)以不相关子查询替代相关子查询;(3)只检索需要的列;(4)用带 IN 条件子句等价替换 OR 子句;(5)经常提交 COMMIT,尽早释放锁。
表的维护和改进:(1)查询是瓶颈,建立索引提高查询率;(2)更新是瓶颈,索引导致效率低下,考虑删除索引。
CH12 事务管理
状态转换
可串行化
UNDO
考试重点。
事务定义:BEGIN TRANSACTION; END TRANSACTION; COMMIT; ROLLBACK。
事务特性:ACID。A 是原子性,要么都做,要么都不做。C 是一致性,一个一致状态到另一个一致状态。I 隔离性,操作不会相互干扰,相互隔离。D 持久性,变化是永久的,没出现下一个事务对其修改之前一直保持不变。
事务状态。对于事务执行要知道几个时间点。中止事务、事务回滚、已提交事务、补偿事务。
事务 5 种状态。活动状态、部分提交状态、失败提交、中止提交、提交状态。
数据库并发
串行调度,serial schedule,多个事务依次串行执行。
并发调度,concurrent schedule,利用分时方法处理多个事务。
可恢复调度。
并发带来的问题:丢失修改、脏读、幻读。
可串行化:并行和串行效果是一样的。
并发控制:X 锁,S 锁。
两段锁协议:上锁和解锁阶段可以被分解。
封锁协议:一级封锁协议,写之前锁,事务之后放。解决丢失修改。二级封锁协议,读之前锁,读完之后放,解决脏读。三级封锁协议,读之前锁,事务之后放,解决幻读。
多粒度锁。从根部开始搜索,如果锁i层节点,子节点都被锁。
UNDO/REDO。UNDO,是事务没执行完毕,用 LOG 恢复。REDO,事务执行完,重启系统恢复。
转储。(1)海量/增量;(2)静态/动态。
数据库安全性和完整性:(1)安全性违例;(2)授权;(3)授权与视图;(4)权限授予;(5)角色;(6)审计追踪;(7)数据加密。授权 GRANT,REVOKE。 with grant option
CH13 云计算
云计算特点:广泛接入、可测量服务、多租户、按需自服务、快速弹性和可扩展、资源池化。
虚拟化、可靠、性价比高。
技术:虚拟化、分布式、并行、运营支持管理。
【分布式】多副本自动复制;将元数据、用户数据分开;一次写多次读。
【运营支持】负载管理和监控;计量。
云计算参考架构。用户视图(软件组件、SLA、服务层、访问层、资源层);功能视图(业务支撑、监控、服务集成)。
云服务水平协议,SLA。步骤:(1)理解业务水平和责任;(2)评估业务水平策略;(3)了解各种服务模型、部署模型区别;(4)确定关键性能目标;(5)评估安全隐私保护需求;(6)明确服务管理需求;(7)为服务故障管理做准备;(8)了解灾难恢复计划;(9)开发有效的管理流程;(10)了解退出流程。
CH14 数据库主流应用技术
分布式数据库:故障点自动切除、故障后恢复
分布式数据库特点:(1)集中控制性;(2)数据独立性;(3)数据冗余可控;(4)场地自治性;(5)存取有效性。
分布式数据库体系结构

全局外层:局部物理数据库的逻辑集合;
全局概念层:分布式数据库整体抽象;全局概念模式、分片模式、分配模式;
局部概念层:全局概念模式的子集。
局部内层:关于物理数据库的描述
数据分布策略。数据分片。
数据分片:水平、垂直、垂直水平分片。
分片规则:完备、可重构、不相交。
分布式数据库故障:介质故障、系统故障、事务故障。
两段提交协议、三段提交协议。
CGI 公共网关接口。某种网络应用,跑服务器时候,一定有进程 alive
XML 可扩展标记语言。很多标记可以自己定义。通过网络中间件来处理其通信和传输。可以与关系型 数据库之间进行有效转化,条件式范式足够高,表中不能套表。DOM 对文档本身进行建模。TIPS,如果发现 XML 的空值较多,要考虑是否有其他编码,特别是非 ASCII码。
联机分析处理 OLAP。针对特定问题联机访问分析,基本概念(变量、维度、维层次、维成员、多维数组、数据单元)。
OLAP 12 条准则:必须提供多维概念视图 、透明性准则、存取能力准则、稳定的报表性能、C/S 结构体系、维的等同性准则、动态稀疏矩阵处理准则、多用户支持能力准则、不受限跨维操作、直观的数据操纵、灵活的报表生成、不受限制的维数和聚集层次。
联机事务处理 OLTP。理解聚集大量不同的数据,分析这些数据,寻找模式、趋势、例外。
OLTP 特征。可以存取大量数据、包含聚集的数据、按层次对比不同时间周期的聚集数据、以不同方式来表现数据、需要包含数据元素之间的复杂计算、快速响应用户。
OLTP 针对操作人员的增删改查的功能,事务量大,数据高度结构化。OLAP 更加针对高级管理层,多采用非数据处理人员的理解方式。
NewSQL
新型关系数据库管理系统。分布式最头疼的,时钟问题。谷歌 Spanner 论文,用 GPS 时钟和原子时钟解决了时钟同步问题,误差在 10 毫秒以内。追随者 TiDB, CockroachDB。支持数据模型使用 SQL 接口,分成架构、SQL 引擎、Sharding 三类。
第十二章知识点
面向对象关系数据库系统
NewSQL
CH15 法律相关
CH16 SQL 案例