PG+MySQL第14课

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率。

分享人:Digoal 阿里云资深数据库专家

正文:主要介绍了PG扩展类型等,以及如何学习、上报错误。


一、扩展语法、类型、索引、存储过程、函数


之前讲过pg扩展类型,除了普通类型,还有number,字符串、时间戳、货币类型、枚举类型、几何类型、网络类型、map类型、全文检索类型、json数组、自定复合类型,比如在数据库里描述一个游戏里面的角色,它有很多属性组成,可以定义角色类型的属性、技能、血量,精力等。我们可以定义到复合类型里面去叫composite类型,可以制定范围类型,智能dns的业务,它是用两个字段来去表述一个ip地址的范围,查询的时候用的是两个字段的联合索引,一个八核的机器能达到三千多的qps。使用范围类型和索引能够达到八万多的qps,这个就是范围类型。范围类型通常会用在像物联网边界最大值、最小值这种区间数据,还可以用在智能解析纯ip地址段,还可以存时间段,比如会议室的预定系统,会议室在哪个时间段被谁预订了,这里就存时间区间。用排他索引做插入,用这种排他的约束防止同一个会议室被多人同时订到。

我们用大类型去做约束,新建domain类型在数据范围的约束空间MySQL的类型完全一模一样。email地址有固定的格式,通常用text文本存email地址,但文本不能约束email的格式,用户可以随便填,只能在应用端去控制约束它,使用domain类型就能在数据库里强制约束。用户输入有效的email地址,在数据库里创建一个domain的类型约束它。

每种类型都有对应的function,看下字符串类型,字符串类型里有正则表达式, like、 similar都是正则表达式,在第9章里有详细介绍, replace函数、match函数等,还支持聚合函数,窗口函数子查询的表达式,还有行、数组,还有触发器、函数事件、触发器、函数等扩展的语法类型索引。

看第19章,pg里面支持哪些参数在server configuration里面有介绍,还有数据库如何做备份还原,第25章如何做嵌入式的开发,第35章如何写存储过程,第42章如何写函数。如果想用pl python写过程,就要了解pl python是怎么使用的?如果喜欢用tcl语言写存储过程,就要了解pl tcl。下面是SQLcommand的介绍,各种语法索引的具体介绍。

我的建议是要了解清楚这个文档的目录结构,你了解清楚了它的文档的目录结构之后,下次找问题时就容易找到它。


二、书、在线文档


image.png

这有三本书是循序渐进的,大家可以去看。初学者来建议去看这本《PostgreSQL 实战》,这本书学完后可以看《PostgreSQL 指南 内幕探索》,可以了解内部的设计原理,包括存储结构、内部存储结构的数据、索引结构、事物、多版本机制等。这两本书看完后并且理解了80%以上,可以去看《PostgreSQL 数据库内核分析》,这本书可以帮助我们去了解pg数据库内核的各个模块代码是如何构建的,如果要修改pg数据库源码的话,这本书可以解决这部分问题,如果这三本书都吃透了,那么大多数的pg问题都可以自己解决了。

image.png

我对在线文档也做了一个排序,第一本书是比较老的,他写的还是比较全面,跟很多新的版本不太一样了,我建议大家去看一下,可以把它当成了解pg概念入门一样的书。

第二个在线文档面向于数据库的应用开发者,要了解数据库使用、语法、编程语言、驱动配置等,在线文档里面有比较全面的介绍。

第三个在线文档是《PostgreSQL指南内幕探索》,这本书本是从这个网站翻译过来的,这个日本的b这个网站的它是翻译过来的,因为中英文翻译的差异,看完中文之后,可以再去看一下原版,。

第四个是网站,除了分享的书,还有峰会的分享, ppt也可以下载,可以拓展更多的视野。

第五个是我写的千篇博客,各方面的内容都有,学习数据库比较枯燥的,但我的博客里有很多书上或网站上没有的东西,比如case可以拓展大家的视野,可以结合上面的内容挑选着看。

最后一个是官方文档,除了有问题时去翻阅它,平时有时也可以体系化的去学习,比如在文档里有内容我们不能理解的时候,可以去看一下内核代码,还

