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

測(cè)試MangoDB的真正性能

數(shù)據(jù)庫 其他數(shù)據(jù)庫
最近開始研究MySQL和MongoDB,發(fā)現(xiàn)這方面資料不多。尤其是真正的說到點(diǎn)子上的文章,太少了。有一些對(duì)比測(cè)試的文章基本上都是瞎測(cè),測(cè)試方法都測(cè)到了馬腿上,得出的結(jié)論基本上都是NoSQL毫無價(jià)值,容我借用Russell Smith 的那句話:不是MongoDB不行,是你不懂。讓我來分析一下MongoDB的真正性能吧。

有說MongoDB慢

反對(duì):不設(shè)其他***索引的情況下,只用_id 在普通辦公電腦上每秒插入幾萬,在普通x86服務(wù)器上每秒插入十幾萬,你好意思說這個(gè)性能低?比mysql強(qiáng)出一個(gè)數(shù)量級(jí)。

贊同:檢索是真的慢,和sql數(shù)據(jù)庫不同,越復(fù)雜的條件搜索MangoDB越吃虧,CPU和IO的雙重壓力。面對(duì)那些直接把SQL查詢改寫成MangoDB的用法,別轉(zhuǎn)了,你不會(huì)收獲任何性能提升。

你不行:說你不行還是真的不行,MongoDB領(lǐng)導(dǎo)了NoSQL運(yùn)動(dòng),NoSQL請(qǐng)注意,我們最主要反對(duì)的就是SQL的方法論,按SQL方法使用MangoDB你只能收獲失望。再想想MongoDB的設(shè)計(jì)思想:文檔化。_id 就是文件名,MongoDB是個(gè)文件系統(tǒng)。全文檢索?別鬧了,用文件名找文件,一個(gè)文件名對(duì)應(yīng)一個(gè)文件,你絕對(duì)不會(huì)失望。

那么MongoDB究竟應(yīng)該怎么用呢?

首先,忘記SQL

你應(yīng)該忘記你學(xué)過的那些優(yōu)雅無敵的SQL,不是說為了提升檢索性能,扔索引就有好處。

有一個(gè)簡單的事實(shí)如下:只有一個(gè)默認(rèn)的_id 索引,此時(shí)插入性能為1,你再加一個(gè)索引,插入性能約1/2,再加一個(gè)約1/3 ,以此類推......

如果這個(gè)事實(shí)對(duì)你是很震撼的,那說明你還沒有忘記SQL,接著忘。

MongoDB的索引對(duì)插入性能有著不可忽略的拖后腿效應(yīng),所以,我們應(yīng)該使用且僅使用 _id 作為插入key,作為查詢key,作為所有的那個(gè)key。

其次,直接忘記搜索這件事。

把MongoDB當(dāng)做你的硬盤,給他文件名去操作文件.這就是Key-Value數(shù)據(jù)庫的做法,你稍加設(shè)計(jì)就能這么用。

那么其實(shí)你所有的操作可以簡化為兩個(gè)指令,邏輯上 就是一個(gè)字典

你給他_id,往字典里插一個(gè)數(shù)據(jù),或者拿一個(gè)數(shù)據(jù)。

  1. Save({_id:xxx,.....}) 
  2. FindOne({_id:xxx}) 

要想高性能,善用那個(gè)_id,把你原來準(zhǔn)備當(dāng)主鍵的那個(gè)玩意,hash成_id.

把你原來準(zhǔn)備的查詢條件,什么?查詢,拿_id來,別的全砍掉。

第三、這不是數(shù)據(jù)表

記住,這不是數(shù)據(jù)表,一個(gè)_id對(duì)應(yīng)的東西不是一行數(shù)據(jù),而是一個(gè)文件。

文件存儲(chǔ)和表存儲(chǔ)有什么不同呢?

我舉個(gè)例子,比如我們要存儲(chǔ)用戶列表和每個(gè)用戶的道具列表。

數(shù)據(jù)表的做法是建一張用戶表,一張道具表,道具表里有個(gè)字段表示他屬于哪個(gè)用戶。

然后,你就離不開萬惡的查詢了。

然后如果一個(gè)用戶有100條道具,100萬用戶意味著道具表有一億條記錄。

這時(shí)候就開始考驗(yàn)?zāi)愕男?shù)據(jù)庫了,但這都是過去式了,這一億的道具,用MongoDB,根本不是個(gè)事兒

因?yàn)镸ongoDB的方法是當(dāng)做文件存,只設(shè)計(jì)一個(gè)用戶集合,每個(gè)用戶的信息是一個(gè)文件,然后這100個(gè)道具就分開存在每個(gè)用戶的文件里。

然后來比較一下,我們?nèi)〉糜脩舻挠涗洠缓髲闹心贸?00個(gè)道具,NoSQL方法。

查一億的表,找出屬于某個(gè)用戶的記錄。

熟快熟慢?

然后你可能回想,SQL方法,我也可以搞個(gè)道具字段,把用戶的100個(gè)道具用某種協(xié)議打包,然后操作啊,一樣可以取得巨大的優(yōu)化呀。

沒錯(cuò),你的想法很好,你正在用NOSQL的方式用SQL。

第四、文件存儲(chǔ)的精華之處

