小心“最佳方式”问题 - 这会使这个问题指向偏离主题的观点。
如果您的应用程序是完全封闭的源代码(我想它是),那么没关系。如果您愿意,您可以直接访问您的主数据库,因为您的所有客户端实现都将成为您整个软件包的一部分。
话虽如此,为了可扩展性和可维护性,构建身份验证 API 接口并使用它可能是一个更好的主意,因此您不需要管理客户端软件的数据库连接组件。
同意。看到问题是对于这类场景很难找到答案,尤其是在多租户上。
闭源是什么意思?
如果我可以使用身份验证 API 从主数据库中检索数据,我将如何以仅在应用程序内授予访问权限而外部各方无法访问它的方式托管它?稍后我们还需要将服务暴露给外部用户。在这种情况下,是从现在开始公开它还是稍后在单独的服务上工作更好?除了 NuSOAP,你还知道哪些最好的简洁的 PHP Web 服务库?
这可以。用户对您的所有实现都是通用的,但角色对于每个客户端实现都是唯一的。这表明您接近它的方式是正确的,因为您首先进行身份验证,然后在登录后将客户端的角色分配给用户。您应该根据本地数据库(显然)检查这一点,然后将其分配给用户的会话,以便它在他们访问期间一直存在。
那是对的!用户对所有实现都是通用的,它存储在主数据库中,而不是单个租户数据库中。我的意思是,每个租户应用程序中的角色,租户可以在租户应用程序中创建角色,例如计费单位、帐户、前台等。所以这些user_id和role_id是存放在租户的数据库中的。这就是我问的原因,因为如果可以,user_id 没有直接映射到主数据库的用户表。
这太宽泛了,无法回答。您在这里也应该小心,因为客户的数据可能不是您要报告的!
现在让我们假设超级管理员想知道每个租户的角色。在这种情况下,我将如何从所有租户数据库中检索数据?我们是否为此使用视图,或者因为我们使用的是 mysql,我该如何实现这一点?
同样,相当广泛,但我假设您可以通过查询 MySQL 服务器以获取每个客户端数据库的数据库统计信息来实现类似的目的,并通过查询托管客户端文件的服务器对文件存储执行相同的操作。
对此感到非常抱歉。我们基本上想跟踪租户数据库的使用情况,看看它们是否超过了我们商定的数量。这就是为什么。我希望有办法实现这一目标。
此外,对于站点图像,将其存储在硬盘上还是作为 BLOB 存储在数据库中更好?一天结束时,我们需要考虑可扩展性以及以更少带宽消耗加载图像的方式?