2013-08-27 44 views
1

我是使用nosql(MongoDB)的新手。所以我有這個方案: http://prntscr.com/1fpycv在MongoDB中實現的可能方案

它仍然可以增長一點點,我被要求在MongoDB中實現。

但是,這裏有非常關係。

是否有可能或建議您實現它在MongoDB中,或最好的辦法是SQL?

有人可以幫助我嗎?建議? 謝謝

回答

0

這是推薦嵌入相關的實體,你期望在低數量,請記住,mongodb對象不能佔用超過16mb。

我認爲蒙戈是靈活的數據的完美工具「方案」

http://docs.mongodb.org/manual/core/data-modeling/

不過,如果你不覺得舒適,沒有關係DB和您的應用程序是非常重要的,我不會做實驗

+0

那麼意味着我有這個計劃和關係的複雜性,在mongo上做不會很方便嗎? – Helio

+0

發表於此回答:) – Edorka

1

你想要做的是找到一些「東西,一起去」,並將它們組合成一個蒙戈文件。這是一種折衷,沒有一個正確的答案。

假設你存儲,病人在醫生的辦公室填寫表格。

選項1:你可以存儲在一個文檔中的一切。如果系統不需要與病人的其他記錄「配合」,這是一個不錯的選擇。例如,您正在對患者習慣進行一項簡短調查,但不會將其記錄在病歷中,並且不會隨時間跟蹤特定患者。這個選項對像Mongo這樣的文檔商店來說是最簡單的。它也是性能最高的,因爲每個表單只需要讀取一個磁盤。但是如果病人填寫了很多表單,那麼在表單的每個副本上都會浪費大量存儲病人姓名的磁盤。

選項2:您可以將有關患者的數據「分離」爲「患者」集合,並且只在表單對象上存儲patient_id。這是關係最簡單的,但在Mongo中它需要你編寫額外的代碼。 (你的ORM可能在這裏有所幫助)。好消息是,避免重複患者記錄更容易。但現在速度較慢(因爲每次查看錶單時都必須執行客戶端數據庫連接)。

選項3:您可以合併選項1和選項2:將患者存儲在患者集合中,但也要將他們的數據保存在表單中。這樣,例如,您可以說「患者的地址是X,但當他們填寫表格時,他們的地址是Y」。缺點是它需要更多的存儲空間。

方案4:如果有值的數量有限(比如只看到10名患者診所),你可以「硬編碼」,這些在你的程序(即從配置文件中加載它們,或負載他們從啓動時的Patient集合中獲得)。這樣,您在顯示病人時就不會進行客戶端數據庫連接。

爲您的表單中的每個「事物」(Doctor,Medication,Patient Address等)重複上述思想練習如果您覺得您需要大量的集合,那麼使用關係數據庫可能會更好。如果您發現很容易保持低收藏數量,那麼Mongo可能是一個不錯的選擇。

相關問題