软考——系统架构师Nosql数据库

Posted 桃花键神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软考——系统架构师Nosql数据库相关的知识,希望对你有一定的参考价值。


🔎这里是【软考——系统架构师】,关注我考试轻松过线 👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

文章目录

关系型数据库的缺点

  • 不满足高并发读写需求 : 网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
  • 不满足海量数据的高效率读写: 网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的。
  • 不满足高扩展性和可用性: 在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。

集群方式虽然可以缓解上述问题,但仍然存在下列缺陷:

  1. 复杂性–集群配置、部署、管理都和复杂。
  2. 延迟性–主数据库压力较大时,会产生较大延迟。主备切换时候可能需要人工参与。
  3. 扩容性–集群中增加新机器时,对整个数据集重新分区,非常复杂。

ACID理论

ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性

Nosql数据库


NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来
的挑战,尤其是大数据应用难题。

CAP理论

主要概念解释
C(Consistency)一致性一致性是指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致,与ACID的C完全不同。
A(Availability)可用性可用性是指服务一直可用,而且是正常响应时间。
P(Partition tolerance)分区容错性分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

鱼与熊掌不可兼得。一个分布式系统不可能同时满足一致性、可用性、分区容忍性这三个需求,最多只能同时满足其中两个。

BASE理论

我们理想中的情况:

实际中的情况:

CA优先保证一致性和可用性,放弃分区容错。缺点:不再是分布式系统
CP优先保证一致性和分区容错性,放弃可用性。缺点:牺牲用户体验
AP优先保证可用性和分区容错性,放弃一致性。缺点:全局数据的不一致性
基本可用软状态最终一致性
指分布式系统在出现不可预知故障的时候,允许损失部分可用性。允许分区失败的情形出现。硬状态数据库状态必须一直保持数据库一致性。软状态状态可以有一段时间不同步系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。

Nosql数据库与sql数据库的比较

特征SQL数据库Nosql数据库
数据类型结构化非结构
数据一致性强一致性弱一致
事务高事务性弱事务性
扩展性一般
数据容量有限数据海量数据
标准化
技术支持
可维护性复杂复杂

Nosql的主要类型

键值(key-Value)数据库


列族数据库

  • SQL模式
  • 行式存储
  • 列式存储

HBase

文档数据库


图形数据库

送书福利

内容介绍:
本书精选Kubernetes的硬核知识,帮助读者快速进阶和积累Kubernetes实战经验。本书共8章,主要包括认识Kubernetes,快速构建Kubernetes集群,Kubernetes核心对象使用,Kubernetes容器编排实践,Kubernetes系统运维与故障处理,构建Kubernetes高可用集群,Kubernetes监控与告警(Prometheus+Grafana)和基于Kubernetes的CI/CD项目综合实践(GitLab+ Harbor+Jenkins)。
本书前三章可以帮助读者快速掌握Kubernetes核心知识和高频操作;第4、第5章帮助读者快速掌握Kubernetes的进阶使用;第6~8章是Kubernetes及其外围系统的综合应用,帮助读者快速积累实战经验。
本书既可以作为云原生及相关行业从业者的技术参考书,也可以作为高等院校计算机、云计算和大数据相关专业的教材。


本书由机械工业出版社提供

[架构之路-5]:架构师 - 中国计算机技术职业资格(软考)考试是如何定义系统架构师?

目录

第1章 中国计算机技术职业资格(软考)等级

第2章 考试要求与技能要求

第3章 关于题型与分值

第4章 教材内容

第1章 操作系统 1

第2章 数据库系统 30

第3章 数据通信与计算机网络 107

第4章 系统性能评价 133

第5章 开发方法 149

第6章 系统计划 174

第7章 系统分析与设计方法 195

第8章 软件架构设计 246

第9章 设计模式 287

第10章 测试评审方法 307

第11章 嵌入式系统设计 319

第12章 开发管理 426

第13章 信息系统基础知识 453

