Re: [問題] 關於分散式取值

看板Prob_Solve (計算數學 Problem Solving)作者 (gohomexx)時間8年前 (2016/06/28 11:52), 8年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《s1497k047 (財財)》之銘言: : Hi 各位大大 : 現有架構為 a b c 三個資料庫 : 倘若我要取10筆搜尋結果 ,則會分成三台機器, : a機器查一次吐回1-10筆 給main : b機器查一次吐回1-10筆 給main : c機器查一次吐回1-10筆 給main : 再由一台 main 做條件的排序,過濾等等 : 再取1-10筆,顯示搜尋結果 : 假設我要取回來的結果依照某個屬性來做groupby : 則會a,b,c資料庫 搜尋時做一次groupby : 吐回給main時 再做一次groupby ,防止a b c互相有重複的資料。 : 問題來了 : 假設有一筆資料 groupby之後 是再a資料庫的第11筆,但是再b資料庫是第一名 : 依照現行做法 會導致groupby記數錯誤每一筆資料的group_total 非正確結果 : 有沒有一種演算法能夠推估出依照 a b c某筆資料的排名,來設定出應該要取幾筆最安全 : ,ex: 都取抓的目的資料筆數的3倍/5倍, : 無奈現行分配查尋機制無法更動,又考量到一次全部查詢會有效率上的問題 : 懇請各位專家解惑 剛跟同事討論過了,這個問題有點複雜。 假設要群組起來的資料是分數好了。 然後在 a DB 分數如下 10000, 9999, 9998,.... 9901 分別是前 100 名標記為 a1~a100。 在 b DB 的資料中,a1~a99 沒有分數, a100 有 2 分。 而 b DB 最高分為 9900,亦即, b DB 的分數不影響總排名, 但 a100 只有 2 分排在第 7000 名,你要分數加總正確的話, b DB 至少要撈取 7000 名了。 我們討論的結論是, a DB 撈取前 100 名後, 以 sn 分數向 b,c DB 要求這 100 名的分數。 然後加總存起來, b, c 比照辦理, 總共要存取 9 次 DB,這樣結果絕對會是正確的。 但如果沒有 sn 去加速存取特定資料的話,那不如全部都撈取吧。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.51.201.195 ※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1467085947.A.548.html ※ 編輯: gohomexx (123.51.201.195), 06/28/2016 18:15:58 ※ 編輯: gohomexx (123.51.201.195), 06/28/2016 18:17:32
文章代碼(AID): #1NSVHxL8 (Prob_Solve)
文章代碼(AID): #1NSVHxL8 (Prob_Solve)