假设IOT网络中有几个(100)节点。每个节点的资源有限。这些节点之一中运行着一个postgresql数据库服务器。现在,每个节点都有几个(4-5)进程,需要与该服务器进行交互以执行一些插入和选择查询。每个查询响应必须尽可能快地使过程正常运行。现在我想到一些实现此目的的方法是:
- 节点中的每个进程都创建一个数据库客户端并执行查询。
- 节点中的所有进程将查询发送到本地主机中的目的地,从那里通过最佳数量的数据库客户端执行查询。这样,我们可以对数据库客户端的数量进行某种控制,例如优化通过优先级队列实现执行的查询,或者通过每个线程/进程中的单独数据库客户端在单独的线程/进程中执行查询。在这种情况下,我们可以控制客户端数量,线程/进程数量以及必须按什么顺序执行查询的优先级的优化。
- 每个节点都通过某种网络协议将所有查询直接发送到数据库服务器,该服务器随后使用数量有限的数据库客户端现在在其自己的本地主机数据库中执行查询,然后将响应通过同一通道返回给每个节点。这样,它增加了延迟,但使客户端数量保持最少。另外,我们还可以在此处实现一些优化,以便在不同的进程/线程等中运行每个客户端。在这种情况下,数据库交互可以更快,因为可以将客户端的数量保持在最低限度,它在本地主机本身中运行,但是这增加了转移数据库的开销。将响应数据查询回节点的进程。
为了使每个节点中的资源使用尽可能少,并尽可能快地查询响应,解决此问题的最佳策略是什么?