第14章 基于中间件的开发 537

第15章 安全性和保密性设计 565

第16章 系统的可靠性分析与设计 614

第17章 软件的知识产权保护 631

第18章 标准化知识 640

第19章 应用数学 649

第20章 虚拟化、云计算与物联网 669


第1章 中国计算机技术职业资格(软考)等级

高级资格:系统分析师重在需求分析

高级资格:系统架构师重在系统设计

系统分析师:熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调信息系统开发与运行所涉及的各类人员,能指导制订企业的战略数据规划,组织开发信息系统,能评估和选用适宜的开发方法和工具,能按照标准规范编写系统分析、设计文档,能对开发过程进行质量控制与进度控制,能具体指导项目开发;具有高级工程师的实际工作能力和业务水平。

系统架构师:是一个最终确认和评估系统需求,给出开发规范,搭建系统实现核心构架,并澄清技术细节扫清主要难点的技术人员。

主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。

系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。

第2章 考试要求与技能要求

(1)掌握计算机硬软件与网络的基础知识;            -- IT基础支持

(2)熟悉信息系统开发过程;                                  -- 软件开发流程

(3)理解信息系统开发标准、常用信息技术标准;  -- 软件标准

(4)熟悉主流的中间件和应用服务器平台;             -- 主流平台架构

(5)掌握软件系统建模、系统架构设计基本技术;   -- 架构建模

(6)了解用户的行业特点,并根据行业特点架构合适的系统设计;-- 业务领域

(7)熟练掌握信息安全技术、安全策略、安全管理知识; -- 安全技术

(8)了解信息化、信息技术有关法律、法规的基础知识; -- 法律法规

(9)掌握应用数学基础知识;                                --  数学基础

(10)熟练阅读和正确理解相关领域的英文文献;   -- 英文文献

第3章 关于题型与分值

三门,每门满分75, 45分及格,3门要同时通过,有一门不通过成绩不做保留,下次继续重新考全部的。

上午选择题:75道,共75 空,每空是1分;满分:75 分;时间:150 分钟

下午案例题:考核时间:90分钟满分:75分,5道大题(第1题必做,后4题选做2题)

论文:系统架构设计论文,考试时间为120分钟,笔试,论文题。从给出的4道试题(试题一至试题四)中任选1道题解答。

考试有一个原则,知识点很多,只需要掌握80%的知识通过考试就行了,所以对于一些不重要的知识点,可以放弃,如果能知道哪些是重难点,就可以少走很多的弯路了。

第4章 教材内容

通过教材的内容,基本看出,架构设计师需要哪些技术技能。

第1章 操作系统 1

1.1 操作系统的类型与结构 1

1.1.1 操作系统的定义 1

1.1.2 操作系统分类 2

1.2 操作系统基本原理 4

1.2.1 进程管理 4

1.2.2 存储管理 13

1.2.3 设备管理 20

1.2.4 文件管理 23

1.2.5 作业管理 27

第2章 数据库系统 30

2.1 数据库管理系统的类型 30

2.2 数据库模式与范式 31

2.2.1 数据库的结构与模式 31

2.2.2 数据模型 33

2.2.3 数据的规范化 35

2.2.4 反规范化 37

2.3 数据操纵和使用 38

2.4 数据库设计 39

2.4.1 数据库设计的特点 39

2.4.2 数据库设计的方法 40

2.4.3 数据库设计的基本步骤 42

2.4.4 需求分析 44

2.4.5 概念结构设计 48

2.4.6 逻辑结构设计 64

2.4.7 物理结构设计 72

2.4.8 数据库应用程序设计 75

2.5 事务管理 77

2.5.1 并发控制 77

2.5.2 故障与恢复 79

2.6 备份与恢复 80

2.7 分布式数据库系统 81

2.7.1 分布式数据库的概念 82

2.7.2 分布式数据库的架构 84

2.8 并行数据库系统 89

2.8.1 功能和结构 89

2.8.2 并行处理技术 91

