在这种情况下,我应该使用单个数据库还是每个用户一个数据库?

Should I use a single database or a database per user in this scenario?

我正在设计一个库存控制 Web 应用程序,最初,我打算为每个 customer/client 使用一个数据库。我现在知道一些客户需要一些定制,因此他们可能需要一些我的基础应用程序可能没有的特定信息。最重要的是,某些客户将来可能希望将此应用程序本地存储在他们的 store/commerce 服务器中,因此他们可能需要他们的所有信息。 如果我使用单个数据库,我认为性能不会成为问题,至少不会有几个客户。但是,每个用户使用一个数据库,在考虑连接池时可能会使性能变得复杂。

那么最好的方法是什么?如果需要,我会提供更多信息。

此外,如果我为每个用户使用一个数据库,我将如何管理连接字符串?如果用户登录,我的后端如何知道该用户必须访问特定数据库?我会将连接字符串存储在数据库中吗?如果是这样,这不会是一个安全问题吗?

我计划在我的后端使用 postgresql 和 node.js..

谢谢大家!

我看到您正在尝试解决两个问题

  1. 我的应用程序如何开发成任何用户都可以在自己的环境中托管它

    对于这种情况,您应该使用一个数据库,以确保它易于移植

  2. 我的应用如何在集中主机上支持多个用户

    您仍然应该使用一个数据库,但要弄清楚如何创建不同的方式来存储要在 per-customer 唯一 ID 基础上加入的数据。这将变得庞大而复杂,但这取决于每个客户的数据有多么不同。此外,您的应用程序需要处理这种动态状态,因此问题不仅仅是选择数据库,还在于如何编排动态数据。

总的来说,我不会在 per-user 的基础上处理连接字符串,而是让一组客户保持基本设置(静态预定模型),并弄清楚如何处理复杂的问题客户(动态模型),因为你得到他们。最终,一旦你有了很多示例案例,你就可以慢慢地开发一个更大的应用程序来处理所有不同的案例。尝试设计一个应用程序来处理您还没有的动态数据并不简单。