gpt4 book ai didi

database - 如何让数百个同时运行的进程通过一个或几个永久 session 与数据库通信?

转载 作者:太空狗 更新时间:2023-10-30 01:55:47 24 4
gpt4 key购买 nike

长话短说:如何让数百个同时运行的进程通过一个或几个永久 session 与数据库通信?

整个故事:
我曾经构建了一个数字运算引擎,通过一个接一个地 fork 出一个 child 来处理大量的大数据文件,给每个 child 少量的文件来处理。文件锁定、进度监控和结果传播发生在 Oracle 数据库中,所有(子)进程使用封装 DBI 的特定于应用程序的模块在不同时间访问。

一开始效果很好,但现在随着输入数据量的增加,不断打开和关闭的数据库 session 数量(每个 child 一个,并且它们可能非常短暂)成为一个问题。我现在想集中数据库访问,以便只有一个或几个固定的数据库 session 来处理所有(子)进程的所有数据库访问。数据库抽象模块的存在应该使更改变得容易,因为工作实例中的函数调用可以保持不变。我的问题是我想不出一种合适的方法来增强所述模块,以便在所有进程和数据库连接器之间建立通信。

我想到了消息队列,但无法想出一种方法来连接一大群请求者与一个或几个数据库连接器,以便可以进行双向通信(用于收集查询结果)。
异步方法在这里可能有所帮助,因为所有请求都写入同一个队列,并且为该请求提供服务的数据库连接器将“回调”以提交结果。但是我无法生成足够清晰的图像以便我可以绘制到代码中。
线程而不是 fork 可能让我更容易开始,但这现在需要对代码库进行大量更改,而我不准备对实时系统进行更改。

我想得越多,对我来说,基本想法就越像一个预 fork 的网络服务器,只是它不提供网页服务,而是提供数据库查询服务。关于挖掘什么以及在哪里挖掘的任何想法?启发我的示例(伪)代码、可能相关文章的链接、CPAN 上现成的解决方案?

最佳答案

我认为您应该考虑添加一个等级。我想POE可以处理中间层。

关于database - 如何让数百个同时运行的进程通过一个或几个永久 session 与数据库通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com