mongodb分布式 如何向mongodb分片集群導(dǎo)入數(shù)據(jù)?
如何向mongodb分片集群導(dǎo)入數(shù)據(jù)?準(zhǔn)備工作:在導(dǎo)入數(shù)據(jù)前,先配置好要分片的數(shù)據(jù)庫(kù)及表。 不然導(dǎo)入完成后,發(fā)現(xiàn)數(shù)據(jù)庫(kù),表沒(méi)有同步到另外一個(gè)集群。 我這里做了從原單機(jī)數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出后,再分
如何向mongodb分片集群導(dǎo)入數(shù)據(jù)?
準(zhǔn)備工作:在導(dǎo)入數(shù)據(jù)前,先配置好要分片的數(shù)據(jù)庫(kù)及表。 不然導(dǎo)入完成后,發(fā)現(xiàn)數(shù)據(jù)庫(kù),表沒(méi)有同步到另外一個(gè)集群。 我這里做了從原單機(jī)數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出后,再分片集群庫(kù)中導(dǎo)入操作。 當(dāng)設(shè)置了要分片的庫(kù),及表后,系統(tǒng)會(huì)自動(dòng)幫你添加庫(kù)及表。 設(shè)置完成后,就可以導(dǎo)入數(shù)據(jù)了。 use admin db.runCommand({enablesharding:"ip"}) db.runCommand({shardcollection:"ip.ipaddress",key:{ip1:1}}) ./mongorestore -h 192.168.20.11 --port 28000 -d ip /opt/backup/ip20141109/ip ./mongorestore -h 192.168.20.11 --port 28000 -d dmp /opt/backup/dmp/dmp
mongodb如何定位?
mongo數(shù)據(jù)庫(kù)本身就介于redis內(nèi)存數(shù)據(jù)庫(kù)和mysql數(shù)據(jù)庫(kù)之間。
以下側(cè)重于mongo的優(yōu)點(diǎn)。
mongo V redis,
1:redis受內(nèi)存的限制,無(wú)法存儲(chǔ)海量的數(shù)據(jù);mongo可以存儲(chǔ)海量的數(shù)據(jù)。
2:redis僅支持簡(jiǎn)單的string、hash、list、set、zset數(shù)據(jù)結(jié)構(gòu),而mongo支持文檔型的數(shù)據(jù)結(jié)構(gòu),可以說(shuō)就是JSON字符串,這種數(shù)據(jù)結(jié)構(gòu)是多么的靈活,使用是多么的方便,想必不用過(guò)多介紹。
3:redis可以提供復(fù)雜的查詢嗎?mongo笑笑不語(yǔ)。
4:redis有內(nèi)置數(shù)據(jù)分析功能(mapreduce)嗎?
再來(lái)看mongo V mysql
1:mongo的文檔型數(shù)據(jù)結(jié)構(gòu),每一個(gè)文檔可以映射為編程語(yǔ)言中的一個(gè)獨(dú)立對(duì)象,同一個(gè)集合的文檔之間的數(shù)據(jù)結(jié)構(gòu)完全不必相同,如此靈活的數(shù)據(jù)結(jié)構(gòu),可以輕松的適應(yīng)業(yè)務(wù)邏輯變更。mysql這類的關(guān)系數(shù)據(jù)庫(kù),怎么比?
2:mongo的插入速度比MySQL更快。
3:mongo可以輕松的分布式擴(kuò)展,不需要停機(jī),不需要更改應(yīng)用程序。
三者其實(shí)各有優(yōu)缺點(diǎn),對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)應(yīng)用場(chǎng)景的。
什么時(shí)候需要mongo?
- 不需要跨文檔或跨表的事務(wù),也不需要復(fù)雜的join查詢支持
- 業(yè)務(wù)變更頻繁,導(dǎo)致數(shù)據(jù)結(jié)構(gòu)需要頻繁更改
- 需要大量的地理位置查詢,文本查詢
- 海量數(shù)據(jù)存儲(chǔ),且數(shù)據(jù)量快速增加
Mongo其實(shí)彌補(bǔ)了redis和mysql中的不足。個(gè)人在爬蟲中,經(jīng)常采用mongo保存爬取的數(shù)據(jù),而redis保存待爬取的鏈接和用于網(wǎng)頁(yè)去重。