Tar*_*nti 3 postgresql integration-testing ramdisk
许多关于集成测试(包括 Postgres 数据库)的建议都表明我可以initdb在 RAM 磁盘中创建一个新的整个集群并对其进行处理。
据我了解,initdb这是一个与数据库相关的新文件夹。
根据 Postgres 文档:
initdb创建一个新的 PostgreSQL 数据库集群。数据库集群是由单个服务器实例管理的数据库的集合。
它会创建一个新服务器吗?或者一个新的数据库?
创建数据库集群包括创建数据库数据所在的目录、生成共享目录表(属于整个集群而不是任何特定数据库的表)以及创建 template1 和 Postgres 数据库。当您稍后创建新数据库时,template1 数据库中的所有内容都会被复制。(因此,template1 中安装的任何内容都会自动复制到以后创建的每个数据库中。)Postgres 数据库是默认数据库,供用户、实用程序和第三方应用程序使用。
上面这句话是否意味着从现在开始,无论创建什么数据库,它都存储在新的“集群”中?如果不是如何在这样的RAM磁盘集群中创建表?
我如何使用它来设置它以进行测试?
在您的图像使用的术语中(来自 pgAdmin?),initdb将为新的“服务器”创建数据目录。
在 PostgreSQL 中,这不称为服务器,而是数据库集群。它有一个数据目录,使用initdb. 如果使用 启动集群pg_ctl start,则会启动 PostgreSQL 服务器进程(称为postmaster),该进程侦听传入连接并启动在数据目录上工作的后端进程。
一台机器上可以有多个 PostgreSQL 数据库集群,您只需为它们提供不同的端口号即可。
initdb运行为集成测试创建数据库集群应该没有问题。在initdb您必须进行postgresql.conf适当的编辑(例如设置port)并使用 启动邮局管理员后pg_clt start -D <data directory>。