可以在pg里做实验来验证我们的想法,通过这两点基本能够自己解决很多疑惑,如果自己解决不了,也可以到我们社区里交流。


三、Oracle转型学习路径


第三部分是专门讲oracle的,在企业里形成了降低成本的趋势,国内有用pg去oracle的企业,都是非常复杂的场景,比如邮储银行、平安这两家企业就是典型的金融行业的代表,在政府行业、制造业的惠普、丰田,在pg里面核心系统有大量的应用, pg和oracle都是企业级的数据库,面向复杂场景像用友、金蝶、sap等做企业erp的或者企业财务软件的,他们有很复杂的场景对数据的可靠性要求非常高,他们都能使用pg完成核心系统的替换,目前各个行业里面其实都可以使用pg来替换。

对于oracle的技术栈来说,如何转换技术栈切换到pg里面呢?举个例子,以前有个同事是从oracle技术栈转换过来的,之前是做电信oracle系统维护的,换到互联网公司,从0~1开始用一个月的时间就开始逐渐维护管理内部的系统了。

oracle跟pg在架构上非常相似,它是进程模型,有自己的后台管理进程,支持redo、归档,可以做物理的在线备份,支持时间点的还原,支持只读实例、都有后台的wa、redo的writer、background writer,、 checkpoint进程,其实架构非常像, pg数据库对原来使用oracle技术站的同学来说,也不会特别陌生,切换成本是比较低的。

image.png

用一个月的时间去了解链接里面的内容。

image.png

要自己去摸索去使用,如何安装,

image.png

了解它的使用、客户端,p sql对应的是plus,p sql比plus好用100倍,它有很多快捷命令,内部支持客户端编程, p sql本身支持简单的编程。

image.png

还要了解如何配置,如何优化数据库,各种场景,可以自己去做压测,发现数据库如何去调优。


四、应用场景实践视频


image.png

应用场景实践分两部分内容,一是应用场景的实践-沙箱的实验,针对每一个特殊的pg适合的业务场景,这里做了一些demo,告诉大家如何使用这些场景,在这堂课里也讲过秒杀、实时搜索、多维分析、用户画像、并行计算、空间应用实践、,时空、时空调度、图式关系、采样脱敏等,这里提到很多的实际的业务场景告诉大家如何用,都有demo都有对应的视频讲解。

image.png

这个《如来神掌》是我总结的pg在各个方面的使用介绍。

第一部分是案例,第二部分是问题诊断性能优化,第三部分是数据库的原理,第四部分是数据库的发展方向以及选型,第五部分是开发技巧等,总共分了九个部分,包含备份恢复升级、安全审计、技巧、实例文档等。


五、体系化学习视频


image.png

看一下知识图谱,里面有pg的历史、社区、安装使用、实例初始化、基本的配置、应用开发指南、索引、索引的应用、性能的压测,、备份恢复、容灾等,这是一个体系化的学习过程。


六、数据库管理、开发规约


image.png

这是数据库的管理和开发规约,是我总结在使用开发应用的时候,在数据库里应该注意哪些问题,包括数据库的安全、数据库的开发规范。

这是数据库的管理和开发规约,是我总结在使用开发应用的时候,在数据库里应该注意哪些问题,包括数据库的安全、数据库的开发规范。


七、如何上报问题

image.png

如果我们遇到问题,特别是遇到bug,如何把bug报给社区,这里分两个部分,一是如何获得更加详细的错误信息,比如在数据库里有一个报错,告诉你没有上面这部分信息,看完之后不知道他在讲什么或者可能不知道他在讲什么,但大多数时候是知道的。我们可以加这个VERBOSITY变量,把它设置为verbose,设置后报错是从哪个代码里面报出来的。

比如说错误是errorMissingColumn,如果还是不能理解这个错误函数,就可以把这个代码打开,它告诉你是在第3293行上面的错误,可以去阅读第3293行,这个点c文件里面到底是什么。

image.png

拿到这个错误的error code后,想知道报错的详细背景原因,可以去查pg的手册,手册里面有每一个l code,这个是undefined,这个列名没有定义。

image.png

