繁体   English   中英

处理同时填充 PostgreSQL 数据库的多个用户

[英]Handling multiple users concurrently populating a PostgreSQL database

我目前正在尝试构建一个允许许多用户查询外部 API 的 Web 应用程序(由于各种原因,我无法定期检索此 API 提供的所有数据以填充我的 PostgreSQL 数据库)。 我已经阅读了几篇关于 ACID 和 MVCC 的文章,但我不确定如果几个用户同时填充/读取我的 PostgreSQL 数据库不会有任何问题。 所以在这里我寻求建议(我对这个领域很陌生)!

假设我的用户查询外部 API 以检索文章。 他们通过表单进行搜索,后端获取它,查询 api,填充数据库,然后查询数据库以将一些数据返回给前端。

  • 是否可以简单地创建一个唯一的表来存储用户查询时 API 返回的文章?
  • 我是否应该存储 API 返回的文章,并将每篇文章与请求它的用户相关联(文章模型将包含到用户模型的外键映射)?
  • 或者我应该给每个用户一个表(数据隔离会很好,但听起来效率很低)?

谢谢你的帮助 !

是否可以简单地创建一个唯一的表来存储用户查询时 API 返回的文章?

是的。 如果文章具有唯一键(doi?),您可以使用 INSERT...ON CONFLICT DO NOTHING 来处理两个人几乎同时请求文章的情况(可能非常罕见)。

我是否应该存储 API 返回的文章,并将每篇文章与请求它的用户相关联(文章模型将包含到用户模型的外键映射)?

你想要_____吗? 有理由吗? 你关心谁请求了每篇文章? 听起来您希望只存储第一个请求每篇文章的人,而不是每个请求?

或者我应该给每个用户一个表(数据隔离会很好,但听起来效率很低)?

是的,您会更频繁地访问 API(假设大部分文章被多次请求)并存储大量重复项。 如果一个人连续两次点击“提交”,或者打开多个选项卡,或者编写一个机器人来并行访问您的服务,它甚至可能无法解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM