不仅是测试栏目,没有太多的高大上理念,只有一个话题,如何想办法解决你的问题.
从实践中学习,从实践中练习, 这些是领导不会告诉你的
在测试环境搭建数据库中介绍了如何进行数据库的复制, 表结构的操作等等.这些内容对于测试而言有一些陌生,我自己同样也是没有那么清晰的概念,因此就借这个机会就在复习一下.
数据库存储有逻辑概念和物理概念,对于测试这样的使用者而言,了解逻辑概念会比物理概念在实际中效果更好,同样物理概念有点难度,需要完全理解需要很多很多时间, 对于测试而言,花 20% 的时间去了解日常操作中有用的东西会更加有实际意义.
Postgresql 的逻辑概念其实没有那么复杂,只需要花个 30 分钟时间了解,可能就超过了一大半的测试同学. 所以这个 30 分钟时间是值得的.
什么是 Postgresql 的逻辑结构,逻辑结构实际上就是日常使用的如下概念:
先说一下 postgresql 的架构
上图来自geeksforgeeks,但是其实我也不太懂,所以有想去的可以自己去研究. 下面说说最常用的 postgresql 的逻辑概念, 不说逻辑概念这样的东西,就说 postgresql 里面哪些的我们日常经常使用的呢?
常用的 postgresql 逻辑概念术语有:
以上术语还是比较抽象,让我们看看这些在 datagrip 这样的工具里面的展示。
如果本地使用 Docker 运行一个 postgresql,然后使用 Datagrip 连接数据库之后,会展示为:
通过上年截图就很清楚的说明了这些概念在实际使用过程中位置。
一些几点需要明确:
对于数据库对象而言,我们常用的类似表,主键是我们日常经常使用的, 为了加深一些了解,我们再用 datagrip 的一个截图来说明:
以上图为例子:
关于表和字段等就不过多介绍了,主要说明一下 Trigger,View,和 Store Procedure,
由于这些在互联网中使用不多,但是在企业应用中可能还是会使用到,所以做一下额外介绍下.
create trigger updated_at
before update
on demo.stored_procedure_prac
for each row
execute procedure refresh_updated_at();
refresh_update_at 存储过程:
create function refresh_updated_at() returns trigger
language plpgsql
as
$$
begin
new.updated_at = current_timestamp;
return new;
end
$$;
存储过程就是一个函数,而这个函数实际上是部署在数据库服务器上,然后就可以进行数据库特殊逻辑进行计算.
实际上在 postgresql 中,可以通过想过的 SQL 查看所有的数据库对象信息,主要这些信息都保存在
pg_catelog 这个 schema 中
希望以上的介绍可以让你对 postgresql 有更多一些了解.
想要了解更多内容,可以查看公众号合集: