数据库扩展
文章平均质量分 79
虾神说D
攻城狮
展开
-
[pgrx开发postgresql数据库扩展]7.返回序列的函数编写(3)多行表序列
上一回我们解析了如何通过pgrx编写srf,返回一个TableIterator,但是在具体应用的时候,我们还是针对一条记录返回了一行数据(多个字段的一行,也还是一行),并没有实现通过一行数据库记录,实现多行表序列的转换,今天我们就来写几个示例,来表现一下这pgrx的这个能力。当然,如果有人要问,SQL不是最好的选择,那么真实的要处理这种情况,啥是最好选择呢?不过这个方法,我经常用来做模拟数据。需求:给每天的value上面,编上日期编号,也就是原始库中的一条数据,会被平铺成28-31条不等。原创 2023-05-19 16:24:01 · 552 阅读 · 0 评论 -
[pgrx开发postgresql数据库扩展]7.返回序列的函数编写(2)表序列
这个表格是可以完整使用SQL进行计算分析的,比如,生成100条随机数据,value大于0.95的,只有5条……返回一个序列的功能在实际工作中是经常用的,特别是做数据分析的同学,因为很多分析的结果不可能只有一条记录。但是现在问题来了,因为每个月的数据是按每天来计算的,我现在想知道,每个月,哪一天的数值最高?那么我们如果要在pgrx里面来做这个功能,怎么做呢?有同学说,虾神,你出来的这个内容,不是表格啊,每行怎么都是一个tuple呢?例如,其中values每天的平均空气质量(随机模拟数据,不要在意这些细节)原创 2023-05-10 17:29:24 · 900 阅读 · 0 评论 -
[pgrx开发postgresql数据库扩展]6.返回序列的函数编写(1)单值序列
pgrx对于这种集合类型的支持,有很多种,例如Vec、range这些个类型都是支持的,但是对于数据库来说,这种返回超过一行序列的方法被称之为srf,即:Set Returning Functions。上篇文章是中规中矩的标准计算函数,就算不用pgrx,也是可以正常理解的,所以基本上没有什么对于pgrx框架有关系的东西(唯一有关系的东西,应该就是Rust的时间类型与pgrx的时间类型的计算了)。注意:这两个类型是pgrx 0.7.0之后版本才推出的,如果你看的旧版本的介绍,发现是没有这两个类型的。原创 2023-05-09 12:39:33 · 561 阅读 · 1 评论 -
[pgrx开发postgresql数据库扩展]附.更新开发环境安装脚本
嗯,看起来简单了很多,起码不用自己去安装PG数据库了,pgrx 的init会自动下载并且build数据库,就是有点慢(不是有点,是特别慢)……所以我干脆搞了个虚拟机,重新安装了一套,还别说,更新到了0.83之后,安装配置都变容易了,今天更新一下安装脚本:……pgrx更新到0.83之后,我本来还没感觉,但是我五一放假一来,发现我的WSL环境居然就挂了。花了大半天更新和下载,新环境新版本结果如下:……果然是非稳定版本就是不靠谱了。没啥毛病,重装完成,打完收工。原创 2023-05-04 17:57:53 · 992 阅读 · 0 评论 -
[pgrx开发postgresql数据库扩展]5.自定义函数与SQL组合应用
本系列中,所有的案例,仅用于说明pgrx的能力,而并非是说这样做比用SQL更合适。可以看见,此类计算的输入和输出并不是1:1的,我们以前做数学计算,表中有20万条记录,计算出来,也是20万条记录,而我们这边在20万条记录的基础上,计算出来的是5条记录……——如果哪位大神写Rust走火入魔,说啥数据库功能都要用Rust来扩展实现的,不报我的名字,打成半死就行,报我的名字,请打成八成死。可以看见,pgrx开发的函数,能够与SQL一起组合,以实现更加方便、简洁的调用方式,当然,SQL更容易使用就是了。原创 2023-04-26 17:52:06 · 557 阅读 · 0 评论 -
[pgrx开发postgresql数据库扩展]3.hello world全流程解析
一般来说,数据库的扩展开发主要有的目的就是扩展数据库引擎的能力(不管是用pgrx还是其他的框架都一样):例如PostgreSQL上最著名的扩展PostGIS,就是扩展了PG数据库的空间数据支持能力,目前PostGIS已经成了使用最广泛的开源空间数据库扩展。如果要扩展数据库的能力,那么一般来说需要以下两种能力:——题外话:有同学看到这里,可能会说:数据库本来就是一个系统里面压力最大的部分,在架构设计的时候都巴不得把所有的功能都从数据库上挪走,以减轻数据库的压力,你这样做,不是反其道而行之么?常见高并发系统里面原创 2023-04-23 15:24:49 · 683 阅读 · 0 评论 -
PGX:Rust的postgresql扩展开发框架:1何为数据库扩展
先别管这些需求合理不合理,这些功能几乎都是一些在基础开发中可以做,你也可以说,我在应用程序里面就可以做了,为什么要在数据库里面做,我们不在数据库里面去做,是因为不知道数据库可不可以做,也不知道如何在数据库里面做,但凡我们能够在数据库里面做到,那么离开就会打开一个新的世界!第二种方式,把MAX计算的任务直接交给了数据库引擎,算完之后,直接把结果数据返回给了应用服务器,这样最大限度的节约了IO资源和应用服务器的CPU资源,但是运算的任务是直接放在数据库引擎上的,这样就会使用一部分数据库的计算资源。原创 2023-04-19 10:27:23 · 397 阅读 · 0 评论 -
[pgrx开发postgresql数据库扩展]4.基本计算函数的编写与性能对比
再次声明:并不是所有场景都需要(或者适合)用rust来写的,绝大部分操作数据库的功能和计算,用SQL就已经足够了!本系列中,所有的案例,仅用于说明pgrx的能力,而并非是说这样做比用SQL更合适。反之:对于操作数据库本身的部分,大部分能用SQL来实现的东西,都比做一个扩展开发要更加合适。——如果哪位大神写Rust走火入魔,说啥数据库功能都要用Rust来扩展实现的,不报我的名字,你们打成半死就行,报我的名字,请打成八成死。原创 2023-04-25 14:02:23 · 626 阅读 · 3 评论 -
[pgrx开发postgresql数据库扩展]2.安装与开发环境的搭建
我上篇文章刚刚写完,pgx就全面改名为了pgrx……,结果导致我都来不及把以前的文章改过来,所以以后遵循最新的命名方法。原创 2023-04-20 14:28:28 · 706 阅读 · 0 评论