2012-04-16 37 views
1

我們正在尋找使用MongoDB或HBase構建內部實時分析系統(其他選項可能,但這些是我們現在正在考慮的兩個)。我們選擇了這些兩個因爲:在MySQL和MongoDB/HBase上連接分析數據

  • 我們將錄製大量的事件,並希望能夠以 的橫向和縱向縮放。
  • 我們將得到「長尾」請求 - 例如,「給我三年前這個項目的指標」 - 因此需要在大範圍內進行實時查詢,無論是時間還是其他值。

我們嘗試將MySQL用於分析表,但表格速度非常快,我們不希望我們的分析表成爲我們MySQL系統其餘部分的「重量級」。 (如果任何人有洞察力,我可以建議使用MySQL或其他分析表解決方案。)

所以,問題是:我們經常需要在我們的分析數據存儲和數據存儲中進行實時查找和JOIN MongoDB的/ HBase的。例如,我們將在分析中存儲表格的「id」,但對於任何請求,我們必須將它與「內容」表中的「標題」和「內容」字段「加入」 MySQL的。

有沒有辦法在MongoDB/HBase和MySQL上進行聯接,或者這是我們必須自定義構建到我們的應用程序中的東西嗎?如果我們在應用程序中構建它,我們將如何處理跨MySQL和MongoDB/HBase的大型數據集上的定製JOIN?

回答

2

有沒有辦法做到跨越的MongoDB/HBase的和MySQL的JOIN ...

MongoDB的具有JOIN的絕對零支持。如果您使用MongoDB,基本上必須建立自己的連接系統。

HBase建立在Hadoop之上,理論上,some JOIN-like syntax is possible

但是,MySQL和HBase之間的聯接幾乎可以肯定是自定義代碼。您可能需要考慮將MySQL數據複製到 HBase中。

...需要在大範圍內做實時查詢... 「給我的指標爲這個項目三年前」

認識到這將是一個巨大的挑戰,你不可能找到任何「開箱即用」的東西來爲你做這件事。

您需要對「實時」這個術語非常審慎。這聽起來像你想要「相對敏感的查詢」而不是「實時查詢」。您必須將「相對敏感」作爲範圍,因爲這將大大影響您使用的成本和產品。

+0

對不起,當我說「JOIN」時,我非常肯定我必須做「應用程序級連接」,但是想知道其他人是否曾經這樣做過。我意識到這必須是一個自定義構建。 – Suman 2012-04-17 14:12:20

+0

關於「相對敏感的查詢」與「實時查詢」:這是否取決於MongoDB/HBase /其他選擇?或者關鍵的選擇?還是其他因素? – Suman 2012-04-17 14:13:24

+0

其他方法,你必須選擇你想要的查詢類型,然後使用適當的工具。*「實時」*通常指*「過去15分鐘發生了什麼」*。但是你正在談論的是從3年前用一些用戶定義的字段獲取數據。這是一個即席查詢,並且與「實時」無關,您只需要該查詢在合理的時間內做出響應。 – 2012-04-17 18:57:09