成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我為什么放棄MySQL?選擇了MongoDB

數(shù)據(jù)庫(kù) MySQL MongoDB
最近有個(gè)項(xiàng)目的功能模塊,為了處理方便,需要操作集合類型的數(shù)據(jù)以及其他原因。考慮再三最終決定放棄使用MySQL,而選擇MongoDB。

最近有個(gè)項(xiàng)目的功能模塊,為了處理方便,需要操作集合類型的數(shù)據(jù)以及其他原因。考慮再三最終決定放棄使用MySQL,而選擇MongoDB。

兩個(gè)數(shù)據(jù)庫(kù),大家應(yīng)該都不陌生。他們***的區(qū)別就是MySQL為關(guān)系型數(shù)據(jù)庫(kù),而MongoDB為非關(guān)系型數(shù)據(jù)庫(kù)。常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)有:MySQL、Oracle、DB2、SQL Server、Postgre SQL等,非關(guān)系型數(shù)據(jù)庫(kù)有MongoDB、Redis、Memcached、HBse等等。

1關(guān)系型數(shù)據(jù)庫(kù)? 非關(guān)系型數(shù)據(jù)庫(kù)?

我為什么放棄MySQL?選擇了MongoDB

關(guān)系型數(shù)據(jù)庫(kù)可以理解為依賴一個(gè)模型來(lái)創(chuàng)建的數(shù)據(jù)庫(kù),比如我們使用的MySQL中的表是由橫列和縱列組成的一個(gè)二維表格。關(guān)系型數(shù)據(jù)庫(kù)可以通過(guò)關(guān)系模型使多個(gè)表的數(shù)據(jù)關(guān)聯(lián)起來(lái),比如我們平時(shí)說(shuō)的 一對(duì)一、一對(duì)多、多對(duì)一。由于是建立在數(shù)據(jù)模型的基礎(chǔ)上,所以我們可以通過(guò)SQL語(yǔ)句很方便的在多個(gè)表之間做復(fù)雜的查詢操作。關(guān)系型數(shù)據(jù)庫(kù)相對(duì)安全,因?yàn)橹苯哟鎯?chǔ)在硬盤中所以突然的宕機(jī)、停電等意外不會(huì)導(dǎo)致數(shù)據(jù)丟失。MySQL的存儲(chǔ)方式是由自身的引擎決定的,常用的引擎有Innodb和MyISAM。他們主要的區(qū)別就是MyISAM 不支持事務(wù),強(qiáng)調(diào)的是性能,執(zhí)行速度比Innodb要快,Innodb提供支持事務(wù)等高級(jí)數(shù)據(jù)庫(kù)功能。

我為什么放棄MySQL?選擇了MongoDB

非關(guān)系型數(shù)據(jù)庫(kù)即我們常說(shuō)的NoSQL數(shù)據(jù)庫(kù),部署起來(lái)都比較簡(jiǎn)單,沒(méi)有關(guān)系型數(shù)據(jù)庫(kù)那么復(fù)雜。Mongo的存儲(chǔ)方式為虛擬內(nèi)存+持久化存儲(chǔ),Mongo將數(shù)據(jù)寫入內(nèi)存中,再由虛擬內(nèi)存管理器將其持久化到硬盤中,因此寫操作會(huì)比關(guān)系型數(shù)據(jù)庫(kù)快很多。NOSQL的存儲(chǔ)格式是key-value形式,可以像關(guān)系型數(shù)據(jù)庫(kù)那樣存儲(chǔ)基礎(chǔ)數(shù)據(jù)類型的數(shù)據(jù),也可以存儲(chǔ)集合、對(duì)象等等。NoSQL雖然性能比較高,但是并不支持事物,也不能進(jìn)行聯(lián)表查詢,一般用于較大規(guī)模數(shù)據(jù)的存儲(chǔ)。

2他們的優(yōu)點(diǎn)、缺點(diǎn)有哪些