如果問題止于此處,MongoDB就毫無優(yōu)勢(shì)可言了,如果這個(gè)方法在SQL數(shù)據(jù)庫上也是如此容易使用,那還費(fèi)勁搞MongoDB干什么?

我們?cè)僬垓v一點(diǎn),如果每個(gè)道具還要存100條轉(zhuǎn)手記錄,你還是可以打包,但你這個(gè)打包字段已經(jīng)1M了。

于是每次存取這個(gè)打包字段都是一個(gè)系統(tǒng)工程了,還要負(fù)擔(dān)1M的流量。

MongoDB這邊呢?我們可以直接對(duì)文件的一部分進(jìn)行讀寫,比如我只返回一個(gè)用戶的第二個(gè)道具的信息,和返回第二個(gè)道具的第1~30條轉(zhuǎn)手記錄。

這,是一種怎樣的差距啊。

你想要一張美女的照片,你朋友有,但是他只有一個(gè)壓縮包,他那里沒有解包工具,于是他把整個(gè)包傳給了你。他想問你要一張照片,但是他沒有壓縮工具,為了存檔需要,他讓你再壓進(jìn)包里傳給他。

這個(gè)朋友就是你的用戶表的一行,如果換成真實(shí)世界的事件是多么的不可思議,這就是在一個(gè)字段里打包數(shù)據(jù)的問題。

MongoDB的一條記錄就是一個(gè)腦筋更正常的朋友,你要他一張照片,他從包里找出來給你。你給他一張照片,他分門別類的放置到他的包里去。

用文件的思維去訪問,MongoDB是一個(gè)更好的朋友。

審視一下你項(xiàng)目中的大部分的數(shù)據(jù)需求,是不是都可以用這種方式去組織呢?

如果是,加入NOSQL吧,我們的口號(hào)是:很暴力不SQL

還有什么好處 

1.不用邏輯關(guān)心的水平切分

無需多言,對(duì)MongoDB而言,這是運(yùn)維人員的工作了

2.不用對(duì)齊的數(shù)據(jù)結(jié)構(gòu)

不用對(duì)齊意味著你不用為以前表結(jié)構(gòu)變化的遷移煩惱,有些文件里有一個(gè)部分,有些沒有,這對(duì)MongoDB而言,很正常。

原文鏈接:http://www.cnblogs.com/crazylights/archive/2013/05/08/3066056.html

【編輯推薦】

  1. Craigslist采用MongoDB替代MySQL
  2. MongoDB源碼分析--Command體系架構(gòu)
  3. Mongodb源碼分析--內(nèi)存文件映射(MMAP)
  4. 淺析Mongodb源碼之游標(biāo)Cursor
  5. 如何解決PHP+MySQL出現(xiàn)亂碼的現(xiàn)象

【責(zé)任編輯:彭凡 TEL:(010)68476606】
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2013-05-09 09:45:29

2020-04-28 09:00:00

測(cè)試測(cè)試自動(dòng)化

2013-12-25 10:32:41

MySQL性能測(cè)試

2023-09-18 16:14:35

性能測(cè)試開發(fā)

2017-08-10 14:04:25

前端JavaScript函數(shù)性能

2011-03-15 16:34:36

Iptables性能

2021-12-29 10:30:15

JMH代碼Java

2012-08-15 14:36:26

MangoDB

2012-02-15 09:45:38

性能測(cè)試

2013-12-25 09:32:52

測(cè)試平均性能

2011-07-04 17:38:47

性能測(cè)試

2016-10-21 10:36:54

http2spdynode.js

2020-05-18 07:00:00

性能測(cè)試壓力測(cè)試負(fù)載測(cè)試

2011-06-08 16:59:04

性能測(cè)試載測(cè)試壓力測(cè)試

2009-05-05 13:24:06

VMwareVmark虛擬化

2011-12-15 09:55:47

javanio

2009-09-22 17:41:07

Hibernate性能

2019-03-25 12:20:29

數(shù)據(jù)MySQL性能測(cè)試

2011-09-27 10:11:14

MongoDBR

2017-08-22 10:52:35

容器DockerLinux
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲欧美一区二区三区视频 | 日韩精品在线网站 | 九九热最新视频 | 欧美日韩18| 久久精品欧美一区二区三区不卡 | 婷婷丁香综合网 | 伊人网一区 | 午夜欧美 | 在线中文字幕亚洲 | 欧美黄在线观看 | 国产成人精品免高潮在线观看 | 久草视频在线看 | 亚洲精品一| 亚洲欧美精品在线观看 | 黄色片视频网站 | 青青草华人在线视频 | 999观看免费高清www | 99精品欧美一区二区三区综合在线 | 日韩av大片免费看 | 欧美精品99| 中文字幕国产一区 | 久久福利网站 | 97伦理| 国产精品日韩欧美一区二区三区 | 国产69精品久久99不卡免费版 | 国产精品婷婷 | 成人亚洲| 亚洲小说图片 | 欧美视频三区 | 久久精品一区 | 成人激情视频免费观看 | 97视频成人 | 国产综合在线视频 | 亚洲精品一区二区三区在线观看 | 日韩成人精品 | 亚洲天堂影院 | 久久夜夜 | 一区二区三区在线播放视频 | 91精品国产91久久久久久吃药 | 国产精品美女 | 欧美1区2区 |