2014-04-02 61 views
2

我有兩個從不同數據庫返回數據的Rails服務。在一個數據集我有一個領域是這樣的記錄:從兩個未連接的數據集中獲取前N條記錄

query, clicks, impressions 

在第二個我有記錄與領域是這樣的:

query, clicks, visitors 

我希望能夠做什麼,從合併集合中獲取分頁數據,匹配查詢。但是它還需要包含一個或其他數據集中存在的所有記錄,然後通過'clicks'列進行排序。

在SQL如果這兩個表在同一個數據庫中,我應該這樣做:

SELECT COALESCE(a.query, b.query), a.clicks, b.clicks, impressions, visitors 
FROM a OUTER JOIN b ON a.query = b.query 
LIMIT 100 OFFSET 1 
ORDER BY MAX(a.clicks, b.clicks) 

個體「百強」到每個數據集生產,因爲在數據中設定「點擊」「一個不正確的結果'可能顯着高於或低於數據集'b'。

,因爲它們不是在同一個數據庫,我在尋找與這使得這種類型的查詢的高效清潔算法的幫助。

+0

你使用ActiveRecord查詢你的數據庫? –

+1

是的,我正在使用ActiveRecord。雖然我不確定這是相關的。這些服務與HTTP/JSON連接。 – jwadsack

+0

@jwadsa​​ck我想這SO答案可能有一定的幫助,http://stackoverflow.com/questions/2186682/access-merge-two-databases-with-identical-structure –

回答

0

我從來沒有找到一種方法在數據庫之外做到這一點。最後,我們只是使用PostgreSQL的Foreign Data Wrapper功能將兩個數據庫連接在一起,並使用PostgreSQL處理排序和分頁。任何人前往了這條路

一個技巧,我們建立了提供準確上述a所需要的數據在遠程服務器上的看法。這比試圖通過遠程連接連接表的速度快上千倍,因爲索引的值已丟失。

相關問題