2009-11-26 68 views
1

Topk問題 - 在DB搜索BEST k(3或1000)元素

有根本性的問題,關係數據庫,即到找到top k elems,需要處理表中的所有行。這使得大數據上的無用前k個問題 - 我的學術研究發現使用

我正在應用程序(大學的研究,不是我的發明,我執行,並試圖改善原來的想法),其允許您通過訪問存儲的數據的只有3-5%,有效地找到top k元素。這使得它真的快速

甚至有用戶偏好,所以在某些領域,你可以指定指定指定最顯著的屬性用戶和聚集功能最有價值的功能。


例如汽車的DB:屬性:(價格,續航里程,車,CCM,燃料/英里,車的類型...的年齡),例如和用戶價值10 *價格+ 5 * fuel/mile + 4 *里程+車齡,(s)他不在乎汽車的類型和其他。 - 這是彙總規範

然後對於每個屬性(價格,里程等),可以有完全不同的「值函數」,爲用戶指定最佳值。例如(價格:越低越好,然後價值下降,高達50,000美元,其中價值爲0(用戶不希望汽車的價格高於50k)里程:基於他/她的標準的其他函數,ans等等...


你可以看到,有相當自由指定你的喜好和acording它,在DB best k元素將被很快找到。

我已經花了很多不眠的夜晚思考真實生活可用性誰可以從這個查詢db中受益?但是我沒有做出任何事情並堅持只有學術只寫立場。 :-(我希望有可以是一些真正的用法,但我沒有看到任何....

....你有任何想法如何使用,在現實生活中,真實問題等...


I'd love to hear from You.

回答

2

擁有人的個人簡歷數據庫,並建立僱用標準不同的工作,允許前k候選人的動態顯示。另外,考慮到解決方案的快速性,您可以考慮利用它來近似實時顯示高度動態數據的圖形,如股票市場報價或甚至分子或DNA相關研究中的應用。

新思路:或許你的研究可能在聚類中有應用,你可以用它來實現快速的聚類,而不必每次都要掃描整個數據集。這將導致較大數據集的更快聚類,而在選擇每個數據節點的K-NN時採用更復雜的標準。

+0

+1:這是個好主意! :) – DinGODzilla 2009-11-26 11:20:15

1

有無限可能的實際使用場景。獲取前n個值始終都在使用。

但是我非常懷疑可以在沒有索引的情況下得到top-n對象。索引只能在搜索前知道將要搜索的屬性。如果是這樣的話,關係數據庫中的簡單索引能夠提供相同的功能。

+0

我的解決方案不會使用關係數據庫。我必須從關係數據庫導入數據到我的數據庫(通過BerkeleyDB作爲多維B +樹實現)。在關係數據庫中,沒有辦法如何做到這一點,你基本上必須處理所有元素來找出最好的k。 – DinGODzilla 2009-11-26 11:19:29

+0

甚至有多用戶喜好的方式如何查詢。更具體的查詢,發現更快。唯一的限制是該函數必須是連續的並且是線性的。 – DinGODzilla 2009-11-26 11:30:16

0

它一直在金融機構使用,你需要看到最有利可圖的資產/最少盈利等。

+0

是的。但是這些高度特定的特徵可以在搜索之前進行計算,因爲它們可能不會有太大的變化(或根本不會),並且可以使用更好的方法。我們的解決方案是無限(和多用戶)多種top-k查詢。 – DinGODzilla 2009-11-26 14:08:17

+0

如果是外匯交易或投資組合管理,那麼實時價格每N秒就會出現一次,而不是那麼多,我會說。不同的交易者/投資組合經理也可以有他們的用戶偏好。 – 2009-11-26 14:45:56