我有以下問題:
我有一個Web應用程序,它將數據存儲在數據庫中。我希望客戶能夠提取數據,例如2個表格到一個文件(客戶端本地)。
數據庫可能是任意大的(這意味着我不知道有多少數據可能在數據庫中,可能是巨大的)。
這是最好的方法是什麼?
應該全部數據是SELECT
編輯出來的表格並返回給客戶端作爲一個單一的結構存儲在一個文件?
或者應該部分檢索數據,例如:前100個,後100個入口等,並在客戶端創建單一結構?
這裏有沒有什麼優點可以考慮?如何將大量數據從數據庫返回給Web客戶端?
回答
我們有一個類似的用例與一個oracle cluster with約。 40GB的數據。最適合我們的解決方案是每條語句的最大數據量,因爲它顯着降低了DB開銷。
話雖這麼說,有三個優化其工作對我們非常好:
1)我們將數據劃分爲10大致相同大小的組和並行地從數據庫中選擇它們。對於我們的集羣,我們發現並行工作的8個連接約爲。比單個連接快8倍。有一些額外的加速可達12個連接,但這取決於你的數據庫和你的dba。
2.)遠離休眠或其他ORM,一旦談到大量數據,就使用定製的JDBC。使用所有可以達到的優化(例如ResultSet.setFetchSize())
3.)我們的數據壓縮得很好,並且通過gziper放置數據節省了大量的I/O時間。在我們的例子中,它消除了關鍵路徑上的I/O。順便說一下,將數據存儲在文件中也是如此。
我已經構建了類似的東西 - 這裏有一些非常尷尬的問題,特別是當文件大小超出了您在瀏覽器中可以輕鬆處理的範圍時。隨着數據量的增長,生成文件的時間增加;這反過來又不是Web應用程序擅長的,因此即使只有少量訪問者請求大型文件,您也可能會面臨Web服務器不高興的風險。
我們所做的是將應用程序分成3部分。
「文件請求」是一個簡單的網頁,在該網頁中經過身份驗證的用戶可以請求他們的文件。這將在網頁請求的上下文之外啓動第二部分:
文件生成器。 在我們的例子中,這是一個windows服務,它在查看帶有文件請求的數據庫表,選擇最新的數據庫表,運行適當的SQL查詢,將輸出寫入CSV文件,並將該文件壓縮後,再將其移至輸出目錄並通過鏈接向用戶發送郵件。它在數據庫中設置記錄的狀態,以確保在任何時間點只有一個進程發生。
FTP/WebDAV站點: 將ZIP文件寫入可通過FTP和WebDAV訪問的文件夾 - 這些協議通常比使用標準HTTP下載的大型文件更好。
這很有效 - 用戶不喜歡等待他們的文件,但延遲很少超過幾分鐘。
- 1. 從數據庫加載大圖像並將其返回給客戶端
- 2. PyQt QTcpServer:如何將數據返回給多個客戶端?
- 3. Meteor.methods:通過內部回調將數據返回給客戶端
- 4. 將數據從node.js發回客戶端?
- 5. 將客戶端socket.io返回給變量
- 6. ASP MVC - 安全地將數據返回給客戶端?
- 7. 按照AJAX發佈請求將數據返回給客戶端?
- 8. Select語句不能將數據返回給客戶端
- 9. 未從Apollo返回給客戶端的相關數據?
- 10. WCF如何處理大量客戶端和大量數據?
- 11. GWT客戶端HTML5數據庫存儲(Web SQL數據庫)
- 12. 將SQL數據公開給客戶端
- 13. SailsJS將數據暴露給客戶端
- 14. 將客戶端數據從一個數據庫移動到新數據庫
- 15. 將數量列表返回給客戶端的方法?
- 16. Oracle數據庫客戶端
- 17. javascript如何將查詢參數返回給客戶端
- 18. 如何在AJAX回發到ASP.NET客戶端後返回數據?
- 19. Web應用程序來存儲大量數據的客戶端
- 20. 如何將數據從SOAP處理程序傳回web服務客戶端?
- 21. 節點api不返回數據給客戶端ajax請求
- 22. 從Java客戶端保護數據庫
- 23. 我如何使用webservice將數據從數據庫發送到客戶端C#
- 24. 函數中包含的select語句無法將數據返回給客戶端
- 25. 返回更大的數據集客戶端
- 26. 使用WCF創建WPF智能客戶端時將數據庫ID和其他數據返回給ViewModel
- 27. 從Silverlight客戶端訪問SQL數據庫(無Web項目)
- 28. Java Servlet在提交數據庫事務之前返回響應給客戶端
- 29. 通用WCF數據服務向Silverlight客戶端公開大量SQLite數據庫
- 30. 將xml數據傳遞給webservice並將xml文件返回給客戶端的ajax -jquery返回的問題
什麼是客戶端將使用的數據? – SimonC 2012-07-09 11:33:26
你可以這樣做,取決於用例。 – NimChimpsky 2012-07-09 11:34:16
@SimonC:數據應該保存在本地文件中,並且用戶可以保存它們以供檢查等。 – Jim 2012-07-09 11:36:32