数据库系统设计漫谈_童家旺.ppt_第1页
数据库系统设计漫谈_童家旺.ppt_第2页
数据库系统设计漫谈_童家旺.ppt_第3页
数据库系统设计漫谈_童家旺.ppt_第4页
数据库系统设计漫谈_童家旺.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统设计漫谈 讲师 童家旺 阿里集团数据库架构师 主题 数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析 Normalization 数据库的扩展性浅析常见数据库系统回顾 数据库基本问题调查 大家都使用过哪些数据库 哪些内容是数据库系统的关键点 常见的数据存储 传统的数据库系统OracleDB2 SQLServerMySQL PosgreSQL分布式数据库GoogleSpanner BigTable MegaStoreOceanBase Hbase缓存服务器 KeyValueStoreTairMemcacheDRedis 数据库的主要特性 ACID原子性 Atomicity 完整性 Consistency 隔离性 Isolation 持久性 Durability Relation SQLStructuredQueryLanguage 即SQL ARelationalModelofDataforLargeSharedDataBanks ByEdgarCodd RDBMS之前的数据库的问题 不支持数据独立性数据库与应用系统之间的强耦合应用系统的复杂度应用系统本身的规模较小 性价比 关系数据库的主要业务场景 Billing 记账类业务 电信 银行 Booking 订票类业务 航空 Inventory 库存管理 零售 这些业务的共同特征是什么啊 关系数据库的关系来自哪里 这是关系的一个来源另一个来源是Normalization ACID的基础概念 Transaction的概念借自ContractLaw一手交钱 一手交货 Atomicity 不会出现库存为负 也不会出现资金为负的情况 Consistency 可同时与多人进行交易 Isolation 离柜概不负责 Durability Atomicity要么全部成功 要么全不成功Consistency写入数据库的数据必须满足所有定义的约束规则 主键 唯一键 外键等约束 Isolation确保并发执行的事务就如同串行执行的事务一样 保证系统状态 state 的一致性 Durability一旦提交 哪怕出现掉电 Crash也不会丢数据 几个基础概念 Write AheadLogRedoLogicalPhysicalPhysiologicalUndo事务槽 事务标识SCN 系统变更统一时间戳 逻辑时钟 如何实现原子性 一个简单购物场景A卖一件衣服给BA的衣服库存 1A的资金 NB的衣服库存 1B的资金 N 如何实现原子性 2 事务槽为变更入口 单一入口 原子 每个变更的记录都包含事务槽信息 数据库中如何保证C 通过ReadDirty与锁来解决PK UK通过Ref检查来解决FK的问题 需要Index 通过PreCommittrigger来做Null以及Check 数据库中如何保证I 锁控制不同粒度的锁 表级 块级 记录级 不同维度的锁 数据相关锁 内存相关锁 MVCCSnapshotIsolationBlockImage SCN UndoImage判断差别在于读取哪个时间点的Snapshot 数据库中如何保证D LogbeforeDataLGWRbeforeDBWnFlushLogonCommitDurabilityOnCommitCheckpointBeforeRedoLogFileReuse ACID的代价 不同的Isolation对应不同的代价SerialiazabilityReadCommitted ThroughSnapshot ReadDirty 没有并发控制 不同的Durability级别FlushonCommitFlushonTimeout TimeRange FlushonBatch commitscount 主题 数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析 Normalization 数据库的扩展性浅析常见数据库系统回顾 Normalization 先做个小游戏用笔记录下学员名单 讲师名称 讲师简介 课程名称 课程简介调整下讲师 童家旺 金光丁 以及对应的讲师简介再次调整下课程 数据库概论 分布式数据库原理 简介 Normalization解决的问题 更新一个源头不会出现异常每份数据只有一个源头如何保证多份数据的一致性 一份数据有多少个源头 同一份数据被重复了多少次 对应的存储空间 为了存储耗费的其它资源 Normalization带来的问题 表之间的依赖 关系依赖 耦合 表关联的成本 关联开销 可能的IO开销 系统扩展的复杂度 解耦合 如何权衡Normalization 尽量不要对静态数据做Normalization除非你希望节约存储空间考虑范式化Vs反范式化的投入产出为什么很多IT新人喜欢Normalization那是因为他们的老师告诉他们需要Ali的实际情况适度的使用关键在于判断业务之间的耦合性 主题 数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析 Normalization 数据库的扩展性浅析常见数据库系统回顾 一个小实验 如何将2个人从这里送到杨浦 如何将5个人从这里送到杨浦 如何将50个人从这里送到杨浦 如何将500个人从这里送到杨浦 如何将5000个人从这里送到杨浦 如何将50000个人从这里送到杨浦 解决扩展性的根本途径 数据库的扩展性问题 做数据库架构 系统架构与上图差别在于 如何满足如下的要求检索问题Relation并发问题IsolationConsistency UK 一致性问题Isolation速度问题Performance Durability Isolation 数据库检索问题 如何从班级的联系方式中找到XX的电话号码 如何从公司的联系方式中找到XX的电话号码 如何从移动公司的系统中找到XX的电话号码 如何从移动 电信 联通的数据库找到XX的电话号码 数据库的并发问题 同时有多个人要购买手机号 如何保证大家购买的不是同一个手机号 如何支持几百 几千 几万人同时购买手机号 数据库的一致性问题 如何保证大家看到的库存有效 如何保证读取的信息是准确的 库存的变更如何实时的提供给每一个人看到 数据库的性能问题 如何快速的让1个人买到号码 有多快 如何快速的让10个人买到号码 要不要排队 一个服务员 一个营业厅 PerformanceVsScalability 1 当只有一个人访问时 速度如何 2 当有很多人访问时 速度如何 大家都同样快 如果满足1表示Performance很好 如何能较好的满足2表示系统有较好的Scalability 一致性问题再探讨 新浪发的微薄需要强一致吗 ITPUB的论坛需要强一致吗 当当的图书描述信息需要强一致吗 12306的火车票库存信息需要强一致吗 支付宝 财付通的账户余额需要强一致吗 中行信用卡 招商银行卡的账户信息需要强一致吗 数据状态机的分类 何谓状态机简单的理解是 计算机中会发生变化的数据都是状态机 这个数据的值不同可能会带来不同的后果 分类 按照三个维度 时间 信息含金量 变更频率 Cache的基本概念 Cache的定义CachingisatemplocationwhereIstoredatain datathatIneeditfrequently astheoriginaldataisexpensivetobefetched soIcanretrieveitfaster 台湾的翻译为 快取 大陆为 缓存 Cache的特征有Backend的内容处理的效率比走Backend要快与Backend的内容之间可能会不一致Cache的本质ThroughRelaxingConsistencytoImproveScalability Cache的设计考虑 缓存的一致性维护问题数据的具体读写比商品信息 库存信息 用户信息 账户余额 Backend数据变更频率业务对一致性的要求使用何种缓存策略WriteThroughVsWriteBackVsWriteBackwithCompensate Memcached是Cache吗 ItDepends如果内容有Backend 是 如果内容没有Backend 否 案例新浪微博的计数器 淘宝 当当的记录在缓存中的购物车信息 主题 数据库基本问题调查关系数据库的基本背景ACID基本概念解析范式问题解析 Normalization 数据库的扩展性浅析常见数据库系统回顾 数据存储的基本需求 存储数据读写的性能 Hash查找 B Tree查找 数据的可靠性 Durability 支持如何避免单点故障带来的数据丢失 数据保护 是否支持多维查询 基于关系的查询 对Replication的支持如何 支撑Scalability的复杂度 MySQL Innodb Oracle 传统的关系数据库支持多维索引Oracle的支持较好MySQL要到5 6才比较好的支持Index内Filter较好的支持数据的一致性成熟的MVCC设计成熟的Replication设计简单查询的效率略低于MemcachedB Tree的成本MVCC带来的额外成本 MySQL Oracle 在进行数据库扩展时只能依赖于应用层的拆分 即 Sharding 目前Sharding支持由TDDL实现维护成本会相对较高维护复杂度也比较高软件的成本Oracle为商业软件 有License费用MySQL为开源软件 没有软件本身的费用 Tair简介 Tair主要技术点 主要定位为分布式Key Value缓存DataServer的具体实现MemoryEngine的实现类似于MemCachedConfigServer的实现基于ConsistentHash实现集群的数据分布基于此做Replication做节点的故障检测与剔除新加入节点时需要基于CHash做节点Rebalance Hashmap SlabList Tairmdb内存结构 ConsistentHash简介 OceanBase系统架构 44 主控服务器RootServer 主 备 数据定位 全局Schema 机器管理 动态数据服务器UpdateServer 主 备 实时修改 内存 SSD 静态数据服务器ChunkServer 多台 静态数据存储 磁盘或SSD 动态数据不断地被合并到静态ChunkServer中实现分布式存储 JavaClient ChunkServer ChunkServer ChunkServer ChunkServer RootServer UpdateServer 主 RootServer U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论