MongoDB為k-v數(shù)據(jù)庫,他們存儲方式為BSON,操作接口基本都是JSON,查詢,搜索都很方便。
例如mysql里一個(gè)表,id和data,data為這條記錄的數(shù)據(jù),數(shù)據(jù)為了擴(kuò)展,例如不同的記錄的data可能包含很多字段,且字段不一定相同,以后也會有不少類型的字段。這時(shí)我把這些不確定的字段encode成一個(gè)xml或者json或者protobuf之類的數(shù)據(jù)流存到data里。
這么做記錄的具體數(shù)據(jù)關(guān)聯(lián)的詳細(xì)數(shù)據(jù)擴(kuò)展很靈活了。但是想搜索data里的各字段時(shí),在mysql數(shù)據(jù)庫里就不那么方便了,基本要遍歷。
這個(gè)時(shí)候?qū)⑦@個(gè)data備份一份到MongoDB里,就很方便了。MongoDB里的每條記錄為一個(gè)key-value,value即存儲我們上邊的data。這時(shí)我們?nèi)ata里的字段做條件查詢是MongoDB直接支持的。
另外MongoDB支持自動切熱備,自動分片等高級功能……
但是另一方面,這個(gè)東西出來的不久,現(xiàn)在還不敢將他作為持久化的DB。上邊的例子是mysql里有份數(shù)據(jù)為生產(chǎn)環(huán)境的依賴數(shù)據(jù),備份到MongoDB的數(shù)據(jù)只是為了查詢。MongoDB里數(shù)據(jù)出問題是沒關(guān)系的。