3

我正在开发一个 Web 应用程序,该应用程序将要求用户拥有自己的一组私有数据。我最初的计划是创建一个 stores 表、一个 users 表和一个 user_stores 相交表。然后,我将在 stores 表中保存该商店的数据库名称(并使用应用程序用户和密码创建每个特定于商店的数据库,以便 Web 应用程序始终可以登录)。

每家商店都有相似的数据(用户、产品、运输方式等),而且我知道我可以使用外键引用将所有内容绑定到一个巨大的数据库中。但是,由于数据非常具体并且可能是专有的,使用我的原始设计还是制作一个包含每个人数据的单一数据库会更好吗?

我正在考虑扩展问题,单独的数据库会更好,因为我们可以将更活跃的帐户放在他们自己的(或更强大的)数据库服务器上,如果需要,只需在存储表中添加一个服务器位置字段。此外,它可能更安全,因为我们可以将用户登录信息添加到数据库中,并且只允许他们访问他们的数据(防止一个用户编辑另一个用户的内容)。我的问题是,是否有人担心我错过了?几乎我读过的每一篇文章都说不要使用我正在考虑的方法,而且我不是 DBA。任何输入都会有所帮助。

附加信息:这将托管在我将拥有根访问权限的专用服务器上。我可以根据需要创建任意数量的 MySQL 数据库。

4

2 回答 2

7

我肯定会使用单个数据库。使用以下内容开始。使用单个数据库有几个原因,但最重要的原因是让您免于维护噩梦。如果您必须更改架构,您的手会一团糟。

http://msdn.microsoft.com/en-us/library/aa479086.aspx

于 2013-04-22T16:39:41.427 回答
3

在多租户数据库中,数据库设计人员考虑查询、成本、数据隔离和保护、维护和灾难恢复。

多租户解决方案的范围从每个租户一个数据库(“不共享任何内容”)到每个租户一个行(“共享所有内容”)。这个 SO 答案总结了权衡。如果您正在设计一个属于某种监管环境(HIPAA、FERPA 等)的数据库,那么该监管环境可能会胜过所有其他考虑。

在某些情况下,每个租户一个数据库是一个合理的决定。不过,尚不清楚这是否是的最佳答案。

于 2013-04-22T18:46:58.077 回答