我有一个有50多个表的关系数据库。他们有不止一种关系,一对一,不止一种。
在我将在这个数据库基础上创建的新MVC项目中,代码优先还是数据库首先是更有效的?
根据最佳实践逻辑,在这样大的(总共有2 billion+数据)的地方,哪一个是首选的?
问候..。
发布于 2022-06-10 19:55:17
在我看来,代码首先应该是更好的情况,因为您主要是为应用程序构建软件,而不是数据。“代码第一”的意思是专注于您的问题域和域模型。访问数据库是持久化应用程序状态的实现细节,在软件设计的早期阶段不应提及。
类似的概念可以在领域驱动的设计和清洁架构中找到.
在您的例子中,尽管数据已经存在于数据库中,但主要的问题仍然是:您的新项目是为了什么?
Case1:如果它只是用于读取数据,例如表示,那么您可以将数据库中的数据视为数据模型;这可能符合“数据库优先”的概念。但是,由于数据模型是解决问题的模型,我仍然会首先将其视为代码。
Case2:另一方面,如果有一些特定的需求,您应该首先构建域模型,以关注应用程序的需求和问题,而不是数据库。否则,您可能会发现您的应用程序被数据库的架构卡住了,导致复杂的应用程序逻辑,这取决于您的问题域和数据之间的差异,因为您的应用程序关注的不是问题,而是数据。为了访问数据库,您可能需要的是数据Mapper模式。除此之外,您还可以实现存储库模式,它将为域模型中的实体设计。
关于你提到的效率问题:
假设您是前面提到的情况2。在这种情况下,您可以查看命令查询责任隔离(CQRS),它将查询(用于读取数据的操作)与命令(更改系统状态的操作)隔离开来。将读写职责分离到您的系统可以提高应用程序中演示文稿的效率。
总之,如果不实现只读应用程序,则没有数据库驱动的设计.
https://stackoverflow.com/questions/72559623
复制相似问题