2.9 数据仓库 94

2.9.1 数据仓库的概念 94

2.9.2 数据仓库的结构 95

2.9.3 数据仓库的实现方法 97

2.10 数据挖掘 99

2.10.1 数据挖掘的概念 99

2.10.2 数据挖掘的功能 100

2.10.3 数据挖掘常用技术 101

2.10.4 数据挖掘的流程 103

2.11 NOSQL 104

2.12 大数据 105

第3章 数据通信与计算机网络 107

3.1 数据通信基础知识 107

3.1.1 信道特性 107

3.1.2 数据传输技术 110

3.2 网络架构与协议 111

3.2.1 网络互联模型 111

3.2.2 常见的网络协议 113

3.2.3 IPv6 115

3.3 局域网与广域网 115

3.3.1 局域网基础知识 116

3.3.2 无线局域网 117

3.3.3 广域网技术 119

3.3.4 网络接入技术 120

3.4 网络互连与常用设备 122

3.5 网络工程 124

3.5.1 网络规划 124

3.5.2 网络设计 126

3.5.3 网络实施 128

3.6 网络存储技术 129

3.7 综合布线 131

第4章 系统性能评价 133

4.1 性能指标 133

4.1.1 计算机 134

4.1.2 网络 136

4.1.3 操作系统 137

4.1.4 数据库管理系统 137

4.1.5 Web服务器 138

4.2 性能计算 138

4.3 性能设计 139

4.3.1 系统性能调整 140

4.3.2 阿姆达尔解决方案 142

4.3.3 负载均衡 143

4.4 性能评估 145

4.4.1 基准测试程序 145

4.4.2 Web服务器的性能评估 147

4.4.3 系统监视 147

第5章 开发方法 149

5.1 软件生命周期 149

5.2 软件开发模型 150

5.2.1 瀑布模型 150

5.2.2 演化模型 153

5.2.3 螺旋模型 153

5.2.4 增量模型 154

5.2.5 构件组装模型 155

5.3 统一过程 155

5.4 敏捷方法 158

5.4.1 极限编程 159

5.4.2 特征驱动开发 162

5.5 软件重用 164

5.5.1 软件重用 164

5.5.2 构件技术 165

5.6 基于架构的软件设计 165

5.6.1 ABSD方法与生命周期 166

5.6.2 基于架构的软件开发模型 168

5.7 形式化方法 173

第6章 系统计划 174

6.1 项目的提出与选择 174

6.1.1 项目的立项目标和动机 174

6.1.2 项目提出的角色和工作范围 177

6.1.3 项目的选择和确定 177

6.1.4 项目提出和选择的结果 180

6.2 可行性研究与效益分析 181

6.2.1 可行性研究的内容 182

6.2.2 成本效益分析 183

6.2.3 可行性分析报告 185

6.3 方案的制订和改进 185

6.4 新旧系统的分析和比较 188

6.4.1 遗留系统的评价方法 188

6.4.2 遗留系统的演化策略 191

6.5 资源估计 193

第7章 系统分析与设计方法 195

7.1 定义问题与归结模型 195

7.1.1 问题分析 195

7.1.2 问题定义 198

7.2 需求分析与软件设计 200

7.2.1 需求分析的任务与过程 200

7.2.2 如何进行系统设计 202

7.2.3 软件设计的任务与活动 203

7.3 结构化分析与设计 204

7.3.1 结构化分析 205

7.3.2 结构化设计 210

7.3.3 模块设计 213

7.4 面向对象的分析与设计 214

7.4.1 面向对象的基本概念 215

7.4.2 面向对象分析 216

7.4.3 统一建模语言 219

7.4.4 结构化方法面向对象方法的比较 231

7.5 用户界面设计 232

7.5.1 用户界面设计的原则 233

7.5.2 用户界面设计过程 233

7.6 工作流设计 234

7.6.1 工作流设计概述 234

7.6.2 工作流管理系统 236

