【发布时间】:2013-04-10 21:52:46
【问题描述】:
编写数据访问层 (DAL) 时有哪些关键方面或要点。
您是否允许更高层将“唯一”查询传递给 DAL,即不仅仅是标准的更新、插入和删除...?
如何在这样的层中实现可扩展性?
任何cmets都会很棒
艾登
【问题讨论】:
标签: database database-design relational-database data-access-layer
编写数据访问层 (DAL) 时有哪些关键方面或要点。
您是否允许更高层将“唯一”查询传递给 DAL,即不仅仅是标准的更新、插入和删除...?
如何在这样的层中实现可扩展性?
任何cmets都会很棒
艾登
【问题讨论】:
标签: database database-design relational-database data-access-layer
根据我的经验,编写 DAL 时有几个关键方面。
(1) 确保您的 DAL 是一个接口。这允许您模拟可能调用数据库进行测试的方法。如果您在接口中有getItems() 函数,那么您可以实现一个输出到您的数据库的类和一个模拟数据以进行快速单元测试的类。
(2) 在执行 (1) 时,请确保您选择了正确的抽象级别。例如,我在当前的公司看到了一个糟糕的 DAL,它在每次调用时都使用抽象查询语言。
例如,我们 DAL 中的一个调用是:
getItems(List filters, int limit, int skip)。
相反,我希望看到:
getItems(List ids, int pageSize, int page)。
我们让底层数据源(在本例中为 Mongo)的详细信息通过接口流出。我们在界面中公开了 Mongo 的特定功能。小心不要那样做!
如果你做得好这一步,你可以将你的支持数据存储从关系到文档交换到任何东西。
(3) 牢记缓存。非常简单,但请确保您考虑如何缓存您的 DAL 调用。这将有助于解决可扩展性问题。您可能会研究将与 DAL 调用一起使用的 AOP(面向方面的编程)。
您的具体问题:
【讨论】: