mysql與mongo資料庫(mongodb和mysql結合)

本文目錄一覽:

Mongodb和mysql的區別

Mongodb和mysql的區別

1.Mongodb簡介及優缺點分析

Mongodb是非關係型資料庫(nosql ),屬於文檔型資料庫。文檔是mongoDB中數據的基本單元,類似關係資料庫的行,多個鍵值對有序地放置在一起便是文檔,語法有點類似javascript面向對象的查詢語言,它是一個面向集合的,模式自由的文檔型資料庫。

存儲方式:虛擬內存+持久化。

查詢語句:是獨特的Mongodb的查詢方式。

適合場景:事件的記錄,內容管理或者博客平台等等。

架構特點:可以通過副本集,以及分片來實現高可用。

數據處理:數據是存儲在硬碟上的,只不過需要經常讀取的數據會被載入到內存中,將數據存儲在物理內存中,從而達到高速讀寫。

成熟度與廣泛度:新興資料庫,成熟度較低,Nosql資料庫中最為接近關係型資料庫,比較完善的DB之一,適用人群不斷在增長。

優點:

快速!在適量級的內存的Mongodb的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快。高擴展性,存儲的數據格式是json格式!

缺點:

① mongodb不支持事務操作。

② mongodb佔用空間過大。

③ 開發文檔不是很完全,完善。

2.MySQL優缺點分析

優點:

在不同的引擎上有不同 的存儲方式。

查詢語句是使用傳統的sql語句,擁有較為成熟的體系,成熟度很高。

開源資料庫的份額在不斷增加,mysql的份額頁在持續增長。

缺點:

在海量數據處理的時候效率會顯著變慢。

3.Mongodb和MySQL資料庫的對比

傳統的關係資料庫一般由資料庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB是由資料庫(database)、集合(collection)、文檔對象(document)三個層次組成。

MongoDB對於關係型資料庫里的表,但是集合中沒有列、行和關係概念,這體現了模式自由的特點。

4.MongoDB常用語句

# 連接Mongo資料庫,並設置數據存儲地址

mongod.exe –dbpath “d:softwareMongoDBServer3.0data”

#———————–#1# 資料庫

# 查看所有的資料庫

show dbs

# 刪除當前使用的資料庫

db.dropDatabase()

# 使用這個資料庫(只有插入數據後完成創建資料庫)

use dbt

# 查看當前使用的資料庫

db

db.getName()

# 查看當前資料庫狀態

db.stats()

# 修復當前資料庫

db.repairDatabase()

# 從一個資料庫複製到另一個資料庫

db.copyDatabase(“mydb”, “temp”, “127.0.0.1”);

#———————–#2# 集合

# 查看當前資料庫下所有的集合

show collections

show tables

# 創建名稱為coll集合

db.createCollection(‘coll’)

