首页 > 数据库 >系统架构案例分析( 数据库类型填空题)

系统架构案例分析( 数据库类型填空题)

时间:2023-10-29 14:35:28浏览次数:28  
标签:缓存 架构 派生 填空题 用户 药品 查询 ID 数据库


21年

某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。
通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存(Redis)的混合架构实现。
经过规范化设计之后,该系结的郊公粒切店士社光-a6

  • 供应商(供应商ID,供应商名称,联系方式,供应商地址)
  • 药品(药品ID,药品名称,药品型号,药品价格,供应商ID)
  • 药品库存(药品ID,当前库存数量)
  • 订单〔订单号码,药品ID,供应商ID,药品数量,订单金额)

间题1(9分)
在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系表过于细分,造成了大量的多表关联查询,影响了性能。例如当用户查询商品信息.时,需要同时显示该药品的信息、供应商的信息.、当前库存等信息。
为此,刘工认为可以采用反规范化设计来改造药品关系的结构,以提高查询性能。修改后的药品关系结构为:

  • 药品(药品ID.药品名称,药品型号,药品价格,供应商ID,供应商名称,当前库存数量)

请用200字以内的文字说明常见的反规范化设计方法,并说明用户查询商品信息.应该采用哪种反规范化设计方法。

常用的反规范技术有增加冗余列、增加派生列、重新组表和分割表。
(1)增加冗余列。是指在多个表中具有相同的列,它常用来在查询时避免连接操作。
(2)增加派生列。指增加的列来自其它表中的数据,由它们计算生成。它的作用是在查询时减少连接操作,避免使用聚集函数。
(3)重新组表。指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来诚少连接而提高性能。
(4)对表做分割可以提高性能,表分割有两种方式:水平分割和垂直分割
用户查询商品信息应该采用增加冗余列的方式。

间题2(9分)
王工认为,反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。请用200字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说明该系统应该采用哪种方法。
解决数据不一致性问题常用的方法是批处理维护、应用逻辑和触发器。

  • 批处理维护是指对复制列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对复制或派生列进行修改,只能在对实时性要求不高的情况下使用。
  • 应用逻辑实现数据一致性就要求必须在同一事务中对所有涉及的表进行同步增、删、改操作。同一逻辑必须在所有的应用中使用和维护,容易遗漏,不易于维护。
  • 触发器:对数据的任何修改立即触发对复制列或派生列的相应修改。触发器是实时的,易于维护,是解决这类问题的最好的办法。

该系统应该采用触发器。

间题3(7分)
该系统采用了Redis 来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis 和 MySQL的数据实时同步问题。
(1)Redis 的数据类型包括String、Hash、 List、Set和zSet等,请说明实现当前热销药品排名的功能应该选择使用哪种数据类型。
热销药品排名适合用:ZSet

(2)请用200字以内的文字解释说明解决Redis和 MySQL数据实时同步问题的常见方案。

1.对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从数据库中查询,然后保存到缓存﹔更新缓存时,先更新数据库,再将缓存的设置过期(建议不要去更新缓存内容,直接设置缓存过期)。
2.对于并发程度较高的,可采用异步队列的方式同步,可采用 kafka等消息中间件处理消息生产和消费。
3.使用阿里的同步工具canal,canal实现方式是模拟
mysql slave和 master的同步机制,监控
DB bitlog 的日志更新来触发缓存的更新。
4.采用UDF自定义函数的方式,面对 mysql的API进行编程,利用触发器进行缓存同步。

20年

某企业委托软件公司开发一套包裹信息管理系统,以便于对该企业通过快递收发的包裹信息进行统一管理,在系统设计阶段,需要对不同快递信息的包裹单信息进行建模,其中,邮政包裹单如图:

系统架构案例分析( 数据库类型填空题)_缓存


【问题1】(13分)
请说明关系型数据库开发中,逻辑数据模型设计过程包含哪些任务?该包裹单的逻辑数据模型中应包含哪些实体?并给出每个实体的主键属性。

逻辑数据模型的主要任务是确定数据模型,将ER图转换成指定的数据模型,确定完整性约束,确定用户视图。

实体包括:收件人(用户代码)、寄件人(用户代码)、订单(单号)

