




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统设计漫谈讲师:童家旺,阿里集团数据库架构师主题数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析(Normalization)数据库的扩展性浅析常见数据库系统回顾数据库基本问题调查大家都使用过哪些数据库?哪些内容是数据库系统的关键点?常见的数据存储传统的数据库系统OracleDB2、SQL ServerMySQL、PosgreSQL分布式数据库Google Spanner & BigTable & MegaStoreOceanBase、Hbase缓存服务器 KeyValue StoreTairMemcacheDRedis数据库的主要特性ACID 原子性(Atomi
2、city)完整性(Consistency)隔离性 (Isolation)持久性 (Durability)Relation SQLStructured Query Language (即SQL)A Relational Model of Data for Large Shared Data Banks (By Edgar Codd)RDBMS之前的数据库的问题不支持数据独立性数据库与应用系统之间的强耦合应用系统的复杂度应用系统本身的规模较小(性价比?)关系数据库的主要业务场景Billing (记账类业务,电信、银行)Booking (订票类业务,航空)Inventory (库存管理,零售)这些业
3、务的共同特征是什么啊?关系数据库的关系来自哪里?这是关系的一个来源另一个来源是NormalizationACID的基础概念Transaction的概念借自Contract Law一手交钱、一手交货(Atomicity)不会出现库存为负,也不会出现资金为负的情况(Consistency)可同时与多人进行交易(Isolation)离柜概不负责(Durability)Atomicity要么全部成功,要么全不成功Consistency写入数据库的数据必须满足所有定义的约束规则(主键、唯一键、外键等约束)Isolation确保并发执行的事务就如同串行执行的事务一样,保证系统状态(state)的一致性。D
4、urability一旦提交,哪怕出现掉电、Crash也不会丢数据几个基础概念Write-Ahead LogRedo LogicalPhysicalPhysiologicalUndo事务槽事务标识SCN 系统变更统一时间戳(逻辑时钟)如何实现原子性一个简单购物场景A卖一件衣服给BA的衣服库存-1A的资金+NB的衣服库存+1B的资金-N如何实现原子性(2)事务槽为变更入口,单一入口(原子)每个变更的记录都包含事务槽信息数据库中如何保证C通过Read Dirty与锁来解决PK/UK通过Ref检查来解决FK的问题(需要Index)通过PreCommit trigger来做Null以及Check数据库中
5、如何保证I锁控制不同粒度的锁(表级、块级、记录级)不同维度的锁(数据相关锁,内存相关锁)MVCCSnapshot IsolationBlock Image + SCN + Undo Image 判断差别在于读取哪个时间点的Snapshot数据库中如何保证DLog before DataLGWR before DBWnFlush Log on CommitDurability On CommitCheckpoint Before Redo Log File ReuseACID的代价不同的Isolation对应不同的代价SerialiazabilityRead Committed (Through
6、 Snapshot)Read Dirty ? (没有并发控制)不同的Durability级别Flush on CommitFlush on Timeout ( Time Range)Flush on Batch ( commits count?)主题数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析(Normalization)数据库的扩展性浅析常见数据库系统回顾Normalization先做个小游戏用笔记录下学员名单、讲师名称、讲师简介、课程名称、课程简介调整下讲师(童家旺金光丁)以及对应的讲师简介再次调整下课程 (数据库概论分布式数据库原理)简介Normalizatio
7、n解决的问题更新一个源头不会出现异常每份数据只有一个源头如何保证多份数据的一致性?一份数据有多少个源头?同一份数据被重复了多少次?对应的存储空间?为了存储耗费的其它资源?Normalization带来的问题表之间的依赖(关系依赖,耦合)表关联的成本(关联开销,可能的IO开销)系统扩展的复杂度(解耦合)如何权衡Normalization尽量不要对静态数据做Normalization除非你希望节约存储空间考虑范式化 Vs 反范式化的投入产出为什么很多IT新人喜欢Normalization那是因为他们的老师告诉他们需要Ali的实际情况适度的使用关键在于判断业务之间的耦合性主题数据库基本问题调查关系数
8、据库的基本背景ACID基本概念解析范式问题解析(Normalization)数据库的扩展性浅析常见数据库系统回顾一个小实验如何将2个人从这里送到杨浦?如何将5个人从这里送到杨浦?如何将50个人从这里送到杨浦?如何将500个人从这里送到杨浦?如何将5000个人从这里送到杨浦?如何将50000个人从这里送到杨浦?解决扩展性的根本途径数据库的扩展性问题做数据库架构、系统架构与上图差别在于:如何满足如下的要求检索问题Relation并发问题IsolationConsistency(UK)一致性问题Isolation速度问题Performance,Durability+Isolation数据库检索问题如
9、何从班级的联系方式中找到XX的电话号码?如何从公司的联系方式中找到XX的电话号码?如何从移动公司的系统中找到XX的电话号码?如何从移动、电信、联通的数据库找到XX的电话号码?数据库的并发问题同时有多个人要购买手机号?如何保证大家购买的不是同一个手机号?如何支持几百、几千、几万人同时购买手机号?数据库的一致性问题如何保证大家看到的库存有效?如何保证读取的信息是准确的?库存的变更如何实时的提供给每一个人看到?数据库的性能问题?如何快速的让1个人买到号码?有多快?如何快速的让10个人买到号码?要不要排队?一个服务员?一个营业厅?Performance Vs Scalability1.当只有一个人访问
10、时,速度如何?2.当有很多人访问时,速度如何?大家都同样快?如果满足1表示Performance很好?如何能较好的满足2表示系统有较好的Scalability一致性问题再探讨新浪发的微薄需要强一致吗?ITPUB的论坛需要强一致吗?当当的图书描述信息需要强一致吗?12306的火车票库存信息需要强一致吗?支付宝/财付通的账户余额需要强一致吗?中行信用卡/招商银行卡的账户信息需要强一致吗?数据状态机的分类何谓状态机简单的理解是,计算机中会发生变化的数据都是状态机,这个数据的值不同可能会带来不同的后果。分类:按照三个维度:时间、信息含金量、变更频率持续时间信息含金量变更频繁度例子瞬时高少Shoppin
11、g Card Session(分)瞬时低少Login Cookie(分)中等时长高少Ecommerce Billing(天)中等时长中少Product Catalog(年)中等时长高多Flight/Train Inventory (月)无限时长中少User Profile(年)无限时长高多Bank Account Balance(年))Cache的基本概念Cache的定义Caching is a temp location where I store data in (data that I need it frequently) as the original data is expensi
12、ve to be fetched, so I can retrieve it faster. 台湾的翻译为“快取”,大陆为“缓存”Cache的特征有Backend的内容处理的效率比走Backend要快与Backend的内容之间可能会不一致Cache的本质Through Relaxing Consistency to Improve ScalabilityCache的设计考虑缓存的一致性维护问题数据的具体读写比商品信息?库存信息?用户信息?账户余额?Backend数据变更频率业务对一致性的要求使用何种缓存策略Write Through Vs Write Back Vs Write Back wi
13、th CompensateMemcached是Cache吗?It Depends如果内容有Backend?是!如果内容没有Backend?否!案例新浪微博的计数器?淘宝、当当的记录在缓存中的购物车信息?主题数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析(Normalization)数据库的扩展性浅析常见数据库系统回顾数据存储的基本需求存储数据读写的性能(Hash查找、B*Tree查找)数据的可靠性(Durability)支持如何避免单点故障带来的数据丢失(数据保护)是否支持多维查询(基于关系的查询)对Replication的支持如何?支撑Scalability的复杂度M
14、ySQL (Innodb) & Oracle传统的关系数据库支持多维索引Oracle的支持较好MySQL要到5.6才比较好的支持Index内Filter较好的支持数据的一致性成熟的MVCC设计成熟的Replication设计简单查询的效率略低于MemcachedB*Tree的成本MVCC带来的额外成本MySQL & Oracle在进行数据库扩展时只能依赖于应用层的拆分(即:Sharding)目前Sharding支持由TDDL实现维护成本会相对较高维护复杂度也比较高软件的成本Oracle为商业软件,有License费用MySQL为开源软件,没有软件本身的费用Tair简介Tair主要技术点主要定位
15、为分布式Key/Value 缓存Data Server的具体实现Memory Engine的实现类似于MemCachedConfig Server的实现基于Consistent Hash实现集群的数据分布基于此做Replication做节点的故障检测与剔除新加入节点时需要基于CHash做节点RebalanceHashmapSlab ListTair mdb内存结构Consistent Hash简介OceanBase系统架构44主控服务器RootServer:主+备,数据定位/全局Schema/机器管理动态数据服务器UpdateServer:主+备,实时修改(内存+SSD)静态数据服务器Chun
16、kServer:多台,静态数据存储 (磁盘或SSD)动态数据不断地被合并到静态ChunkServer中实现分布式存储JavaClientChunkServerChunkServerChunkServerChunkServerRootServer/ UpdateServer(主)RootServer/ UpdateServer(备)OceanBase简介UpdateServer负责所有的写入本质上是一个读写分离的技术对实时更新数据的查询可以在US的备库进行ChunkServer理论上可以无限扩展查询操作需要合并US+CS的结果Root Server的职责类似于Tair的Config Server相对于Tair的优势可以进行Full Table扫描可以进行范围数据查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB36-T1775-2023-规模化蛋鸭养殖场疫病综合防控技术规范-江西省
- DB36-T1554-2021-铁皮石斛林下生态栽培技术规程-江西省
- 厨房色标管理课件
- 交通安全培训资料
- 2025年公务员考试行测数学运算解题技巧与高分技巧试卷
- 2025年摄影师职业技能鉴定摄影器材市场分析试题
- A-Level西班牙语2024-2025模拟试卷:语法结构与文化内涵深度解析
- 2025年欧洲女子数学奥林匹克(EGMO)模拟试卷:几何证明与组合策略解题技巧与实战攻略
- 人教版数学八年级上册-全等三角形教学课件
- 2025年高中生物遗传规律与概率计算专项卷:遗传学在生态学中的应用
- 2025年山东省聊城市高唐县中考二模英语试题(原卷版+解析版)
- 中国生铁行业发展现状及市场前景分析预测报告
- 企业数字化转型培训课件
- 2025届高考语文押题作文及题目(9篇)
- 2025年中国白杨树市场现状分析及前景预测报告
- 建筑工程质量管理试题及答案
- 龙岩市五县2025届初三5月教学质量检测试题语文试题含解析
- 浙江开放大学2025年《行政复议法》形考作业4答案
- 2025年新媒体营销职业能力考试试卷及答案
- 2025年广东省中考地理模拟试卷(含答案)
- 2025年陕西省高三高考三模历史试卷(含答案详解)
评论
0/150
提交评论