当前位置: 首页 > article >正文

系统架构设计师-案例分析-数据库系统设计

系统架构设计师-案例分析-数据库系统设计ORM技术数据库类型比较缓存技术RedisMemCache分布式锁规范化反规范化技术并发控制封锁协议分布式数据库数据分片数据仓库ORM技术ORMObject-Relational Mapping它在关系型数据库和对象之间作一个映射在具体操作数据库的时候就不需要再去和复杂的SQL语句打交道只需像操作对象一样即可。ORM把数据库映射成对象。如数据库的表——》类记录——》对象字段——》对象的属性ORM的优点使用ORM可以大大降低学习和开发成本程序员不用再写SQL来进行数据库操作减少程序的代码量降低由于SQL代码质量差而带来的影响。ORM的缺点不太容易处理复杂查询语句性能较直接用SQL差。数据库类型比较关系数据库模块与NoSQL模式的特征对比特征关系数据库模式NoSQL模式并发支持支持并发、效率低并发性能高存储与查询关系表方式存储、SQL查询海量数据存储、查询效率高扩展方式向上扩展向外扩展索引方式B树、哈希等键值索引应用领域面向通用领域特定应用领域数据一致性实时一致性弱一致性数据类型结构化数据非结构化事务高事务性弱事务性水平扩展弱强数据容量有限数据海量数据内存数据库与关系型数据库的对比主要数据模型读写性能存储容量可靠性内存数据库键-值对模式内存直接读写性能相对较高基于内存存储存储容量受限恢复机制复杂可靠性较低关系型数据库关系模式外村读写性能相对较低基于存盘存储存储容量大内建恢复机制可靠性较高关系型数据库与文件系统的对比设计难度数据冗余程度数据架构应用扩展性关系型数据库针对特定应用系统设计难度较大遵守数据库范式数据冗余较小以数据库为中心组织管理数据数据库独立于应用系统数据库系统接口标准化易于在不同应用之间共享数据文件系统针对特定应用系统设计难度较小可能在多个文件中复制相同的数据属性数据冗余较大以应用为中心管理数据符合特定应用系统要求的文件数据很难在不同的应用系统之间共享缓存技术RedisRedis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库并提供多种语言的API。Redis数据类型表数据类型存储的值说明应用场景string字符串、整数或浮点数基本类型可用于缓存层、计数器、共享用户Session、分布式锁、分布式系统的全局序列号等。list列表字符串列表可以模拟栈、队列等形式栈、队列、阻塞队列、最新列表等如回复评论、点赞、粉丝列表set无序集合每个值不能重复用户标签、好友/关注/粉丝/感兴趣的人集合、随机展示、黑/白名单、抽奖小程序等hash包括键值对的无序散列表key-value对的一种集合特别适合用于存储对象存储对象、电商购物车等zset有序集合每个元素有一个分数排名如推荐排名前10的热门帖子MemCacheMemCache是一个高性能的分布式的内存对象缓存系统用于动态Web应用以减轻数据库负担。MemCache通过在内存里维护一个统一的巨大的Hash表它能够用来存储各种格式的数据包括图像、视频、文件以及数据库检索的结果等。Redis与MemCache的差异数据类型方面。Redis和Memcache都是将数据存放在内存中都是内存数据库。他们都支持键值对数据类型。同时MemCache还可以用于缓存其他东西如图片、视频等Redis还支持List、Set、Hash等数据结构的存储内存管理机制方面。在Redis中并不是所有的数据都一直存储在内存中的这是和MemCache相比一个最大的区别。当物理内存用完时Redis可以将一些很久没用到的Value交换到磁盘。而在MamCache中数据都是缓存在内存中。数据持久化方面。Redis支持内存数据的持久化而且提供两种主要的持久化策略RDB快照和AOF日志。MemCache不支持数据持久化操作。Redis支持数据的备份即master-slave模式的数据备份。Memcache宕机后数据不可恢复Redis数据丢失后可以通过AOF恢复。Redis与MamCache能力比较特征RedisMemcache数据类型丰富的数据结构简单key/value结构持久化支持不支持分布式存储多种方式主从、哨兵、Cluster等客户端哈希分片/一致性哈希分片多线程支持不支持支持内存管理无私有内存池/内存池事务支持有限支持不支持缓存中的常见问题缓存击穿在高并发访问下被频繁访问的数据项在缓存中失效时大量的并发请求会直接涌入后端存储数据库上导致数据负载增大。缓存可以通过使用互斥锁、分布式锁、热点数据预加载等方式来避免雪崩是指缓存层整体失效导致大量请求涌入后端。雪崩问题可以通过设置不同的过期时间、使用多个独立的缓存集群等来避免。缓存穿透请求查询体格不存在于缓存和数据库中的键。缓存穿透可以使用布隆过滤器来判断请求的键是否有效从而减轻数据库压力。分布式锁分布式锁是是一种在分布式系统环境下通过多个节点对共享资源进行访问控制的一种同步机制。它的主要目的是防止多个节点同时操作同一份数据从而避免数据的不一致性。实现分布式锁的方式使用MySQL基于唯一索引使用ZooKeeper基于临时有序节点使用Redis基于setnx命令。解决死锁的策略设置锁的超时时间、使用Redlock算法、引入锁的等级、使用一致性哈希算法以及使用锁粒度更小的方式等。规范化不规范化带来的四大问题数据冗余数据被重复存储。修改异常修改导致数据不一致。插入异常删除异常删除了不该删除的数据。反规范化技术规范化设计后数据库设计者希望牺牲部分规范化来提高性能这种从规范化设计的回退方法称为反规范化技术。采用反规范化技术的益处降低连接操作的需求、降低外键和索引的数目还可能减少表的数目能够提高查询效率。可能带来的问题数据的重复存储浪费磁盘空间数据的完整性问题为了保障数据的一致性增加了数据维护的复杂性会降低修改速度增加冗余列在多个表中保留相同的列通过增加数据冗余减少或避免查询时的连接操作。增加派生列在表中增加可以由本表或其他表中数据计算生成的列减少查询的连接操作并避免计算或使用集合函数。重新组表如果许多用户需要查看两个表连接出来的结果数据则把这两个表重新组成一个表来减少连接而提高性能。水平分割表根据一列或多列数据的值把数据放到多个独立的表中主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。垂直分割表对表进行分割将主键与部分列放到一个表中主键与其他列放到另一个表中在查询时减少I/O次数。并发控制并发操作就是在多用户系统中可能出现多个事务同时操作同一数据的情况。并发操作会导致3种数据不一致问题。丢失更新当两个事务T1和T2读入同一数据做修改并发执行时T1把T2或T2把T1的修改结果覆盖掉造成了数据的丢失更新问题导致数据不一致。不可重复读事务T1读取了数据R事务T2读取并更新了数据R。当事务T1再读取数据R进行核对时得到的两次读取数据不一致。读脏数据事务T1更新了数据R事务T2读取了更新后的数据R事务T1由于某种原因被撤销进行了数据回滚数据R恢复原值事务T2读取了脏数据。造成以上3种数据不一致的主要原因就是事务的并发操作破坏了事务的隔离性。封锁协议并发控制的主要技术是封锁Lock技术。两种封锁协议基本封锁类型特点排他锁X锁事务T对数据A加X锁1只允许事务T读取、修改数据A2只有等该锁解除之后其他事务才能够对数据A加任何锁类型。共享锁S锁解决了X锁太严格不允许其他事务并发读的问题。事务T对数据A加S锁则1只允许事务T读取数据A但不能够修改2可允许其他事务对其加S锁但不允许加X锁。加锁遵循一个基本原则如果该事务只读数据就只加读锁如果该事务要写数据就加写锁。分布式数据库分布式数据库是由一组数据组成的这组数据分布在计算机网络的不同计算机上网络中的每个节点具有独立处理的能力它可以执行局部应用同时每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库技术的基础上发展起来的。特点数据独立性。集中与自治共享结合的控制结构。适当增加数据冗余度全局一致性、可串行性和可恢复性分布式数据库的优点分布式数据库可以解决企业部门分散而数据需要相互联系的问题。如果企业需要增加新的相对自主的部门来扩充机构则分布式数据库可以在对当前机构影响最小的情况下进行扩充分布式数据库可以满足均衡负载的需要当企业已存在几个数据库系统而且实现全局应用的必要性增加时就可以由这些数据库自上而下构成分布式数据库系统相对规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低但由于其故障的影响仅限于局部数据应用因此就整个系统来说它的可靠性是比较高的。数据分片数据分片将数据库整体逻辑结构分解为合适的逻辑单位然后由分布模式来定义片段及其副本在各场地的物理分布其主要目的是提高访问的局部性有利于按照用户的需求组织数据的分布和控制数据的冗余度。水平分片。水平分片将一个全局关系中元组分裂成多个子集每个子集为一个片段。分片条件由关系中的属性值表示。对于水平分片重构全局关系可通过关系的并操作实现。垂直分片。垂直分片将一个全局关系按属性分裂成多个子集应满足不相交性。对于垂直分片重构全局关系可通过连接运算实现。导出分片。导出分片又称为导出水平分片即水平分片的条件不是本关系属性的条件而是其他关系属性的条件。混合分片。混合分片就是在分片中采用水平分片和垂直分片两种形式的混合。分布透明性是指用户不必关心数据的逻辑分片不必关心数据存储的物理位置分配细节也不必关心局部场地上数据库的数据模型。分片透明性是分布透明性的最高层次它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。位置透明。位置透明是指用户或应用程序应当了解分片情况但不必了解片段的存储场地。局部数据模型透明性。局部数据模型透明性是指用户或应用程序应当了解分片及各分片存储的场地但不必了解局部场地上使用的是何种数据模型。数据仓库数据仓库集成是把多种来源的数据集中在一起建立数据仓库所有数据都驻留在单个数据库服务器上配置大型处理器和存储容量。数据仓库主要用于决策支持在数据处理过程中强调分析。其特点是集成的数据、面向主题、数据相对稳定、包含历史信息数据仓库的结构通常包含四个层次数据源是数据仓库系统的基础是整个系统的数据源泉数据的存储与管理是整个数据仓库系统的核心OLAP联机分析处理服务器对分析需要的数据进行有效集成按多维模型组织以便进行多角度、多层次的分析并发现趋势。前端工具主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。

