mysql換到mongodb對代碼的改動(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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:25
下一篇 2024-12-12 13:25

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29

發表回復

登錄後才能評論