我正在从事的项目面临着如何从数据库中获取对象和对象集合的设计困境。有时将数据库中的* 所有*对象及其属性缓冲到内存中很有用,有时只需设置对象 id 并按需查询其属性(每个对象调用 1 db 以获取所有属性)很有用。在许多情况下,集合需要支持将对象缓冲到内存中并使用最少的信息进行初始化以进行按需访问。毕竟,并非所有内容都可以缓冲到内存中,也不是所有内容都可以按需读取。这是一个普遍存在的内存与 IO 问题。
有没有人必须面对同样的问题?对您的设计有何影响?有哪些惨痛的教训?还有其他想法和建议吗?
编辑:我的项目是业务层 dll 的经典示例,由 Web 应用程序、Web 服务和桌面应用程序使用。当桌面应用程序请求产品列表并仅按产品名称显示时,可以使用以下步骤顺序显示所有产品(假设数据库中有一百万种产品):
1. 一次 db 调用获取所有产品名称
2. 如果用户单击产品以查看详细信息,则一次 db 调用以获取所有产品信息(按需访问)
但是,如果 Web 服务将使用相同的 API 来显示所有产品的详细信息,那么网络流量将变得混乱。在这种情况下,更好的顺序是:
1. 到底是什么,从一个数据库调用中缓冲所有产品和产品字段(在这种情况下缓冲 100 万个产品看起来也很可怕)