我和我的團隊都是NoSQL的初學者,他們仍然在一個項目上使用SQL Server 2008實體框架,但隨着時間的推移,項目變得越來越大,比EF更復雜我們決定採用MongoDB,但由於巨大的範式轉變,我們仍然有很多疑問,我會在這裏發佈它們以瞭解您的想法和您的意見。如何使用NoSQL進行數據建模
我有實體「Person Fisica」,「Patient」和「professional」,患者和Professional是Person,但在一些時刻患者和專業人員將是同一個人ex(專業醫療單位這也是耐心的)在SQL Server中,我們有一位患者參考了自然人和專業人員,他也提到了患者和專業人員是同一個人時,他們提到了同一個人,現在在蒙哥出現了疑問,這裏的一些團隊成員想要做同樣的事情,病人和專業組織有人的身份證。現在我想讓病人和專業人員有充分的對象,但是哦,這個完整性怎麼樣?因爲從技術上講,患者的自然人與專業人士的身體是不同的......這個問題和其他問題在這裏突破了我們的頭,在共享的幾個實體中不知道我們是否將實體放在具有它的對象內或者對象只採用實體的Id,與關係DB中的方式相同。另一個例子:健康單位和UnidadeDeSaude的類型,一種健康單位有多個健康單位和一個健康單位有一個類型,正確的方法是將單位類型對象放置在健康單位內或者僅通過標識引用它?
Google搜索了幾篇文章,但我們仍然懷疑在這些情況下 http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ http://blog.fiesta.cc/post/11319522700/walkthrough-mongodb-data-modeling
下面是我的模型的一點:https://gist.github.com/3823206 –
好的,所以Professional和Patient不是從PhysicalPerson派生的,而是包含一個。與您在ORM中所做的不同,在Mongo中,您只需序列化Patient,包括直接嵌入的Person對象,假設您想在一個操作中讀取整個Patient。記得做一個JOIN,這將是兩個操作。但是,如果要分別對Person對象進行操作,那麼它們會更好地作爲集合中單獨的頂級實體。事實上,你可以同時做兩件事,這取決於最適合你的查詢。 – cirrus
謝謝@cirrus,爲我和我的團隊澄清了很多事情! –