采用 Redis+数据库为建立线上药品销售系统

目录

案例

【说明】

【问题1】(9分)

【问题2】(9分)

【问题3】(7 分)

【答案】

【问题1】答案

【问题2】答案

【问题3】答案

相关推荐


案例

        阅读以下关于数据库设计的叙述,回答问题 1 至问题 3 。

【说明】

        某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。
        通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存Redis)的混合架构实现。
        经过规范化设计之后,该系统的部分数据库表结构如下所示:
        供应商(供应商 ID,供应商名称,联系方式,供应商地址);
        药品(药品 ID,药品名称,药品型号,药品价格,供应商 ID);
        药品库存(药品 ID,当前库存数量);
        订单(订单号码,药品 ID,供应商 ID,药品数量,订单金额)。

【问题1】(9分)

        在系统初步运行后,发现系统数据访问性能较差。经过分析,刘工认为原来数据库规范化设计后,关系表过于细分,造成了大量的多表关联查询,影响了性能。例如当用户查询商品信息时,需要同时显示该药品的信息、供应商的信息、当前库存等信息。
        为此,刘工认为可以采用反规范化设计来改造药品关系的结构,以提高查询性能。修改后的药品关系结构为:
        药品(药品 ID,药品名称,药品型号,药品价格,供应商 ID,供应商名称,当前库存数量);        
        请用 200 字以内的文字说明常见的反规范化设计方法,并说明用户查询商品信息应该采用哪种反规范化设计方法。

【问题2】(9分)

        王工认为,反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。请用200 字以内的文字说明在反规范化设计中,解决数据不一致性问题的三种常见方法,并说明该系统应该采用哪种方法。

【问题3】(7 分)

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

【答案】

