2013-11-21 29 views
5

我是風暴中的新手。只是想,如果我可以使用風暴來合併/連接來自兩個不同dbs的兩個表格(因爲兩個表格有某種外鍵關係,恰好存在於不同的dbs /系統中),任何想法如何構成拓撲?就像有兩個分開的噴嘴定期從兩個dbs讀取並且有一個螺栓來完成連接工作?使用風暴從兩個不同的dbs加入兩張桌

這是風暴的恰當用例嗎?

任何想法都讚賞!

回答

3

就像有兩個分離出水口從兩個DBS定期閱讀和具有螺栓做加盟工作

是的,這是非常可能的。風暴可以有多個spouts。而A bolt consumes any number of input streams, does some processing, and possibly emits new streams.通常更好地讓你的噴口從像Kafka或RabbitMQ這樣的隊列中讀取(你可以找到與大多數排隊系統集成的噴嘴)。所以在這種情況下,您可以使用來自DB的數據提供隊列,然後讓噴口消耗相同的數據。

UPDATE:
這是一個非常好的Article有關風暴的並行工作方式

+0

謝謝@ user2720864。有兩個問題:1.螺栓是否會受到很大的壓力,因爲所有的螺栓都是單螺栓,因爲它是一個連接,所以很難將連接並聯到多個螺栓上。 2.是否有任何現有的方法將db數據發送到Message Queue,它是否會在管道中增加一層複雜性? – Shengjie

+1

據我瞭解.. 1.可能有一個單一的螺栓,但你可以使用風暴並行運行多個相同的實例。 2.你正在尋找一個現有的理智的項目嗎? – user2720864

+0

是的,如果有一個現有的項目,那麼:)現在,我正在寫一個週期性的查詢反對原始dbs內的噴口本身,不太確定這是正確的方式做它。 – Shengjie

6

這可能是一個很好用的風暴,但它確實取決於你的數據集。如果你只有兩個分開的數據庫管理系統的表,你想加入並存儲在第三位(DBMS或其他),Storm只有在這是一個流式連接時纔有意義,即兩個表經常被寫入,而你想要加入剛剛寫在一起的東西。

另外,它幾乎不用說,你應該只使用風暴將帶來的複雜性,如果這是相對較大和大量的東西。

如果它很小,您可能會更好地使用傳統的ETL工具,即使這只是您鞭策訪問兩個數據庫併合並數據的一些代碼。

如果數據集很大,並且您需要在很短時間內完成連接,我會考慮以另一種方式進行連接,例如使用map-reduce作業從兩個數據庫中提取數據並傳播通過一個集羣加入。