gpt4 book ai didi

c# - 您应该为每个限界上下文设置一个数据库来管理所有数据库还是单独的数据库?

转载 作者:太空狗 更新时间:2023-10-29 21:04:13 24 4
gpt4 key购买 nike

在 DDD 中,据我了解,它可以帮助或指导您如何构建复杂的应用程序。现在在一个应用程序中,您应该确定您的限界上下文。假设您有 10 个以上的 BC。

我在某处读到(请原谅我不能提供任何链接),对于一个复杂的应用程序来说,拥有 1-big 数据库并不理想。它应该为每个 BC 分开。如果那是更容易采取的路线。如果每个 BC 都有自己的数据库,应该如何构建应用程序。

我尝试在 github 上搜索但找不到。

最佳答案

这取决于它们是否仅共享相同的数据库或还共享一些表 - 即数据。

共享数据库但不共享表是完全没问题的。除非您的目标是可扩展性并打算使您的 BC 的独立部署和运行单元像微服务,在这种情况下,它们可能应该有自己的数据存储实例。

我看到由 2 个或更多限界上下文共享的数据库还有一些缺点:

  • 紧耦合。我们有不同的 BC 的原因是它们代表不同的域空间,这些域空间可能会以自己的方式发散。更改其中一个 BC 中的概念可能会影响基础表,从而迫使使用此表的其他 BC 也进行更改。本应柔软的地方会变得僵硬。由于多种可能的变化来源,您还可能在数据中存在不一致或“漏洞”。

  • 并发。在高度并发的系统中,一些实体和下面的表会受到强烈的争用。限界上下文是通过分离不同类型的写入来减轻负载的方法之一,但只有当它们在一天结束时不锁定相同的数据时才有效。非 CQRS 系统中的读取也是如此,在这些系统中,它们查询完成写入的同一数据库。

  • ORM 友好性。大多数 ORM 不允许您在没有大量卷积和变通方法的情况下从同一个数据库表映射到 2 个或更多类。

How should one structure an app if each BC have their own database.

在某种程度上(例如,可能包括或不包括 UI 层),就像您有多个独立的应用程序一样。如果您有明确的问题,请更具体一些。

关于c# - 您应该为每个限界上下文设置一个数据库来管理所有数据库还是单独的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36776118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com