關(guān)系型數(shù)據(jù)庫(kù)發(fā)展了很長(zhǎng)一段時(shí)間,擁有非常成熟的體系。所占份額也在逐漸增加。而且支持事物的操作,保證數(shù)據(jù)的一致性,可以通過(guò)SQL語(yǔ)句完成復(fù)雜的操作。但是使用過(guò)程中當(dāng)數(shù)據(jù)量到達(dá)一定程度時(shí),關(guān)系型數(shù)據(jù)庫(kù)的效率會(huì)有明顯的下降。一個(gè)復(fù)雜的查詢操作,一系列的組合索引都會(huì)消耗非常多的內(nèi)存空間,此時(shí)我們需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫分離操作,或者將數(shù)據(jù)庫(kù)結(jié)構(gòu)進(jìn)行拆分(水平拆分、垂直拆分)將請(qǐng)求壓力分擔(dān)在不同的庫(kù)中。

垂直拆分是指將一張表拆分成多個(gè)表,表之間通過(guò)主鍵進(jìn)行關(guān)聯(lián)。

水平拆分是按照某種規(guī)則拆分成多個(gè)表,比如通過(guò)用戶角色進(jìn)行拆分

讀寫分離:所謂讀寫分離就是講讀操作(查詢數(shù)據(jù))和寫操作(插入&更新)指向不同的數(shù)據(jù)庫(kù)節(jié)點(diǎn),他們中間通過(guò)某種機(jī)制實(shí)現(xiàn)數(shù)據(jù)的同步,如binlog。實(shí)際的應(yīng)用中大部分壓力還是來(lái)自讀操作,所以主要是一主多從的架構(gòu)。

非關(guān)系型數(shù)據(jù)庫(kù)發(fā)展的這幾年,深受人們的喜愛(ài)。免費(fèi)開(kāi)源、成本低、部署簡(jiǎn)單、非結(jié)構(gòu)化存儲(chǔ)等等明顯的優(yōu)勢(shì)。而且它對(duì)海量數(shù)據(jù)處理能力非常強(qiáng),內(nèi)存級(jí)數(shù)據(jù)庫(kù),查詢速度也非常快。存儲(chǔ)的數(shù)據(jù)格式比較豐富,易于擴(kuò)展,雖然不能使用sql進(jìn)行復(fù)雜的查詢,但是MongoDB支持JavaScript,所以可以通過(guò)js腳本進(jìn)行復(fù)雜的數(shù)據(jù)庫(kù)管理操作。關(guān)于NoSQL的缺點(diǎn)個(gè)人感覺(jué)目前就是不支持事物了吧,其他方面那都不是事兒。

3什么時(shí)候用mongo

我為什么放棄MySQL?選擇了MongoDB

Mongo是用c++編寫的,支持多種語(yǔ)言如:Java、Python、Ruby、PHP、C++、C# 等,有時(shí)候針對(duì)不同的業(yè)務(wù)需求,選擇Mongo能夠避免浪費(fèi)很多不必要的資源

日志系統(tǒng)

系統(tǒng)運(yùn)行過(guò)程中產(chǎn)生的日志信息,一般種類較多、范圍較大、內(nèi)容也比較雜亂。通過(guò)MongoDB可以將這些雜亂的日志進(jìn)行收集管理。不僅方便了管理,查找或者導(dǎo)出也會(huì)變得非常容易

地理位置存儲(chǔ)

MongoDB支持地理位置、二維空間索引,可以存儲(chǔ)經(jīng)緯度,因此可以很快的計(jì)算出兩點(diǎn)之間的距離,等位置信息。如查詢附近的人、或者訂餐系統(tǒng)、配送系統(tǒng)等

數(shù)據(jù)規(guī)模增長(zhǎng)很快

前面提到過(guò)關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)量過(guò)大時(shí),需要進(jìn)行分庫(kù)分表,這樣真正操作起來(lái)可能會(huì)比較麻煩。如果選擇mongo進(jìn)行分庫(kù)分表操作時(shí),就會(huì)變得很簡(jiǎn)單。

保證高可用的環(huán)境

Mongo本身就擁有高可用及分區(qū)的解決方案,設(shè)置主從服務(wù)器非常方便,除此之外Mongo還可以快速并且安全的實(shí)現(xiàn)故障節(jié)點(diǎn)的轉(zhuǎn)移。

