【问题标题】:Key point to keep in mind when writing database interaction layer (DAL)编写数据库交互层(DAL)时要记住的关键点
【发布时间】:2013-04-10 21:52:46
【问题描述】:

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

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

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

任何cmets都会很棒

艾登

【问题讨论】:

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


    【解决方案1】:

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

    1. 使 DAL 成为接口
    2. 选择正确的抽象级别
    3. 牢记缓存

    (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(面向方面​​的编程)。

    您的具体问题:

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

    【讨论】:

    • 老兄 - 谢谢。我一次又一次地回到这个话题。如果我能再次投票,我会
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2014-04-08
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多