采用 Redis 建立在线药品销售系统的数据库

目录。
案例。
【说明】。
【问题1】(9分)。
【问题2】(9分)。
【问题3】(7 分)。
【答案】。
[问题1]答案。
[问题2]答案。
[问题3]答案。
相关推荐。
案例。
阅读以下关于数据库设计的描述,回答问题 1 至问题 3 。
【说明】。
某医药销售企业因业务发展需要建立在线药品销售系统除了传统的药品展示、订单、用户沟通和反馈功能外,该系统还为用户提供便捷的网络药品销售服务,还需要提供当前热销产品排名、评价分类管理等功能。
通过对需求的分析,初步决定在数据管理中使用关系数据库(MySQL)实现与数据库缓存Redis的混合架构。
标准化设计后,该系统的部分数据库表结构如下所示:
供应商(供应商 ID,供应商名称联系方式供应商地址;
药品(药品 ID,药品名称药品型号药品价格供应商 ID);
药品库存(药品 ID,#xff1当前库存数量b;
订单(订单号,药品 ID,供应商 ID,药物数量订单金额)。
【问题1】(9分)。
系统初步运行后,发现系统数据访问性能较差。经分析,刘工认为原数据库标准化设计后,关系表太细分了,#xff0c;导致大量多表相关查询,影响性能。例如,当用户查询商品信息时,#xff00c;药品信息、供应商信息、当前库存等信息需要同时显示。
所以,刘工认为,药物关系的结构可以通过反标准化设计来改变c;提高查询性能。修改后的药物关系结构为:。
药品(药品 ID,药品名称药品型号药品价格供应商 ID,供应商名称当前库存数量); 。
请用 200 文字内的文字描述了常见的反标准化设计方法,并说明用户在查询商品信息时应采用哪种反标准化设计方法。
【问题2】(9分)。
王工认为反标准化设计可以提高查询性能,但必然会导致数据的不一致性。请用200 反标准化设计中中文字内的文字描述c;三种常见的解决数据不一致问题的方法,并说明系统应该采用哪种方法。
【问题3】(7 分)。
该系统已被采用 Redis 实现某些特定功能(如当前热销药品排名等),同时,将药物关系数据放入内存,提高商品查询性能,但必然会导致Rediss 和 MySQL 数据实时同步问题。
(1)Redis Stringg的数据类型包括、Hash、List、Set 和ZSet 等待,请说明实现当前热销药品排名的功能应选择使用哪种数据类型。
(2)请用 解释200字以内的文字解释 Redis 和 MySQL 常见的数据实时同步问题方案。
【答案】。
[问题1]答案。
常见的反标准化设计方法:
(1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余来减少或避免查询时的连接操作。
(2)增加衍生列:可由本表或其他表中的数据计算在表中添加的列,减少查询过程中的连接操作,避免计算或使用集合函数。
(3)重组表:如果许多用户需要查看连接到两个表的结果数据,将这两个表重新组成一个表,以减少连接,提高性能。
(4)水平分割表:根据一列或多列数据的值,将数据放入多个独立的表中,主要用于表数据规模大、表中数据相对独立或需要存储在多个介质上的数据。
(5)垂直分割表:分割表格,将主键和部分放在一个表中,将主键和其他列放在另一个表中,查询时减少I/0次数。
用户使用增加冗余列的技术查询商品信息。
[问题2]答案。
针对反标准化数据不一致问题可用的解决方案包括:
1.触发器数据同步:对数据的任何修改都会立即触发复制列或衍生列的相应修改。触发器是实时,并且相应的处理逻辑只出现在一个地方,易于维护。一般来说,,是解决这类问题的好办法。
2.应用程序数据同步:所有涉及的表格必须在同一事务中添加、删除和更改。利用应用逻辑实现数据的完整性风险较大,因为同一逻辑必须在所有应用程序中使用和维护,容易遗漏特别是当需求发生变化时,#xff0c;不易维护。
3.批处理同步:指在修改复制列或衍生列并积累一定时间后,一批处理操作或存储过程修改复制或衍生列,这只能在对实时性要求不高的情况下使用。
本系统应采用 应用程序数据同步(或触发器数据同步),两个都行。
[问题3]答案。
版本1:
。(1)ZSet。
(2)读取数据时,先读取Redis中的key,如果您阅读并未失效,请返回key对应的数据;如果读不到,或者key失效,读取数据库,同步Redis;在编写数据时,首先编写数据库c;并设置与Redis对应的key故障或删除Redis中的数据。
版本2:
(1)ZSet。
(2)常见方案如下:
1.实时同步方案先检查缓存找不到再从DB查询#xff00c;并保存到缓存;更新缓存时,首先更新数据库,然后设置缓存过期。
2.同步异步队列方式可采用消息中间件处理。
3.数据同步通过数据库插件完成。
4.使用触发器缓存同步。
注:这个问题可以选择但只能拿低分,只有一个问题是肯定的,问题二、三要看缘分,整体可能只能得到 10-12 分左右。 。
相关推荐。
采用 Redis+数据库为一家互联网文化公司建立了一个在线社区平台——CSDN博客。浏览文章2.4k次点赞99次收藏90次。本文对某互联网文化发展公司采用Redis+进行了探讨;构建在线社区平台的数据库解决方案#xff0c;分析了Redis数据类型与平台功能的对应关系,例如,STRING用于评论计数器,LIST用于粉丝列表等。然后,RedisRDB和AOF的持久性方式从磁盘更新频率、数据安全性、数据一致性、重启性能和数据文件大小等方面进行了比较c;并解释了为什么选择RDB。最后,在Redis缓存管理中讨论了“定期删除+惰性删除策略失效及应对策略,包括各种内存淘汰机制。_(a)用户帖子的评论计数器;(b)支持粉丝列表功能;(c)支持标签管理;(d)支持共同好友。https://shuaici.blog.csdn.net/article/details/142211259。深入分析包裹信息管理系统:关系数据库逻辑数据模型设计,超级实体与派生属性讨论-CSDN博客。浏览阅读文章1.3k次点赞78次收藏69次。本文探讨了关系数据库开发中逻辑数据模型的设计过程,以包裹信息管理系统为例c;逻辑数据模型构建的任务详细分析c;包括构建系统上下文模型、添加关键属性、非关键属性和标准化处理。同时,引入超类实体的概念,对具有类似属性的实体进行抽象。另外,还讨论了衍生属性的识别和消除,提高数据库设计的优化程度。
https://shuaici.blog.csdn.net/article/details/142182019。2019年系统架构师案例分析试题4-CSDN博客。浏览阅读文章1.4k次点赞73次收藏48次。双写不一致的问题,写数据时,缓存写成功可能存在#xff0c;数据库写作失败#xff00c;或者相反,导致数据不一致。读写冲突的并发问题也可能发生在多个请求发生时。 (a)从数据库中读取数据或读取数据库; (b)更新缓存中 key 或更新缓存; (c)数据库; (d)删除缓存 key 或使缓存 key 缓存失效或更新(key 值)。_2019 年度系统架构师。
https://shuaici.blog.csdn.net/article/details/142059273。
分享让更多人看到
热门排行
- 1毕设成品 大数据共享单车数据分析与可视化(源码分享)
- 2Stable Diffusion F.1模型综合分析
- 3智能问答系统:未来引领人工智能对话
- 4【JavaScript】flat()及其相关方法的详细说明
- 5初级数据结构(一)——顺序表
- 6哪个迷幻游戏好? 精选好玩的迷幻游戏
- 7基于Web的购物网站设计与实现 毕业论文+任务书+答辩PPT+项目源码及数据库文件+演示视频
- 8小米汽车被重点观察博客伪造文件 王化:主动送人头给法务加业绩
- 9【stable diffusion教程】保姆级教程:从0到1使用Stable Diffusion XL训练LoRA模型
- 10大数据实验3: HDFS基础编程 (shell命令,JAVA API使用)