2014-05-25 38 views
-2

爲什麼JSON格式的數據存儲在MongoDB中?這是MongoDB中唯一支持的格式嗎?使用JSON在MongoDB中存儲記錄的優點是什麼?在Mong DB中使用JSON比其他格式有什麼好處?爲什麼在MongoDB中使用JSON?

+0

JSON定義明確,友好且通用。在技術層面上,任何樹/層次結構格式都是足夠的。 – user2864740

+0

MongoDB是網絡規模和JSON在網絡上使用。 –

+0

@ user2864740是MongoDB支持的XML格式。 – kaduva

回答

1

實際上,Mongo使用BSON,它可以表示與JSON相同的東西,但佔用的空間更少。 「JSON」(就像人類的表示)在NoSQL數據庫中有一些有用的屬性:

  1. 不需要固定模式。你可以添加任何你想要的,這將是正確的JSON。
  2. 有解析器幾乎可用於任何編程語言。
  3. 該格式是程序員友好的,而不是像一些替代品...我在看你,XML¬¬。
  4. Mongo需要理解數據,而不強制使用「集合模式」。如果使用JSON,則不需要關於該對象的信息來推理它。例如,您可以獲取任何JSON文檔的「標題」或「年齡」,只需找到該字段即可。對於其他格式(例如協議緩衝區),這是不可能的。至少沒有很多代碼...
  5. (已增加)因爲Mongo是一個數據庫,他們希望快速進行查詢。 BSON/JSON是一種可以同時滿足這個需求和其他需求(易於實現,可以反映數據,解析速度,沒有固定模式等)的格式。
  6. (已補充)Mongo爲他們的查詢重用了一個Javascript引擎,所以它在世界上都有重用JSON用於對象表示的意義。 BSON是該格式的更緊湊的代表。
+0

雖然它確實使用BSON,而BSON與JSON確實有很好的1-1,但爲什麼選擇「JSON」,大部分觀點沒有意義。例如。 1)XML不需要固定的模式; 2)有很多XML解析器; 3)使用XML工具使XML編程友好; 4)模式(或缺少)是一個獨立的問題。基本上,任何動態鍵控分層格式都可以在大多數(如果不是全部的話)這些點上選擇 - XML,JSON,YAML等。 – user2864740

+1

(但回到使用BSON的點 - 我認爲「答案「這個問題的重點在於* Mongo如何處理這樣的分層數據,而不是它如何被編碼或可視化。) – user2864740

+0

沒有模式的XML沒有任何意義,它只是一堆等待有意義的字節。當然,這裏有成功的XML數據庫,但還有一點: JSON/BSON格式比較簡單,生成的文檔不如XML文檔冗長。 XML文檔往往會增長很多(與JSON/BSON相比),並且解析器很難正確寫入,而且更糟糕:它們往往會變得更慢:如果數據更長並且解析器邏輯更復雜,那麼CPU將會有一段糟糕的時間,有很多緩存未命中和分支預測失誤。 – estebarb

相關問題