2013-12-14 30 views
0

我在MongoDB系統的整個領域仍然是新的。MongoDB:聲明式還是導航式?

我想知道是否有人知道MongoDB是聲明式還是導航式的,當涉及到訪問文檔中的對象時?

我的意思是:
- >聲明式:給出一個模式,系統計算出結果。換句話說,它的工作方式與SPJ查詢相同
- >導航:它總是從文檔的開頭開始,並從那裏繼續

回答

0

SPJ(Select-Project-Join)不僅僅是加入文檔/行,這是形成查詢結果集的整個過程。

我不確定兩者之間的關係:「聲明」和「導航」是兼容的。您談論的是「聲明性」是結果集的形成,但是「導航」與訪問文檔有關,即讀取它的開始。

我會回答我相信你的問題是關於文件的訪問模式。

我相信MongoDB留給讀操作系統本身(可能會使用一些C++庫來完成它的工作),因此它從一個指針(即「Navigational」)的開始處開始,然而,至於它如何實際讀文件並不重要。

這就是爲什麼,MongoDB不會將文檔拆分成多塊存儲在硬盤上,而是將文檔存儲爲單個「塊」空間。所以我要回過頭來說,你可能需要看代碼以確定它的讀取方式,儘管我沒有看到這一點,下面是一個演示文稿,它可以幫助你更好地理解MongoDB的內部: http://www.mongodb.com/presentations/storage-engine-internals