0

问题陈述:我必须开发一个解决方案,其中单个源填充一个表。一旦表格被填充,它被认为是只读的,然后我们对其运行许多只读查询。这样的只读表是由多次模拟运行生成的:每个模拟填充一个独立的表,这意味着没有对表的交叉写入。但是,只读查询可以在单个或多个表上执行。在我的环境中,我有很多机器来运行模拟,我不能使用这些机器来将 postgres 计算场作为云解决方案。所以我不能使用我的机器来运行无休止的 postgres 服务器作业,因为该解决方案的目的是。

我的想法是:第 1 阶段:用于填充表的临时服务器+客户端:在本地计算机上启动服务器+客户端,填充表并停止服务器+客户端。数据目录托管在中央文件系统(例如 NFS)中。第 2 阶段:用于从第 1 步查询现在只读表的临时服务器+客户端:在本地计算机上启动服务器+客户端,运行只读查询并停止服务器+客户端。为了实施第 2 阶段,我将:

  1. 创建一个新的临时空数据目录
  2. 从查询所需的每个 data-dirtable 文件(包括其索引文件)到 ad-hoc data-dir 创建一个软链接。请注意,多个数据目录中的文件可以链接到临时数据目录。
  3. 根据上述软链接更新 ad-hoc data-dir 中的 postgress 目录表
  4. 为了保证只读表文件不会被修改,我将实现一个 table-am(访问方法),它只注册与运行只读查询相关的 table-am 回调函数。由于可以在每个表上运行多个查询,因此可以同时运行阶段 2 中描述的客户端-服务器的多个实例。

有什么想法吗?它可以工作吗?我关心的是 stage2#4 中描述的过程:我真的可以依靠运行只读查询的回调函数不在后台更新只读表文件吗?开发和维护可持续解决方案的任何其他建议?

谢谢,毛兹

4

2 回答 2

1

这是一个疯狂的想法。您正在考虑文件服务器。

解决方案是拥有一台持续运行并包含您要查询的表的中央数据库服务器。需要数据的人连接到数据库服务器并运行查询。

如果您需要嵌入式解决方案,则必须使用 PostgreSQL 以外的其他东西。

于 2021-02-17T08:42:06.893 回答
0

根据上述软链接更新 ad-hoc data-dir 中的 postgress 目录表

如果您的意思是您实际上要更新目录表,请不要这样做,这是破坏数据库的一种非常快速的方法。

除此之外——劳伦兹所说的。单个服务器应该能够完成所有这些工作,在一段时间内进行一些复制以扩展和分离读取与基于写入的模拟。但看起来您在知道是否需要它并测试更简单解决方案的容量/IO 需求之前设计了一个复杂的解决方案。

于 2021-02-17T11:54:48.107 回答