【发布时间】:2019-04-14 05:21:23
【问题描述】:
我们需要知道使用哪种数据库架构更有意义以及为什么。
我们有一个客户列表,他们都将使用相同的表结构(极少数例外)。
我们将有大约 10,000 个客户,每个客户可能都拥有大约 50,000 种产品。
每个客户对产品的处理可能并不相同,我们还希望提供一个计划,让客户可以通过 API 访问他们的数据。
我们的客户确实销售产品,他们的 SQL 表结构都将包含以下列:
- Feed_ID
- Product_ID
- 产品描述
- 价格
- 重量
- 等等...
Feed_ID 用于区分这些产品的来源,并且对于每个客户来说都是独一无二的 - 当然。
我们想过的关系表结构的3种选择:
每个客户都有自己的数据库,在该数据库中,每个产品馈送都有 1 个表
所有客户都托管在 1 个唯一的数据库下,所有客户在该数据库下每个提要都有 1 个表 - 在这种情况下,如果 1 个客户作为 2 个不同的产品提要,他可以有 2 个表。
所有客户都托管在 1 个唯一的数据库中,但是,在第 3 个解决方案中,我们只有 1 个唯一的表来托管所有客户的所有产品提要。
您会使用哪种解决方案以及为什么您认为您选择的解决方案更好?
谢谢。
【问题讨论】:
-
选项 #3 是唯一有意义且可远程扩展的选项。不要使用前两个选项。
-
没有好坏之分。这一切都取决于您的要求。客户的数量是多少,他们的生命周期是什么(是否会添加),您是否始终为所有客户提供相同的功能,您将如何管理每个客户的错误修复等等。虽然 @TimBiegeleisen 是针对选项 #3 作为默认设置,例如,如果是多租户设置,客户应该只能访问他们的数据,您也可以选择选项 #2。例如,这将使您的客户管理彼此独立。
-
谢谢你们两位的cmets。我们将有 10,000 个客户,每个客户可能都拥有全部 50,000 种产品。解决方案 3 中的 1 个巨大的 SQL 表很有吸引力,但是总是为任何客户访问同一个表可能会带来一些性能问题,而且如果由于某种原因该表被损坏,那么所有客户都会失去访问权限。此外,如果该唯一 SQL 表被黑客入侵,黑客就可以访问该表的所有客户数据。即使这样,我仍然不确定哪种解决方案最好?
-
嗨。这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并在minimal reproducible example 上采取行动。 PS请通过帖子编辑澄清,而不是评论。
标签: sql database-design product