看板 Soft_Job 關於我們 聯絡資訊
各位前輩你們好 不好意思 因此版業界高手較多 將程式問題 po此版了 如有不適 我在刪除 正文: 小弟轉換跑道 過去沒有 app 開發經歷 資料經過正規化 有非常多的表格 連線 API (由我製作) 想到以下四種方式 不知道哪種才是較『好』的作法 --------------------------------- 1. 使用資料庫合併查詢 api 用 index 取得所需資料 2. 資料庫 不合併查詢 用 n 個 ArrayList 存取 n 個資料表 再於 client 執行迴圈 對應 主鍵、外來鍵 3. 資料不合併查詢 需要什麼資料 再各別連線 api 單筆查詢 4. 資料 不合併查詢 於 Server 端 整理成多維陣列 Client 可只接使用 index存取資料 --------------------------------- 1 的問題是 資料有相當的多值情形 非常浪費空間 但是時間複雜度低 2 的問題是 雖可大大省下記憶體 但時間複雜度較高 當資料量一大 怕會有效能上的問題 3 算是折衷 但就我所知 手機做為 Client 端時 應大量減少 request 次數 ? 4 是我過去較長使用之作法 不會有 1 的浪費空間問題 也不會有 2 的效能問題 --------------------------------- 想請問 我這樣的觀念正確嘛? 是否依然採用 第4種方法呢? 還是有更佳的方案? 不好意思 麻煩了 謝謝 ^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.25.29 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1471404885.A.7A4.html
rayway30419: cache08/17 11:38
大大您好, 請問您說的是 避免資料重新下載的 File Cache嘛? 這一塊的話 我已經有做了喔 比較想探討的是 資料讀取的作法 :) 謝謝您 ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 11:46:47
sing10407: 一定是1. 你自己設計的table join效能不會比資料庫好08/17 11:52
sing10407: 而且你自己設計join會花很多時間,效果又不好08/17 11:53
johnlinvc: 108/17 11:53
!! 謝謝樓上兩位前輩 以空間換取時間的作法果然比較常見?? 那第 4種方法 相較於 1 有什麼問題嘛? 我以為無懈可擊 :'( 有哪位高手 可以幫我排名 方法優劣嘛 感激><
pttworld: 「功能」對應API,「API」對應多資料表運算。08/17 11:56
pttworld: 不同使用者使用同一功能,request的成本一致。08/17 11:57
好的! 謝謝前輩提醒 我會謹慎製作 api 而非 「API」 對應「單資料表」 謝謝您 :) ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 12:05:24
lucky1lk: 寧可以空間換時間 現在空間又不值錢...08/17 12:16
我知道 因此才特別說明沒有手機開發經驗 哈哈 對於 手機 memory 不熟 以往的這種作法 不知是否會有 oom的問題 ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 12:28:56
lovdkkkk: 手機 memory? 資料庫或 CRUD 程式跑在手機上?08/17 13:24
資料庫 是放在雲端 Server上喔 我指的是手機 用來存取查詢結果的 memory 可能是ArrayList 或其他資料型態 ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 13:57:34
sing10407: 純文字的資料不用擔心資料多大,幾萬筆可能還不到5MB08/17 17:28
sing10407: 照片影片cache才會佔記憶體08/17 17:28
sing10407: 擔心一下一次傳這麼大檔案的傳輸頻寬問題比較實在 08/17 17:29
好的! 我會乖乖用 join 哈哈 謝謝大大! ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 18:02:58
edward13: 你會sql嗎?會sql應該不會問這種問題吧?08/18 01:15
edward13: 每個api都是對應一個query查詢結果在db就要做掉了吧08/18 01:18
edward13: 把table搬到手機慢慢迴圈除非你流量不用錢 user又很少08/18 01:20
謝謝大大! @@ sql 我普普 但沒考慮過用迴圈啦 哈哈 只是舉出這種方法 只是想知道 不合併查詢 是否有更佳解
TETZ: 1 + NoSQL? 08/18 04:11
謝謝! 覺得這是好作法
PoloHuang: 當然還是DB那邊做完直接拿出來用最好...08/18 09:49
瞭解 謝謝啦 ※ 編輯: aws9527 (42.73.25.29), 08/18/2016 12:14:34
rpdef9969: 1.另複雜的join,可捨orm 純sql存取較佳 ex:report 08/21 16:04