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