如果是用java来开发应用程序,在java里面也会吐出一些信息来。java和pg里面吐出来的信息不能完全一一对应,他可能没有把所有错误代码都封装进来, java可能会遇到没有错误的解释和代码,这时候得到数据库的后台日志里面去看,在java的api文档里可以看到不同的PSQLState错误代码的定义,可以去看对照表拿到对应的错误的信息。


八、异常、BUG报告

image.png

如果看到了这样的错误,或者数据库崩了的情况。第一可以去查看文件,它会告诉是哪个调用的哪里出了什么问题。如果要上报给社区的话,要把错误内容也告诉社区,让大家来帮你做分析。第二如果遇到异常后上报社区?内容应该怎么写呢?内容的建议分为四个部分:


第一是要描述清楚这个问题的环境,包括操作、内核的版本、32位还是64位。第二要包括数据库的版本,报错插件名称、插件的版本。第三个是描述问题,你的问题、报错内容、现象都是什么。如果这个问题能复现,一定要把复现的步骤写清楚,社区的commit可以在它自己的环境里面去复现,更容易去排查。第四是礼貌用语,最后结束的时候要带上礼貌的反馈。

image.png

上报问题得在官网,这是一个上报bug的页面,名字、邮件地址、出问题数据库的版本、操作系统、简短描述、详细描述,还有刚才提到的几个要点、问题、现象、复现的步骤,就可以了。上报后可以在bug list里面找到上报的问题。负责bug list后台的人认定这是一个bug,他就会和大家做交流,就能够在这里看到了,每一个月会做一个归档。

 

 

 

 

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
安全 关系型数据库 数据库
上新|阿里云RDS PostgreSQL支持PG 16版本,AliPG提供丰富自研能力
AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,丰富的内核/插件特性支持,满足业务场景的需求
|
关系型数据库 MySQL
为什么全网都在劝你在学PG,而不是MySQL?
为什么全网都在劝你在学PG,而不是MySQL?
325 0
为什么全网都在劝你在学PG,而不是MySQL?
|
SQL 编解码 并行计算
PG+MySQL第9课-实时精准营销
通常业务场景会涉及基于标签条件圈选目标客户、基于用户特征值扩选相似人群、群体用户画像分析这些技术,本文将围绕这三个场景去介绍在实施精准营销里面的PG数据库的使用
PG+MySQL第9课-实时精准营销
|
SQL 数据采集 机器学习/深度学习
PG+MySQL第13课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率。
PG+MySQL第13课
|
存储 SQL 自然语言处理
PG+MySQL第12课
数据库使用者了解数据库的高级功能后,才能在业务场景里面使用,来提升整体的生产效率
PG+MySQL第12课
|
存储 机器学习/深度学习 算法
PG+MySQL第11课-多维向量搜索
多维向量搜索不仅可以用在特征值的相似圈选这类场景,还可以用在图像识别场景。而不同的向量支持不同的距离算法,如cube、imgsmlr和pase.
PG+MySQL第11课-多维向量搜索
|
存储 SQL 搜索推荐
PG+MySQL第10课-多维组合搜索
多维组合查询也是pg非常擅长的产品,它的解决方法或者优化方法非常的多,并且也具备了跟搜索引擎一样的倒排索引技术,可以便捷有效地解决任意字段组合查询的业务场景诉求
PG+MySQL第10课-多维组合搜索
|
存储 SQL 编解码
PG+MySQL第8课
今天给大家分享的主题是时空空间,时空数据库概念以及实战。主要从这3个方面:空间/时空数据库的概念;应用场景;四个模型的使用案例,主要是一些概念性的东西以及它案例的操作性的东西。
PG+MySQL第8课
|
SQL 存储 并行计算
G+MySQL第7课-PG的并行计算跟JIT
PG的并行计算跟JIT,分别应用在分析型的业务场景,比如复杂的TB级别的实时分析场景。本篇内容将从2个部分为读者介绍PG+MySQL联合解决方案,希望可以让大家对PG+MySQL有更深入的了解,并可以将这些特性应用到项目中,达到降本提效的目的。
G+MySQL第7课-PG的并行计算跟JIT
|
存储 关系型数据库 MySQL
PG+MySQL第6课
本篇内容分享了PG+MySQL第6课。
PG+MySQL第6课