相关文章:

系统架构设计师-案例分析-数据库系统设计

系统架构设计师-案例分析-数据库系统设计ORM技术数据库类型比较缓存技术RedisMemCache分布式锁规范化反规范化技术并发控制封锁协议分布式数据库数据分片数据仓库ORM技术 ORM(Object-Relational Mapping),它在关系型数据库和对象之间作一个映…...

桌面高颜值时钟工具,支持置顶鼠标穿透

软件介绍 今天要说的这款工具叫WithClock,它是一个时钟工具。这款工具的设计特别简洁,看着很舒服,没什么多余的东西,颜值也挺高。 功能操作 它支持鼠标穿透,你只需要在时钟上点右键,选择“置顶”&#xf…...

在 SAP 系统中,利润中心(Profit Center)和业务范围(Business Area)都是用于内部管理报告的组织单元,但它们在设计理念、功能和应用上存在显著区别。简单来说,利润中心是更现代

在 SAP 系统中,利润中心(Profit Center)和业务范围(Business Area)都是用于内部管理报告的组织单元,但它们在设计理念、功能和应用上存在显著区别。简单来说,利润中心是更现代、更灵活、功能更强…...

springboot+vue基于web的蛋糕商城论坛交流系统的设计系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块分析核心功能模块特色功能实现技术难点解决方案性能优化措施项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块分析 …...