7.7 系统的文件设计 237

7.8 网络环境下的计算机应用系统的设计 239

7.9 简单分布式计算机应用系统的设计 241

7.10 系统运行环境的集成与设计 242

7.11 系统过渡计划 244

第8章 软件架构设计 246

8.1 软件架构概述 246

8.1.1 软件架构的定义 247

8.1.2 软件架构的重要性 248

8.2 架构需求与软件质量属性 249

8.2.1 软件质量属性 249

8.2.2 6个质量属性及实现 251

8.3 架构设计 257

8.4 软件架构文档化 259

8.5 软件架构评估 263

8.5.1 软件架构评估的方法 263

8.5.2 架构的权衡分析法 263

8.5.3 成本效益分析法 265

8.6 构件及其复用 265

8.6.1 商用构件标准规范 266

8.6.2 应用系统簇与构件系统 267

8.6.3 基于复用开发的组织结构 268

8.7 产品线及系统演化 269

8.7.1 复用与产品线 269

8.7.2 基于产品线的架构 270

8.7.3 产品线的开发模型 271

8.7.4 特定领域软件架构 271

8.7.5 架构及系统演化 272

8.8 软件架构建模 273

8.8.1 架构的模型 273

8.8.2 架构风格 275

8.8.3 架构风格举例 277

8.9 软件架构视图 279

8.9.1 软件视图的分类 279

8.9.2 模块视图类型及其风格 280

8.9.3 C&C视图类型及其风格 282

8.9.4 分配视图类型及其风格 284

8.9.5 各视图类型间的映射关系 286

第9章 设计模式 287

9.1 设计模式概述 287

9.1.1 设计模式的概念 287

9.1.2 设计模式的组成 288

9.1.3 GoF设计模式 288

9.1.4 其他设计模式 290

9.1.5 设计模式与软件架构 291

9.1.6 设计模式分类 291

9.2 设计模式及实现 292

9.2.1 Abstract Factory模式 292

9.2.2 Singleton模式 295

9.2.3 Decorator模式 296

9.2.4 Facade/Session Facade模式 298

9.2.5 Mediator模式 300

9.2.6 Observer模式 301

9.2.7 Intercepting Filter模式 303

9.3 设计模式总结 305

第10章 测试评审方法 307

10.1 测试方法 307

10.1.1 软件测试阶段 307

10.1.2 白盒测试和黑盒测试 309

10.1.3 缺陷的分类和级别 311

10.1.4 调试 312

10.2 评审方法 313

10.3 验证与确认 314

10.4 测试自动化 316

10.5 面向对象的测试 316

第11章 嵌入式系统设计 319

11.1 嵌入式系统概论 319

11.1.1 嵌入式系统的基本概念 319

11.1.2 嵌入式系统的分类 320

11.2 嵌入式系统的组成 322

11.2.1 硬件架构 322

11.2.2 软件架构 326

11.3 嵌入式应用软件与开发平台 327

11.3.1 嵌入式窗口系统 327

11.3.2 嵌入式窗口系统实例分析 331

11.3.3 嵌入式系统的Java虚拟机 332

11.3.4 嵌入式系统软件开发平台 337

11.3.5 嵌入式开发调试 338

11.4 嵌入式网络系统 342

11.4.1 现场总线网 342

11.4.2 家庭信息网 344

11.4.3 无线数据通信网 349

11.4.4 嵌入式Internet 357

11.5 嵌入式数据库管理系统 358

11.5.1 使用环境的特点 358

11.5.2 系统组成与关键技术 359

11.5.3 实例解析 362

11.6 实时系统与嵌入式操作系统 363

11.6.1 嵌入式系统的实时概念 363

11.6.2 嵌入式操作系统概述 365

11.6.3 一般结构 366

11.6.4 实时嵌入式操作系统 367

11.6.5 内核对象 370

11.6.6 内核服务 374

11.6.7 主流嵌入式操作系统介绍 381

11.7 实时多任务调度与多任务设计 381

