编写数据库交互层(DAL)时要记住的关键点

时间:2013-04-17 23:12:01

标签: database database-design relational-database data-access-layer

编写数据访问层(DAL)时的关键方面或要点是什么。

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

如何在这样的层中实现可扩展性?

任何评论都会很棒

艾登

1 个答案:

答案 0 :(得分:1)

根据我的经验,写DAL时有几个关键方面。

  1. 使DAL成为界面
  2. 选择正确的抽象级别
  3. 记住缓存
  4. (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调用一起使用。

    您的具体问题:

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