• [热门活动] 2021HDC大会华为云数据库,主线打卡,好礼送不停!
    步骤一:填问卷【学生问卷】华为云数据库问卷有礼【政企问卷】华为云数据库问卷有礼步骤二:数据库课程免费学 or 展岛拍照将“查看课程”页面,或展岛拍照照片,分享到本帖评论区即可①   7天玩转MySQL基础实战营②   玩转MongoDB从入门到实战③   7天玩转PostgreSQL基础训练营样图如下:【趣玩Codelab实验】现场完成codelab实验,送GaussDB字母笔7支/盒【特惠专场】华为云数据库产品,新用户低至2折购买、回帖晒单,送64G 防水U盘、米格系列移动电源2500mA、手机懒人支架、书籍《华为数据之道》、书籍《openGauss数据库核心技术》、GaussDB字母笔......【微认证】MySQL数据库迁移上云提示:1.本次活动回帖内容需满足华为云论坛发帖规范 https://bbs.huaweicloud.com/forum/thread-23077-1-1.html。2. 活动结束3个工作日将在此帖公布获奖名单,敬请关注。3. 奖品将在公示期结束后15个工作日内发出。4. 由于获奖用户自身原因(包括但不限于提供的联系方式有误、身份不符或者通知领奖后超过15个工作日未领取等)造成奖品无法发送的,视为获奖用户放弃领奖。5.活动一切解释权归华为云数据库所有。
  • [热门活动] 华为云数据库新手入门,赢2021HDC门票、京东卡、机械键盘、无线鼠标......
    “云”是什么?“华为云”到底是一种什么样的存在?“华为云数据库”又该如何理解?想快速入门华为云,get干货课程那就来华为云学院精心打造的——【活动简介】本活动包括华为云入门、弹性云服务器ECS、块存储服务EVS、云网络、数据库服务和华为云冰山安全体系等主题内容,配合视频+直播+学习交流群+结业考试等多种形式,带你快速入门华为云,帮你构建全面的云相关知识体系!【活动奖品】邀请好友报名赢2021HDC门票、码豆换好礼;邀请好友一起报名学习华为云新手入门赋能专场观看开班直播赢取价值50元京东卡;完成课程打卡赢取机械键盘、无线鼠标、定制书包等好礼;通过结课测试,赢取结业证书。【邀请好友,一起学习】- 邀友活动时间:即日起-2021年4月30日 - 邀好友,赢奖励:邀友报名课程, 进入累计邀请人数排行榜,可获得码豆奖励:第1名5万码豆邀请人数≥50人第2名3万码豆邀请人数≥20人第3-4名1万码豆邀请人数≥15人第4-10名0.5万码豆邀请人数≥10人在活动报名环节,邀请好友报名学习课程,在2021年4月20日,有效邀请排名top3的用户(有效邀请为被邀请者需报名成功《华为云入门》,且被邀请人数需达100人)即可赢取门票,若未到达有效邀请人数则不能获取。 
  • [热门活动] HERO高校联盟知识学堂—华为云数据库大咖玩转数据库,赢华为M6平板、无线耳机等多重豪礼!
    华为云HERO高校联盟知识学堂活动火爆开启啦!本期主题:数据库工程师进阶之路——化繁为简,从“新”开始,由华为云数据库专家团出品,21天专家手把手带你从基础到进阶玩转常见数据库,同时深入实战,学习如何维护和优化校园智慧订购系统。点击下方链接报名参与活动:https://developer.huaweicloud.com/college/HEROactivity2021.html报名成功后点击分享有礼,成功邀请10人起,就有机会获得无线榨汁机、华为手环4、定制双肩包、无线鼠标、公牛插排、魔方等更多好礼!
  • [技术干货] 华为云数据库GaussDB(for Cassandra)揭秘第一期: 初识GaussDB(for Cassandra)
    “local quorum查询某个分区键的条数,每次查询,条数都不一样。”“按这个分区键的token修复,直接瞬间修复结束。但是再查,还是每次查询条数不一致。”“之前遇到墓碑丢失的问题,单个token查询结果不一致,修复也解决不了”…..不用再为数据不一致苦恼,因为强一致的Cassandra来了,DBA们不用加班修数据了。GaussDB(for Cassandra)是一款基于华为自主研发的计算存储分离架构的分布式云数据库服务。是一个强一致性的系统,在华为云高性能、高可用、高可靠、高安全、可弹性伸缩的基础上,提供了一键部署、备份恢复、监控报警等服务能力。高度兼容开源Cassandra接口,并提供高读写性能,具有高性价比,适用于IoT、气象、互联网、游戏等领域。 本文将从架构、主要特性、竞争力、应用场景等方面进行介绍。设计架构:GaussDB(for Cassandra)基于计算存储分离架构,该架构基于华为内部强大且广泛使用的自研分布式存储系统DFV(数据功能虚拟化/Data Function Virtualisation),实现了一套Share Everything的云开源架构,充分发挥了云开源的弹性伸缩、资源共享的优势,高度兼容Cassandra协议,拥有超强写入性能,同时相比社区版具有分钟级计算扩容、秒级存储扩容、数据强一致等优势,性能更强更稳定,数据更可靠,扩容更敏捷,适用于IoT、实时推荐、金融反欺诈检测等场景。GaussDB(for Cassandra)牛在哪?高可靠:数据强一致,提供企业级数据可靠性开源Cassandra读写数据采用最终一致性,此处用读场景举例:如果读一致性要求为ONE,会立即返回离客户端最近的一份数据副本,那么这意味着第一次读取到的数据可能不是最新的数据。如果读一致性要求为QUORUM(即读取任一数据中心中quorum数量的节点的结果,返回合并后timestamp最新的结果),则内核会自动触发读修复,然后返回给客户端。假如此时有副本所在节点出现坏盘,在gc_graces的周期内没有完成数据修复,部分副本属于坏盘节点的业务数据,业务查询过程中发现数据会概率性不正确。GaussDB(for Cassandra)采用存算分离架构,数据的副本在DFV存储平台保证,对计算节点来说数据单副本、数据强一致,查询只需要从协调节点直接到数据节点取数据即可完成,规避了数据不一致修复数据造成的人力成本、业务查询过程中发现数据会概率性不正确等问题。另外支持N-1个节点故障容忍,提供10倍以上的故障重构性能和备份恢复性能,保证数据的可靠性。高扩展:秒级扩容,快速更神速开源Cassandra采用一致性Hash算法对数据进行分区打散,整个环代表数据从负无穷到正无穷区间。集群中每个节点会有虚拟节点(Token)在环上,虚拟节点的数量可配置。黄圈代表节点1,蓝圈代表要扩容的节点2,2个Token之间组成整个数据的其中一段Range区间,扩容后加入了新的Token,会产生新的Range,这些Range中的一部分会归新节点2管理。那么就需要把数据从节点1迁移到新节点2上去。迁移是通过读取节点1上的数据写入到节点2上,迁移的速度可以通过配置参数调整,整体迁移的时间由数据量与迁移过程中的读写速率有关。GaussDB(for Cassandra)把多副本策略下沉到共享存储,大幅提升弹性伸缩能力,如图右侧展示,新扩容的节点2只需要重新映射Token2到节点2,就可以完成,无需做数据的读取与写入的搬迁动作,实现分钟级计算扩容,相比开源扩容时间提升几十倍。随着业务的不断增长,Cassandra可以分钟级水平弹性资源扩展。在类似圣诞节等热门节日,提前1天进行弹性扩容,为业务高峰预留资源,业务高峰过后进行缩容,这些对业务无感知。计算节点可以通过文件系统控制集群在DFV中的数据使用量,扩容缩容磁盘时通过重新分配最大使用量,可实现秒级存储扩容,单实例支持海量数据存储。高性能:超高写入,读性能数倍提升GaussDB(for Cassandra)在超强写入性能的基础上,通过使用C语言重构存储引擎,减少系统GC,实现了数倍读性能提升,拓宽了使用场景的外延,使其不仅仅适用于写密集型的业务场景,在读密集的场景中也具备了强竞争优势,整体性能超越开源自建2~3倍。高安全:构筑多层保护,为数据安全保驾护航GaussDB(for Cassandra)通过VPC、子网、安全组、DDoS防护以及SSL安全访问等多层安全防护体系,帮助用户抵御网络攻击,让用户上云无忧。为什么选择GaussDB(for Cassandra)?能力技术能力对比 开源自建CassandraGaussDB(for Cassandra)自动备份能力、PITR×√超大数据量及复杂查询支持×√流表(数据变更捕获)×√离线分析不完善√高可靠:双向数据同步、无损升级×√分钟级扩容×√全局索引不完善√数据强一致×√适用多种场景工业制造&气象业随着科技进度,采集的气象数据指数增长,需要一种系统对地面、高空、海洋、重要天气报、闪电、环境监测等卫星、雷达采集的数据能够高性能写入、查询、在线、离线分析。需要存储对地面、高空、海洋、重要天气报、闪电、环境监测等卫星、雷达等降雨量、湿度、温度等PB级数据量支撑来自各气象采集点数据高并发写入到Cassandra,GaussDB(for Cassandra)集群性能高于自建2~3倍,更适合高并发写入读取GaussDB(for Cassandra)数据能够支撑实时在线分析,为气象算法、天气预报做到实时精准分析访问数据库进行离线数据分析,GaussDB(for Cassandra)能将离线分析时效缩短到60%互联网GaussDB(for Cassandra)具备高并发写入性能和高可扩展性,保障集群高可用和业务连续稳定性,非常适用于写入规模量较大的互联网大数据场景,如记录大规模的用户行为数据等。存放用户画像数据,能够完美解决特征:数据量大、可以应对数据结构Scheme频繁变更查询性能要求高;比如要买一双鞋,搜索出的鞋子数据会根据用户画像的特征做一定的排序展示,那么要求查询用户特征表的查询性能非常高推荐系统:根据用户最近浏览的数据做分析之后,推荐相关资源给用户点赞系统:点赞计数系统实时数据分析场景GaussDB(for Cassandra)群组今天新来了一个成员,或者yutou今天发布一篇新文章,华为云数据库官方自动向该用户发出欢迎邮件。昵称为yutou的同学今天发布了一组新照片,那么另外一个程序自动向yutou的好友发送通知。原生不具备的数据变更捕获能力,GaussDB(for Cassandra)具有变更捕获能力,能对数据的变更做实时在线分析,提供秒级的实时推送动作做出相应处理;具有完善的离线分析解决方案,可以将离线分析时效缩短到60%,为商家争取更多的时间做出相应决策。购买建议GaussDB(for Cassandra)性能为开源2倍以上,存储空间仅需开源自建1/3,帮助客户节省成本,举例如下:开源自建8u32g * 3节点 数据量:90G(三副本),购买GaussDB(for Cassandra)可选择创建4u16g * 3节点 数据量:30G(DFV存储三副本) 本文作者:华为云GaussDB(for Cassandra)团队产品首页:https://www.huaweicloud.com/product/gaussdbforcassandra.html欢迎加入我们!华为云GaussDB(for Cassandra)团队(深圳、西安、杭州)zhaojuan.zhao@huawei.com
  • HDC.Cloud2021|生活中的这些难题,华为云数据库开发者为你解决!
     随着智能时代的加速演进,这一代开发者非常有幸,可以运用各种创新技术给世界带来更大的改变。 开发者们熟悉的数据库,对普通人来说可能感知甚少,但是它的用处却无处不在。它能解决我们生活中的哪些难题呢?还有,做数据库开发凭什么这么吃香?别着急,马上你就有答案了! 广义上,数据库是存储数据的东西,类似书本、大脑、图书馆;狭义上,数据库是存储在计算机中结构化的表格,用户账户信息表、网购订单表、地理位置表…… 别以为数据库跟你没关系,你在华为商城抢购Mate40,你使用网银APP转账交易,数据库都在默默时刻守护您的每一笔交易安全迅捷。 随着新时代下数字化转型加速,数据量越来越大,传统数据库存在瓶颈,于是,华为云数据库就闪亮登场了。 我们以华为云GaussDB(for Redis)为例,来聊聊数据库开发者能解决生活中哪些常见问题。1、社交软件无差错通讯       在我们日常的即时通讯场景中,实时无差错通讯是必要要求。众所周知,Redis Stream是一种新的数据类型,它提供了消息的落地存储功能。Redis Stream作为通讯的中间件,可实现聊天室的发言以及信息查看,无论离线在线用户都可多次查看历史消息。华为云GaussDB(for Redis)让聊天更有序,让通讯更完整。2、解决医疗信息孤岛 在医疗场景中,个人健康信息孤岛亟需解决。Redis Stream可以助力智慧医疗系统实现信息同步,不但可以记录个**检报告、诊断报告、用药信息,还可以助力不同医院查询同一个患者的医疗信息。GaussDB(for Redis)解决信息孤岛,更好保卫健康。3、防止流量洪峰来临系统崩溃 在常见的双11秒杀活动或团购场景中,通常短时间内有大量的流量,导致系统崩溃。所有的请求都有一个先后顺序,开发者同样采用Redis Stream作为中间件,将消息转存到消息队列间接提供给应用,可以防止大流量冲击导致的系统崩溃,华为云GaussDB(for Redis)让购物更加顺畅。 4、实时查询外卖小哥配送距离       点外卖时你是如何获取外卖小哥的配送距离的呢?在用户下完外卖订单后,数据库开发者使用geoadd命令加入骑手的位置,还可以使用geodist命令获取骑手的距离。华为云GaussDB(for Redis)让送餐距离不再遥远。5、房源位置查询       从到衣食住行到买房等人生大事,华为云GaussDB(for Redis)均可助你一臂之力。在众多的房源App中,将新的房源加入房源平台中,数据库开发者使用geoadd命令,添加新房源的位置,使用geodist命令,用户可获得与房源的距离。华为云GaussDB(for Redis)让你与温馨的家更近一步。 作为数据库开发者,小到助力我们抢购车票、外卖点餐,大到买房、个人医疗信息建档等,哪里有需要哪里都有开发者的身影。他们通过一行行冰冷的代码,解决了生活中的一个个难题,也成就了每个开发者的英雄梦。       作为华为ICT基础设施业务面向全球开发者的年度盛会,华为开发者大会2021(Cloud)将于2021年4月24日-26日在深圳举行。本届大会以#每一个开发者都了不起#为主题,将汇聚业界大咖、华为科学家、顶级技术专家、天才少年和众多开发者,共同探讨和分享云、计算、人工智能等最新ICT技术在行业的深度创新和应用。智能时代,每一个开发者都在创造一往无前的奔腾时代。世界有你,了不起! 点击链接,了解大会详细信息。https://developer.huaweicloud.com/HDC.Cloud2021.html
  • [公告] 华为云数据库MySQL服务于2021年4月15日00:00(北京时间)对华北-北京四、华东-上海一、华南-广州区域进行产品规格类
    尊敬的华为云客户:华为云云数据库MySQL服务计划于2021/04/15 00:00(北京时间)对华北-北京四、华东-上海一、华南-广州区域进行产品规格类型调整,调整后详情如下:1、新购的云数据MySQL实例将按调整后的规格及价格收取费用。2、对已经申请的云数据库MySQL实例,您可根据您的业务情况进行选择。1)若进行规格变更,则按照调整后的规格及价格计费。2)若进行续费和扩容,则按照调整前的规格和价格计费。具体调整内容包含:1、存储空间:新增“SSD云盘”,去除“超高IO”,其价格如下:计费项产品类型说明步长规格按小时(元/GB)包月(元/GB)包1年(元/GB)包2年(元/GB)包3年(元/GB)单机实例(含只读)存储SSD云盘线性计费10 GB0.00211016.818主备存储SSD云盘线性计费10 GB0.00221.61626.8828.82、规格变更:新增“通用型实例”和“独享型实例”,去除“通用增强I型”和“通用增强II型”实例,调整后的规格及价格如下:形态CPUMEM按小时(元)包月(元)包1年(元)包2年(元)包3年(元)通用型(单机版)240.3215615602620.82808480.753603600604864808161.573073001226413140280.381901900319234204160.954804800806486408321.911000100001680018000通用型(主备)241.0240640606820.87308481.9805805013524144908163.61575157502646028350281.155205200873693604162.110001000016800180008324.22000200003360036000独享型(主备)4162.813901390023352250208325.6270027000453604860016641153005300089040954003212821.8105001050001764001890006425643.75210002100003528003780004323.617201720028896309608647.234403440057792619201612814.46880688001155841238406451256.2527000270000453600486000通用型(只读)240.5120320303410.43654480.95402.54025676272458161.8787.578751323014175280.5752602600436846804161.055005000840090008322.11000100001680018000独享型(只读)4161.4695695011676125108322.8135013500226802430016645.526502650044520477003212810.952505250088200945006425621.875105001050001764001890004321.8860860014448154808643.61720172002889630960161287.234403440057792619206451228.12513500135000226800243000更多关于云数据库MySQL的产品介绍,请您点击了解。如您有任何问题,可随时通过工单或者服务热线( 4000-955-988或950808 )与我们联系。感谢您对华为云的支持!
  • [技术干货] 【集锦】学、练、考一站式服务,科普+技术解读+案例分享,全方位剖析云数据库,一览华为云数据库全貌!
    数据库课程是由华为云数据库高级专家亲自打造,学、练、考一站式服务,一览数据库全貌。学数据库基础入门课程①   数据库介绍②   数据库基础知识③   华为云服务-数据库服务RDS④   SQL语法入门⑤   SQL语法分类⑥   数据库开发环境⑦   数据库安全基础⑧   数据库设计基础⑨   华为数据库产品GaussDB介绍数据库专项学习课程①   7天玩转MySQL基础实战营②   玩转MongoDB从入门到实战③   7天玩转PostgreSQL基础训练营④   GaussDB实战训练营 练①   10分钟快速入门RDS②   使用DRS实现数据实时同步③   通过CDM同步数据到MRS Hive④   使用CDM将CSV文件迁移至RDS⑤   数据库服务实践⑥   使用Python爬虫抓取图片和文字实验 ⑦   DAS企业版 安全管控删库跑路⑧   MySQL本地数据库迁移 考①  【微认证】 MySQL数据库迁移上云②  【职业认证】华为认证数据库工程师HCIA-GaussDB③  【职业认证】华为认证数据仓库高级工程师HCIP-GaussDB-OLAP④  【职业认证】华为认证数据库高级工程师HCIP-GaussDB-OLTP文章描述一文梳理华为云数据库产品,理清RDS、DDS和GaussDB了解开源数据库上云和华为云自研数据库,读懂华为云数据库生态。初识华为云关系型数据库RDS支持MySQL、PostgreSQL、SQL Server等关系型数据库引擎。华为云DDS—云上高性价比文档数据库服务DDS兼容MongoDB协议,支持分片集群、副本集和单节点三种部署架构。超便捷的华为云数据复制服务DRS是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。万万没想到,云数据库MySQL原来是这样的!!!图文并茂了解云数据库MySQL的特点和应用场景。太给力了!认识云数据库PostgreSQL只需要这三步PostgreSQL是开源关系型数据库,兼容Oracle的语法,有丰富的第三方插件。这才是云数据库 SQL Server的正确打开方式SQL Server 是广受欢迎的商用关系型数据库,能集成各类微软常用管理开发工具。华为云数据管理服务DAS来啦!帮您轻松解决数据管理各种难题面对数量庞大且种类繁多的难题,DAS提供数据库开发、运维、智能诊断等服务。积跬步、行千里,华为云数据库前景几何?经过十余载打磨,华为数据库业务已在产品、组织、生态上整合到位。文章描述从业务和团队出发,数据库选型要“对症下药”从自身业务架构、业务数据量、数据类型、团队成员的业务能力等多角度选择数据库。没有宫廷内 斗,数据库界的延禧攻略全方位解读MySQL与MongoDB的区别:没有谁替代谁,只有哪个场景更适合谁。关系型or非关系型难以抉择,云上数据库必有一战云数据库的高性能、高扩展、高可用也让建立在数据之上的业务系统更加高效。自己挑水喝还是自来水供水?浅谈云数据优势自建数据库和云数据库的比较,就好像是自己挑水喝和自来水供水的区别。您的业务适合哪种数据库,真的知道吗?面对市场上琳琅满目的数据库引擎,选合适的数据库能节省成本、提高业务能力。浅析电商、社区、游戏行业常用 MySQL 架构MySQL架构一定要结合业务来分析、设计、优化。遇到数据并发瓶颈,如何在SQL、NewSQL、NoSQL间取舍SQL数据库在海量数据的存储及并发读写上遇到瓶颈,NoSQL和NewSQL数据库扶摇直上。文章描述开源数据库这么香,为什么我们还要下功夫自研?对于企业来讲,只有选择开放的生态,才能让自己的业务具备更好的连续性。解读华为云原生数据库设计原则,打破传统数据库上云瓶颈云服务厂商自研云数据库产品势在必行。那么,一个优秀的自研数据库产品应该要具备哪些特性呢?从“华为GaussDB”到“华为云GaussDB”,华为如何加持云基础技术实力? 华为在数据库以及整个计算产业的打法:不谋全局者,不足谋一域。技术解读丨GaussDB(for MySQL)存储架构设计的秘密是什么?深耕18年数据存储,GaussDB(for MySQL)如何实现算子下推,软硬协同性能调优,跨AZ数据0丢失。苦开源MySQL瓶颈久矣,不妨试试GaussDB(for MySQL)分布式版解读GaussDB(for MySQL)分布式版本的特性。华为云推出全自研数据库,GaussDB能否撑起一片天?华为首个全自研的开源数据库会给整个生态带来什么改变呢?一文读懂GaussDB(for Mongo)的计算存储分离架构通过计算存储分离架构,完美解决开源版本水平扩展的速度瓶颈及性能恶化问题。详解GaussDB bufferpool缓存策略,这次彻底懂了根据bufferpool的使用特点设计一个高效的缓存策略。领先原生PG 5倍性能,这次GaussDB(for PostgreSQL)真香了GaussDB(for PostgreSQL)遵循解耦、近数据计算下推、充分利用云存储能力、发挥SSD性能等原则。直击结构迁移和SQL转换痛点,华为云UGO要做愚公移山的事情数据库领域也有愚公移山:移走传统主流商业数据库。从GaussDB(for MySQL)看全自研数据库的正确打开方式深入剖析GaussDB(for MySQL)主备版和分布式版的关键技术和特性,相关行业应用案例。一文读懂GaussDB的六大关键技术特性从分布式执行框架到GTM-Lite技术,揭秘GaussDB关键技术。文章描述一个数据库管理员的自我救赎之路公司在筹备上云的事,数据库迁移用DRS就对了。86万张表迁移的优化历程 2000个库,86万张表,要在一天内要完成割接,如何完成这个不可能的挑战?华为云数据库SQL Server实践案例技术解析以金蝶K/3 WISE 为例,配合华为云SQL Server 实例快速迁移数据中心。性能诊断好难?华为云DAS服务全量SQL洞察为您支招如何安全审计SQL、快速定位性能异常、保护数据库安全?我的PG数据库备份优化之路通过DRS服务PG顺利迁移到华为云上,晚上再也不会收到数据盘空间不足的异常告警。
  • [技术干货] 常用设计模式
    ### 设计与模式 之前一直以为「设计模式」是一个完整的名词 其实「设计」和「模式」是要分开来说的 **「设计」:5 个常见的设计原则** **「模式」:代码中常见的"套路",被程序员总结成了相对固定的写法,称之为「模式」** 也就是说学习"设计模式",首先肯定要学习和理解 5 个设计原则。 #### 五大设计原则-SOLID - S(single)-单一职责原则- 一个程序只做好一件事;如果功能过于复杂就拆分开,每个部分保持独立; - O(open-close)-开放封闭原则- 对扩展开放,对修改封闭;增加需求时,扩展新代码,而非修改已有代码; - L(Liskov)-里氏置换原则-子类能覆盖父类;父类能出现的地方子类就能出现; - I(Interface)-接口独立原则-保持接口的单一独立,避免出现”胖接口“;js中没有接口(typescript除外),使用少; - D(Dependence)-依赖倒置原则-编程依赖抽象接口,不要依赖具体实现;使用方只关注接口而不关注具体类的实现; **示例 promise** - 单一职责原则:每个 then 中的逻辑制作好一件事 - 开放封闭原则:如果新增需求,扩展 then ```js // 0.0.1/loadImg.js function loadImg(src) { let promise = new Promise(function (resolve, reject) { let img = document.createElement('img'); img.onload = function () { resolve(img); } img.onerror = function () { reject('图片加载失败'); } img.src = src; }); return promise; } let imgUrl = 'https://raw.githubusercontent.com/ruizhengyun/images/master/cover/ruizhengyun.cn_.png'; loadImg(imgUrl).then(function (img) { console.log(`width: ${img.width}`); return img; }).then(function (img) { console.log(`height: ${img.height}`); }).catch(function (ex) { console.log(ex); }); ``` #### Javascript 常用设计模式 -- 工厂模式 工厂模式也称创建模式,是用于创建对象的一种方式。可以说就是用来代替 new 实例化对象,决定了实例化哪一个类,从而解决解耦问题。 **拟物化解读** 一个工厂接到一笔订单(传参),然后根据这个订单类型(参数)来安排产品线(实例化哪个类),当然客户可以要求一些产品的工艺属性(抽象工厂)。这其中厂长(工厂模式)只负责调度,即安排产品零件流水线。你应该知道的是,工厂有个特点就是产出体量大、相似度高的产品。如果你要做单一定制化的产品,那这笔订单给工厂就不适用了。 **其作用(利)** 解耦,通过使用工程方法而不是 new 关键字; 将所有实例化的代码集中在一个位置减少代码重复,降低出错; **具体实现** 分步创建一个复杂的对象,解耦封装过程和具体创建组件(分解为零件流水线); 无需关心组件如何组装(厂长在调度); 不暴露创建对象的具体逻辑,将逻辑封装在一个函数中(客户只需要告诉工厂做什么和提一些要求); **适用场景** 处理大量具有相同属性的小对象; 对象的构建十分复杂,需要依赖具体环境创建不同实例 **分类(抽象程度)** 不暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。 ##### 简单工厂模式 也可以叫静态工厂模式,用一个工厂对象创建同一类对象类的实例。现实生活中,用户在平台还是分等级的,角色不同,权限也不同。 **1.ES5 实现** ```js // 0.0.2/es5.simple.factory.js function Role(options){ this.role = options.role; this.permissions = options.permissions; } Role.prototype.show = function (){ var str = '是一个' + this.role + ', 权限:' + this.permissions.join(', '); console.log(str) } function simpleFactory(role){ switch(role) { case 'admin': return new Role({ role: '管理员', permissions: ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论'] }); break; case 'developer': return new Role({ role: '开发者', permissions: ['开发', '推送', '提问', '评论'] }); break; default: throw new Error('参数只能为 admin 或 developer'); } } // 实例 const xm = simpleFactory('admin'); xm.show(); const xh = simpleFactory('developer'); xh.show(); const xl = simpleFactory('guest'); xl.show(); ``` **2.ES6 实现** ```js // 0.0.2/simple.factory.js class SimpleFactory { constructor(opt) { this.role = opt.role; this.permissions = opt.permissions; } // 静态方法 static create(role) { switch (role) { case 'admin': return new SimpleFactory({ role: '管理员', permissions: ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论'] }); break; case 'developer': return new SimpleFactory({ role: '开发者', permissions: ['开发', '推送', '提问', '评论'] }); break; default: throw new Error('参数只能为 admin 或 developer'); } } show() { const str = `是一个${this.role}, 权限:${this.permissions.join(', ')}`; console.log(str); } } // 实例 const xm = SampleFactory.create('admin'); xm.show(); const xh = SampleFactory.create('developer'); xh.show(); const xl = SampleFactory.create('guest'); xl.show(); ``` 或 ```js // 0.0.2/simple.factory2.js class Role { constructor(options) { this.role = options.role; this.permissions = options.permissions; } show() { const str = `是一个${this.role}, 权限:${this.permissions.join(', ')}`; console.log(str); } } class SimpleFactory { constructor(role) { if(typeof this[role] !== 'function') { throw new Error('参数只能为 admin 或 developer'); } return this[role](); } admin() { return new Role({ role: '管理员', permissions: ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论'] }); } developer() { return new Role({ role: '开发者', permissions: ['开发', '推送', '提问', '评论'] }); } } // 实例 const xm = new SimpleFactory('admin'); xm.show(); const xh = new SimpleFactory('developer'); xh.show(); const xl = new SimpleFactory('guest'); xl.show(); ``` 上例中,simpleFactory 就是一个简单工厂,2个实例对应不同的权限,调用工厂函数时,只需传递 admin 或 developer 就可获取对应的实例对象。 **1.简单工厂函数适用场景** 正确传参,就可以获取所需要的对象,无需知道内部实现细节; 内部逻辑(工厂函数)通过传入参数判断实例化是使用哪些类; 创建对象数量少(稳定),对象的创建逻辑不复杂; **2.简单工厂函数不适用场景** 当需要添加新的类时,就需要修改工厂方法,这违背了开放封闭原则(OCP, 对扩展开放、对源码修改封闭)。函数 create 内包含了所有创建对象(构造函数)的判断逻辑代码,如果要增加新的构造函数还需要修改函数 create(判断逻辑代码),当可选参数 role 变得更多时,那函数 create 的判断逻辑代码就变得臃肿起来,难以维护。 不适用创建多类对象; ##### 工厂方法模式 将实际创建对象工作推迟到子类当中,核心类就成了抽象类。这样添加新的类时就无需修改工厂方法,只需要将子类注册进工厂方法的原型对象中即可。 **1.ES5 实现**,ES5 没有像传统创建类的方式那样创建抽象类,所以工厂方法模式只需参考其核心思想即可。可将工厂方法看做一个实例化对象工厂类(采用安全模式类),将创建对象的基类放在工厂方法类的原型中即可。当需要添加新类时,只需挂载在 FunctionFactory.prototype 上,无需修改工厂方法,也实现了 OCP 原则。 ```js // 0.0.2/es5.function.factory.js function FunctionFactory(role) { if(!(['admin', 'developer'].indexOf(role) > -1)){ throw new Error('参数只能为 admin 或 developer'); } // 安全的工厂方法 if (this instanceof FunctionFactory) { return this[role](); } return new FunctionFactory(role); } FunctionFactory.prototype.show = function () { var str = '是一个' + this.role + ', 权限:' + this.permissions.join(', '); console.log(str) } FunctionFactory.prototype.admin = function (permissions) { this.role = '管理员'; this.permissions = ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论']; } FunctionFactory.prototype.developer = function (permissions) { this.role = '开发者'; this.permissions = ['开发', '推送', '提问', '评论']; } var xm = FunctionFactory('admin'); xm.show(); var xh = new FunctionFactory('developer'); xh.show(); var xl = new FunctionFactory('guest'); xl.show(); ``` **2.ES6 实现**,由于 ES6 中还没有 abstract,就用 new.target 来模拟出抽象类(new.target 指向被 new 执行的构造函数),判断 new.target 是否指向了抽象类,如果是就报错。 ```js // 0.0.2/function.factory.js class FunctionFactoryBase { // 抽象类 constructor(role) { if (new.target === FunctionFactoryBase) { throw new Error('抽象类不能实例'); } this.role = role; } } class FunctionFactory extends FunctionFactoryBase { // 子类 constructor(role) { super(role); } static create(role) { switch (role) { case 'admin': return new FunctionFactory({ role: '管理员', permissions: ['设置', '删除', '新增', '创建', '开发', '推送', '提问', '评论'] }); break; case 'developer': return new FunctionFactory({ role: '开发者', permissions: ['开发', '推送', '提问', '评论'] }); break; default: throw new Error('参数只能为 admin 或 developer'); } } show() { const { role, permissions } = this.role; const str = `是一个${role}, 权限:${permissions.join(', ')}`; console.log(str) } } // let xl = new FunctionFactoryBase(); // 此行会报错,注释后方可正常执行后面 let xm = FunctionFactory.create('admin'); xm.show() let xh = FunctionFactory.create('developer'); xh.show() let xl = FunctionFactory.create('guest'); xl.show() ``` ##### 抽象工厂模式 抽象工厂只留对外的口子,不做事,留给外界覆盖(子类重写接口方法以便创建的时候指定自己的对象类型)。主要用于对产品类簇的创建,不直接生成实例(简单工厂模式和工厂方法模式都是生成实例)。 - 抽象类是一种声明但不能使用的类,子类必须先实现其方法才能调用; - 可以在抽象类中定义一套规范,供子类去继承实现; ```js // 0.0.2/abstract.factory2.js // 抽象工厂 function AbstractFactory(subType, superType) { if (typeof AbstractFactory[superType] === 'function') { //缓存类 function F() { } //继承父类属性和方法 F.prototype = new AbstractFactory[superType](); //将子类 constructor 指向子类(自己) subType.prototype.constructor = subType; //子类原型继承缓存类(父类) subType.prototype = new F(); } else { //不存在该抽象类抛出错误 throw new Error('抽象类不存在') } } // 抽象类 AbstractFactory.Phone = function () { this.type = 'Phone'; } AbstractFactory.Phone.prototype = { showType: function () { return new Error('Phone 抽象方法 showType 不能调用'); }, showPrice: function () { return new Error('Phone 抽象方法 showPrice 不能调用'); }, showColor: function () { return new Error('Phone 抽象方法 showColor 不能调用'); } } AbstractFactory.Pad = function () { this.type = 'Pad'; } AbstractFactory.Pad.prototype = { showType: function () { return new Error('Pad 抽象方法 showType 不能调用'); }, showPrice: function () { return new Error('Pad 抽象方法 showPrice 不能调用'); }, showColor: function () { return new Error('Pad 抽象方法 showColor 不能调用'); } } // 抽象工厂实现对抽象类的继承 function Iphone(type, price, color) { this.type = type; this.price = price; this.color = color; } //抽象工厂实现对 Phone 抽象类的继承 AbstractFactory(Iphone, 'Phone'); Iphone.prototype.showType = function () { return this.type; } Iphone.prototype.showPrice = function () { return this.price; } Iphone.prototype.showColor = function () { return this.color; } function Ipad(type, price, color) { this.type = type; this.price = price; this.color = color; } AbstractFactory(Ipad, 'Pad'); Ipad.prototype.showType = function () { return this.type; } Ipad.prototype.showPrice = function () { return this.price; } Ipad.prototype.showColor = function () { return this.color; } // 实例 var iphone5s = new Iphone('iphone 5s', 3000, '白色'); console.log('今天刚买了' + iphone5s.showType() + ',价格是' + iphone5s.showPrice() + ',' + iphone5s.showColor()) var iphone8s = new Iphone('iphone 8s', 8000, '白色'); console.log('今天刚买了' + iphone8s.showType() + ',价格是' + iphone8s.showPrice() + ',' + iphone8s.showColor()) var ipad = new Ipad('ipad air', 2000, '骚红色'); console.log('今天刚买了' + ipad.showType() + ',价格是' + ipad.showPrice() + ',' + ipad.showColor()) ``` **除此之外还有单例模式、适配器模式、装饰器模式、代理模式、观察者模式、迭代器模式等**
  • [热门活动] 【开年狂欢季】华为云数据库开年采购全攻略
    数据库要上云?快来领《华为云数据库开年采购全攻略》,优惠福利先知道:云数据库特价套餐低至2.7折,访问云数据库专场即可抽奖, 先抢50万云数据库专属红包,看直播再享折上折,下单满额送手机P40 Pro等大礼。  点击开启上您的上云狂欢季:https://activity.huaweicloud.com/dbs_Promotion/index.html  
  • [热门活动] 开年采购活动来了!爆款云数据库2.7折起,满额还送华为手机P40 Pro 5G
     让企业核心数据安全上云,稳定高效处理与分析,我们是认真的!来开年采购季·云数据库专场,畅享一站式数据上云服务。爆款云数据库2.7折起,新购满额送华为手机P40 Pro 5G!现在点击链接还可以参与抽奖!有机会赢取价值千元礼品!→https://activity.huaweicloud.com/dbs_Promotion/index.html
  • [数据安全] 华为云数据库服务 “全家福”
    当前,华为云数据库已经发布了12款服务,从无到有,从 0 到 12 个服务仅仅用了不到三年时间。而这个过程,友商往往需要花 5 到 6 年以上的时间才能完成。所以说,华为云现在可能不是最好的云,但是它一定是发展进步最快的云,这绝对不是一句口号和空话。华为云数据库服务在关系型数据库、NoSQL 数据库和数据库生态几大领域全面布局。除了Oracle,著名数据库引擎排名网站(DB-Engines)的TOP5 数据库均有支持。包括 MySQL、PostgreSQL、SQLServer、MongoDB。值得一提的是,华为云基于社区版 MySQL 推出一款高性能数据库引擎 HWSQL,性能达原生 MySQL 的 3 倍以上。在 NoSQL 数据库领域,华为云支持了 Redis和 Memcached 缓存数据库;在数据库生态领域,华为云提供了分布式数据库中间、数据库安全、数据复制、数据管理、数据仓库等服务。值得一提的是,华为云分布式数据库中间件的自动读写分离、分库分表功能,可以将数据切片分布到多个节点上,解决单节点数据量集中和过大导致读写性能瓶颈问题。数据库安全服务提供的安全防护可以防御SQL 注入攻击、防敏感数据泄漏、数据库安全审计、安全合规等。使用云数据库服务是趋势,但事实上,要实现数据库迁移上云并非易事。在传统数据库迁移场景中,用户面临着技术门槛高、高成本、周期长、风险高、可靠性低、业务可能中断等一系列难题。传统迁移需要操作人员具备专业的技术背景,而且步骤复杂,特别是在线迁移更是如此。迁移规划、环境搭建、人工部署等耗费大量时间;DBA 专家成本以及迁移所需硬件成本高昂,在复杂多变的场景下,如何保证迁移前后数据一致也是挑战。而且为了实现迁移完整性,用户可能需要在离线状态下迁移数据库,导致业务中断。云时代的数据库又是如何迁移的呢?这里以华为云数据复制服务 DRS  为例。DRS 是一种易用、稳定、高效,用于数据库在线迁移和数据库实时同步的云服务。显著特点就是操作简单,迁移过程中状态清晰可见;多项操作后台自动完成,几分钟即可搭建迁移任务,高效率。DRS通过增量复制源库数据实现不停机迁移,业务无需中断,且无需专业DBA专家参与,按需申请迁移资源,用完释放,费用低。当前,数据复制服务DRS 已经支持各种网络场景。常见的比如:公网网络迁移:源库位于友商云RDS 内、源库位于友商云ECS 自建库上、源库位于本地数据中心内、源库位于华为云内自建库 (不同Region) 。VPC 迁移:源库位于华为云内自建库或 RDS (相同Region) 。VPN 内迁移:源库位于本地数据中心内、源库位于华为云其他 Region。版权声明:本文为CSDN博主「shijin23」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/shijin23/article/details/80653393
  • [技术干货] 前端调试机器
    ## Chrome调试工具 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/1946416mxtydgfysrjdlpr.png) #### 箭头 & Elements ##### **箭头:** 用于在页面选择一个元素来审查和查看它的相关信息。 ##### Elements 内容: + 样式 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/194757x6mhhgmwz9gbreas.png) + 计算属性 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/194818ubcs8xiddehihlld.png) + 事件监听 > 将Ancestors和Framework Listeners两个checkbox取消选中可以看到 选择dom绑定的事件。 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/19485498syfy4vrdtswdyu.png) + DOM breakpoints + 在Chrome开发者工具里,选中想要监控的DOM元素,点击右键,选择Break on->Attributes modifications: ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/194930vyblmcvnviuv0ibv.png) + 之后在DOM Breakpoints的tab里能看到对应的断点 + 然后回到Chrome里鼠标悬停百度一下,Chrome开发者工具的调试器就会自动在DOM的属性发生变化的地方停下来: ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195014m4pmhursabbfcgvl.png) + 从调试器的调用上下文能了解到是上图第118行的className 改变了导致DOM断点的触发。 + Properties > 改选项卡里面可以看到 选择dom对象,及类的继承链。 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195235nmhgfm2ud8xqqlaa.png) #### 设备模拟器 > 模拟移动屏幕,或者一些其它的像素比例的屏幕。 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195301vmhsnbu9oek0zngc.png) #### Console控制台 > 控制台打印, 执行脚本。 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195332g2eidbbtv36dtdyn.png) #### Sources ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195348qeupdyr3bfddtzvq.png) #### NetWork ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195402wvgl1f8vwx0fcpou.png) #### Performance ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195415ap0bhda0beswf2qf.png) #### Memory: 内存快照 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/1954370qptqahc0icxkxly.png) ## Vscode内代码调试 #### 调试环境配置 > 在.vscode / launch.json 文件夹为配置文件。(可以快捷键ctrl + p 然后输入 debug 进行快速配置) ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195510wrw7ka6vzelhpqth.png) **参数说明:** ```json "name": "Attach to Chrome", // 调试环境名称 "type": "pwa-chrome", //调试环境运行环境, 取值: node pwa-chrome 或其它自行安装的程序命令 "request": "attach" | "launch", // attach模式: 监听一个启动进程 launch模式: 由vscode 来启动一个独立的debug进程 "url": "http://localhost:8080", // 服务地址 launch模式才会有 "port": 9222, // 端口 attach才会有 "webRoot": "${workspaceFolder}" // 静态资源目录 "cwd": "${workspaceFolder}/dist", // 指定程序启动调试的目录 ,当vscode启动目录不是项目根目录,并且调试npm script时非常有用 "args": ["--no-install"], "outFiles": ["${workspaceFolder}/lib/**/*.js"], //指定 sourceMaps的位置 "skipFiles": [ "<node_internals>/**/*.js", "${workspaceFolder}/node_modules/**/*.js" ], //指定跳过单步调试的代码 "preLaunchTask": "npm: build", // launch之前做的事情 "stopOnEntry": true, //自动断点到第一行代码处 "smartStep": true, //自动跳过未映射到源代码的代码 ``` #### 单个JS调试 > 添加如下配置到launch.json 选择test.js F5 debug模式运行 ```json { "type": "node", "request": "launch", "name": "debug test", "runtimeExecutable": "node", "program": "${workspaceFolder}/code/debugger/test.js", "restart": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" } ``` #### 项目调试 + 安装插件:`Debugger for Chrome` ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/forums/attachment/forum/202102/25/195956i5k2fllzldgodgyh.png) + 配置launch.json ```json { "type": "chrome", "request": "launch", "name": "launch project dbug", "url": "http://localhost:8993/drs", "webRoot": "${workspaceFolder}", "preLaunchTask": "debug", "sourceMapPathOverrides": { "webpack://[name]/./*": "${webRoot}/*", "webpack:///src/*": "${webRoot}/*", "webpack:///*": "*", "webpack:///./~/*": "${webRoot}/node_modules/*", }, }, ``` + 配置debug命令 ```json { "version": "2.0.0", "command": "npm", // 运行命令的程序 "tasks": [ { "label": "debug", // Task 名称 "isBackground": true, "type": "npm", "script": "start", // npm 要执行的 script 名称,对应 package.json 中的定义 "detail": "编译至开发环境", // Task 的描述,在命令面板中显示 "group": "test", "problemMatcher": { "fileLocation": "relative", "pattern": { "regexp": "^([^\\s].*)\\((\\d+|\\,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$", "file": 1, "location": 2, "severity": 3, "code": 4, "message": 5 }, "background": { "activeOnStart": true, "beginsPattern": ".", "endsPattern": "Version: webpack.+" } } } ] } ``` + 运行`launch project dbug` 命令
  • [技术干货] 云图说 | 第201期 读请求太多怎么办?云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期
    新得一年,小云妹我又带着数据库的新干货来了,高峰期读请求太多怎么办?不要慌,云数据库 RDS for MySQL支持一键开通读写分离,轻松应对业务高峰期详细操作,云图说为您详解~云数据库 RDS for MySQL 介绍页入口:https://www.huaweicloud.com/product/mysql.html云数据库 RDS for MySQL成长地图入口:https://support.huaweicloud.com/rds/index.html【往期回顾】●【第一期】初始华为云关系型数据库RDS●【第二期】万万没想到,云数据库MySQL原来是这样的!●【第三期】这些购买云数据库MySQL的技能实用到哭,你确定不来看看?●【第四期】云数据库MySQL一键实现弹性扩展是种什么样的体验?●【第五期】太给力了!认识云数据库PostgreSQL只需要这三步●【第六期】这才是云数据库SQL Server正确的打开方式●【第七期】数据库的私人医生——云DBA●【第八期】小云妹带你快速玩转关系型数据库实例操作(一)●【第九期】小云妹带你快速玩转关系型数据库实例操作(二)●【第十期】 云数据库 RDS for MySQL 内核小版本升级攻略
  • ACMUG2020技术年会丨华为云数据库聚焦技术创新,打造全场景智慧
    12月25日-27日,2020年度ACMUG数据库技术年会在云南丽江隆重举行,华为云数据库技术专家彭立勋、华为高斯实验室AI模块负责人王天庆受邀参加并发表了主题演讲,分享了基于MySQL深入内核源码,掌握技术可控,以及结合AI打造全场景智能等内容,此外,年会上华为云数据库荣获由中国计算机行业协会颁发的“数据库专业委员会-创新数据库论坛卓越合作伙伴”荣誉证书,再次获得行业认可。新基建时代,云数据库作为企业数字化转型的核心关键基础软件,面临着越来越多的技术挑战。如何实现企业级数据库的自主可控,如何满足企业全智能管理运维诉求,华为云数据库技术专家彭立勋、华为高斯实验室AI模块负责人王天庆围绕技术创新,详解了华为云助力企业创新发展的技术之道。深入内核源码,方能技术可控华为云数据库技术专家彭立勋,现场分享了自己在MySQL内核研发这些年所遇到的一些问题和感悟,比如遇到过哪些必须通过内核改造才能实现的业务逻辑,如何高效的维护自有分支对内核进行二次研发来实现业务目的,以及同步官方版本的演进。关于技术可控方面,他认为必须深度理解软件的内核,在清楚了解内核源码的基础上,选择一个可靠可控的底座进行二次开发,远比自己盲目“造轮子”更有意义。而深入源码学习,可通过阅读官方文档、参与社区讨论、了解代码框架、从熟悉的模块入手等一系列路径来获取。关于开源协议方面,他表示,公司需要积极拥抱开源社区,针对自己的需求选择合适的开源协议的项目,基于一个可靠的开源项目,主动参与社区优化和改进,维护好自有分支,而不是闭门造车、重复造轮子,这样才更有利于公司发展。华为云数据库技术专家彭立勋现场分享结合AI,打造全场景智能                                                        华为高斯实验室AI模块负责人王天庆,详细介绍了《华为云GaussDB在AI自治数据库上的演进》。他提到,目前数据库结合人工智能已从辅助优化到全场景智能阶段,GaussDB与AI从全应用场景、全用户、全技术栈、异构计算等方面构建了AI数据库发展全景,智能管理平台,全面提升数据库智能化水平,轻松应对不同行业多样化负载压力。AI数据库基于GaussDB,构建了参数调优与诊断、实时监控与异常检测、单Query/ Workload级别索引推荐、在线学习的查询性能预测、以及全流程AI等核心能力,这些能力已在华为云数据管理服务DAS和openGauss社区上落地实践,如在DAS上通过数据库参数智能配置,对SQL语句进行智能诊断,实现QPS实时预测;DAS基于慢SQL发现能力,可预估SQL语句的执行时间,根据SQL语句类型进行类别区分,SQL语句分布情况可视化。关于未来演进,王天庆表示,AI数据库将持续技术创新,从行数估算、代价模型、路径搜索等方面规划AI优化器全景图,推动AI优化器朝智能化方向发展,实现自适应、自优化;持续修正AI优化器之算子代价模型,不断提升性能。华为高斯实验室AI模块负责人王天庆现场分享GaussDB今年入选Gartner2020数据库魔力象限,GaussDB(for MySQL)核心技术创新论文连续入选SIGMOD、SSDBM等国际顶级数据库会议,以及服务500+大客户落地实践,都表明了华为云GaussDB赢得了市场的广泛认可。面对未来,华为云数据库将持续从用户需求出发,做好技术提升,研发更有竞争力的数据库产品,助力企业更好地完成数据库和应用技术转型,为更多企业上云数字化转型提供坚实可靠的数据库底座。错过现场分享的小伙伴们可点击链接进行回顾:cid:link_0
  • 省钱攻略:云数据库如何做到买1年送半年?
    #12.12会员节# 如何以性价比更高的方式轻松上云?来云数据库专场参与迁移加送时长活动吧。12月31日前,购买1年4折云数据库套餐后,使用数据复制服务DRS成功迁移到华为云的数据量达1G,加送6个月时长,4折秒变2.6折。(限未购买过华为云数据库的企业新用户参与)详情请戳:12.12云数据库专场https://activity.huaweicloud.com/dbs_Promotion/index.html
总条数:504 到第 页
上滑加载中