2015-04-03 49 views
1

我剛讀這在在mongoid.org網站(ODM爲Ruby)MongoDB不適用於關係數據嗎?

如果您發現有比嵌入式那些你 應用多個關係協會,建議您不要使用 的MongoDB,並移動到一個關係數據庫。

這是一個有效的陳述嗎?

+0

好吧mongodb不是一個sql,它是一個數據庫,它沒有連接 – Abhishek 2015-04-03 09:40:05

+0

當你的數據是*什麼都不是關係時,你可以看看像Neo4j這樣的圖形數據庫,它比關係數據庫更容易擁抱關係。 – Philipp 2015-04-03 09:45:23

回答

0

MongoDB是一個面向文檔的數據庫。交易和關係不在此解決方案中提供。儘管存在這種限制,它還是提供了更具可擴展性的環境

您應該去mongodb.org有更多的信息解決方案。

+0

是的,我知道它是什麼,你可以建立收藏關係。但是如果你有很多相互引用的頂級集合,這是一個不錯的選擇嗎? – sandelius 2015-04-03 09:42:17

+0

我認爲使用Mongo,最佳實踐是爲您的數據設計一個新模型。對於許多集合之間的關係,您應該更喜歡關係DB – Tony 2015-04-03 09:55:24

2

這是一個有效的聲明?

我不這麼認爲。我相信過度嵌入和避免關係是MongoDB最常見的兩個初學者的錯誤。更重要的是,數據如何被結構化爲並不重要。重要的是你需要什麼查詢,以及你是否提前知道。

關係數據庫擅長將不同表格上的查詢約束條件組合在一起:「哪些客戶居住在我們經營大多數商店的城市,在陽光燦爛的日子裏購買?」一個SQL數據庫可以很好地回答這個問題。使用正確的索引,您可以快速完成這些查詢的整個類。如果你不知道在編譯時會被問到的問題,那就特別有用。

不幸的是,這是以複雜性爲代價的:根據您提出的問題,結果具有不同的結構,但典型的LOB應用程序大多需要獲取對象並將其存儲回來。而且,創建SQL查詢也不是微不足道的,因此您必須手動編寫它們或使用複雜的軟件(一種對象關係映射器)來創建查詢,組裝對象並將所有對象拼接在一起。避免這種可怕的軟件和複雜性,是從我的角度使用MongoDB的關鍵原因。因此,對象文檔映射器的想法對我來說通常聽起來很詭異。

關於鎖,交易,「比例」等的討論基本上是正交的。

如果您事先知道您的查詢,MongoDB可以cope with relations relatively well,您可以避免大多數事務。如果您需要商業智能查詢,那麼使用關係數據庫可能會更好。

+1

我想強調的是,正確的建模和查詢和/或聚合幾乎總是可以避免交易。而且,即使那些被提及的野生查詢可以使用各種技術來實現,但並不像使用SQL那麼容易。但是,正如mnemosyn正確地提到的那樣,除了那些邊緣情況之外,其他一切都變得更加容易,在某些情況下更是如此。 – 2015-04-03 10:58:01