范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

分布式数据库技术前瞻

  背景介绍
  在业务逐渐增长的 4 年多里,我公司的的数据库经历了从 单表数十 GB 到上百 GB 的过程。基于数据量的升级变迁,我们的数据库也经历了 2 次架构迭代,并在探索三代数据库架构:第一代数据库架构 —— 一主一从集中式部署的时代。第二代数据库架构 —— 垂直分库,一主多从的时代。第三代数据库架构 —— 云上一主一从一日志节点,基于域名&vip实现高可用的时代。
  第三代数据库架构短板OLTP 场景需求痛点
  截止目前账务系统的核心表累计数据量已达到单表 8000万行以上,还在高速增长中。监管要求金融行业历史数据至少保留 5 年以上。这给数据库系统带来了不小的挑战:海量的历史交易与账务数据堆积在 MySQL 数据库中,使数据库越发臃肿,维护困难(在线 DDL 变更、数据迁移、磁盘容量瓶颈、磁盘 IO 瓶颈等)。ccs_order_hst表现有8800万,56G数据,日均增长18万,ibd文件日均增长120MB,预计到年末将趋近80G。用户对历史交易订单的查询(OLTP 场景)是必备功能,这些海量的历史数据会根据用户需求通过 微信公众号、APP 终端等渠道进行实时查询(内部、外部用户)。此场景决定了不能通过传统的离线大数据方案来满足需求。需要一种偏向于前台、中台的数据治理方案。海量数据也会导致核心跑批时间延长,同时导致数据库单点性能瓶颈,应用可以加分片,但是数据库无法水平扩展。传统分库分表解决方案痛点分表跨实例后,产生分布式事务管理难题,一旦数据库服务器宕机,有事务不一致风险。分表后,对 SQL 语句有一定限制,对业务方功能需求大打折扣。尤其对于实时报表统计类需求,限制非常之大。对join语句不友善。分表后,需要维护的对象呈指数增长(MySQL 实例数、需要执行的 SQL 变更数量等)。
  分布式数据库技术选型
  基于第三代数据库架构的核心痛点,我们需要探索新的数据库技术方案来应对业务爆发式增长所带来的挑战,为业务提供更好的数据库服务支撑。
  分布式数据库有如下显著特点:无限水平扩展能力在线 DDL 操作不锁表分布式强一致性,确保金融数据 100% 安全完整的分布式事务处理能力与 ACID 特性选型出发点是否开源,自主可控在 GitHub的活跃度及社区贡献者方面,TiDB是国际化的全球开源级项目,是 NewSQL 行业中的代表性产品。Oceanbase作为一款在阿里孵化的一款分布式数据库产品,也于2021年6月1日在Gitee开源,并积极推进社区建设与在线培训MySQL 协议兼容性Tidb与Oceanbase都与 MySQL 5.7 高度兼容,需要应用改造的地方少市场占有率Tidb与Oceanbase 在国内分布式数据库市场占有率分列第一和第二Tidb 与 Oceanbase 具体比较1、产品发展历史TidbPingCAP 成立于 2015 年4月,是一家企业级开源分布式数据库厂商,注册资本 1 亿美元,D 轮融资 2.7 亿美金。2019年9月于Github开源,有2.81万star关注,文档齐全,对使用人员友好,有数据库开发规范(https://asktug.com/t/topic/93819)具备PCTA与PCTP两级认证,因疫情影响,培训与线下考试都已停止Oceanbase2010年于阿里巴巴集团诞生产品,2020年6月正式进行独立公司化运作,注册资本 1 亿元2021年6月1号于gitee正式开源,有521star关注,文档较少,尚需完善具备OBCA、OBCP、OBCE三级认证,线上培训,线下进行考试2、使用案例Tidb广泛应用于互联网与金融行业,长沙目前已知案例包括和包支付、澳优乳业、福米科技、兴盛优选等,在全国有股份制银行光大、浦发,头部城商行,北京银行等金融行业案例,产品稳定性得到有效验证,企业用户和社区用户超过 1500 家。Oceanbase服务于蚂蚁集团内部、移动运营商,网商银行等大的金融保险机构3、产品架构TiDB 分布式数据库采用 Shared-Nothing 架构,同时整体架构拆分成了计算、存储、调度,多个模块,各模块之间互相通信,可运行在普通 PC、K8S 上,载体多样。扩展性上,可按需灵活扩展计算或存储资源,提高系统整体的吞吐。OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎,运行在普通 PC 服务器组成的集群之上4、存储引擎Tidb HTAP混合数据库Oceanbase准"内存数据库" + LSMTree存储,避免随机写5、标准SQL语句支持TiDB1、支持标准 SQL,DDL 、DML 、DCL、DQL(包括分析函数,各种查询)。2、部分支持完整性约束,不支持check约束和外键约束功能,但支持语法兼容。3、支持表管理、视图管理。4、部分支持分区表,支持 range 和 hash 分区,不支持 list 分区和复合分区;支持全局索引,不支持本地索引,但在后续的 5.0 版本中将全面支持分区表,解除前述相关限制。5、不支持临时表、存储过程,自定义函数,表空间,触发器等创建和使用。6、支持 sequence 创建和使用。7、不支持添加列的auto_increment属性,可以用AUTO_RANDOM(仅支持主键)语法来保证主键唯一性(不需要连续或递增)。Oceanbase支持1、支持大部分查询功能,包括支持单、多表查询;支持子查询;支持内连接、半连接以及外连接;支持分组、聚合;常见的概率、线性回归等数据挖掘函数等2、暂不支持空间数据类型和 JSON 数据类型3、不支持空间分析函数、JSON 函数和性能模式函数4、支持一级分区,模板化和非模板化二级分区,二级分区支持 HASH、KEY、RANGE、RANGE COLUMNS、LIST、LIST COLUMNS 分区6、分布式事务读写强一致TidbTiDB 支持分布式事务,提供乐观事务与悲观事务两种事务模型 。TiDB 3.0.8 及以后版本,TiDB 默认采用悲观事务模型。乐观并发控制期望事务间数据冲突不多,只在提交阶段检测冲突能获取更高的性能。悲观并发控制更适合数据冲突较多的场景,能够避免乐观事务在这类场景下事务因冲突而回滚的问题,但相比乐观并发控制,在没有数据冲突的场景下,性能相对要差。TiKV 的 MVCC 实现是通过在Key后面添加版本号来实现当新写入的数据覆盖旧的数据时,旧的数据不会被替换掉,而是与新写入的数据同时保留,并以时间戳来区分版本。数据版本过多会占用大量空间,同时影响数据库的查询性能, GC 的任务便是清理不再需要的旧数据。GC 会被定期触发,默认情况下每 10 分钟一次。每次 GC 时,首先,TiDB 会计算一个称为 safe point 的时间戳(默认为当前时间减去 10 分钟),接下来 TiDB 会在保证 safe point 之后的快照全部拥有正确数据的前提下,删除更早的过期数据。GC 在执行过程中会删除大量数据, 可能会对线上业务造成影响。 可通过修改 TiKV 配置中的 gc.max-write-bytes-per-sec 限制 GC worker 每秒数据写入量, 降低对正常请求的影响, 0为关闭该功能。TiDB 实现了快照隔离 (Snapshot Isolation, SI) 级别的一致性。为与 MySQL 基本保持一致,又称其为"可重复读"。事务开始时获取 start timestamp,也是快照的版本号;事务提交时获取 commit timestamp,同时也是数据的版本号事务只能读到在事务 start timestamp 之前最新已提交的数据事务在提交时会根据 timestamp 来检测数据冲突MySQL 可重复读隔离级别在更新时并不检验当前版本是否可见,也就是说,即使该行在事务启动后被更新过,同样可以继续更新。这种情况TiDB 会导致事务回滚,导致事务最终失败,而 MySQL 是可以更新成功的。Oceanbase默认Read-Committed,通过 MVCC+TSO 实现7、锁机制Tidb能检测到死锁并解除死锁,悲观锁和乐观锁都支持,默认悲观锁,悲观事务的行为和 MySQL 基本一致,在执行阶段就会上锁,先到先得,避免冲突情况下的重试,可以保证有较多冲突的事务的成功率。但如果业务场景本身冲突较少,乐观锁的性能会更有优势TiDB 没有间隙锁,当无法保证符合过滤条件的数据唯一时,MySQL 会锁住过滤条件能涵盖到的所有行:范围锁,全表锁。TiDB 只会对读取到的行加锁。Oceanbase只有行锁,没有表锁只有写锁(X锁),没有读锁8、高可用性和扩展性TiDB计算、管理、控制节点,任意挂一个都对集群整体无影响两地三中心的架构下,网络延迟保证 10 ms 以内,保证单中心失效的情况下,可以保证 RPO 为 0,PTO 30 s,即业务不丢数据,业务能在 30s 内恢复,同时还有双中心方案,可以在同城双中心部署集群,做到同城双活。底层数据分片粒度较小,灵活度较强。TiKV、TiDB、PD都支持在线扩容、缩容,集群工作正常,业务不受影响Oceanbase至少3个zone,单个zone服务器宕机无影响。集群的资源扩容就是为每个Zone增加相应的节点。租户资源的扩容是通过调整其Resource Unit的规格和数量来完成。9、数据库运维能力TidbTidb安装部署更为简单,架构清晰,利用tiup组件,半个工作日能搭建测试集群大表DML在亿级数据及索引存在的情况下,秒级对一段时间范围内的流水数据进行删除,同时对记录和表不造成任何影响。自主测试drop和truncate 200万级别的表,tidb上耗时不到1s,mysql上要3-4sOnline DDL针对包含亿级数据的表增加字段。在DDL进行的过程中对业务无影响。自主测试200万级别的表加列和减列,tidb上耗时不到1s,mysql上要6-9s加索引操作由于需要回填数据,因此执行时间略长。而在回填数据期间,需要将回填的数据写入 TiKV, 对 TiKV 会产生额外的写入压力,从而造成一些性能影响。对业务开发较为友善,业务如需经常发版,表结构可能也需要经常迭代,TiDB 的相关功能可以较好满足商业敏捷性的要求。Oceanbase组件较多,有Unit、资源池、多租户多层机构,新的版本通过obd组件,0.5个工作日也能运行起来;Online DDL表建好后,主键不能更改。如果需要修改,只能删表重建。列类型修改有较大限制。Varchar 长度只能由短变长,不能由长变短。索引生效时间较长,建议在建表时将索引语句一并纳入。
  10、最佳实践Tidb建表时避免设置递增主键,同时将大表配置 Region 打散,避免热点分区问题为了确保事务的 ACOD,TiDB 中的事务操作都需要经过两阶段提交,在 TiDB 最新发布的 5.0 中也使用了索引组织表、近似一阶段提交 来降低因为频繁的网络交互致使延迟变高的影响,总体而言,在延迟要求严格的场景中, 使用 5.0 中的关于延迟的优化,和小事务打包来获取极致的低延迟。START TRANSACTION; UPDATE my_table SET a="new_value" WHERE id = 1; UPDATE my_table SET a="newer_value" WHERE id = 2; UPDATE my_table SET a="newest_value" WHERE id = 3; COMMIT;目前单个事务大小限制在 10GB, 超过 10GB 的事务依然会报错, 不过 10GB 的事务已经能够覆盖大多数场景了:客户端在提交之前, 数据都写在内存中, 而数据量过多时易导致 OOM (Out of Memory) 错误。在第一阶段写入数据耗时增加,与其他事务出现读写冲突的概率会指数级增长, 容易导致事务提交失败。最终导致事务完成提交的耗时增加。为了使性能达到最优, 建议每 100  500 行写入一个事务。事务对内存的占用可能会有 3~4 倍的放大, 10GB 大的事务可能会占用 30~40GB 的内存。如果需要执行特别大的事务,需要提前做好内存的规划, 避免对业务产生影响
  分布式选项建议与设想Tidb 与 Oceanbase 相比,具备使用范围广,业界认可度高,社区更为成熟的优势。对于我司而言,当前的关注焦点不是 TiDB 或者 OceanBase 是否稳定可靠(据在和包的学长,和在福米的运维朋友反馈,Tidb在应对高并发和去Oracle时,表现都不错),而是怎么才能快速获取到 TiDB 或者 OceanBase 的最佳实践经验,将其纳入企业基础技术栈之内。Tidb最佳实践(和包 + 马上消费的实践经验)使用 NVME 协议的 SSD使用万兆网卡的服务器和交换机结合K8S容器云平台,降低硬件成本,马上消费作为国内第一家将所有 TiDB 都运行在 Kubernetes 容器云上的金融企业,将最小 TiDB 集群资源从 6 台服务器 ( pd-server 与 tidb-server 混合部署)降低成了 2 pods tidb-server、3 pods pd-server、3 pods tikv-server,硬件成本降低为原来的 30% 左右(需要技术积累与多方面测试,节点数多的情况下更有效果)
  说明:本文来自专栏 - 分布式数据库技术前瞻 | TiDB 社区

尼诺惜败瑞士老乡洛安娜女王归来XC山地世界杯Leogang站出处Biketo。com美骑网作者寒静本赛季世界杯XC赛项第四站在Leogang举行。和DH赛程相似,XC赛程分为了XCC和XCO两项(XCC短道竞速先期举行,其成绩决定正赛发车排国家队女篮两个新兵,原是铁军悍将6月10日,中国篮协发公告,增补四川女篮队员贾赛琪,参加国家队集训。上一次国家队集训名单黄思静李一凡潘臻琦杨力维张茹李梦金维娜李缘王思雨杨衡瑜刘帅武桐桐王佳琦杨舒予迪拉娜唐子婷。随什么是跳传?为什么跳传如此重要?(一)译文为什么跳跃传球对于二传手来说如此重要?2001年,当我还在南卡罗来纳大学排球学院攻读博士学位时,教练金哈德森让我训练她的两名顶级排球运动员二传手。在我与那些出色的二传手训练的第喜欢吃馒头的人注意4种馒头或对健康有害,尽量少吃或不吃冰箱里的馒头都去哪了,咋一个都没有了。你自己问你妈吧,不懂抽什么疯,一大早把家里的馒头全扔了。王叔怒气冲冲。苏阿姨是个不折不扣的养生达人,经常在网络上查看各种养生新闻,昨晚她看到一胃病不喜欢的果蔬?若你爱吃,或能修复胃粘膜,养胃护胃导语老话说的好治疗胃病三分靠治疗,七分靠养生。在查出患有肠胃疾病的时候,不仅需要就医治疗,服用相关药物,同时还要通过日常的养护来拥有健康的肠胃,因此养胃护胃是我们日常生活中不可小视我喜欢绿色,因为绿色触目可及,它是温柔,是纯粹美好夏天沾了绿色的光啊,所以才这么灵动与浪漫原创文案,网图侵删辽阔而静谧的草原,心中完美的撒野地。牛羊做了背景,大地披上了绿毯山谷间绿荫覆盖,一路溪水潺潺,瀑布清潭别有洞天绿萝林里采茶魏秋月都难说服域粉,2功勋二传对本位缄言,蔡斌需姚迪锦上添花6月12号,还有4天!中围女排新军将迎来世联赛菲律站的挑战,对手依次为比利时加拿大美国和日本,根据对手之前成绩和现阶段表现来看,中国女排个人不掉链子,拿下比利时和加拿大是大概率问题30,又赢!狂轰14脚,乌克兰无惧世界杯出局,控球66,升至榜首文彬少侃球(首发)欧国联B1组第3轮比赛,世界杯遗憾出局的乌克兰队对阵亚美尼亚队,原本以为像这样的友谊赛,对于乌克兰队来说意义不大,因为无缘世界杯,他们士气也受到了很大打击,但是很一声叹息!35岁前中超名将沦落业余联赛,他曾勇夺亚冠金靴近日,巴西D级联赛球队贾奎彭塞队宣布,已经与35岁的前锋前中超联赛知名外援卡洛斯阿德里亚诺签订了一份合同。在新球队,阿德里亚诺的任务是帮助球队升级,尽管这位昔日纵横亚洲足坛的射手如现在说勇士能够6场内解决战斗,你相信了吗?北京时间6月14日上午9点,NBA总决赛第五场在勇士主场大通中心举行,最终勇士凭借维金斯的神勇发挥,10494力克凯尔特人,拿下天王山之战!继上一场拿下17分16篮板的两双后,维金夏天出汗多,别忘了吃6种高钾食物,营养又美味,顺利度过苦夏夏天的确是个出门靠勇气的季节。柏油马路经过暴晒后,冒着如丝如缕的热气,一阵风吹来,地上卷起一股热浪,火烧火燎的,没有丝毫凉意。走路5分钟,流汗2小时的体验真难受,难怪大街上的人少了
你知道吗?有道菜名字可怕,但是尝过的人都对它赞不绝口有道四川成都名菜,第一次听说这名字的时候,好多人都会被吓一跳,但是吃过的人都对它赞不绝口。原来这道菜的名字叫夫妻肺片。顾名思义,还以为是把猪羊牛等动物的肺,切成薄片,然后烹饪出来的外表像一只眼睛,25光年外的恒星北落师门,究竟有多可怕?随着人类太空观测技术的不断提高,越来越多有趣的天体被发现。比如与地球环境有些相似的开普勒452b,还有被称为露西的钻石星球。迄今为止,已经有4000多颗系外行星被记录在册,而且这个PPT造车谁都会,但真正的成功非常难改变未来的最好办法,就是先拿它来玩一玩。没有石油的世界是一个大型多人在线预测游戏,于15年前推出,在假设的石油危机下,玩家对未来的工作和生活作了具体的预测,并给出解决方案。玩家给出我们小时候的那些变美物件笔者的母亲从事话剧工作,那时,上班前总会认真打扮一番,穿上漂亮的连衣裙,选一双可以让双腿显长的高跟鞋,再化上精致的妆容,出门前喷一些香水。笔者是看着美少女战士长大的孩子,小时候觉得拉伊奥拉谈个人趣事我的外号叫披萨厨师小时候家里人开餐馆直播吧12月10日讯著名经纪人拉伊奥拉最近接受了德国媒体Sport1采访,他谈到了自己的童年经历,以及其外号披萨厨师的由来。拉伊奥拉笑着说道大家说我是一个披萨厨师,但你知道吗?其实曾拿过防守一阵,哈登绝配掉出首发,火箭1换3赚了,篮网考虑一下身高2米01臂展2米18,曾拿过防守第一阵容,哈登绝配罗伯特科温顿掉出了轮换,引发了一些球迷的讨论。开拓者赛前宣布小南斯顶替科温顿在对阵森林狼的比赛中出任先发,这一消息确实让人意外Y妈读书记花的圆舞曲参加102。8杉杉主持的有书之年,已过去近2年了。也因这奇妙的缘分,结识了杉杉,才有了这本花的圆舞曲和好事将至的书签。还记得看小说是在学生时期,也就是至少10年之久了。这是一部中短赵匡胤黄袍加身之地还记得上小学五年级的时候,老师说,过几天带我们去旅游,前提是,必须买校服才能去,等放学回家给妈妈说了事情的原由,那时我家里正在盖房子,钱比较紧张,妈妈不同意。然后奶奶知道了就给我们吃好一日三餐,化解营养焦虑家族群中经常会有震惊!发现身体奥秘疾病真相大调查某某保健品治好糖尿病等吸引眼球的转载文,原本相亲相爱一家人的群似乎变成了老年养生讨论群。为什么这些看上去就像电线杆上的小广告一样不靠血压高,只是少吃盐是不够的,3种素菜对血管的危害,不比吃盐低高血压疾病是一种比较普遍的疾病,有很多的中老年人身上都患有这种疾病,不同的疾病都有不同疾病需要注意的地方,而高血压患者在平时的饮食中要格外注意一点,少吃含盐量高的食物,做菜的时候少原神我建议培养护盾角色原神里目前护盾性价比最高的角色就三个,分别为钟离女仆迪奥娜这三个人是目前性价比最高的,原因这三个人他们都是多功能辅助,一个角色兼其他技能,因为原神队伍里只有四个人,如果角色能力单一