REST 应用程序中的数据库连接架构
Architecture for DatabaseConnection in a REST application
我的问题看起来很简单,但是有一些子问题需要更深入的检查。
我的问题:
处理数据库连接的最佳practice/architecture是什么?
我找到的选项:
- 为每个带有数据库 (DB) 请求的 rest ful 服务创建一个新的
连接到数据库并在查询后再次关闭它。
- 在 REST 服务之外创建一个连接,并将其用于每个
查询。
选项 1.:
一个消极的方面是为每个请求建立和关闭连接的成本。
选项 2.:
不知道是不是工作。我已经研究了 Web 服务生命周期以检查它是如何工作的,但不知道这些实例是否会在 Web 服务完成后保持活动状态。也不知道这是否是一个好习惯,因为可能会有破坏连接的事件。最后一个问题是我认为请求可能会互相阻塞(所以它破坏了线程的概念)。
希望你能在这个架构上帮我一点忙。
问候,
尼克
如果您为每个查询/事务创建一个连接,那么管理 "closing" 连接会容易得多。
我明白为什么常识告诉你应该打开一个并在整个过程中使用它,但你会 运行 遇到连接断开和多线程的问题。所以你的下一步将是打开一个池,比如 50 个连接并保持它们全部打开,将它们分配给不同的进程。
如果您在需要时打开一个连接,并在完成后将其丢弃,那实际上并不会关闭连接,它只是return将它放到连接池中以供再次使用.
我的问题看起来很简单,但是有一些子问题需要更深入的检查。 我的问题: 处理数据库连接的最佳practice/architecture是什么?
我找到的选项:
- 为每个带有数据库 (DB) 请求的 rest ful 服务创建一个新的 连接到数据库并在查询后再次关闭它。
- 在 REST 服务之外创建一个连接,并将其用于每个 查询。
选项 1.: 一个消极的方面是为每个请求建立和关闭连接的成本。
选项 2.: 不知道是不是工作。我已经研究了 Web 服务生命周期以检查它是如何工作的,但不知道这些实例是否会在 Web 服务完成后保持活动状态。也不知道这是否是一个好习惯,因为可能会有破坏连接的事件。最后一个问题是我认为请求可能会互相阻塞(所以它破坏了线程的概念)。
希望你能在这个架构上帮我一点忙。
问候,
尼克
如果您为每个查询/事务创建一个连接,那么管理 "closing" 连接会容易得多。
我明白为什么常识告诉你应该打开一个并在整个过程中使用它,但你会 运行 遇到连接断开和多线程的问题。所以你的下一步将是打开一个池,比如 50 个连接并保持它们全部打开,将它们分配给不同的进程。
如果您在需要时打开一个连接,并在完成后将其丢弃,那实际上并不会关闭连接,它只是return将它放到连接池中以供再次使用.