想象一下,桌面应用程序 - 可以最好地描述为用户插入/查看记录的记录保存 - 依赖于包含大>的数据库后端strong>对象的层次结构和属性。应如何处理数据检索?
所有数据是否应在启动时加载并存储在相应的类/结构中以供以后操作,或者是否应仅在需要时检索数据,存储在模拟中 Classes / Structures然后重新使用,而不是再次被问到DB?
据我所知,前一种方法需要使用更大的内存部分以及启动时可能的等待时间(如果显示启动画面则不是很糟糕),而后者可能会使用户遇到延迟由于数据检索而需要处理,并且需要对数据库执行一些昂贵的查询,其结果和/或支持数据结构一旦使用就很可能没有用处*。
有些东西告诉我,解决方案在于深入分析,这将导致上面列出的两种方法混合使用最常用的数据,但我非常有兴趣阅读你的想法,提示和现实生活经验关于这个话题。
为了讨论,我正在考虑C ++和SQLite。
谢谢!
* 假设您可以在类/对象上执行更快的操作,而不必在数据库上执行复杂的查询。
修改
其他一些细节:
答案 0 :(得分:1)
我认为这个问题取决于太多变量,无法给出具体答案。您首先应该考虑的是您需要从数据库中读取多少数据到您的应用程序中。此外,您多久会将数据发送回数据库并请求新数据?此外,用户是否会同时处理数据?如果是这样,最初加载数据可能不是一个好主意。
编辑后我会说将数据保留在数据库中可能会更好。如果您打算以相对较低的频率访问它,则没有理由在启动时加载或尝试将其缓存在您的应用程序中。当然,只有您最了解您的应用程序,并且应该预先确定哪些位可以加载以提高性能。
答案 1 :(得分:1)
使用Lazy Load和Data Mapper(第165页)模式。
答案 2 :(得分:0)
您可能会考虑用户中间服务器(WCF),它将包含来自内存中数据库的缓存数据,这样用户就不必每次都去数据库。此外,如果有人更改/添加记录,它只是所有用户的一个访问点,您也可以更新缓存。静态数据可以每x小时重新加载一次(例如每小时一次)。它仍然可能不是最好的选择,因为数据需要从服务器封送到客户端,但是如果可以的话,你可以使用netTcp绑定,这很快,很小。