本文目錄一覽:
- 1、1200萬 mysql數據怎麼快速導入到Mongodb
- 2、MongoDB和MySQL的區別
- 3、mongodb與mysql區別(超詳細)
- 4、Mysql遷移數據到Mongodb,原自增類型的id要轉換成objectId,有沒有什麼好的遷移方法或建議
- 5、MySQL-mysql數據怎麼快速導入到Mongodb
1200萬 mysql數據怎麼快速導入到Mongodb
目前我知道的幾種從mysql導入數據到mongodb的方法,如果發現新方法會繼續添加。
1)自己寫一個程序,從mysql select數據,然後調用insert,插入數據到mongodb中。
2)通過mysql工具將數據導出為csv/json格式的文件,然後使用mongodb自帶的mongoimport導入數據。
(當數據量非常大的時候,可以pre-spliting + multi-mongoimport加快導入速度)
3)通過工具MongoVUE(帶界面的)從mysql直接導數據到mongodb中。
MongoDB和MySQL的區別
一、
1、基於分散式文件存儲
2、高負載情況下添加更多節點,可以保證伺服器性能
3、將數據存儲為一個文檔
二、比較
1、穩定性
2、索引,索引放在內存中,能夠提升隨機讀寫的性能。如果索引不能完全放在內存,一旦出現隨機讀寫比較高的時候,就會頻繁地進行磁碟交換,MongoDB的性能就會急劇下降
3、佔用的空間很大,因為它屬於典型空間換時間原則的類型。那麼它的磁碟空間比普通資料庫會浪費一些,而且到目前為止它還沒有實現在線壓縮功能,
在MongoDB中頻繁的進行數據增刪改時,如果記錄變了,例如數據大小發生了變化,這時候容易產生一些數據碎片,出現碎片引發的結果,
一個是索引會出現性能問題,
另外一個就是在一定的時間後,所佔空間會莫明其妙地增大,所以要定期把資料庫做修復,定期重新做索引,這樣會提升MongoDB的穩定性和效率。
在最新的版本里,它已經在實現在線壓縮,估計應該在2.0版左右,應該能夠實現在線壓縮,可以在後台執行現在repair DataBase的一些操作。如果那樣,就解決了目前困擾
我們的大問題。
4、MongoDB對數據間的事務關係支持比較弱
5、運維不方便
MongoDB的優勢
1. 適合那些對資料庫具體數據格式不明確或者資料庫數據格式經常變化的需求模型,而且對開發者十分友好。
2.自帶一個分散式文件系統,可以很方便地部署到伺服器機群上。
MongoDB里有一個Shard的概念,就是方便為了伺服器分片使用的。每增加一台Shard,MongoDB的插入性能也會以接近倍數的方式增長,磁碟容量也很可以很方便地擴充。
3. 自帶了對map-reduce運算框架的支持,這也很方便進行數據的統計。類似於group by
mongodb與mysql區別(超詳細)
MySQL是關係型資料庫。
優勢:
在不同的引擎上有不同 的存儲方式。
查詢語句是使用傳統的sql語句,擁有較為成熟的體系,成熟度很高。
開源資料庫的份額在不斷增加,mysql的份額頁在持續增長。
缺點:
在海量數據處理的時候效率會顯著變慢。
Mongodb是非關係型資料庫(nosql ),屬於文檔型資料庫。文檔是mongoDB中數據的基本單元,類似關係資料庫的行,多個鍵值對有序地放置在一起便是文檔,語法有點類似javascript面向對象的查詢語言,它是一個面向集合的,模式自由的文檔型資料庫。
存儲方式:虛擬內存+持久化。
查詢語句:是獨特的Mongodb的查詢方式。
適合場景:事件的記錄,內容管理或者博客平台等等。
架構特點:可以通過副本集,以及分片來實現高可用。
數據處理:數據是存儲在硬碟上的,只不過需要經常讀取的數據會被載入到內存中,將數據存儲在物理內存中,從而達到高速讀寫。
成熟度與廣泛度:新興資料庫,成熟度較低,Nosql資料庫中最為接近關係型資料庫,比較完善的DB之一,適用人群不斷在增長。
優點:
快速!在適量級的內存的Mongodb的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快。高擴展性,存儲的數據格式是json格式!
缺點:
不支持事務,而且開發文檔不是很完全,完善。
Mysql和Mongodb主要應用場景
1.如果需要將mongodb作為後端db來代替mysql使用,即這裡mysql與mongodb 屬於平行級別,那麼,這樣的使用可能有以下幾種情況的考量: (1)mongodb所負責部分以文檔形式存儲,能夠有較好的代碼親和性,json格式的直接寫入方便。(如日誌之類) (2)從datamodels設計階段就將原子性考慮於其中,無需事務之類的輔助。開發用如nodejs之類的語言來進行開發,對開發比較方便。 (3)mongodb本身的failover機制,無需使用如MHA之類的方式實現。
2.將mongodb作為類似redis ,memcache來做緩存db,為mysql提供服務,或是後端日誌收集分析。 考慮到mongodb屬於nosql型資料庫,sql語句與數據結構不如mysql那麼親和 ,也會有很多時候將mongodb做為輔助mysql而使用的類redis memcache 之類的緩存db來使用。 亦或是僅作日誌收集分析。
———————
原文:
Mysql遷移數據到Mongodb,原自增類型的id要轉換成objectId,有沒有什麼好的遷移方法或建議
這樣:
ObjectId id = new ObjectId(new Date(), old_id0xffff, old_id0xffff0000);
使用的這個構造函數 ObjectId( Date time , int machine , int inc );
把你原來的64位的id值得高32位轉換為ObjectId中的machine值,低32位轉換為ObjectId中的inc。
這樣就可以滿足你的需求了。
MySQL-mysql數據怎麼快速導入到Mongodb
這個我做過,是把mysql數據裡面幾千萬條數據寫到mongoDB裡面。上面的一些方法我用過,很不靠譜。我的建議如下(假設你用的是php,如果其他語言就看這個思路,假設已經安裝好php與mongoDB的driver):
首先聲明這個是最笨的辦法,但是我用了很有效果。
1.在php.ini中設置memory_limit = xxxM,把原來的值提高,看你的系統,不要超過3GB。
2.修改php.ini中設置max_execution_time = xxx這個時間也要調高。
3.在php中配置好資料庫,和mongoDB的連接,寫循環,從mysql裡面循環出一組數據放入到mongoDB的collection裡面。可以一條一條導,時間會很長,也可以一組一組導入,每組不要超過10w條(建議,可以設置低一些)
4.等待導入完畢即可。
這個是我實際操作過的。沒有錯誤。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/248117.html