2010-12-15 49 views
4

我在閱讀使用NoSQL風格的文檔數據庫的好處,我的一個擔心是如何在需要時處理「重構」數據。在NoSQL數據庫中重構文檔

從別人誰也從來沒有真正與NoSQL的工作

人爲的例子:

假設在MongoDB中,我們有一個文件叫做用戶具有所謂的地址嵌入文檔,後來我們決定地址文件應搬出了一個新的收藏。

這樣做有什麼可能的方法,考慮到停機時間,性能等?

回答

3

當您沒有正式定義的模式時,模式更改非常容易 - 您只需更新自己的代碼,以便處理舊文檔和新文檔,通常包括舊字段和新字段以及移動數據從舊到新,或者在保存之前或之前保存。

由於代碼和數據庫之間不存在數據版本衝突,因此不存在停機時間,如果要執行完整遷移並移除對所有文檔的現有加載/保存代碼,舊文件。

更改索引屬性稍微複雜一點,但仍然比對SQL模式進行更改更容易。

+0

感謝您的更新 - 如果我_really_想將數據遷移到新模式以便代碼不需要支持舊模式,那該怎麼辦?我有一種感覺,它可以使用Map/Reduce來完成,但是我還沒有找到任何例子... – Rich 2010-12-23 13:44:21

+0

是的,map/reduce應該可以工作 - NoSQL還沒有足夠長的時間來生成很多從其他任何地方遷移的例子比SQL。儘管如此,這種方法仍然需要停機,性能可能並不比在客戶端上進行處理更好。 – 2010-12-24 00:38:19