【问题1】答案

        常见的反规范化设计方法:

        (1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。
        (2)增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。
        (3)重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
        (4)水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
        (5)垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少I/0次数。

        用户查询商品信息采用的是增加冗余列的技术。

【问题2】答案

        针对反规范化数据不一致问题,可采用的解决方案包括:
        1.触发器数据同步:对数据的任何修改立即触发对复制列或派生列的相应修改。触发器是实时的,而且相应的处理逻辑只在一个地方出现,易于维护。一般来说,是解决这类问题比较好的办法。
        2.应用程序数据同步:要求必须在同一事务中对所有涉及的表进行增、删、改操作。用应用逻辑来实现数据的完整性风险较大,因为同一逻辑必须在所有的应用中使用和维护,容易遗漏,特别是在需求变化时,不易于维护。
        3.批处理同步:指对复制列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对复制或派生列进行修改,这只能在对实时性要求不高的情况下使用。
        本系统应该采用 应用程序数据同步(或者触发器数据同步方式),两个都行。

【问题3】答案

        版本一:

        (1)ZSet
        (2)读数据时先读取Redis中的key,如读到且未失效则返回key对应的数据;如读不到或key失效,则读取数据库,并同步Redis;写数据时先写数据库,并设置Redis对应的key失效或删除Redis中的数据。

        版本二:

        (1)ZSet

        (2)常见方案如下:
        1.实时同步方案,先查缓存,查不到再从DB查询,并保存到缓存;更新缓存时先更新数据库,再将缓存设置过期。
        2.异步队列方式同步,可采用消息中间件处理。

        3.通过数据库插件完成数据同步。
        4.利用触发器进行缓存同步。

        注:本题可以选,不过只能拿低分,只有问题一是有把握的,问题二、三就要看缘分,整体可能只能得到 10-12 分左右。        

相关推荐

采用 Redis+数据库为某互联网文化公司建立网上社区平台-CSDN博客文章浏览阅读2.4k次,点赞99次,收藏90次。本文讨论了某互联网文化发展公司采用Redis+数据库解决方案构建网上社区平台,分析了Redis数据类型与平台功能的对应关系,如STRING用于评论计数器,LIST用于粉丝列表等。接着,从磁盘更新频率、数据安全、数据一致性、重启性能和数据文件大小等方面比较了Redis的RDB和AOF持久化方式,并解释了为何选择RDB。最后,探讨了Redis缓存管理中的“定期删除+惰性删除”策略失效情况及应对策略,包括多种内存淘汰机制。_(a)用户帖子的评论计数器;(b)支持粉丝列表功能;(c)支持标签管理;(d)支持共同好友https://shuaici.blog.csdn.net/article/details/142211259深入解析包裹信息管理系统:关系型数据库逻辑数据模型设计、超类实体与派生属性探讨-CSDN博客文章浏览阅读1.3k次,点赞78次,收藏69次。本文探讨了关系型数据库开发中逻辑数据模型的设计过程,以包裹信息管理系统为例,详细分析了逻辑数据模型构建的任务,包括构建系统上下文模型、添加主键属性、非主键属性及规范化处理。同时,引入了超类实体的概念,用于抽象表示相似属性的实体。此外,还讨论了派生属性的识别与消除,以提升数据库设计的优化程度。https://shuaici.blog.csdn.net/article/details/1421820192019年系统架构师案例分析试题四-CSDN博客文章浏览阅读1.4k次,点赞73次,收藏48次。存在双写不一致问题,在写数据时,可能存在缓存写成功,数据库写失败,或者反之,从而造成数据不一致。当多个请求发生时也可能产生读写冲突的并发问题。 (a)从数据库中读取数据或读数据库; (b)更新缓存中 key 值或更新缓存; (c)数据库; (d)删除缓存 key 或使缓存 key 失效或更新缓存(key 值)。_2019 年系统架构师https://shuaici.blog.csdn.net/article/details/142059273

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/899508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows图形界面(GUI)-QT-C/C++ - QT基本概念 - 安装配置 - QT Creator

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 QT 基本概念 QT 安装配置 QT Creator 界面布局 快捷操作 QT 基本概念 QT 简介 QT是一个跨平台的C图形用户界面应用程序开发框架。 QT支持多种操作系统,包括Windows、Lin…

2024年必收藏!最全 禅道 项目管理软件各版本安装部署全攻略

一、禅道简介 1. 禅道是什么?功能强大的项目管理软件。 禅道是一款专业的国产开源研发项目管理软件,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,完整覆盖了研发项目管理的核心流程。 管理思想基于国际流行的敏捷…

Ovis: 多模态大语言模型的结构化嵌入对齐

论文题目:Ovis: Structural Embedding Alignment for Multimodal Large Language Model 论文地址:https://arxiv.org/pdf/2405.20797 github地址:https://github.com/AIDC-AI/Ovis/?tabreadme-ov-file 今天,我将分享一项重要的研…

咸鱼自动发货 免费无需授权

下载:(两个都可以下,自己选择) https://pan.quark.cn/s/1e3039e322ad https://pan.xunlei.com/s/VO9ww89ZNkEg_Fq1wRr-fk9ZA1?pwd8x9s# 不是闲管家 闲鱼自动发货(PC端) 暂不支持密,免费使…

论文阅读与写作入门

文章目录 1.阅读第一篇论文(1)论文结构(2)目标 2.使用GPT辅助论文的阅读与写作3.专有名词(1)架构(2)网络(3)机器学习 4.文献翻译软件5.如何判断(你自己的)研究工作的价值or贡献【论文精读李沐】6.经典论文(1)AlexNet 2012(2)FCN 全卷积 2014(3)ResNet:残差学习&…

【Spring篇】Spring的Aop详解

🧸安清h:个人主页 🎥个人专栏:【计算机网络】【Mybatis篇】【Spring篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯初始Sprig AOP及…

通过运行窗口呼出Windows功能的快捷命令集合

平时使用电脑需要快速调出Windows的一些功能设置,你们是怎么样操作的呢?今天给大家归集一些通过运行窗口快速调出Windows功能的快捷命令,供朋友们参考。示例如下图,各个功能命令集合见表格.

Python实现贪吃蛇大作战

初始版本 初始版本,只存在基本数据结构——双向队列。 游戏思路 贪吃蛇通过不断得吃食物来增长自身,如果贪吃蛇碰到边界或者自身则游戏失败。 食物是绿色矩形来模拟,坐标为随机数生成,定义一个蛇长变量,判断蛇头坐标和…

需求分析基础指南:从零开始理解需求分析

目录 从零开始理解需求分析什么是需求分析?需求分析的目标需求分析的基本原则需求分析的各个阶段需求分析的常用方法和工具编写需求文档总结 从零开始理解需求分析 需求分析是软件开发过程中不可或缺的一环,它帮助我们明确用户的需求,确保最…

养殖场大型全自动饲料颗粒加工机械设备

随着养殖业的快速发展,对饲料加工设备的需求也日益增长。全自动饲料颗粒机作为现代养殖场的重要制粒设备,其自动化、高效化和智能化特点,不仅提高了饲料生产效率,还保障了饲料质量,为养殖业的可持续发展提供了有力支持…

关于jmeter中没有jp@gc - response times over time

1、问题如下: jmeter没有我们要使用的插件 2、解决方法: 选择下面文件,点击应用; 3、问题解决 ps:谢谢观看!!!

【AIGC】AI如何匹配RAG知识库:混合检索

混合搜索 引言单检索的局限性单检索例子 混合检索拆解实现完整代码 总结 引言 RAG作为减少模型幻觉和让模型分析、回答私域相关知识最简单高效的方式,我们除了使用之外可以尝试了解其是如何实现的。在实现RAG的过程中,最重要的是保证召回的知识的准确性…

红日靶场(三)1、环境介绍及环境搭建

1、靶场介绍 红日靶场03是一个用于安全测试和渗透测试的虚拟化环境,可以帮助用户通过模拟攻击和防御场景来提升网络安全技能。该靶场包含了多个虚拟机和网络配置,用户可以在其中进行各种安全测试活动,如信息收集、漏洞利用、权限提升等。 2…

npm install node-sass安装失败

需求:搭建前端开发环境时,npm install报错,错误提示安装node_modules时,node-sass依赖包安装失败,网上找了好久解决方法,大家提示采用淘宝源等方式安装,都失败了了,尝试了很久终于找…

BUUCTF 之Basic 1(BUU BRUTE 11)

今天我们继续BUUCTF之Basic 1的第二关卡。 1、老规矩,进入地址BUUCTF在线评测 (buuoj.cn)打开对应靶场进行启动,会看一个页面,就代表启动成功。 首先分析一下,看到这个页面我们就可以得出是爆破的题目,常用于登陆&am…

1208. 尽可能使字符串相等

Problem: 1208. 尽可能使字符串相等 题目描述 给定两个相同长度的字符串 s 和 t,将字符串 s 转换为字符串 t 需要消耗开销,开销是两个字符的 ASCII 码差值的绝对值。还有一个最大预算 maxCost,我们需要在这个预算范围内,找到 s 中…

基于知识图谱的诗词推荐系统

你是否曾经想在浩如烟海的古代诗词中找到属于自己的那几首“知己”?现在,借助人工智能与知识图谱,古典诗词不再是玄之又玄的文本,而是变成了让你“个性化定制”的文化体验!我们带来的这款基于知识图谱的诗词推荐系统&a…

我准备写一份Stable Diffusion入门指南-part1

我准备写个SD自学指南,当然也是第一次写,可能有点凌乱,后续我会持续更新不断优化,我是生产队的驴,欢迎监督。 Stable Diffusion WebUI 入门指南 Stable Diffusion WebUI 是一款基于 Stable Diffusion 模型的用户界面…

SIP 业务举例之 Transfer - Unattended(无人值守呼叫转移)

目录 1. Transfer - Unattended 简介 2. IP Telephony 特性 3. RFC5359 的 Transfer - Unattended 信令流程 无人值守呼叫转移 隐式订阅 Bob 通知 Alice 呼叫转移完成 - NOTIFY 隐含的订阅和显示的订阅 4. Transfer - Unattended 过程总结 博主wx:yuanlai45_csdn 博主…