JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 資料顯示的問題
jimwayne





發文: 220
積分: 0
於 2011-10-17 11:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟目前遇到一個資料顯示的問題
因為系統底層的 API 取資料速度很慢(Java),取一筆大概就要花到 0.01 秒
而光在測試時資料就有上千筆,全部取出需要費時超過十秒
在取資料期間畫面會凍結,使用者沒辦法做任何動作...必須在那等到資料取完
雖然說取資料是可以一次只取 100 筆之類的
但由於顧及到 Server 端系統硬體資源極為有限,我們採取的方式是在 client 端一次取完所有資料
當使用者有特殊需求需要做篩選、不同類型的資料排序時,直接靠 JavaScript 在 client 端處理
因此如果沒有一次把所有資料取出來,排序的結果就會有問題~
想請問這種狀況有沒有比較合理的處理方法?
例如有沒有可能先吐一部分出來(預設排序方式的前 100 筆)
使用者在看資料時在背後偷偷再把剩下的資料吐進來?
或者請問有其他更好的作法嗎?


reply to postreply to post
Java 工作者,但仍然是個初心者.....
作者 Re:資料顯示的問題 [Re:jimwayne]
jk47





發文: 159
積分: 0
於 2011-10-17 15:48 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1.底層連接的是什麼??資料庫??SAP?
2.一次取出 問題會更大吧,如果多人使用,記憶體不就很容易被吃光
3.如果前端是網頁 AJAX就可以幫你把資料偷偷取出

最後要說的是,
問題請描述清楚,前端、後端不說清楚怎麼提供想法呢?
因為有很多的東西,再抓資料抓取那邊會比較方便處理
若是沒法處理,你的client端會很麻煩


reply to postreply to post
喝著濃濃的JAVA,看著MYSQL耀出水面
旁邊NetBeans抓著GlassFish與DUKE在嬉鬧
現在手上又拿著ORACLE在研究
(ORACLE=甲骨文=契文)
作者 Re:資料顯示的問題 [Re:jk47]
jimwayne





發文: 220
積分: 0
於 2011-10-17 16:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟在寫問題時是覺得底層是什麼並不重要,所以就沒有說明
因為我們團隊目前沒有多餘的時間跟人力可以去調校底層的 API,加快取資料的速度
而架構也不會改變,我們一定要透過指定的 API 去取需要的資料。
底層是直接使用國外某個 management system,他們有提供 API 可以取得 system 上的一些資訊
但實際上這個 system 是把資料存在哪小弟是不太清楚...。

底層 API 會回傳 JSON 格式的資料給我們,裡面就是包含一大串符合要求的資料
而我們的目標就是資料取出後,要能夠讓使用者在網頁中看那一大串資料可以很迅速地做任何排序、篩選的動作
不過目前遇到的問題是資料取出時使用者必須被凍結很久,因為向底層的 API 取資料取很久...

程式的流程簡述:
在使用者會看到的前端介面中,是使用 AJAX 去跟中間我們自己寫的 JAVA 溝通
JAVA 再去跟底層的 API 要資料~要到後回傳給前端的 AJAX
AJAX 收到回應後再把資料列在網頁上。

目前小弟的想法也是希望我可以在中間的 JAVA 去跟底層 API 要資料時
先要一頁的量就好,然後回傳給前端的 AJAX
AJAX 顯示第一頁的資料時在背後繼續要後續的資料,直到所有資料都要完以後
就可以讓使用者在前端很快速地做排序、篩選等的動作。
不過當然這樣的作法問題就在於底層 API 要資料太慢了
而且如 jk47 大所說,資料量一多不但要資料要很久,也不能保證 client 端記憶體會不會被塞爆
所以才想發這個問題,想請問這樣子的狀況通常有什麼比較好的解決方法?

PS1. 要的資料類型有很多種,例如使用者清單、檔案清單等等,不過目前問題最大的是管理介面中的伺服器 log 清單....隨便就會有幾千幾萬行的 log 要去撈出來,而且使用者可能在觀看 log 時會有很多種類型的篩選、排序的需求。
PS2. 硬體限制非常地嚴格,我們的系統能用的系統資源相當少...系統本來就已經有點慢了,所以希望各種需要列清單的動作都能盡可能避免使用太多系統資源。


jimwayne edited on 2011-10-17 16:12
reply to postreply to post
Java 工作者,但仍然是個初心者.....
作者 Re:資料顯示的問題 [Re:jimwayne]
kai7450





發文: 21
積分: 0
於 2011-10-18 09:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
提供幾點你參考一下

1.底層提供api的公司不太可能只有提供全部資料撈出的方法,你們java那邊寫法有問題需要調整一下
2.建一個db定期跑排程將資料撈回,接下來的地方自己做
3.也是定期跑排程,自己將資料建立索引,也可以減少將來search資料的loading


reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8