2012-06-11 117 views
1

在我正在構建的系統中,它本質上是一個問題跟蹤系統,但具有各種問題模板。某些問題類型與其他問題類型有所不同。MongoDB很適合這個嗎?

我原本計劃使用MySQL,其中包含key =>值對的主表issues表和issues_meta表。不過,我認爲NoSQL(MongoDB)可能是更好的選擇。

的MongoDB能給我提供的 問題每人分配按類型按月生成「標準」 報告,就像鍵入#的問題,問題#的能力,#等?我問這個是因爲我讀過一些說Mongo不善於舉報的消息來源。


我還打算在存儲蒙戈我的審計日誌,因爲我要爲所有操作(修改任何表)一個「表」。在Mongo中,我可以存儲每個容易更改的字段,因爲它是無模式的。這是一個壞主意嗎?

還有什麼我應該知道的,並且Mongo會爲我想要的工作嗎?

+0

@woz不再是我不...然後,主要問題是NoSQL是否有能力提供報告。我會重構我的問題。謝謝 –

+1

爲什麼你認爲MongoDB比其他NoSQL更適合這個問題呢?如果您要存儲鍵值對,那麼您將失去MongoDB的主要優勢(結構化文檔)。 –

+1

MongoDB是一個數據庫服務器,所以我認爲你真正想研究的是報告支持MongoDB作爲數據源的解決方案。例如,[Pentaho](http://www.pentaho.com/big-data/nosql/10gen/)或[Jasper Reports](http://www.jaspersoft.com/bigdata)。 – Stennie

回答

1

我認爲MongoDB將是該用例的完美搭配。

  • MongoDB集合是異構的,這意味着您可以將具有不同字段的文檔存儲在同一個包中。因此,不同的報告模板不會成爲展示瓶頸。您將能夠使用單個文檔對完整問題進行建模。

  • MongoDB將非常適合於日誌記錄。您可能對封頂收藏感興趣。

  • 如果您需要在文檔之間建立關係關聯,您也可以擁有它。

  • 如果你使用Ruby,我可以推薦你Mongoid。它會使它更容易。此外,它支持文檔版本化。

1

MongoDB肯定會工作(如果你願意,你可以使用capped collections自動刪除舊記錄),但你應該問問自己,它適合這個任務嗎?對於你描述的用例,最好選擇使用Redis(簡單而快速)或Riak(如果你關心你的日誌數據)。

+0

嗯,我不只是要存儲key =>值對,我將直接存儲模式,因爲我可以針對不同的問題類型使用不同的模式。我可以使用單個集合,而不是被迫使用兩個單獨的表格。 –