11.7.1 并发识别与多任务设计 382

11.7.2 多任务调度算法 384

11.7.3 任务的同步与通信 389

11.7.4 资源分类与资源请求模型 391

11.7.5 死锁 391

11.7.6 优先级反转问题 393

11.8 中断处理与异常处理 397

11.8.1 异常和中断的概念 397

11.8.2 中断处理 398

11.8.3 中断服务例程的设计问题 401

11.9 嵌入式系统开发设计 401

11.9.1 嵌入式系统设计概述 402

11.9.2 开发模型与设计流程 404

11.9.3 嵌入式系统设计的核心技术 406

11.9.4 嵌入式开发设计环境 408

11.9.5 嵌入式软件设计模型 408

11.9.6 需求分析 412

11.9.7 系统设计 413

11.9.8 系统集成与测试 419

11.9.9 嵌入式系统的软件移植 419

11.9.10 可移植性软件的设计 422

第12章 开发管理 426

12.1 项目的范围、时间与成本 426

12.1.1 项目范围管理 427

12.1.2 项目成本管理 427

12.1.3 项目时间管理 428

12.2 配置管理与文档管理 429

12.2.1 软件配置管理的概念 429

12.2.2 软件配置管理的解决方案 430

12.2.3 软件文档管理 433

12.3 软件需求管理 437

12.3.1 需求变更 437

12.3.2 需求跟踪 438

12.4 软件开发的质量与风险 438

12.4.1 软件质量管理 438

12.4.2 项目风险管理 440

12.5 人力资源管理 445

12.6 软件的运行与评价 450

12.7 软件过程改进 450

第13章 信息系统基础知识 453

13.1 信息系统概述 453

13.1.1 信息系统的发展阶段 453

13.1.2 信息系统的组成 455

13.1.3 信息系统实现的复杂性 456

13.1.4 信息系统的生命周期 459

13.1.5 信息系统建设的原则 460

13.1.6 信息系统开发方法 462

13.2 信息系统工程 465

13.2.1 信息系统工程的概念 465

13.2.2 信息系统工程的内容 467

13.2.3 信息系统工程的总体规划 470

13.2.4 总体规划的方法论 476

13.3 政府信息化与电子政务 483

13.3.1 我国政府信息化的历程和策略 483

13.3.2 电子政务的内容和技术形式 487

13.3.3 电子政务建设的过程模式和技术模式 490

13.4 企业信息化与电子商务 493

13.4.1 企业信息化概述 493

13.4.2 企业资源规划 496

13.4.3 客户关系管理 502

13.4.4 产品数据管理 506

13.4.5 企业门户 509

13.4.6 企业应用集成 511

13.4.7 供应链管理 514

13.4.8 电子商务概述 516

13.5 信息资源管理 520

13.5.1 信息孤岛 520

13.5.2 信息资源分类 523

13.5.3 信息资源规划 524

13.5.4 信息资源网建设 528

13.6 知识管理与商业智能 531

13.6.1 知识管理 531

13.6.2 商业智能 533

13.7 业务流程重组 534

第14章 基于中间件的开发 537

14.1 中间件技术 537

14.1.1 中间件的概念 538

14.1.2 中间件的分类 539

14.1.3 中间件产品介绍 540

14.2 应用服务器技术 541

14.2.1 应用服务器的概念 542

14.2.2 主要的应用服务器 544

14.3 J2EE 545

14.3.1 表示层 546

14.3.2 应用服务层 547

14.4 .NET 549

14.4.1 .NET平台 550

14.4.2 .NET框架 551

14.5 企业应用集成 556

14.6 轻量级架构和重量级架构 559

14.6.1 Struts框架 559

14.6.2 Spring框架 560

14.6.3 Hibernate框架 561

14.6.4 基于Struts、Spring和Hibernate的轻量级架构 562

14.6.5 轻量级架构和重量级架构的探讨 563

第15章 安全性和保密性设计 565

