gpt4 book ai didi

postgresql - 在 Erlang 中为 PostgreSQL 编写网关是个好主意吗?

转载 作者:行者123 更新时间:2023-11-29 14:12:19 25 4
gpt4 key购买 nike

我正在用 Erlang 编写 Web 应用程序,并希望将我的数据存储到 PostgreSQL。

我的应用程序中有两种资源。一种非常重要,而另一种则不那么重要。

  • 对于重要的数据,不允许丢失任何数据。
  • 对于不太重要的,由于系统故障导致数据丢失是可以的。

我想获得最大的效率并想出了这样一个想法:为PostgreSQL写一个网关。网关是一个 gen_server,业务逻辑 (BL) 部分可以与网关通信以存储资源。

  • 对于重要资源的存储,BL部分将要存储的资源发送给网关,并阻塞接收消息(成功或失败),最后响应有网页的用户。
  • 对于存储不太重要的资源,BL部分只将资源发送到网关不阻塞。发送资源后,BL部分直接以网页响应。

我对这个想法的期望是每个请求的秒数更少,因为大部分资源都不太重要。但我想知道这是不是一个好主意,或者换句话说,我真的能得到我所期望的吗?

请根据您的经验或一些可靠的“网络搜索结果”来回答。谢谢。 :-)

最佳答案

我可以看出您的提议有两个问题:

  1. 发送到 gen_server 网关的所有消息都将被序列化(阻塞或非阻塞)
  2. 如果 gen_server 网关进程崩溃,您至少会丢失该进程邮箱中的消息。

我要做的是创建一个帮助程序模块(不是进程)来负责数据库交互。此过程将使用支持连接池的 postgresql 库(因此对数据库的调用可以具有一定的并行性)。

如果您希望对不太重要的资源执行非阻塞数据库操作,只需生成一个进程来执行数据库交互并继续。

postgresql erlang 库的一些链接(我没用过):

Postgresql connection pooling in Erlang

http://zotonic.com/page/519/epgsql-postgresql-driver

关于postgresql - 在 Erlang 中为 PostgreSQL 编写网关是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12374153/

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