Database 公司的数据库设计:单数据库还是多数据库?

Database 公司的数据库设计:单数据库还是多数据库?,database,database-design,Database,Database Design,我们正在(重新)设计一个公司信息系统。对于数据库设计,我们正在探索以下选项: [选项1->]一个拥有一切的单一公司BigDatabase [Option 2->]公司内的多个数据库(如HRD_DB、FinanceDB、MarketingDB),然后通过一层应用程序进行同步。EmployeeTable归人力资源开发部所有,如果财务部想咨询员工,它会通过web服务从人力资源开发部数据库查询EmployeeTable 最佳做法是什么?利与弊是什么?我们希望它具有高可用性和合理的可靠性。选项1是否需要群

我们正在(重新)设计一个公司信息系统。对于数据库设计,我们正在探索以下选项:

[选项1->]一个拥有一切的单一公司BigDatabase

[Option 2->]公司内的多个数据库(如HRD_DB、FinanceDB、MarketingDB),然后通过一层应用程序进行同步。EmployeeTable归人力资源开发部所有,如果财务部想咨询员工,它会通过web服务从人力资源开发部数据库查询EmployeeTable

最佳做法是什么?利与弊是什么?我们希望它具有高可用性和合理的可靠性。选项1是否需要群集以及所有这一切?大公司和大学(如丰田、三星、斯坦福大学、麻省理工学院等)是否总是选择选项1

我看了很多DB教科书,但是我找不到关于这个主题的充分解释


欢迎提供任何想法、提示、链接或建议。谢谢。

没有单一的答案。这取决于许多其他因素,如数据库负载、应用程序体系结构、可伸缩性等。我的建议是从最简单的方式(单个数据库)开始,并根据需要进行更改


单一数据库有它的优点:更简单的连接、引用完整性、单一备份。只有在您有正当理由/需要时才有单独的数据。

没有单一的答案。这取决于许多其他因素,如数据库负载、应用程序体系结构、可伸缩性等。我的建议是从最简单的方式(单个数据库)开始,并根据需要进行更改


单一数据库有它的优点:更简单的连接、引用完整性、单一备份。只有在您有正当理由/需要时才使用单独的数据块。

在我看来,更合适的做法是对数据库进行规范化,并在公司内基于部门设置多个数据库。这将允许您在存储、检索和更新信息方面更有效地管理数据,并根据部门类型或用户类型为用户提供访问权限。您还可以提供数据库的不同视图。管理数据会容易得多

在我看来,更合适的做法是对数据库进行规范化,并在公司内基于部门建立多个数据库。这将允许您在存储、检索和更新信息方面更有效地管理数据,并根据部门类型或用户类型为用户提供访问权限。您还可以提供数据库的不同视图。管理数据会容易得多

任何一个都会起作用,其他决定都会影响您的规范。在某种程度上,你的问题可以被描述为“我应该走ERP的道路还是SAAS的道路”?我认为这说明现在大多数系统都倾向于SAAS

您将如何管理应用程序?如果它们将在不同的时间更新,那么单独的数据库将更有意义。(SAAS路径)。另一方面,一个DB连接、一个授权系统、一个查找详细信息的地方、一个备份的地方等,似乎可以降低技术领域的复杂性。但是,不允许将影响业务一部分的决策与业务其他部分分开考虑

一旦涉及到业务,试图获得每个部门同意升级的单一时间可能是地狱。具有一定程度的抽象性,因此在更新其堆栈部分之前,您只需要让一个部门保持一致,这在未来几年中具有真正的优势。如果您的web服务是健壮的,并且不会随着每个版本的变化而变化,则此c一条简单得多的道路

不要忘记,您可以在其他数据库中查看数据

至于你提出的大多数大公司是如何运作的问题,通常是由大系统和小系统混合而成的,这些系统有时相互通信,有时不重复数据,而且经常重复数据。说过重复数据是一个真正的问题,总是有权威的来源和副本(或者最好只有一份副本)。我看到的一种方法在许多企业中都很有效,那就是一个地方的详细信息可以被删减(创建、检索、更新和删除),还有很多地方可以阅读


实际上,这个设计决策与可用性和可靠性几乎没有关系,或者根本没有关系。这往往来自于良好的设计(简单性、了解事物的位置等)良好的实践(良好的发布实践、管理实践、备份、智能冗余等)和花钱。不是因为有一个或多个系统。

这两个系统都会起作用,而其他决定将主要影响您的规范。在某种程度上,您的问题可以被描述为“我应该走ERP道路还是SAAS道路”?我认为这说明目前大多数系统都倾向于SAAS

您将如何管理这些应用程序?如果它们将在不同的时间更新,那么单独的数据库将更有意义。(SAAS路径)。另一方面,一个DB连接、一个授权系统、一个查找细节的地方、一个备份的地方等,似乎可以降低技术领域的复杂性。但不允许将影响业务一部分的决策与业务其他部分分开考虑

一旦涉及到业务,试图在每个部门都同意升级的情况下获得一次机会可能会非常糟糕。在未来几年中,拥有一定程度的抽象性,只需让一个部门在更新其堆栈部分之前保持一致,就具有真正的优势。如果您的web服务是健壮的,并且不会随着每个版本而改变,那么这将是一条更容易的途径

不要忘记,您可以在其他数据库中查看数据

至于你的问题,大多数大公司是如何运作的;通常情况下,由大小系统混合而成,有时相互通信,有时不通信,并且经常重复数据。话虽如此,重复dat