15.1 加密和解密 565

15.1.1 对称密钥加密算法 566

15.1.2 不对称密钥加密算法 567

15.2 数字签名与数字水印 569

15.2.1 数字签名 569

15.2.2 数字信封 571

15.3 数字证书与密钥管理 572

15.3.1 密钥分配中心 572

15.3.2 数字证书和公开密钥基础设施 573

15.4 安全协议 576

15.4.1 IPSec协议简述 577

15.4.2 SSL协议 580

15.4.3 PGP协议 583

15.5 计算机病毒与防治 586

15.5.1 计算机病毒概述 586

15.5.2 网络环境下的病毒发展新趋势 588

15.5.3 计算机病毒的检测与清除 589

15.5.4 计算机病毒的预防 591

15.6 身份认证与访问控制 592

15.6.1 身份认证技术 592

15.6.2 访问控制技术 597

15.7 网络安全体系 600

15.7.1 OSI安全架构 600

15.7.2 VPN在网络安全中的应用 602

15.8 系统的安全性设计 605

15.8.1 物理安全问题与设计 605

15.8.2 防火墙及其在系统安全中的应用 605

15.8.3 入侵检测系统 607

15.9 安全性规章 609

15.9.1 安全管理制度 609

15.9.2 计算机犯罪与相关法规 611

第16章 系统的可靠性分析与设计 614

16.1 可靠性概述 614

16.2 系统故障模型 615

16.2.1 故障的来源以及表现 615

16.2.2 几种常用的故障模型 616

16.3 系统配置方法 616

16.3.1 单机容错技术 617

16.3.2 双机热备份技术 617

16.3.3 服务器集群技术 618

16.4 系统可靠性模型 619

16.4.1 时间模型 619

16.4.2 故障植入模型 619

16.4.3 数据模型 620

16.5 系统的可靠性分析和可靠度计算 621

16.5.1 组合模型 621

16.5.2 马尔柯夫模型 623

16.6 提高系统可靠性的措施 625

16.6.1 硬件冗余 625

16.6.2 信息冗余 628

16.7 备份与恢复 629

第17章 软件的知识产权保护 631

17.1 著作权法及实施条例 631

17.1.1 著作权法客体 631

17.1.2 著作权法的主体 632

17.1.3 著作权 633

17.2 计算机软件保护条例 634

17.3 商标法及实施条例 635

17.4 专利法及实施细则 636

17.5 反不正当竞争法 638

第18章 标准化知识 640

18.1 标准化概论 640

18.2 标准分级与标准类型 643

18.2.1 标准分级 643

18.2.2 强制性标准与推荐性标准 645

18.3 软件开发规范与文档标准 646

18.3.1 软件开发规范 646

18.3.2 软件文档标准 647

第19章 应用数学 649

19.1 运筹方法 649

19.1.1 网络计划技术 649

19.1.2 线性规划 653

19.1.3 决策论 656

19.1.4 对策论 659

19.1.5 排队论 661

19.1.6 存储论 664

19.2 数学建模 666

第20章 虚拟化、云计算与物联网 669

20.1 虚拟化 669

20.1.1 虚拟化技术的分类 669

20.1.2 虚拟化的模式 671

20.2 云计算 672

20.2.1 云计算的特点 673

20.2.2 云计算的类型 674

20.2.3 云计算的应用 674

20.3 物联网 675

20.3.1 物联网的层次结构 676

20.3.2 物联网的相关领域与技术 677

20.3.3 物联网的应用

以上是关于软考——系统架构师Nosql数据库的主要内容,如果未能解决你的问题,请参考以下文章

阿里P8架构师谈:NoSQL和SQL的区别,NoSQL的使用场景和选型比较

阿里P8架构师谈:NoSQL和SQL的区别,NoSQL的使用场景和选型比较

成为架构师课程系列NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?

8 种 NoSQL 数据库系统对比

8种Nosql数据库系统对比

小知识8种Nosql数据库系统对比