利润中心(Profit Center)和段(Segment)在 SAP 中关系非常紧密,但它们的设计目的和应用场景有本质区别

利润中心(Profit Center)和段(Segment)在 SAP 中关系非常紧密,但它们的设计目的和应用场景有本质区别。简单来说,段(Segment)是利润中心的一个上级归类。它们之间通常是“一对多”的…...

springboot+vue基于web的电脑配件商城的设计系统

目录 同行可拿货,招校园代理 ,本人源头供货商系统功能模块划分技术架构设计要点特色功能实现路径安全防护措施扩展性考虑 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 同行可拿货,招校园代理 ,本人源头供货商 系统功能模块…...

2026春SDU软件创新实训第四周个人工作总结

第四周我做的工作总结如下: 从原始网页爬取科一科四题库 书接上期,我们找到了两个网页的题库(驾照吧(https://www.jiazhaoba.com/tiba)元贝驾考(https://www.ybjk.com/tiku))&…...

告别osgQt!用osgQOpenGLWidget在Qt6中轻松加载OsgEarth三维地球(附完整代码)

现代Qt6与OsgEarth集成实战:osgQOpenGLWidget替代方案详解 如果你正在使用Qt6开发三维地理可视化应用,却苦于找不到合适的OpenSceneGraph(OSG)集成方案,这篇文章将为你提供一条清晰的迁移路径。随着Qt和OSG版本的迭代,传统的osgQt…...

从CMIP6到SCI论文:气候降尺度全流程实战(含偏差校正与未来预估)-GCM数据降尺度、泰勒图评估及XGBoost机器学习建模指南

做水文气象、气候学、地理遥感、生态环境等领域的科研人&#xff0c;是不是都逃不过这些噩梦&#xff1a;尺度鸿沟难跨越&#xff1a;GCM 粗网格&#xff08;>100km&#xff09;和流域 / 城市精细尺度&#xff08;<10km&#xff09;不匹配&#xff0c;动力降尺度成本太高…...

Visio高效安装与激活全攻略:从零开始到成功运行

1. Visio安装前的准备工作 第一次安装Visio的朋友们&#xff0c;我强烈建议先做好这些准备工作。我自己在帮同事安装Visio时&#xff0c;经常遇到因为前期准备不足导致安装失败的情况。首先&#xff0c;检查你的电脑是否已经安装了其他版本的Office软件。如果之前安装过Office …...

2026.3.31 TRO成功和解案例 案件号:25-cv-25717,1000美金和解Palmer律所3000美金索赔,沃尔玛店铺全额解冻!

TRO经典案例案件概述案件号&#xff1a;25-cv-25717&#xff08;点击查看案件详情&#xff09;案件时间&#xff1a;2025-12-8收到TRO时间&#xff1a;2025-12-20销售平台&#xff1a;沃尔玛冻结金额&#xff1a;$209美金Palmer律所索赔额&#xff1a;$3,000美金侵权产品销售量…...

从v4l2-ctl命令到media拓扑:手把手教你调试RK3568上的OV8858摄像头图像

RK3568平台OV8858摄像头深度调试实战&#xff1a;从硬件链路到图像优化的全流程解析 当你在RK3568平台上调试OV8858摄像头时&#xff0c;是否遇到过这样的场景&#xff1a;设备树配置看似正确&#xff0c;但摄像头输出的图像却出现花屏、颜色异常或干脆没有信号&#xff1f;作为…...

CHORD-X构建自动化运维报告系统:服务器日志分析与日报生成

CHORD-X构建自动化运维报告系统&#xff1a;服务器日志分析与日报生成 最近和几个运维朋友聊天&#xff0c;发现他们每天都要花一两个小时写日报、周报。服务器状态、错误日志、性能趋势……这些数据分散在各个系统里&#xff0c;手动整理起来特别费劲。关键是&#xff0c;这种…...

文墨共鸣大模型入门指南:Ubuntu 20.04系统下的保姆级部署教程

文墨共鸣大模型入门指南&#xff1a;Ubuntu 20.04系统下的保姆级部署教程 想试试最近挺火的文墨共鸣大模型&#xff0c;但被复杂的部署步骤劝退了&#xff1f;别担心&#xff0c;这篇教程就是为你准备的。咱们今天不谈复杂的原理&#xff0c;就手把手教你&#xff0c;如何在Ub…...

Zotero中文文献管理终极指南:茉莉花插件一键解决三大痛点

Zotero中文文献管理终极指南&#xff1a;茉莉花插件一键解决三大痛点 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 如果你正在使…...

3个关键步骤:在电视盒子上完美运行Armbian系统的终极指南

3个关键步骤&#xff1a;在电视盒子上完美运行Armbian系统的终极指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk358…...

BUUCTF-[HITCON 2017]SSRFme

代码分析<?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) { //HTTP_X_FORWARDED_FOR可以获取客户端真正ip地址&#xff0c;和各个代理IP地址$http_x_headers explode(,, $_SERVER[HTTP_X_FORWARDED_FOR]); //拆分字符串&#xff0c;以&#xff0c;分割$_SERVER[REMOTE…...

数据宝藏库:Awesome Public Datasets完整入门指南

数据宝藏库&#xff1a;Awesome Public Datasets完整入门指南 【免费下载链接】awesome-public-datasets A topic-centric list of HQ open datasets. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-public-datasets 你是否曾经为了寻找高质量的数据集而烦…...

别再死磕理论了!用Python+Pytorch实战多示例学习(MIL)图像分类,附完整代码

用PythonPytorch实战多示例学习图像分类&#xff1a;从数据到模型的完整指南 当你第一次听说"多示例学习"&#xff08;Multiple Instance Learning, MIL&#xff09;时&#xff0c;是不是也被那些抽象的理论弄得一头雾水&#xff1f;作为计算机视觉领域的重要技术&am…...

避开这5个坑!用MediaRecorder+Vue3实现高兼容性语音输入

Vue3MediaRecorder实战&#xff1a;5个关键技巧打造高兼容语音输入方案 在移动优先的时代&#xff0c;语音输入已成为提升用户体验的重要交互方式。但当你兴奋地在Vue3项目中集成MediaRecorder API时&#xff0c;可能会遇到iOS设备上的静默失败、Android机型上的格式兼容性问题…...

Claude技能开发实战指南:从入门到精通的认知升级路径

Claude技能开发实战指南&#xff1a;从入门到精通的认知升级路径 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-…...

SQL 基础及 MySQL DBA 运维实战 - 6:Mycat代理技术

MySQL DBA运维实战&#xff1a;集群与代理技术深度解析 引言 在现代互联网应用中&#xff0c;数据库的高可用性、可扩展性和性能是企业级应用的核心需求。随着业务量的增长&#xff0c;单一数据库服务器往往无法满足需求&#xff0c;此时数据库集群和代理技术成为解决这些问题…...

实战应用:使用快马平台为vmware17部署生成企业级健康检查与配置方案

在实际的企业IT环境中&#xff0c;部署VMware vSphere 17&#xff08;以下简称VMware 17&#xff09;这类虚拟化平台往往不是简单的安装过程&#xff0c;而是需要综合考虑硬件兼容性、系统配置、安全策略等多方面因素。为了确保部署过程的顺利和后续运行的稳定&#xff0c;我们…...

AI赋能开发:让快马平台智能理解并生成产区标准图交互应用

AI赋能开发&#xff1a;让快马平台智能理解并生成产区标准图交互应用 最近在做一个农产品产区标准查询系统的项目&#xff0c;发现用传统方式开发这类需求特别费时。比如要处理用户自然语言查询、动态生成地图、实现智能推荐逻辑&#xff0c;光写基础代码就得花好几天。后来尝…...

新手必看:在快马平台学习排列组合公式的代码实现

新手必看&#xff1a;在快马平台学习排列组合公式的代码实现 作为一个编程新手&#xff0c;当我第一次接触排列组合公式时&#xff0c;那些数学符号和递归逻辑让我一头雾水。直到在InsCode(快马)平台上找到了带详细注释的示例代码&#xff0c;才真正理解了Cn和An公式的实现原理…...

赋能音乐自由:Unlock Music技术解密与全场景应用指南

赋能音乐自由&#xff1a;Unlock Music技术解密与全场景应用指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https:…...

告别重复造轮子:用快马AI一键生成高复用性imToken集成代码模块

告别重复造轮子&#xff1a;用快马AI一键生成高复用性imToken集成代码模块 开发涉及钱包集成的DApp时&#xff0c;最让人头疼的就是那些重复性的基础代码。每次新项目都要重新写一遍连接钱包、处理授权、监听网络切换的逻辑&#xff0c;不仅浪费时间&#xff0c;还容易引入安全…...

终极窗口尺寸编辑器:SRWE让你的应用程序窗口自由伸缩

终极窗口尺寸编辑器&#xff1a;SRWE让你的应用程序窗口自由伸缩 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE Simple Runtime Window Editor (SRWE) 是一款革命性的开源工具&#xff0c;它能让你实时调整任何…...

音乐标签编辑器:让本地音乐元数据管理效率提升90%的开源工具

音乐标签编辑器&#xff1a;让本地音乐元数据管理效率提升90%的开源工具 【免费下载链接】music-tag-web 音乐标签编辑器&#xff0c;可编辑本地音乐文件的元数据&#xff08;Editable local music file metadata.&#xff09; 项目地址: https://gitcode.com/gh_mirrors/mu/…...

FanControl完全指南:5分钟掌握Windows风扇智能控制

FanControl完全指南&#xff1a;5分钟掌握Windows风扇智能控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...