问题陈述:我必须开发一个解决方案,其中单个源填充一个表。一旦表格被填充,它被认为是只读的,然后我们对其运行许多只读查询。这样的只读表是由多次模拟运行生成的:每个模拟填充一个独立的表,这意味着没有对表的交叉写入。但是,只读查询可以在单个或多个表上执行。在我的环境中,我有很多机器来运行模拟,我不能使用这些机器来将 postgres 计算场作为云解决方案。所以我不能使用我的机器来运行无休止的 postgres 服务器作业,因为该解决方案的目的是。
我的想法是:第 1 阶段:用于填充表的临时服务器+客户端:在本地计算机上启动服务器+客户端,填充表并停止服务器+客户端。数据目录托管在中央文件系统(例如 NFS)中。第 2 阶段:用于从第 1 步查询现在只读表的临时服务器+客户端:在本地计算机上启动服务器+客户端,运行只读查询并停止服务器+客户端。为了实施第 2 阶段,我将:
- 创建一个新的临时空数据目录
- 从查询所需的每个 data-dirtable 文件(包括其索引文件)到 ad-hoc data-dir 创建一个软链接。请注意,多个数据目录中的文件可以链接到临时数据目录。
- 根据上述软链接更新 ad-hoc data-dir 中的 postgress 目录表
- 为了保证只读表文件不会被修改,我将实现一个 table-am(访问方法),它只注册与运行只读查询相关的 table-am 回调函数。由于可以在每个表上运行多个查询,因此可以同时运行阶段 2 中描述的客户端-服务器的多个实例。
有什么想法吗?它可以工作吗?我关心的是 stage2#4 中描述的过程:我真的可以依靠运行只读查询的回调函数不在后台更新只读表文件吗?开发和维护可持续解决方案的任何其他建议?
谢谢,毛兹