db.createCollection(“coll2”, {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可選參數

# 查看當前集合狀態

db.coll.stats()

# 刪除名稱為coll集合

db.coll.drop()

#———————–#3# 集合數據

# 插入空數據並且直接創建名稱為coll集合

db.coll.insert({})

# 插入一個或多個數據

db.coll.insert({name:’tom’, age:22})

db.coll.insert([{name:’adam’, age:10},{name:’john’, age:23}])

# 添加數據(save方法可以修改相同id的數據)

db.coll.save({name:’allen’})

# 刪除一個或所有的數據

db.coll.remove({name:’tom’})

db.coll.remove({})

# 刪除符合條件的數據中的第一條

db.coll.remove({name:’tom’}, 1)

# 更改數據

db.coll.update({name:’tom’, age:22}, {$set:{name:’tom’, age:222}})

# 查看數據

db.coll.find()

# 查看一條數據

db.coll.findOne()

db.coll.find({}, {name:1, ‘_id’:0}) # 1表示顯示,0表示不顯示(find默認顯示_id)

# 格式化顯示數據,使數據更加清晰明了

db.coll.find().pretty()

# 使用and,or查看數據

db.coll.find({name:’tom’, age:22}) # 等同and使用

db.coll.find({$or:[{name:’tom’}, {age:21}]}) # or使用

# 操作符大於,小於,等於,不等於,大於不等於,小於不等於

db.coll.find({age: {$gt: 22}}) # 大於

db.coll.find({age: {$lt: 22}}) # 大於

db.coll.find({age: 22}) # 等於

db.coll.find({age: {$ne: 22}}) # 不等於

db.coll.find({age: {$gte: 22}}) # 大於等於

db.coll.find({age: {$lte: 22}}) # 小於等於

# 顯示從skip之後limit個

db.coll.find().limit(2).skip(1)

#———————–# # 用戶

# 3.x之後版本添加用戶

use admin

db.createUser({user:’nu’, pwd:’nu’, roles:[{role:’readWrite’,db:’admin’}]})

# 用戶認證

db.auth(“nu”, “nu”);

# 顯示當前所有用戶

show users;

db.system.users.find()

3.x版本刪除用戶

db.removeUser(‘nu’) # 不推薦使用,已經廢棄

db.dropUser(“nu”);

# 當前db版本

db.version();

# 當前db的鏈接機器地址和埠

db.getMongo();

# 備份到備份目錄

mongodump

# 從備份目錄恢復備份語句。

mongorestore

咱們下期見。

MongoDB與MySQL:如何選擇

MongoDB和MySQL分別是領先的開源NoSQL和關係資料庫。哪個最適合您的應用程序?

在1990年代的互聯網泡沫時期,用於Web應用程序的一種通用軟體堆棧是LAMP,它最初代表Linux(OS),Apache(Web伺服器),MySQL(關係資料庫)和PHP(伺服器編程語言)。MySQL是首選的資料庫,主要是因為它是免費的開源代碼,並且具有良好的讀取性能,非常適合從資料庫動態生成網站的「 Web 2.0」應用程序。

之後,代表MongoDB(文檔資料庫),Express(Web伺服器),AngularJS(前端框架)和Node.js(後端JavaScript運行時)的MEAN堆棧開始流行。除其他原因外,MEAN堆棧很有吸引力,因為您需要了解的唯一語言是JavaScript。與等效的LAMP堆棧相比,它還需要更少的RAM。

MySQL AB的Monty Widenius和David Axmark最初於1994年開始開發MySQL。產品名稱中的「 My」是指Widenius的女兒,而不是英語單詞「 my」。MySQL旨在與mSQL(又名Mini)兼容。 SQL),並添加了SQL查詢層和開放源代碼許可(實際上是專有和GPL雙重許可)。MySQL的公共發行版於1996年底開始,並且每年或每兩年持續發行一次。MySQL是當前最受歡迎的關係資料庫。

Sun Microsystems於2008年以10億美元的價格收購了MySQL AB,Oracle於2010年收購了Sun。在Oracle收購MySQL的廣泛關注中,Widenius在收購Oracle之前就將MySQL 5.5合併到了MariaDB中。MariaDB努力維護與Oracle MySQL版本的兼容性。

與功能更強大的商業關係資料庫(例如Oracle資料庫,IBM DB / 2和Microsoft SQL Server)相比,MySQL最初是一個相當低端的關係資料庫,儘管它足以成為動態網站的後備存儲。多年來,它增加了您希望從關係資料庫獲得的大多數功能,包括事務,參照完整性約束,存儲過程,游標,全文索引和搜索,地理索引和搜索以及群集。

儘管MySQL現在支持「大資料庫」功能,例如主從部署,與Memcached一起使用以及水平分片,但它仍通常用於中小型部署。將MySQL擴展到多個從屬伺服器可以提高讀取性能,但是只有主伺服器才能接受寫請求。

AWS提供了兩種形式的MySQL即服務,即Amazon RDS和Amazon Aurora。後者具有更高的性能,可以處理TB級的數據,更新副本的延遲時間更短,並且可以直接與Oracle資料庫和SQL Server競爭。

MongoDB是高度可伸縮的操作文檔資料庫,可在開源版本和商業企業版本中使用,它可以在本地運行或作為託管雲服務運行。託管雲服務稱為MongoDB Atlas。

MongoDB無疑是NoSQL資料庫中最受歡迎的資料庫。它的文檔數據模型為開發人員提供了極大的靈活性,而其分散式體系結構則提供了很好的可伸縮性。因此,通常選擇MongoDB用於必須管理大量數據,得益於水平可伸縮性並處理不適合關係模型的數據結構的應用程序。

MongoDB是一個基於文檔的存儲,在其之上還具有一個基於圖形的存儲。MongoDB實際上並不存儲JSON:它存儲BSON(二進位JSON),該擴展了JSON表示(字元串)以包括其他類型,例如int,long,date,浮點,decimal128和地理空間坐標。

MongoDB可以使用數據的類型生成正確的索引類型,從而在數據的單個副本上生成多模式圖形,地理空間,B樹和全文本索引。MongoDB使您可以在任何文檔欄位上創建索引。MongoDB 4具有多文檔事務,這意味著即使必須標準化數據設計,您仍然可以獲得ACID屬性。

默認情況下,MongoDB使用動態模式,有時稱為無模式。單個集合中的文檔不需要具有相同的欄位集,並且欄位的數據類型可以在集合中的不同文檔之間有所不同。您可以隨時使用動態模式更改文檔結構。

但是,可以使用架構治理。從MongoDB 3.6開始,MongoDB支持JSON模式驗證,您可以在驗證器表達式中將其打開。

在LAMP和MEAN堆棧上存在很多變化。例如,您可以在Windows(WAMP)或MacOS(MAMP)上運行而不是Linux OS。您可以運行IIS(WIMP),而不是Windows上的Apache Web伺服器。

您可以運行PostgreSQL或SQL Server,而不是LAMP堆棧中的MySQL關係資料庫。如果您需要全球分布,則可以運行CockroachDB或Google Cloud Spanner。可以使用Perl或Python代替PHP語言。如果要使用Java或C#進行編碼,則需要考慮單獨的堆棧系列。

您可以運行Couchbase或Azure Cosmos DB以獲得更好的全局分布,而不是MEAN堆棧中的MongoDB文檔資料庫。可以使用十二個Node.js Web伺服器框架中的任何一個來代替Express 。除了AngularJS前端框架,您還可以運行Angular 2或React。

選擇資料庫時要問的最重要的問題是:

這些問題中的幾個會趨於縮小資料庫的選擇範圍,但是與制定LAMP堆棧時相比,我們有更多選擇。如果您要構建一個應用程序,並且該應用程序必須在99.999%的時間內對全世界的用戶都具有高度的一致性,那麼只有少數幾個資料庫適合您。如果您的應用程序將在工作日的上午9點至下午6點在一個國家/地區使用,並且可以容忍最終的一致性,那麼幾乎所有資料庫都可以使用,儘管某些資料庫對於開發人員和操作員而言更容易,而某些資料庫則可以為您的主要使用場景提供更好的性能。

雖然LAMP和MEAN堆棧一次是Web應用程序的良好解決方案,但現在都不是最佳選擇。而不是盲目採用任何一種,您應該仔細考慮用例,並找到一種可在可預見的將來為您的應用程序服務的體系結構。

您什麼時候需要關係資料庫(例如MySQL)用於新應用程序?除了對標準SQL的明顯支持外,關係資料庫本身將數據強製為具有一致的強類型欄位的表格模式,並且只要您利用規範化就可以幫助您避免數據重複。

另一方面,如果您還需要偶爾的自由格式文檔,則MySQL和許多其他關係資料庫也支持RFC 7159定義的JSON數據。如果您還想使用XML文檔和XPath或XSLT,則大多數關係資料庫都可以提供這種能力。

您何時需要像MongoDB這樣的文檔資料庫?如果您的主要用例需要允許使用自由格式的數據,在文檔之間更改類型的欄位,隨時間變化的架構或嵌套的文檔,則NoSQL資料庫將滿足要求。另外,如果您的應用程序是用JavaScript編寫的,那麼文檔資料庫的JSON格式將很自然。

作者: Martin Heller是InfoWorld的特約編輯和審稿人。他曾擔任Web和Windows編程顧問,從1986年至2010年開發資料庫,軟體和網站。最近,他擔任Alpha Software技術和教育副總裁以及Tubifi董事長兼首席執行官。

mysql和mongodb的關係區別是什麼

1、資料庫模型:mysql是關係型資料庫,mongodb是非關係型資料庫

2、存儲方式:mysql不同的存儲引擎有不同的存儲方式,mongodb為虛擬內存+持久化

3、查詢語句:mysql為傳統的sql語句,mongodb有獨特的自有查詢方式

4、架構特點:mysql有常見的單點,m-s、mha、mmm、cluster等架構特點,mongodb可以通過副本集以及分片來實現高可用

5、數據處理方式:mysql不同的引擎有各自的特點,mongodb基於內存,將數據存儲在物理內存中,從而達到高速讀寫

6、成熟度:mysql擁有較為成熟的體系,成熟度較高,mongodb新興資料庫,成熟度較低

MongoDB和MySQL的區別

a.如果需要將mongodb作為後端db來代替mysql使用,即這裡mysql與mongodb

屬於平行級別,那麼,這樣的使用可能有以下幾種情況的考量:

(1)mongodb所負責部分以文檔形式存儲,能夠有較好的代碼親和性,json格式的直接寫入方便。(如日誌之類)

(2)從data

models設計階段就將原子性考慮於其中,無需事務之類的輔助。開發用如nodejs之類的語言來進行開發,對開發比較方便。

(3)mongodb本身的failover機制,無需使用如MHA之類的方式實現。

這種情況也是不少的,我手上的遊戲就是有nodejs+mongodb的,用戶總量也是千萬級別的,流水什麼還不錯。

b.將mongodb作為類似redis

,memcache來做緩存db,為mysql提供服務,或是後端日誌收集分析。

考慮到mongodb屬於nosql型資料庫,sql語句與數據結構不如mysql那麼親和

,也會有很多時候將mongodb做為輔助mysql而使用的類redis

memcache

之類的緩存db來使用。

亦或是僅作日誌收集分析。

mysql mongodb區別

前言:

MySQL與MongoDB都是開源的常用資料庫,但是MySQL是傳統的關係型資料庫,MongoDB則是非關係型資料庫,也叫文檔型資料庫,是一種NoSQL的資料庫。它們各有各的優點,關鍵是看用在什麼地方。所以我們所熟知的那些SQL語句就不適用於MongoDB了,因為SQL語句是關係型資料庫的標準語言。

一、關係型資料庫-MySQL

1、在不同的引擎上有不同的存儲方式。

2、查詢語句是使用傳統的sql語句,擁有較為成熟的體系,成熟度很高。

3、開源資料庫的份額在不斷增加,mysql的份額頁在持續增長。

4、缺點就是在海量數據處理的時候效率會顯著變慢。

二、非關係型資料庫-MongoDB

非關係型資料庫(nosql ),屬於文檔型資料庫。先解釋一下文檔的資料庫,即可以存放xml、json、bson類型系那個的數據。這些數據具備自述性,呈現分層的樹狀數據結構。數據結構由鍵值(key=value)對組成。

1、存儲方式:虛擬內存+持久化。

2、查詢語句:是獨特的MongoDB的查詢方式。

3、適合場景:事件的記錄,內容管理或者博客平台等等。

4、架構特點:可以通過副本集,以及分片來實現高可用。

5、數據處理:數據是存儲在硬碟上的,只不過需要經常讀取的數據會被載入到內存中,將數據存儲在物理內存中,從而達到高速讀寫。

6、成熟度與廣泛度:新興資料庫,成熟度較低,Nosql資料庫中最為接近關係型資料庫,比較完善的DB之一,適用人群不斷在增長。

三、MongoDB優勢與劣勢

優勢:

1、在適量級的內存的MongoDB的性能是非常迅速的,它將熱數據存儲在物理內存中,使得熱數據的讀寫變得十分快。

2、MongoDB的高可用和集群架構擁有十分高的擴展性。

3、在副本集中,當主庫遇到問題,無法繼續提供服務的時候,副本集將選舉一個新的主庫繼續提供服務。

4、MongoDB的Bson和JSon格式的數據十分適合文檔格式的存儲與查詢。

劣勢:

1、 不支持事務操作。MongoDB本身沒有自帶事務機制,若需要在MongoDB中實現事務機制,需通過一個額外的表,從邏輯上自行實現事務。

2、 應用經驗少,由於NoSQL興起時間短,應用經驗相比關係型資料庫較少。

3、MongoDB佔用空間過大。

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129183.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • 如何修改mysql的埠號

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

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入資料庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的資料庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論