将存储库模式与文档数据库一起使用是否有意义?

UpT*_*eek 24 design-patterns data-access-layer nosql document-database

我目前正在试验MongoDB.我正在从NHibernate/SQL思维模式转向,所以最初我实现了一个用于数据访问的存储库模式.

在我开始使用嵌套文档之前,这一切都很好看.现在看起来似乎有点不匹配.但是,我对存储库感到满意,并且喜欢它们提供的抽象,关注点分离和可测试性.

人们是否成功使用存储库模式和文档数据库?如果没有,您使用什么数据访问方法?那么抽象/ SoC呢?

Dav*_*yon 14

这是一个有趣的问题.在我使用MongoDB时,我选择没有存储库.这是主要的,因为文档数据库用作读取存储(因此简化了存储在那里的数据).

我想你必须考虑到存储库是什么以及你从额外的抽象层获得了什么优势.一个好的设计将有层数最少的可能.

因此,存储库为您提供了一些持久性无知以及在公共数据上下文中使用工作单元的能力.它还可以提高您单独测试数据查询的能力(因为这些通常被抽象为可查询或规范).

此外,一些文档数据库已经提供了存储库模式(RavenDB等),因此不需要另外一个层.

因此,在我看来,使用存储库并不是关于您的数据是存储为关系表还是文档,而是关于您从抽象中获得的更多信息.