2011-07-14 20 views
1

什麼是「預運行或在運行時聚合」的數據示例? (爲什麼不MongoDB的很好呢?)什麼是在運行時彙總的預蒸餾數據或數據,以及爲什麼MongoDB不擅長?

這是MongoDB的文檔報價:

傳統的商業智能。數據倉庫更適合於新的特定於問題的BI數據庫。但是請注意,MongoDB可以很好地處理數據在運行時進行預提取或彙總的多個報告和分析問題 - 但是,儘管可能,經典的每晚批量加載商業智能並不一定是最佳選擇。

回答

2

讓我們以一些簡單的像點擊計數。有幾種報告點擊的方法。

  1. 存儲在一個地方的點擊次數。 (文件,數據庫表,集合)當有人需要統計信息時,可以在該表上運行查詢並彙總結果。當然,這不能很好地擴展,所以通常使用...
  2. 批處理作業。將點擊次數存儲在#1中,但只能每5分鐘左右總結一次。當人們想要查詢彙總表時。請注意,「點擊次數」可能有數百萬行,但「摘要」可能只有幾千行,因此查詢起來要快得多。
  3. 實時計算點擊次數。每次點擊都會在某個地方增加一個計數器。通常這意味着遞增「彙總」表。

現在大多數大型系統使用#2。有幾個系統對此非常有用(請參閱Hadoop)。

#3很難處理SQL數據庫(如MySQL),因爲有很多磁盤鎖定發生。但是,MongoDB並不是經常鎖定磁盤,並且往往有更好的寫入吞吐量。

因此,MongoDB最終變得非常適合這種「實時計數器」。這是他們的意思predistilled or aggregated in runtime

但如果MongoDB中具有很大的寫入吞吐量,應該不是很擅長做批處理作業?

理論上,這可能是真的,MongoDB支持Map/Reduce。但是,MongoDB的Map/Reduce目前速度很慢,與Hadoop等其他Map/Reduce引擎並不相同。最重要的是,商業智能(BI)領域充滿了很多其他非常具體的工具,可能比MongoDB更適合。

0

什麼是「預先運行或彙總在 運行時」的數據示例?的這個

實施例可以是需要從多個集合的數據的任何報告。

爲什麼不MongoDB的很好呢?

在文檔數據庫中,您無法進行連接,因此難以生成報告。通常報告它是從許多表/集合中彙總的數據。

而且因爲MongoDB的(和文件數據庫一般),非常適合數據分佈和非規範化更好地預生成報表時,它可能和剛剛從這個集合運行時顯示的數據。

對於某些任務/報告它無法預生成的數據,在這種情況下,MongoDB中給你的Map/Reduce,分組等

相關問題