文件存儲(chǔ)需求

GridFS是MongoDB規(guī)范,用于存儲(chǔ)和檢索圖片、音頻、視頻等大文件。GridFS雖然是文件存儲(chǔ)的一種方式,可以存儲(chǔ)超過(guò)16M的文件。但是它本身又是存儲(chǔ)在MongoDB集合中的

其他場(chǎng)景

如游戲開(kāi)發(fā)中我們可以通過(guò)MongoDB存儲(chǔ)用戶信息、裝備、積分等,除此之外物流系統(tǒng)、社交系統(tǒng)、甚至物聯(lián)網(wǎng)系統(tǒng),Mongo都能提供***的數(shù)據(jù)存儲(chǔ)服務(wù)。

4MySQL、MongoDB簡(jiǎn)單的性能測(cè)試

關(guān)于兩個(gè)數(shù)據(jù)的性能,最有力的的說(shuō)話還是通過(guò)實(shí)踐來(lái)進(jìn)行測(cè)試,網(wǎng)上看到一組測(cè)試數(shù)據(jù),分享給大家。

  • 測(cè)試環(huán)境:Windows 10、內(nèi)存8G、CPU i5 3.30GHZ。均無(wú)索引
  • 測(cè)試語(yǔ)言:Python
  • 鏈接工具:pymysql、pymongo

MySQL && Mongo 測(cè)試數(shù)據(jù)統(tǒng)計(jì)

我為什么放棄MySQL?選擇了MongoDB

 

責(zé)任編輯:未麗燕 來(lái)源: 程序員共成長(zhǎng)
相關(guān)推薦

2023-07-23 17:19:34

人工智能系統(tǒng)

2021-02-01 07:20:51

KafkaPulsar搜索

2020-06-10 09:06:48

MongoDB架構(gòu)高可用

2011-06-08 10:30:08

MongoDB

2023-09-22 10:48:42

MySQLPostgreSQL

2023-09-14 23:08:54

PostgreSQLMySQL

2024-06-24 07:58:00

2020-09-16 14:56:11

MYSQL知識(shí)數(shù)據(jù)庫(kù)

2020-08-14 10:40:35

RestTemplatRetrofitJava

2020-02-13 17:49:55

SpringBoot放棄選擇

2022-06-14 11:01:48

SpringBootTomcatUndertow

2012-02-28 09:11:51

語(yǔ)言Lua

2020-05-09 11:40:54

PythonGo語(yǔ)言

2013-10-22 15:18:19

2012-11-14 20:55:07

容錯(cuò)服務(wù)器選型CIO

2018-09-28 10:06:21

移動(dòng)開(kāi)發(fā)App

2023-01-12 09:01:01

MongoDBMySQL

2017-02-27 15:19:04

2021-04-06 11:07:02

字節(jié)跳動(dòng)組織架構(gòu)

2020-02-24 09:38:05

PythonGo語(yǔ)言Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99爱国产 | 成人欧美一区二区三区白人 | 在线成人免费av | 国产精品久久久久久久久久久新郎 | 久久爱综合 | 欧美色综合 | 日韩亚洲一区二区 | 国产 日韩 欧美 制服 另类 | 黄色免费观看网站 | 欧美日韩国产传媒 | 在线成人免费视频 | 麻豆精品国产免费 | 欧美日韩福利视频 | 狠狠狠色丁香婷婷综合久久五月 | 黄色欧美在线 | 日韩在线视频一区 | 亚洲精品无人区 | 亚洲成人免费av | 欧美一区二区 | 黄视频网站免费观看 | 欧美一区二区三区在线观看 | 在线一区 | 日韩在线精品视频 | 日韩午夜 | 91久久综合亚洲鲁鲁五月天 | 中文字幕成人av | 欧美午夜影院 | 国产精品综合 | 国产99视频精品免视看9 | 久久精品亚洲国产奇米99 | 免费性视频 | av网址在线播放 | 久久精品色欧美aⅴ一区二区 | 久久久久久一区 | 91影库| 黄视频国产 | 中文字幕高清av | 久久乐国产精品 | 91在线观看| 天天天插 | 欧美日韩在线一区二区 |