【说明】
某软件公司拟开发一套贸易综合管理系统,包括客户关系管理子系统和商品信息管理子 系统两部分。客户关系管理子系统主要管理客户信息,并根据贸易业务需要频繁向客户发送 相关的电子邮件、短信等提醒信息。商品信息管理子系统主要为客户提供商品信息在线查询 功能,包括商品基本信息、实时库存与价格等。 在对系统进行数据架构设计时,公司项目组的架构师王工主张采用文件系统进行数据管 理,原因是目前公司客户和商品数量不大,且系统功能较为简单,采用文件系统进行数据管 理简单直观,开发周期短。架构师李工则建议采用关系数据库进行数据管理,原因在于公司 目前正处在高速扩张期,虽然目前的客户和商品数量不大,但随着公司快速发展,需要管理 的数据必然飞速膨胀,采用关系数据库作为数据存储层,系统的扩展性更强,并能够对未来 可能增加的复杂业务提供有效支持。经过讨论,项目组初步采纳了李工的意见,决定采用关 系数据库存储客户数据,并针对业务特征对系统性能进行优化。
【问题 1】请从设计难度、数据冗余程度、数据架构、应用扩展性等 4 个方面对关系型数据库管理 系统和文件系统两种数据存储方式进行比较,填写表 中(1)~(4)。
关系型数据库存储和文件系统存储比较
设计难度 | 数据冗余程度 | 数据架构 | 应用扩展性 | |
关系型数据库 | (1) | 遵守数据范式,数据冗余叫少 | 以数据库为中心组织、管理数据 | (4) |
文件系统 | 针对特定应用系统设计,难度较小 | (2) | (3) | 符合特定应用系统要求的文件数据,很难在不同的应用系统之间共享 |
【问题 2】
对系统的核心业务需求进行认真分析后,公司的资深架构师张工提出一种内存数据库和 关系数据库的混合存储架构,其核心思想是将需要频繁读写的数据存入内存数据库,而将相 对固定不变的数据存入关系数据库。请首先分析比较内存数据库和关系数据库在数据模型、 读写性能、存储容量、可靠性等方面的差异,填写表 中(1)~(4)的空白,并根据张工的 思路指定各种业务数据的存储方式,填写表中(5)~(9)中的空白。
内存数据库和关系数据库比较
数据模型 | 读写性能 | 存储容量 | 可靠性 | |
内存数据库 | (1) | 内存直接读写,性能高 | (3) | (4) |
关系数据库 | 关系模式 | (2) | 基于磁盘存储,容量大 | 内建恢复机制,可靠性高 |
业务数据存储方式
业务数据 | 存储方式 |
客户基本信息 | 关系数据库 |
客户电子邮件 | (5) |
客户联系电话 | (6) |
商品基本信息 | (7) |
商品库存信息 | (8) |
商品价格信息 | (9) |
【问题 3】
系统开发完成进行压力测试时,发现在较大数据量的情况下,部分业务查询响应时间 过长,经过分析发现其主要原因是部分 SQL 查询语句效率低下。请判断表 中的 SQL 语句 设计策略哪些可能会提升查询效率,哪些可能会降低查询效率,在(1)~(4)中填入“提升” 或“降低”。
SQL设计策略对性能的影响
SQL语句设计策略 | 查询性能影响情况 |
查询时不要返回不需要的行和列 | (1) |
需要进行多表连接查询时,尽量采用子查询结构 | (2) |
尽量采用not in,not exist,like等操作 | (3) |
尽量避免使用distinct关键字 | (4) |
【解答】
【问题1】
- 数据结构需要符合关系模式,设计难度大
- 可能在多个文件中复杂相同数据属性,数据冗余大
- 以应用系统为中心组织和管理数据
- 数据独立于应用系统,很冗余在不同应用系统之间共享数据
【问题2】
- key-value模式
- 外存读写,性能低
- 基于内存存储,容量有限
- 恢复机制复杂,可靠性低
- 内存数据库
- 内存数据库
- 关系数据库
- 内存数据库
- 内存数据库
【问题3】
- 提示
- 降低
- 降低
- 提升