[請益] 手機使用 Web Services API

看板Soft_Job作者 (Awis)時間9年前 (2016/08/17 11:34), 9年前編輯推噓7(7010)
留言17則, 10人參與, 最新討論串1/1
各位前輩你們好 不好意思 因此版業界高手較多 將程式問題 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

08/17 11:38, , 1F
cache
08/17 11:38, 1F
大大您好, 請問您說的是 避免資料重新下載的 File Cache嘛? 這一塊的話 我已經有做了喔 比較想探討的是 資料讀取的作法 :) 謝謝您 ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 11:46:47

08/17 11:52, , 2F
一定是1. 你自己設計的table join效能不會比資料庫好
08/17 11:52, 2F

08/17 11:53, , 3F
而且你自己設計join會花很多時間,效果又不好
08/17 11:53, 3F

08/17 11:53, , 4F
1
08/17 11:53, 4F
!! 謝謝樓上兩位前輩 以空間換取時間的作法果然比較常見?? 那第 4種方法 相較於 1 有什麼問題嘛? 我以為無懈可擊 :'( 有哪位高手 可以幫我排名 方法優劣嘛 感激><

08/17 11:56, , 5F
「功能」對應API,「API」對應多資料表運算。
08/17 11:56, 5F

08/17 11:57, , 6F
不同使用者使用同一功能,request的成本一致。
08/17 11:57, 6F
好的! 謝謝前輩提醒 我會謹慎製作 api 而非 「API」 對應「單資料表」 謝謝您 :) ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 12:05:24

08/17 12:16, , 7F
寧可以空間換時間 現在空間又不值錢...
08/17 12:16, 7F
我知道 因此才特別說明沒有手機開發經驗 哈哈 對於 手機 memory 不熟 以往的這種作法 不知是否會有 oom的問題 ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 12:28:56

08/17 13:24, , 8F
手機 memory? 資料庫或 CRUD 程式跑在手機上?
08/17 13:24, 8F
資料庫 是放在雲端 Server上喔 我指的是手機 用來存取查詢結果的 memory 可能是ArrayList 或其他資料型態 ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 13:57:34

08/17 17:28, , 9F
純文字的資料不用擔心資料多大,幾萬筆可能還不到5MB
08/17 17:28, 9F

08/17 17:28, , 10F
照片影片cache才會佔記憶體
08/17 17:28, 10F

08/17 17:29, , 11F
擔心一下一次傳這麼大檔案的傳輸頻寬問題比較實在
08/17 17:29, 11F
好的! 我會乖乖用 join 哈哈 謝謝大大! ※ 編輯: aws9527 (42.73.25.29), 08/17/2016 18:02:58

08/18 01:15, , 12F
你會sql嗎?會sql應該不會問這種問題吧?
08/18 01:15, 12F

08/18 01:18, , 13F
每個api都是對應一個query查詢結果在db就要做掉了吧
08/18 01:18, 13F

08/18 01:20, , 14F
把table搬到手機慢慢迴圈除非你流量不用錢 user又很少
08/18 01:20, 14F
謝謝大大! @@ sql 我普普 但沒考慮過用迴圈啦 哈哈 只是舉出這種方法 只是想知道 不合併查詢 是否有更佳解

08/18 04:11, , 15F
1 + NoSQL?
08/18 04:11, 15F
謝謝! 覺得這是好作法

08/18 09:49, , 16F
當然還是DB那邊做完直接拿出來用最好...
08/18 09:49, 16F
瞭解 謝謝啦 ※ 編輯: aws9527 (42.73.25.29), 08/18/2016 12:14:34

08/21 16:04, , 17F
1.另複雜的join,可捨orm 純sql存取較佳 ex:report
08/21 16:04, 17F
文章代碼(AID): #1NizjLUa (Soft_Job)