【问题2】(6分)
请说明什么是超类实体?结合图中包裹单信息,试设计出一种超类实体,并给出完整的属性列表。

超累实体由多个实体共有属性组成,如寄件人实体和收件人实体可以组成用户实体,实体属性:用户代码、姓名、手机号、单位名称、详细地址、邮政编号。

【问题3】(6分)
请说明什么是派生属性?结合图中包裹单信息说明那个属性是派生属性。

派生属性由其他属性计算可得,图中派生属性:资费、总计


标签:缓存,架构,派生,填空题,用户,药品,查询,ID,数据库
From: https://blog.51cto.com/u_15125209/8080337

相关文章

  • 系统架构案例分析( java项目架构填空题)
    20年connectionpool数据库连接池viewlayer视图层Controllerlayer控制层businesslayer业务层19年18年17年16年SiteMesh是一个网页布局和装饰框架以及Web应用程序集成框架jQuery是一个快速、小巧且功能丰富的JavaScript库Struts2是一个基于MVC设计模式的Web应用程序......
  • 大数据平台架构搭建目录
    Centos7基础环境搭建(1)ESXI安装CentOS7(1)ESXI界面操作Centos7基础环境搭建(2)ESXI安装CentOS7(2)CentOS7(Linux)详细安装教程 ......
  • 计算图架构原理与算法分析
    计算图架构原理与算法分析这些节点和主题的图表,以及它们的连接方式,经常被称为计算图。计算图的可视化,可以帮助我们了解有哪些节点,以及它们如何互相沟通。ROS提供了一个工具,叫做rqt_graph,可以显示系统的计算图。计算图管道-RFCSOC硬件通常包括多个异构芯片组,例如XilinxUltra......
  • 读图数据库实战笔记02_图数据建模
    1. 概念1.1. 实体1.1.1. 通常用名词来表示1.1.2. 描述一个领域中的事物或者事物类型1.1.2.1. 汽车1.1.2.2. 用户1.1.2.3. 地理位置1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点”1.2. 关系1.2.1. 用动词(或动词短语)来表示1.2.2. 描述实体之间的互......
  • 基于CNN卷积神经网络的目标识别matlab仿真,数据库采用cifar-10
    1.算法运行效果图预览   2.算法运行软件版本MATLAB2022a 3.算法理论概述     CNN是一种专门用于图像处理的神经网络架构,其核心是卷积层、池化层和全连接层。CNN利用卷积操作和池化操作来自动学习图像中的特征,然后通过全连接层将这些特征映射到不同类别的标签......
  • django中正确创建数据库
    新手学习django创建数据库时,经常因为设置不当或者操作步骤不对而状况百出。这里梳理一下主要步骤和注意重点和大家共同学习。这里以sqlite数据库为例。首先,在创建完成项目和项目文件后,要将创建的文件添加到settings.py文件中的INSTALLED_APPS列表中,完成新建文件注册。第二步,编写mod......
  • 从Mysql架构看一条查询sql的执行过程
    1.通信协议我们的程序或者工具要操作数据库,第一步要做什么事情?跟数据库建立连接。首先,MySQL必须要运行一个服务,监听默认的3306端口。在我们开发系统跟第三方对接的时候,必须要弄清楚的有两件事。第一个就是通信协议,比如我们是用HTTP还是WebService还是TCP?第二个是消息格......
  • WGCLOUD体验 - 监测数据库的连通性
    WGCLOUD是一款运维监测平台,可以监测服务器、主机、数据库、服务接口、网络设备等资源我是一名DBA,日常工作中,主要关注数据库方面的监测情况,正好WGCLOUD有一个模块可以检测数据库是否能连通,如果发现不能连通,会立刻发送告警通知(可以用邮件、钉钉、wx等方式)如下WGCLOUD不但可以检测数据......
  • 数据库怎么分库的?怎么分表的?
    一、怎么分库垂直分库以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。水平分库以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。二、怎么分表水平分表:以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。垂直分表:以字段为......
  • 软考系列(系统架构师)- 2010年系统架构师软考案例分析考点
    试题一软件系统架构选择【问题1】(7分)在实际的软件项目开发中,采用恰当的架构风格是项目成功的保证。请用200字以内的文字说明什么是软件架构风格,并对主程序-子程序和管道-过滤器这两种架构风格的特点进行描述。软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描......