• [优秀案例分享] 校运会系统数据库设计
    1、设计要求案例2: 校运动会系统校运动会中有各类比赛,每一比赛类别有类别编号、类别名称和主管属性,每一比赛类别包含很多个比赛项目;每一比赛项目有项目编号、项目名称、比赛时间和级别属性;各个系团队有团队编号、团队名称、领队属性,每一代表团由多名运动员组成,运动员有编号,姓名,年龄,性别等属性;每一名运动员可以参加多个比赛项目,每一比赛项目也有多名运动员参加,运动员参加比赛有成绩属性。2、ER图绘制ddl代码SET foreign_key_checks = 0; drop table if exists competitionType; drop table if exists competition; drop table if exists team; drop table if exists player; drop table if exists results; CREATE TABLE competitionType( typeid int COMMENT '类型编号' AUTO_INCREMENT, type_name varchar(40) COMMENT '类型名称', manager varchar(40) COMMENT '主管名称', PRIMARY KEY (typeid) ); CREATE TABLE competition( cid int COMMENT '比赛编号' AUTO_INCREMENT, gender int COMMENT '比赛性别,1表示男,0表示女' DEFAULT 1, cname varchar(40) COMMENT '比赛名称', ctime DATETIME COMMENT '比赛时间', typeid int COMMENT '比赛类别编号', PRIMARY KEY (cid), FOREIGN KEY (typeid) REFERENCES competitionType(typeid) on delete set null ); CREATE TABLE team( tid int COMMENT '团队编号' AUTO_INCREMENT, tname varchar(40) COMMENT '团队名称', leader varchar(40) COMMENT '领队名称', PRIMARY KEY (tid) ); CREATE TABLE player( pid int COMMENT '运动员编号' AUTO_INCREMENT, pname varchar(40) COMMENT '姓名', age int COMMENT '年龄', gender int COMMENT '性别,1表示男,0表示女' DEFAULT 1, grade int COMMENT '年级级别', tid int COMMENT '所属团队编号', PRIMARY KEY (pid), FOREIGN KEY (tid) REFERENCES team(tid) on delete set null ); CREATE TABLE results( pid int COMMENT '运动员编号', cid int COMMENT '比赛编号', score int COMMENT '成绩', PRIMARY KEY (pid, cid), FOREIGN KEY (pid) REFERENCES player(pid), FOREIGN KEY (cid) REFERENCES competition(cid) ); SET foreign_key_checks = 1;3、数据字典在华为云gaussdb数据库中,在执行了上述ddl代码之后,使用“库管理”->“数据字典”->“导出PDF”,即可获得可视化的数据结构以检查数据定义的正确性 以下为本次设计导出的结果4、业务需求实现sql设计及其效果展示获取所有团体总成绩,并按总成绩排列展示delimiter $$ drop procedure if exists teamInfo; create procedure teamInfo() begin select tname as 院系名称, ifnull(sum(score),0) as 总分 from team team left join (select * from player natural join results) as pr on pr.tid = team.tid group by team.tid ORDER BY sum(score) desc; end; $$ delimiter;展示所有比赛项目的所有参赛人员及其参赛成绩delimiter $$ drop view if exists competitionInfo; create view competitionInfo as with compe(cid, cname2) as ( select cid, CONCAT(CASE gender when 1 then "男子" else "女子" END ,cname) as cname2 from competition) select cname2 as 项目名称, pname as 运动员, score as 成绩 from results natural join compe natural join player order by cname2 desc, score desc; $$ delimiter;男子只能参加男子比赛,女子只能参加女子比赛delimiter $$ drop trigger if exists results_insert_before_trigger; create trigger results_insert_before_trigger BEFORE INSERT ON results for each row BEGIN declare pgender int; declare cgender int; select gender into pgender from player where new.pid = pid; select gender into cgender from competition where new.cid = cid; if (cgender <> pgender) then insert into mytable values(0); end if; end; $$ delimiter;1是男性运动员,5是男子比赛,4是女子比赛,3是比赛成绩,未参加的可以设为0,可以看到只有男性运动员参加男子比赛才能成功报名,否则无法插入
  • [技术干货] 使用华为云GaussDB搭建智能门锁用户管理系统
    智能门锁技术在现代社会中得到了广泛的应用,而一个可靠的用户管理系统对于智能门锁的正常运行至关重要。本教程将介绍如何使用华为云的 GaussDB 构建一个强大的智能门锁用户管理系统。1.数据库设计首先,我们需要设计数据库结构,为此我们创建三个主要表:用户(User)、门锁(Lock)和授权(Authorization)。 2. 创建数据库和表在华为云 GaussDB 控制台中,先购买一个数据库资源: 打开一个新的数据库: 并按照上述ER图设计创建相应的表:-- 创建用户表 CREATE TABLE User ( UserID INT PRIMARY KEY, UserName VARCHAR(255), -- 其他用户信息字段... );-- 创建门锁表 CREATE TABLE Lock ( LockID INT PRIMARY KEY, LockName VARCHAR(255), -- 其他门锁信息字段... );-- 创建授权表 CREATE TABLE Authorization ( AuthorizationID INT PRIMARY KEY, UserID INT, LockID INT, FOREIGN KEY (UserID) REFERENCES User(UserID), FOREIGN KEY (LockID) REFERENCES Lock(LockID) );-- 创建用户门锁关系表 CREATE TABLE UserLock ( UserLockID INT PRIMARY KEY, UserID INT, LockID INT, FOREIGN KEY (UserID) REFERENCES User(UserID), FOREIGN KEY (LockID) REFERENCES Lock(LockID) );3. 插入示例数据插入一些示例数据,以便演示系统的基本功能。注意,实际中这些数据应该是由用户通过系统界面添加的。-- 插入用户数据 INSERT INTO User (UserID, UserName) VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');-- 插入门锁数据 INSERT INTO Lock (LockID, LockName) VALUES (101, 'Front Door'), (102, 'Back Door');-- 插入授权数据 INSERT INTO Authorization (AuthorizationID, UserID, LockID) VALUES (1001, 1, 101), (1002, 2, 101), (1003, 3, 102);-- 插入用户门锁关系数据 INSERT INTO UserLock (UserLockID, UserID, LockID) VALUES (2001, 1, 101), (2002, 2, 101), (2003, 3, 102);4. 实现用户管理系统逻辑通过编程语言(如Java、Python等)或框架,实现用户管理系统的逻辑。这包括用户注册、授权管理等功能。在实际项目中,可能需要使用华为云的开发工具和 SDK 进行数据库连接和操作。5. 进行测试测试系统,确保用户可以成功注册,门锁可以正确地获取和验证用户的授权信息,以及用户门锁关系的管理。
  • [技术干货] 【分享】医疗场景下的数据库构建实践
    案例:医院人事系统每个科室有多名医生,每名医生只能在一个科室中工作。每名医生可以参加多个医药科研项目,每个医药科研项目可以由多名医生参加。每个医药科研项目由一名医生担任总负责人,一名医生可以负责多个医药科研项目。每名医生参加某医药科研项目,都有“项目职责”和“每年投入几个月”这两个信息。其他相关信息包括: 科室:科室编号、科室描述 医生:工号、姓名、性别、出生日期、进入医院工作日期、职称 医药科研项目:项目编号、项目名称、项目简述1. ER图绘制省略了部分属性,用下划线标注了主键。其中,由于将职责这一实体认定为弱实体,因此没有标注主键,但在具体实现时,会通过添加工号和项目编号这两个属性来将职责和医生和项目对应起来): 2. 将ER图转换为关系模式,注明关系的属性、主键和外键。Department(Dept dept_number, Dept dept_description, Dept doct_num) #科室编号,科室描述,医生数量 Doctor(Dct doct_id, Dct doct_name, Dept dept_number, Dct doct_gender, Dct doct_birthday, Dct doct_work_began_date, Dct doct_title) #医生编号,医生姓名,科室编号,性别,出生日期,进入医院工作日期、职称 Duty(Dct doct_id, Proj proj_id, Duty proj_duty, Duty worktime) #医生编号,项目编号,项目职责,每年投入几个月 Project(Proj proj_id, Proj proj_name, Proj proj_description, Proj proj_leader) #项目编号、项目名称、项目简述,负责人姓名3. 建立的数据库中定义成视图、存储过程、触发器或函数【1】视图功能描述:显示所有担任项目负责人的医生的姓名,工作年限,职称,所在科室SQL代码:CREATE view proj_leader as SELECT `user019db`.`project`.`proj_name` AS `proj_name`,`user019db`.`project`.`proj_leader` AS `项目领导人`,timestampdiff(YEAR,`user019db`.`doctor`.`doct_work_began_date`,now()) AS `工作年限`,`user019db`.`doctor`.`doct_title` AS `职称`,`user019db`.`doctor`.`dept_number` AS `科室编号` FROM (`user019db`.`project` join `user019db`.`doctor`) WHERE (`user019db`.`project`.`proj_leader` = `user019db`.`doctor`.`doct_name`)执行效果: 【2】存储过程功能描述:创建存储过程UpdateDoctorTitle,该存储过程更新doctor表中的职称(doct_title),根据医生的入职时间做不同的更新操作,使用游标:对入职时间在2010-01-01之前(含)的,如果之前的职称是副主任医师则设置医生的职称(doct_title)为主任医师;对入职时间在2018-01-01之前(含)的,如果之前的职称是实习医师则设置医生的职称(doct_title)为普通医生;SQL代码:CREATE PROCEDURE `UpdateDoctorTitle`() BEGIN DECLARE d_id INT; DECLARE work_date DATE; DECLARE title VARCHAR(255); DECLARE cur CURSOR FOR SELECT a.doct_work_began_date, a.doct_title, a.doct_id FROM doctor a; DECLARE exit HANDLER FOR NOT FOUND CLOSE cur; OPEN cur; REPEAT FETCH cur INTO work_date, title, d_id; IF(work_date<='2010-01-01' and title = '副主任医师') THEN SET title = '主任医师'; ELSEIF(work_date<='2018-01-01' and title = '实习医师') THEN SET title = '普通医生'; END IF; UPDATE doctor SET doct_title=title WHERE doct_id=d_id; UNTIL 0 END REPEAT; END执行效果: 【3】触发器功能描述:当有新增的医生后,科室内的医生数量对应更新SQL代码:DELIMITER $$ CREATE DEFINER=`DB_USER019`@`%` TRIGGER `UpdateDoctNum` AFTER INSERT ON `doctor` FOR EACH ROW begin UPDATE department SET doct_num=(SELECT count(*) FROM doctor WHERE new.dept_number=dept_number) WHERE dept_number=new.dept_number; end $$ DELIMITER ;执行效果:
  • [问题求助] dws里建表的时候定义character varying的长度和不定义character varying的长度有什么区别?
    dws里建表的时候定义character varying的长度和不定义character varying的长度有什么区别?
  • [活动公告] 【有奖征文 第28期】华为云GaussDB:与数据库同行的日子,分享你的故事和技术经验,赢千元大礼包!
    云计算时代,云数据库的需求和技术也在不断的发展,华为云数据库GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。为了让各位开发者0距离体验GaussDB、GaussDB(for MySQL)等产品,特举办《与数据库同行的日子》有奖征文活动,提供一个沙箱实践和一个实操手册,以便大家可以更好地学习和使用华为云数据库产品。☞参与规则第一步:体验GaussDB、GaussDB(for MySQL)等产品点我进行沙箱实验- GaussDB数据库应用程序开发实验点我获取现网实操- GaussDB(for MySQL)场景化综合应用实验(见文末底部附件)点我前往产品免费体验区-云数据库第二步:围绕如下主题之一发表文章① 产品体验:体验GaussDB、GaussDB(for MySQL)等产品,撰写产品体验反馈,如体验感受,使用后建议,操作使用方法等内容。② 最佳实践:分享在使用华为云GaussDB、GaussDB(for MySQL)等产品过程中,解决痛点问题或者完成应用开发实践的案例,进行性能优化、预测性维护、风险排查、NL2SQL等的实践内容。③ 技术攻坚:分享在数据库技术攻坚过程中遇见的技术和理论的难题、解决方向、以及成功的解决方案等内容。④ 人物图鉴:分享与数据库相关的身份在生活和工作中的故事,内容用到的技术手段、收获的感受、困惑和奇思妙想等,比如“数据库应用开发的一天”。☞格式要求1、标题必须以【华为云GaussDB:与数据库同行的日子】结尾,例如华为云GaussDB性能优化【华为云GaussDB:与数据库同行的日子】2、文章需打上【云数据库GaussDB】/【云数据库GaussDB(for MySQL)】/【云数据库GaussDB(for Redis)】/【云数据库GaussDB(for Influx)】/【云数据库GaussDB(for Cassandra)】的标签(至少包含一个) 3、文章末尾需加上活动名称及链接地址,如:我正在参加【有奖征文 第28期】华为云GaussDB:与数据库同行的日子! 链接:4、建议投稿内容字数不少于500字(不含代码段),语句通顺、文章逻辑清晰、排版整洁、代码规范,尽量图文并茂(有技术架构图或者分析图等做支撑)。5、文章保证原创首次发布,如发现投稿内容为转载、复制、抄袭、恶意拼接、灌水等侵权作弊行为,均视为无效并取消参与资格。6、文章须符合征文主题及平台内容规范,不得出现违规负面内容。详见华为云开发者平台内容互动使用协议。7、 参加征文活动的文章作者拥有著作权,华为云拥有使用权、修改权等。点此立即发表博文· 以上奖品均为实体奖品,具体视出库情况而定。☞评分规则专家评分依据 :文章篇幅、经验含金量、排版美观度、阅读量、点赞、收藏等指标综合评分。其他说明: 1、一二三等奖不能叠加。 2、参与奖不与一二三等奖叠加。 3、本期征文的一二三等奖对应四个主题方向分别设置1名、2名和7名。 4、有奖征文投稿数量不计入月度激励活动(即社区明星评选)文章数量。☞你将获得什么?我们会把收到的优质内容汇编成册,并注明原作者,积累行业口碑,开放给圈内开发者下载查阅,提供实践参考。对于贡献优质内容的作者,我们还将送出各项大礼!同时,在华为云站内外10+个技术社区醒目位置进行推荐,给与百万级流量资源。优质作者更可获得长期约稿和更多内容合作机会。☞问题咨询如果有任何问题,可扫描下方二维码咨询。添加微信时请备注:有奖征文+华为云博客昵称!如果大家在征文中遇到有关华为云产品体验方面的问题建议,请到【云声平台】提出您的宝贵建议,标题以【云驻计划-定向征文】开头,还有机会赢取额外奖励。快来华为云社区博客,一起遨游技术海洋吧! 点击立即体验☞部分奖品展示定制保温杯 定制保温杯 游戏机礼盒 定制双肩包 手机支架 定制折叠雨伞 定制连帽卫衣 定制笔记本 定制笔记本
  • [问题求助] GaussDB200安装系统版本要求
    根据提供的安装文档信息,要求的操作系统如下图请问centos7.5的能不能安装
  • [技术干货] 云上镇魂街,以守护之名,邀你热血入局
    作为领先的全球化IP游戏运营商,中手游以IP为核心,通过自主研发和联合研发,为全球玩家提供精品IP游戏,打造极具竞争力的IP游戏生态体系。《镇魂街:天生为王》是中手游改编自经典热血国漫IP《镇魂街》的新国潮将灵共战动作手游,其独特的将灵共战体验,成为备受众多国漫粉丝和动作游戏玩家喜爱的新势力精品手游,上线前全渠道预约破700万。百万级预约量,系统如何支撑?中手游在全力保证《镇魂街:天生为王》原汁原味的IP内容的同时,采用ARPG(动作角色扮演类游戏)+将灵共战的创新玩法,让原著粉丝与广大玩家都可以沉浸式体验到《镇魂街》IP的魅力。但新玩法也对服务器的性能、扩展、稳定性提出了新的需求,作为支撑整款游戏的底层数据库在技术方面也面临不小的挑战。高性能:700万预约量,上线首日服务器压力大,有爆服风险,需要一款极高性能的数据库作为支撑;稳定性:共战玩法对数据库的稳定性要求极高,对时延的容忍度极低,时刻需要高稳定、低时延的数据访问来保障玩家体验,不然会极易导致用户流失;弹性扩容:网络游戏作为一个大型、高并发的应用系统,其运行过程中面临着巨大的性能压力和技术挑战,在业务量高并发场景下,玩家访问量突增,同时在线人数迅速飚高,如何在短时间内支持数据库批量规格变更扩缩容成为游戏发行商的一道考验,而批量扩容可以使数据库支持更多的业务量访问。极速上线,华为云GaussDB(for MySQL)让您畅享超燃体验针对客户需求,华为云数据库团队采用了云原生数据库GaussDB(for MySQL)+文档数据库服务DDS组合解决方案,DDS用于存储玩家数据,包含玩家账号、战斗信息等; GaussDB(for MySQL)主要存储战斗信息日志(游戏战斗信息是游戏业务核心数据),并通过其自带的读写分离、高性能、批量变更等能力,高效支撑《镇魂街:天生为王》手游极速上线,助力玩家畅享超燃体验。读写分离,轻松应对流量洪峰华为云数据库采用读写分离代理的方案,对游戏中玩家需要读取的数据和写入的数据进行分流,有力分散了百万级流量洪峰的压力,且使用的GaussDB(for MySQL)性能较开源MySQL最高提升7倍,在流量洪峰的压测场景,性能表现持续稳定可靠,游戏首发持续高峰运行至今,数据库持续表现稳定。超低时延,业务稳定可用华为云GaussDB(for MySQL)存算分离架构,并搭配创新研发的DFV分布式存储技术,对云数据库存储容量进行扩充,达到最高128TB的海量数据存储空间,领先于国内外同类别产品的容量水平,能满足玩家产生的数据存储需求;NDPQ算子下推技术,在存储层进行数据的查询和计算,再返回应用,极大提高数据库的查询性能,降低了IO带宽,实现毫秒级低时延;基于DFV存储的三副本架构,实现数据强一致,并为客户所有现网生产实例创建容灾实例,业务发生故障可实现秒级恢复,有效保障业务的连续性和稳定性。批量规格变更,对业务无感针对游戏需要批量运维的场景,华为云数据库提供了批量规格变更能力,当数据量过大时,GaussDB(for MySQL)可对磁盘空间进行快速扩容,而且对业务无感知,扩容期间,服务不中断,大幅度提升了数据库运维效率,降低了运维成本。在华为云数据库的强力保障下,《镇魂街:天生为王》业务快速上线,1个月内完成游戏内测至上线全流程,流程缩短了50%;游戏上线首日,支撑百万游戏用户同时在线,游戏稳定运行不中断,上线首日荣登华为应用市场游戏热榜Top1。随着游戏市场的迅猛发展,打造精品化手游、跨界创新成为游戏厂商重要的考量。未来,中手游将持续深耕IP文化,通过技术赋能解锁IP游戏更多新玩法,华为云数据库也将继续携手中手游,共同打造更多游戏精品,给用户创造更极致的游戏体验。
  • [问题求助] 去IOE的政策
    目前国家对去IOE这块的政策,有谁有了解么?谁能给详细讲讲。
  • [问题求助] 关于高斯update语句更新后,查询的数据会发生位置变化的问题
    我有个表t,表结构是自增id,列c1,列c2。一共有10条数据。现在有个问题就是,如果是mysql直接对这个第5条进行update,更新完成后这条数据用select查询这个第五条还是在原来位置,但是高斯不是这样,update更新了第五条后,这条数据查出来就是在第10条的位置上了,原来在第六条的位置依次上移,就比如开始是1,2,3,4,5,6,7,8,9,10这样显示的结果,变成了1,2,3,4,6,7,8,9,10,5这样。目前就是想问,高斯这里update语句能不能像mysql一样,更新后位置不变,还是原来的默认排序?谢谢
  • [技术干货] 华为云云原生数据库走进新加坡,迈出国际化坚实一步
    8月4日,新加坡云原生技术沙龙活动顺利召开,大会邀请了新加坡本地互联网行业、大企业等领域数十位领导和专家参会,共同探讨新加坡数字化转型路径。华为云数据库服务产品部解决方案总监张虎出席并分享了华为云在云原生数据库的创新技术和优秀实践,让企业离应用更近一步,加速云原生数据库在海外落地。云原生数据库是大势所趋将成为企业上云首选张虎表示,随着互联网技术的发展,企业催生了许多新的业务模式,如电子商务、互联网游戏、数字银行、物流等。新应用、新场景带来了新的业务诉求,而传统数据库面对客户高时效、高可用、混合负载、高性价比等新诉求却显得无力。因此,以应用为中心的云原生数据库应运而生。云原生数据库,具备敏捷智能的天然优势,能够让应用更智能、更高效地使用数据库,很好地解决了数据同步、数据存储和处理、数据库高效管理等问题,成为了越来越多客户更加坚定的上云首选。围绕云原生三大方向华为云打造以应用为中心的云原生数据库面对企业新诉求,华为云对数据库内核和架构进行了重构,基于云的架构构建了“生于云 长于云”的云原生数据库,并提出云原生数据库三大方向:Serverless打造极致的弹性。客户在遭遇故障、规格变更时,整个资源弹性调度速度可以从分钟级缩短到秒级,实现数据库弹性伸缩业务无感知。目前华为云GaussDB(for MySQL) 已实现全栈无感Serverless,能按照新的算力单元计费,极大提升了资源使用效率。Regionless让全域数据可用。客户业务可以在任意地方进行接入和访问,同时带来跨地域的高可用,并保障数据就近访问,缩短响应时间,提升用户体验。Modeless带来极简体验。通过提供一个统一的入口,智能选择合适引擎处理业务请求,并实现多模数据自动转换,让数据处理和管理变得更简单。以云原生架构为代表的华为云关系型数据库GaussDB(for MySQL)和非关系型数据库GaussDB NoSQL,较同类开源数据库具备极大优势。比如GaussDB(for MySQL) 100%兼容MySQL 8.0,性能较开源提升7倍,跨Region数据实时灾备,最高支持128TB的海量存储,可实现超百万级QPS吞吐。GaussDB NoSQL支持Redis、MongoDB、InfluxDB和Cassandra四款引擎,打造了高扩展、高性能、高可靠、海量存储、强容灾等能力,高效管理多样化海量数据。华为云云原生数据库在场景锤炼中不断成熟华为云云原生数据库已经在互联网、电商、游戏、汽车制造等行业得到广泛应用,历经千行百业严苛场景锤炼,助力更多企业实现敏捷化管理。譬如在华为终端云改造中,GaussDB(for MySQL)和GaussDB(for Cassandra)等云原生数据库以及GaussDB数据库,共同助力其打造了稳定高效的服务平台, 目前已经上线共3000多实例,16000多节点,11PB的数据量,有效支撑了终端云服务万亿级数据记录,百万级QPS的业务量,整体资源利用率和运维效率相比之前提升30%。云原生浪潮汹涌,并逐渐走入越来越多的行业核心场景。华为云数据库也将继续围绕Serverless、Regionless、Modeless三大云原生方向持续技术演进,不断打磨云原生数据库能力,打造企业核心业务云化的智能数据基座,实现客户像使用水电一样使用数据库。
  • [技术干货] 华为云云原生数据库,让企业离应用更进一步
    7月9日,华为开发者大会2023(Cloud)期间,华为云举办“云原生数据库,‘Less哲学’让开发者离应用更近一步”的专题论坛。华为云数据库服务产品部副总经理庄乾锋携手两位华为云数据库技术专家,并联合顺丰客户,共同分享了云原生数据库未来演进方向、华为云云原生多模数据库的创新、全链路智能化解决方案,以及顺丰的云原生优秀实践,让企业和开发者离应用更近一步,加速云原生数据库的落地。多模融合,极简体验,华为云打造以应用为中心的云原生数据库庄乾锋表示,新应用、新场景带来了新的业务诉求,客户渴求更好地解决数据同步、数据存储和处理、数据库高效管理等问题的解决之道。而以应用为中心的云原生数据库,具备敏捷智能的天然优势,能够让应用更智能、更高效地使用数据库,促使越来越多用户更加坚定地选择了云原生数据库。面对企业新诉求,华为云数据库提出了云原生三大方向:Serverless打造极致的弹性,通过ALT应用无损透明倒换、应用弹性透明调度、应用透明集群等技术,保障数据库弹性伸缩业务无感知;Regionless让全域数据可用,Global Database、全域分层式引擎、全域一致性集群等技术,保障数据高可用、数据就近访问;Modeless带来极简体验,通过模型处理总线、HTAP、NDPQ等技术,智能根据业务负载选择合适引擎处理业务请求,并实现多模数据自动转换,让数据处理和管理变得更简单。以云原生架构为代表的华为云关系型数据库GaussDB(for MySQL)和非关系型数据库GaussDB NoSQL,在生态开放、弹性扩容、性能提升、高可用等方面,较开源数据库具备极大优势。比如GaussDB(for MySQL) 100%兼容MySQL 8.0,实现分钟级扩容,性能较开源提升7倍,两地三中心架构设计,具备跨Region数据实时灾备,最高支持128TB的海量存储,可实现超百万级QPS吞吐。华为云云原生数据库已经在电商、游戏、汽车制造等行业广泛应用,助力更多企业实现敏捷化管理。比如支撑梦饷集团打造一体化电商平台,实现数据库运维效率提升约30%,每秒成交的订单数创历史新高,为200万店主、10000+品牌、2.5亿商品提供了高效的服务。游戏行业,华为云GaussDB(for Redis) 是最佳的游戏数据库选型,加速了《迷你世界》去中心平台化,实现5倍性能提升,轻松应对20倍业务高峰变化,亚毫秒级时延稳定无抖,高效支撑千万级用户同时在线畅玩。云原生多模融合,高效管理多样化海量数据华为云数据库NoSQL产品架构师余汶龙表示,随着企业业务的发展,传统NoSQL数据库在容量、性能、扩展性、可用性、运维等方面出现挑战,企业呼唤更稳定可靠、更易用、更加降本增效的NoSQL产品。华为云GaussDB NoSQL通过云原生存算分离架构设计,支持四款非关系型数据库引擎,分别兼容Redis、MongoDB、InfluxDB和Cassandra,打造了高扩展、高性能、高可靠、海量存储、强容灾等能力。强扩展:支持计算、存储分别按需扩容。计算扩容时,业务仅秒级抖动,扩容耗时分钟级;存储扩容时,业务无感知,耗时为秒级,支持一键扩缩容。分级存储:冷热数据自动交换,应用零改造,支持指定热数据到期时间,灵活调整冷热分离线。多租户管理:集群最高支持6万+数据库,支持DB级权限隔离,清晰的多租户权限隔离设计,易于DBA管理。强容灾:支持同城双活数据库中心容灾解决方案、两地三中心容灾解决方案,且支持双向同步,具备全量+增量同步、key保序、可靠传输、断点续传等特性,提供了企业级容灾解决方案。华为云GaussDB NoSQL当前已历经电商、游戏、泛互联网、社交文娱等行业核心业务锤炼,打造了极致稳定、高效可靠的数据库服务。比如游戏行业,华为云GaussDB(for Redis)支撑《余烬风暴》强势上线,时延稳定无抖,首日对战高峰实时扩容,对业务零影响。在内部,华为云GaussDB(for Cassandra)助力华为终端云高效管理10000+个Cassandra节点,轻松处理每秒1000万+业务请求量。云智能DBA助手、Serverless,打造全链路数据库智能化体验华为云数据库高级产品经理周家恩表示,数据库技术车轮滚滚向前,数据库演进方向也从云化转向云原生化、智能化,云原生数据库与Serverless的结合,进一步加速了云原生数据库的演进,数据库运维方式也随之变化。作为国内领先的云原生数据库典范,华为云GaussDB(for MySQL) 已实现全栈无感Serverless,带领云原生数据库进入智能时代。GaussDB(for MySQL)能按照新的算力单元来计费,打破了传统以固定规格售卖的商业模式,客户可直接对自己的实际使用量进行付费;Backtrack极速闪回功能,实现TB级数据分钟级完成回溯; Global Database突破地域限制,实现数据全球就近访问和容灾;NDPQ智能并行计算,查询响应时间提升数十倍。华为云还打造了云智能DBA助手,提供了SQL诊断、参数调优、智能索引推荐等系列运维能力,大幅度提升了开发、运维人员的效率。比如,实时性能和会话监控查询功能,及时发现数据库异常并提供快速解决建议,提升实例稳定性;容量预估功能,可以根据历史容量信息预估空间增长,提供表智能诊断、智能扩容;自治限流功能,自动检测到数据库CPU等异常,根据既定业务优先级等进行限流处理,保证核心业务的稳定运行。云原生数据库,解码智慧物流“速递”的秘密顺丰科技数据库专家王操表示,顺丰快递是国内领先的快递物流综合服务商、全球第四大快递公司,一直在积极利用科技赋能顺丰技术创新,为客户提供涵盖多行业、多场景、智能化、一体化的智慧供应链解决方案。为了提升物流管理效率,顺丰基于云原生数据库重新打造了智慧物流管理平台,顺丰云数据库管理平台具备集群管理、高可用、容灾服务、资源管理、运维生态、自动化变更等能力。集群管理方面,我们能够快速地对信息进行检索,自动排除部分风险;高可用方面,通过日志模块、数据管理等运营服务,长链接模块、修复模块等服务来检查数据库状态,快速检索并修复异常;容灾方面,打造了整体化容灾方案,可以快速检索到异常信息,并自动修复;资源管理方面,打通各层资源,进行整体资源融合,实现公共能力的复用;自动变更方面,通过构建一个运营工作台,同时打通整个流程,集合所有资源信息,再通过自动化的变更流程,减少大量的人工沟通和变更的时间。顺丰致力于构建数字时代的智慧供应链生态,云原生数据库的加持,进一步提升了物流管理效率,为消费者提供更便捷、更可靠、更贴心的服务。云原生数据库正逐渐成为数据库行业的“宠儿”,也在越来越多的行业场景发挥重要的价值。华为云数据库将始终践行云原生理念,围绕Serverless, Regionless, Modeless三大方向持续打磨云原生能力,更加贴近客户业务的现实需求,让云原生数据库更广泛地进入千行百业,进一步推动企业数字化转型。
  • [常见问题汇总帖] Invalid or unsupported by client SCRAM mechanisms
    目前我们的sonarqube版本是8.7,opengauss的版本是3.0.2,我想用sonarqube连接opengauss数据库,但是报错,如题,该怎么解决呢
  • [技术干货] 执行计划缓存,Prepared Statement性能跃升的秘密
    引言在数据库系统中,SQL(Structured Query Language)语句输入到系统后,一般要经历:词法语法解析(parse)、重写(resolve)、优化(optimize)、执行(execute)的过程。词法语法分析,重写和优化,这三个阶段会生成SQL语句的执行计划 (plan)。当SQL语句存在多种执行计划的时候,优化器会从这许多的执行计划中挑选出一个它认为最优的(通常是占用系统资源最少的,包括CPU以及IO等)作为最终的执行计划供执行器执行。生成执行计划的过程会消耗较多的时间,特别是存在许多可选的执行计划时。图1:SQL语句执行 Prepared Statement是将SQL语句中的值用占位符替代,可以视为将SQL语句模板化或者说参数化。当执行PREPARE语句时,传统MySQL将对指定的语句进行词法语法解析和重写,如上图①②。该阶段称为预编译阶段。Prepared Statement的优势在于一次编译、多次运行,省去了预编译阶段需要的时间。随后发出EXECUTE命令时,MySQL将对编译阶段生成的结构执行优化,即上图的③,生成对应的执行计划并执行,把输出结果返回到客户端。例如:PREPARE stmt FROM ‘SELECT * FROM t WHERE t.a = ?’;SET @var = 2;EXECUTE stmt USING @var;传统MySQL的Prepared Statement只会节省SQL语句的解析及重写过程需要的时间,但是对于一条SQL语句,如文章开头所述,优化SQL语句并生成执行计划需要耗费大量的资源以及时间。如果能将该Prepared Statement语句对应的最终执行计划进行缓存,当执行EXECUTE语句的时候,就可以直接使用已缓存的执行计划,从而就可以跳过SQL语句生成执行计划的整个过程,进而可以提高语句的执行性能。为此,GaussDB(for MySQL) 提供了Prepared Statement执行计划缓存特性。接下来一起看一下GaussDB(for MySQL)是如何对执行计划进行缓存并加速Prepared Statement性能的。执行计划缓存工作原理GaussDB(for MySQL)对Prepared Statement执行计划进行缓存的基本原理和流程如下图所示:响应EXECUTE,执行查询。通过is_plan_cached过程来查看当前Query的执行计划是否已经被缓存。如果已经被缓存,优化器将对当前的Query缓存的执行计划进行初始化,根据执行计划的上下文还原执行计划,然后利用还原的执行计划继续执行。如果没有被缓存,在执行完Query优化生成执行计划之后,通过is_query_cachable过程验证当前执行计划是否可以被缓存。如果满足缓存条件,执行计划将会被缓存(调用cache_JOIN_plan),以便以后的EXECUTE语句可以利用该缓存的计划进行执行。如果不能缓存,通过传统的MySQL执行流程(优化,生成执行计划然后执行)执行EXECUTE语句。执行计划缓存管理执行计划缓存功能开关GaussDB(for MySQL)引入了一个新的系统参数rds_plan_cache来开关Prepared Statement执行计划缓存功能。rds_plan_cache:该参数可以设置为ON/OFF。分别代表开启和关闭执行计划缓存。该参数是Session/Global级别的参数。查看执行计划缓存情况GaussDB(for MySQL)提供了两个状态变量供用户查看或者验证Prepared Statement执行计划是否被缓存,以及在执行时是否命中了缓存的执行计划。cached_plan_count:显示有多少个Prepared Statement缓存了执行计划。这是一个Global级别的状态变量。cached_plan_hits:显示EXECUTE执行过程中命中了缓存的执行计划的次数。这是一个Session/Global状态。下面举例来看一下Prepared Statement是如何利用了执行计划缓存特性的:SET @a = 'two';SET @b = 3;PREPARE stmt FROM "SELECT * FROM t1 WHERE b = ? AND c = ?";EXECUTE stmt USING @a,@b;执行结果如下:a b c6 two 3再次执行Prepared Statement:EXECUTE stmt USING @a,@b;a b c6 two 3第三次执行Prepared Statement:execute stmt using @a,@b;a b c6 two 3通过cached_plan_count和cached_plan_hits查看stmt执行计划是否被缓存,以及在执行时是否命中了缓存的执行计划。SHOW SESSION STATUS LIKE "cached_plan%";显示结果如下:Variable_name ValueCached_plan_count 1Cached_plan_hits 2从显示结果可以看出,第一次执行EXECUTE语句的时候,Prepared Statement对执行计划进行了缓存,即可以看到Cached_plan_count为1; 之后执行两次EXECUTE语句,都命中了执行计划缓存,所以可以看到Cached_plan_hits变成了2。缓存的执行计划如何失效为了保持当前缓存的执行计划是尽可能最优的,GaussDB(for MySQL)定义了如下规则来对当前缓存的计划进行失效,并重新生成执行计划:执行计划相关表的记录数更改超过总记录数的20%。这意味着当前表的记录数如果插入/删除超过20%的记录,当前缓存计划将失效并在优化后重新缓存。注:记录数是根据统计数据估计的。所以最好先对表进行Analyze。表定义进行了更改。例如,执行计划相关表上进行的DDL将导致缓存计划无效,并在优化后重新缓存。如果系统变量Optimizer_switch中影响执行计划生成的选项值进行了更改,则缓存的计划将失效,并在优化后重新缓存。系统字符集发生变化,与缓存的计划不同时,将导致缓存计划失效,并在优化后重新缓存。执行计划缓存功能当前的一些限制GaussDB(for MySQL)的Prepared Statement的目的是节约查询的优化时间。对于通过并行查询优化的大查询,也就是数据量相对庞大的查询,这些查询大部分的执行时间是集中在执行计划的执行阶段。对于该类型的查询,优化时间相比执行时间而言可以忽略不计,所以GaussDB(for MySQL)没有对并行查询计划进行缓存。另外,GaussDB(for MySQL)对于Prepared statement 缓存执行计划的能力还在逐步增强中,比如当前只支持单表的SELECT查询语句,暂时还不支持UNION操作。执行计划缓存性能测试结果对于使用执行计划缓存和不使用执行计划缓存的场景,基于Sysbench测试集进行了性能测试对比,从测试结果可以看出,在启用执行计划缓存后,各类业务性能均有提升。注意:这些测试只代表相对数字,并不代表实际性能。测试环境配置如下:数据集 : 8 个表,每个表1000万行测试服务器:Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz 2 physical cores 56 processors 460G memory总结GaussDB(for MySQL)通过缓存执行计划,可以提升Prepared Statement的性能。特别是针对Range Scan的测试集,性能提升可达2倍左右。未来我们会支持越来越多的查询场景,性能加速值得期待。
  • [问题求助] 有了解gaussdb考证的老师吗
    公司对gaussdb有兴趣,想通过个人考试加深对gaussdb的了解,请问下,有了解gaussdb 考证的老师吗,想了解下想关情况
  • [数据库] 【第55课】TaurusDB小版本升级全攻略
    本节重点讲TaurusDB如何升级内核小版本,内核小版本的升级涉及性能提升、功能优化或问题修复等。关于内核的版本更新说明,请前往华为云官网查看。华为云有新的内核小版本发布时,您可以在“实例管理”页面的“数据库引擎”列看到内核小版本升级提示,轻点“补丁升级”,即可前往升级,具体内容参考后续操作步骤。  升级小知识升级数据库内核小版本会重启TaurusDB实例,服务可能会出现闪断,请您尽量在业务低峰期执行该操作,或确保您的应用有自动重连机制。如果数据库内核从8.0.18升级到8.0.22版本,分区数大于1000时可能会升级失败,请升级之前提交工单联系华为云工程师协助检查版本兼容性。升级实例小版本时,如有只读节点,也会同步升级只读节点的小版本,升级完成会重启实例,请您选择合适的时间升级(不支持单独升级只读实例的小版本)。升级内核小版本后,实例会升级到最新的内核小版本,升级成功,无法降级。小版本升级过程中禁止event的ddl操作,如create event、drop event和alter event。操作步骤登录管理控制台。单击管理控制台左上角的,选择区域和项目。在页面左上角单击,选择“数据库 > 云数据库 TaurusDB”。在“实例管理”页面,选择指定的目标实例,单击实例名称。在“基本信息”页面,“实例信息”模块的“兼容的数据库版本”处,单击“补丁升级”。您也可以在“实例管理”页面的“数据库引擎”列看到内核小版本升级提示,单击“补丁升级”。在弹出框中,选择升级方式,单击“确定”。a、立即升级:系统会立即升级您的数据库内核版本到当前最新版本。操作完成后,可进入任务中心的“即时任务”页签,查看该升级任务的相关信息。b、可维护时间段内升级:系统会在您设置的可维护时间段内,升级您的数据库内核版本到当前最新版本。操作完成后,可进入任务中心的“定时任务”页签,查看该升级任务的相关信息。