首頁  >  問答  >  主體

nosql - mongodb如何设计schema

我们都知道mongodb是一种面向文档的数据库,但是它的灵活性并不意味着你不需要对其进行结构设计,在代码实施之前进行结构设计是十分必要的。

但是这样问题就来了,目前我们用的几乎所有的数据库设计工具都无法表现出mongodb这种面向文档的数据结构,那么我们在做设计的时候怎么样把我们的结构清晰的展现给别人呢,我可不想用ps一个一个去画框图。

PHP中文网PHP中文网2739 天前912

全部回覆(3)我來回復

  • 巴扎黑

    巴扎黑2017-04-21 10:59:19

    其實官網的這篇設計哲學還是很不錯的(http://www.mongodb.org/display/DOCS/S...)
    MongoDB與傳統SQL schema設計上最大的差別就是關於模型關係用什麼方法表示比較好(在MongoDB裡即可以用Link,又可以用Embedded)

    簡單總結下:

    1. FirstClass (如「User」這種) 應該用獨立的Collection
    2. "條目類型"的,應該 embedded
    3. 兩個模型之間如果是包含關係,用 embedded
    4. 多對多關係,用 link(類似sql裡面的foregin key)
    5. 如果一個模型,其可能存的物件很少,那麼就用獨立的collection,這樣有助於mongodb server做快取
    6. embedded方式不利於做複雜的關聯,複雜的查詢
    7. embedded方式性能很有優勢,如果你有「性能」方面的要求,可以考慮用embbed

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-21 10:59:19

    我還是習慣吧mongodb當普通db看待,把collection看成表,每個collection裡的資料結構保持一致。
    不知道這樣是否合理,至少這樣讓我思路比較清晰。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-21 10:59:19

    NoSQL有獨特的設計哲學,建議不要受RDB思維影響。
    另外推薦一篇文章看看:
    MongoDB記錄映射Schema極度自由的Java Entity

    回覆
    0
  • 取消回覆