您好,登錄后才能下訂單哦!
MongoDB數據是特別靈活的,與SQL數據庫相比,它不需要在插入數據前先定義表的結構。MongoDB的集合不強調固定的文檔結構。這種靈活性使它能夠輕松映射文檔結構。每一個文檔都可以映射它要表達的對象,即使這些數據有實質性的不同。其實在實際中,同一集合下的文檔通常采用相似的結構。
MongoDB數據建模的主要問題時在應用程序的需求,數據庫引擎的性能特性和數據檢索模型之間做一個平衡。設計數據模型是,總是要考慮應用程序使用到的數據(查詢、更新以及需要處理的數據等等)以及數據結構本身。
文檔結構
設計MongoDB數據模型的關鍵是考慮好文檔結構和應用程序表示的數據之間的關系。有兩種方式可以表達這種關系:引用(references)和嵌入文檔(embedded documents)。
引用(References)
引用(References)存儲數據之間的關系,包括從一個文檔鏈接或引用到另外一個文檔。這樣應用程序就解決了訪問關聯數據的問題,一般來說,這些都是規范數據的數據模型。
嵌入式文檔通過存儲相關的數據在一個文檔結構中來捕獲數據之間的關系。MongoDB文檔可以在當前文檔的字段或數組中嵌入文檔作為子文檔。這些非規范化數據模型允許應用程序檢索和操作相關的數據在一個單一的數據庫操作。
寫操作的原子性
在MongoDB中,寫操作的原子性限制在文檔級別,沒有一個寫操作可以自動影響到多個文檔或多個集合。規范化的嵌入式數據模型整合了所有的關聯數據在一個文檔中來展現實體。這有助于原子寫操作在一個寫操作中插入和更新實體的數據。規范化數據能夠分隔多個集合的數據并且需要在非原子性操作中需要多個寫操作。
然后,促進原子寫的模式可能限制應用程序使用數據,也可能限制修改應用程序的方法。原子性考慮設計模式的挑戰,平衡靈活性和原子性。
文檔增加
像添加元素到數組或者增加新字段這樣的更新,會增加文檔的大小。如果文檔的大小超過了為該文檔分配空間,MongoDB會重新分配磁盤空間。考慮到空間的增加,應該規范化或使用規范的數據。
數據使用和性能
當設計數據模型的時候,應考慮應用程序如何使用數據庫。比如,如果應用程序僅使用最近插入的文檔,考慮使用頂端集合(Capped Collections)。如果應用程序需要頻繁的讀取集合,添加索引能夠提高數據查詢效率。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。