2009-08-11 80 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做它擅長的事情。祝你好運。