2009-08-11 81 views
0

我在Winforms中构建应用程序。这将与DB(oracle)对话并加载大量数据(仅用于查看)。除了缓存和分页之外,还有其他要考虑的问题吗?性能是一个问题,但在用户机器上考虑有限的内存也是一个问题。从数据库中加载海量数据 - 考虑哪些?

谢谢。

编辑 - 附加信息:我也可以选择构建一个java soap服务来充当中间层。这会有帮助吗?

+2

我不知道你想做什么,但我仍然会提供此评论。我认为数据库是一个库。它比我的书架拥有更多的方式,我需要在那里分享物品,并且它不断变化。每次我去那里旅行都很痛苦,所以我尽量在一次旅行中获得所需的一切。但是,我不想一次把整个图书馆带回家。需要有一个平衡。 – 2009-08-11 14:48:22

回答

6

如果你是分页,没有理由有很多数据来“通过电线”。您只需要查询当时正在查看的数据,并且可能需要查找下一页来缓存用户性能。

例如:假设您有一张包含1,000,000行和20列的表格,该表格对用户是可见的,并且您希望一次在屏幕上显示50行。当你显示数据网格时,你应该只引用这些行的一部分(大约50到几百)。在Intranet上传输的数据量可以忽略不计,并且肯定不会影响用户内存。即使你缓存200行,这仍然是200KB的数据存储在本地,并通过内部网传输,这将需要几毫秒。

+0

如果满足以下条件,在数据库中进行分页可能是一个不错的选择:(1)返回的数据集要良好排序,(2)波动性相对较低,(3)获取第N页项目的成本较低。 – LBushkin 2009-08-11 14:49:51

+0

谢谢,但我对dB没有太好的一面。你能告诉更多的东西或指向我的任何链接? – 2009-08-11 14:58:09

+0

你如何访问你的Oracle数据库? – 2009-08-11 15:39:24

2

您可能还想考虑报告,审计&安全性。

通常,用户不会通过一百万行进行分页,而是使用某种报告来汇总或查询信息。

根据您的要求,您可能需要详细的审计记录以了解数据如何进入您的数据库,甚至是谁看过它。

最后,您可能需要确保只有有效的用户才能看到相关数据。 这可能会影响您的数据库结构,并且几乎肯定会对您的应用程序体系结构产生影响。

0

只请求你现在需要的东西,只发回真正改变的东西。人们经常使用ORM,只需从服务器上拉下整个对象。然后他们将整个对象发送回服务器,只有一小部分发生了变化。

其中一些取决于您的ORM,但很多取决于您,以及如何使用ORM。推测性缓存可能很有用,但只有在您确定要获取数据时才有用。从尽可能少的请求开始,然后处理。

0

如果您将需要执行多个选择来构建数据模型,而不是执行存储过程中的所有工作。这将减少网络流量,并让Oracle做它擅长的事情。祝你好运。