编写数据访问层(DAL)时有哪些关键方面或要点?

您是否允许高层将“唯一”查询传递给DAL,即不只是标准更新,插入和删除...?

如何在这样的层中实现可伸缩性?

任何评论都很好

艾登

===============>>#1 票数:1 已采纳

从我的经验来看,编写DAL时有一些关键方面。

  1. 使DAL成为界面
  2. 选择正确的抽象级别
  3. 注意缓存

(1)确保您的DAL是接口。 这使您可以模拟可能调用数据库进行测试的方法。 如果你有一个getItems()的接口函数,那么你可以实现一个类,出去你的数据库快速的单元测试嘲笑数据的类。

(2)在执行(1)时,请确保选择了正确的抽象级别。 举例来说,我在目前的公司中看到了一个糟糕的DAL,该DAL每次调用都使用抽象查询语言。

例如,在我们的DAL中,一个呼叫是:

getItems(List filters, int limit, int skip)

相反,我希望看到:

getItems(List ids, int pageSize, int page)

我们让基础数据源(在这种情况下为Mongo)的详细信息通过界面流失。 我们在界面中公开了Mongo的特定功能。 注意不要这样做!

如果做得好,您可以将关系数据到文档的备份数据存储交换到任何东西。

(3)记住缓存。 非常简单,但是请确保您考虑如何缓存DAL调用。 这将有助于解决可伸缩性。 您可能会研究将用于DAL调用的AOP(面向方面​​的编程)。

您的具体问题:

  1. 我将允许高层传递唯一查询。 但是请记住要选择正确的抽象,以便在需要时可以交换持久性存储。
  2. 使用缓存大量(可能是分布式缓存)来提供可伸缩性。 就那么简单。 =)

  ask by Aiden Strydom translate from so

未解决问题?本站智能推荐: