编写数据访问层(DAL)时的关键方面或要点是什么。
您允许更高层将“唯一”查询传递给DAL,即不只是标准更新,插入和删除......?
如何在这样的层中实现可扩展性?
任何评论都会很棒
艾登
答案 0 :(得分:1)
根据我的经验,写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调用。这有助于解决可扩展性问题。您可以查看AOP(面向方面编程),它将与DAL调用一起使用。
您的具体问题: