精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

把MongoDB當成純內存數據庫使用

數據庫 其他數據庫 數據庫運維 MongoDB
將MongoDB用作內存數據庫(in-memory database),也即,根本就不讓MongoDB把數據保存到磁盤中的這種用法,引起了越來越多的人的興趣。

這種用法對于以下應用場合來講,超實用:

置于慢速RDBMS系統之前的寫操作密集型高速緩存

嵌入式系統

無需持久化數據的PCI兼容系統

需要輕量級數據庫而且庫中數據可以很容易清除掉的單元測試(unit testing)

如果這一切可以實現就真是太優雅了:我們就能夠巧妙地在不涉及磁盤操作的情況下利用MongoDB的查詢/檢索功能。可能你也知道,在99%的情況下,磁盤IO(特別是隨機IO)是系統的瓶頸,而且,如果你要寫入數據的話,磁盤操作是無法避免的。

MongoDB有一個非常酷的設計決策,就是她可以使用內存影射文件(memory-mapped file)來處理對磁盤文件中數據的讀寫請求。這也就是說,MongoDB并不對RAM和磁盤這兩者進行區別對待,只是將文件看作一個巨大的數組,然后按照字節為單位訪問其中的數據,剩下的都交由操作系統(OS)去處理!就是這個設計決策,才使得MongoDB可以無需任何修改就能夠運行于RAM之中。

實現方法

這一切都是通過使用一種叫做tmpfs的特殊類型文件系統實現的。在Linux中它看上去同常規的文件系統(FS)一樣,只是它完全位于RAM中(除非其大小超過了RAM的大小,此時它還可以進行swap,這個非常有用!)。我的服務器中有32GB的RAM,下面讓我們創建一個16GB的 tmpfs:

  1. # mkdir /ramdata 
  2. # mount -t tmpfs -o size=16000M tmpfs /ramdata/ 
  3. # df 
  4. Filesystem           1K-blocks      Used Available Use% Mounted on 
  5. /dev/xvde1             5905712   4973924    871792  86% / 
  6. none                  15344936         0  15344936   0% /dev/shm 
  7. tmpfs                 16384000         0  16384000   0% /ramdata 

接下來要用適當的設置啟動MongoDB。為了減小浪費的RAM數量,應該把smallfiles和noprealloc設置為true。既然現在是基于RAM的,這么做完全不會降低性能。此時再使用journal就毫無意義了,所以應該把nojournal設置為true。

  1. dbpath=/ramdata 
  2. nojournal = true 
  3. smallFiles = true 
  4. noprealloc = true 

MongoDB啟動之后,你會發現她運行得非常好,文件系統中的文件也正如期待的那樣出現了:

  1. # mongo 
  2. MongoDB shell version: 2.3.2 
  3. connecting to: test 
  4. > db.test.insert({a:1}) 
  5. > db.test.find() 
  6. { "_id" : ObjectId("51802115eafa5d80b5d2c145"), "a" : 1 } 
  7. # ls -l /ramdata/ 
  8. total 65684 
  9. -rw-------. 1 root root 16777216 Apr 30 15:52 local.0 
  10. -rw-------. 1 root root 16777216 Apr 30 15:52 local.ns 
  11. -rwxr-xr-x. 1 root root        5 Apr 30 15:52 mongod.lock 
  12. -rw-------. 1 root root 16777216 Apr 30 15:52 test.0 
  13. -rw-------. 1 root root 16777216 Apr 30 15:52 test.ns 
  14. drwxr-xr-x. 2 root root       40 Apr 30 15:52 _tmp 

現在讓我們添加一些數據,證實一下其運行完全正常。我們先創建一個1KB的document,然后將它添加到MongoDB中4百萬次:

  1. > str = "" 
  2. > aaa = "aaaaaaaaaa" 
  3. aaaaaaaaaa 
  4. > for (var i = 0; i < 100; ++i) { str += aaa; } 
  5. > for (var i = 0; i < 4000000; ++i) { db.foo.insert({a: Math.random(), s: str});} 
  6. > db.foo.stats() 
  7.         "ns" : "test.foo", 
  8.         "count" : 4000000, 
  9.         "size" : 4544000160, 
  10.         "avgObjSize" : 1136.00004, 
  11.         "storageSize" : 5030768544, 
  12.         "numExtents" : 26, 
  13.         "nindexes" : 1, 
  14.         "lastExtentSize" : 536600560, 
  15.         "paddingFactor" : 1, 
  16.         "systemFlags" : 1, 
  17.         "userFlags" : 0, 
  18.         "totalIndexSize" : 129794000, 
  19.         "indexSizes" : { 
  20.                 "_id_" : 129794000 
  21.         }, 
  22.         "ok" : 1 

可以看出,其中的document平均大小為1136字節,數據總共占用了5GB的空間。_id之上的索引大小為130MB。現在我們需要驗證一件 非常重要的事情:RAM中的數據有沒有重復,是不是在MongoDB和文件系統中各保存了一份?還記得MongoDB并不會在她自己的進程內緩存任何數據,她的數據只會緩存到文件系統的緩存之中。那我們來清除一下文件系統的緩存,然后看看RAM中還有有什么數據:

  1. # echo 3 > /proc/sys/vm/drop_caches  
  2. # free 
  3.              total       used       free     shared    buffers     cached 
  4. Mem:      30689876    6292780   24397096          0       1044    5817368 
  5. -/+ buffers/cache:     474368   30215508 
  6. Swap:            0          0          0 

可以看到,在已使用的6.3GB的RAM中,有5.8GB用于了文件系統的緩存(緩沖區,buffer)。為什么即使在清除所有緩存之后,系統中仍然還有5.8GB的文件系統緩存??其原因是,Linux非常聰明,她不會在tmpfs和緩存中保存重復的數據。太棒了!這就意味著,你在RAM只有一份數據。下面我們訪問一下所有的document,并驗證一下,RAM的使用情況不會發生變化:

  1. > db.foo.find().itcount() 
  2. 4000000 
  3. # free 
  4.              total       used       free     shared    buffers     cached 
  5. Mem:      30689876    6327988   24361888          0       1324    5818012 
  6. -/+ buffers/cache:     508652   30181224 
  7. Swap:            0          0          0 
  8. # ls -l /ramdata/ 
  9. total 5808780 
  10. -rw-------. 1 root root  16777216 Apr 30 15:52 local.0 
  11. -rw-------. 1 root root  16777216 Apr 30 15:52 local.ns 
  12. -rwxr-xr-x. 1 root root         5 Apr 30 15:52 mongod.lock 
  13. -rw-------. 1 root root  16777216 Apr 30 16:00 test.0 
  14. -rw-------. 1 root root  33554432 Apr 30 16:00 test.1 
  15. -rw-------. 1 root root 536608768 Apr 30 16:02 test.10 
  16. -rw-------. 1 root root 536608768 Apr 30 16:03 test.11 
  17. -rw-------. 1 root root 536608768 Apr 30 16:03 test.12 
  18. -rw-------. 1 root root 536608768 Apr 30 16:04 test.13 
  19. -rw-------. 1 root root 536608768 Apr 30 16:04 test.14 
  20. -rw-------. 1 root root  67108864 Apr 30 16:00 test.2 
  21. -rw-------. 1 root root 134217728 Apr 30 16:00 test.3 
  22. -rw-------. 1 root root 268435456 Apr 30 16:00 test.4 
  23. -rw-------. 1 root root 536608768 Apr 30 16:01 test.5 
  24. -rw-------. 1 root root 536608768 Apr 30 16:01 test.6 
  25. -rw-------. 1 root root 536608768 Apr 30 16:04 test.7 
  26. -rw-------. 1 root root 536608768 Apr 30 16:03 test.8 
  27. -rw-------. 1 root root 536608768 Apr 30 16:02 test.9 
  28. -rw-------. 1 root root  16777216 Apr 30 15:52 test.ns 
  29. drwxr-xr-x. 2 root root        40 Apr 30 16:04 _tmp 
  30. # df 
  31. Filesystem           1K-blocks      Used Available Use% Mounted on 
  32. /dev/xvde1             5905712   4973960    871756  86% / 
  33. none                  15344936         0  15344936   0% /dev/shm 
  34. tmpfs                 16384000   5808780  10575220  36% /ramdata 

果不其然! :)

復制(replication)呢?

既然服務器在重啟時RAM中的數據都會丟失,所以你可能會想使用復制。采用標準的副本集(replica set)就能夠獲得自動故障轉移(failover),還能夠提高數據讀取能力(read capacity)。如果有服務器重啟了,它就可以從同一個副本集中另外一個服務器中讀取數據從而重建自己的數據(重新同步,resync)。即使在大量數據和索引的情況下,這個過程也會足夠快,因為索引操作都是在RAM中進行的 :)

有一點很重要,就是寫操作會寫入一個特殊的叫做oplog的collection,它位于local數據庫之中。缺省情況下,它的大小是總數據量的5%。在我這種情況下,oplog會占有16GB的5%,也就是800MB的空間。在拿不準的情況下,比較安全的做法是,可以使用oplogSize這個選項為oplog選擇一個固定的大小。如果備選服務器宕機時間超過了oplog的容量,它就必須要進行重新同步了。要把它的大小設置為1GB,可以這樣:

oplogSize = 1000

分片(sharding)呢?

既然擁有了MongoDB所有的查詢功能,那么用它來實現一個大型的服務要怎么弄?你可以隨心所欲地使用分片來實現一個大型可擴展的內存數據庫。配置服務器(保存著數據塊分配情況)還還是用過采用基于磁盤的方案,因為這些服務器的活動數量不大,老從頭重建集群可不好玩。

注意事項

RAM屬稀缺資源,而且在這種情況下你一定想讓整個數據集都能放到RAM中。盡管tmpfs具有借助于磁盤交換(swapping)的能力,但其性能下降將非常顯著。為了充分利用RAM,你應該考慮:

使用usePowerOf2Sizes選項對存儲bucket進行規范化

定期運行compact命令或者對節點進行重新同步(resync)

schema的設計要相當規范化(以避免出現大量比較大的document)

結論

寶貝,你現在就能夠將MongoDB用作內存數據庫了,而且還能使用她的所有功能!性能嘛,應該會相當驚人:我在單線程/核的情況下進行測試,可以達到每秒20K個寫入的速度,而且增加多少個核就會再增加多少倍的寫入速度。

原文鏈接:http://www.oschina.net/translate/how-to-use-mongodb-as-a-pure-in-memory-db-redis-style

【編輯推薦】

1.MeayunDB嵌入式極速內存數據庫介紹

責任編輯:彭凡 來源: OSCHINA
相關推薦

2014-02-27 10:08:33

NoSQL

2019-08-15 07:00:54

SQLite數據庫內存數據庫

2025-01-03 08:13:08

2011-03-17 13:20:43

Java數據庫Derby

2022-04-05 11:24:17

CyberDB內存數據庫Python

2011-04-14 09:38:55

內存數據庫

2022-12-07 18:45:22

內存數據庫Redis

2011-04-14 09:27:37

內存數據庫

2011-03-03 13:13:51

DelphiSQLite加密

2020-07-06 14:20:43

MongoDB數據庫安全

2011-03-23 17:10:41

ACCESSSQL數據庫

2011-08-24 13:10:48

MongoDBUpdate

2019-08-20 14:02:07

MongoDB數據庫恢復數據

2022-03-10 09:08:43

數據庫Mongodb數據庫轉

2019-11-04 12:51:48

mysql數據庫nnodb

2021-08-04 09:00:53

Python數據庫Python基礎

2011-03-23 11:11:17

圖片數據庫

2020-10-27 09:41:13

MongoDB Atl多云集群數據庫

2011-07-26 13:55:01

MongoDB備份與恢復

2020-11-27 07:38:43

MongoDB
點贊
收藏

51CTO技術棧公眾號

成人video亚洲精品| 亚洲中文字幕在线观看| 思热99re视热频这里只精品| 欧美视频精品一区| 一本久道久久综合| 亚洲精品久久久久久动漫器材一区 | 亚洲一区二区在线免费| 欧美大胆成人| 亚洲欧洲中文日韩久久av乱码| www.久久草| 日本免费精品视频| 欧美va天堂| 一区二区日韩精品| 国产免费a级片| av成人在线播放| 亚洲高清免费视频| 一级特黄录像免费播放全99| 日韩一区免费视频| 经典一区二区三区| 欧美一区在线直播| 免费麻豆国产一区二区三区四区| 亚洲资源网你懂的| 日韩免费高清av| 亚洲一二三区av| xxx.xxx欧美| 综合久久给合久久狠狠狠97色| 久久99国产精品99久久| 国产熟女一区二区三区四区| 免费看黄裸体一级大秀欧美| 欧美黑人一区二区三区| 美女视频久久久| 亚洲人成精品久久久 | 亚洲图片欧美另类| 亚洲午夜剧场| 欧美亚洲一区二区三区四区| 日韩中文字幕在线视频观看| 色老头在线观看| 亚洲丝袜自拍清纯另类| 日韩国产美国| 免费在线高清av| 99九九99九九九视频精品| 999国产在线| av无码精品一区二区三区宅噜噜| 日韩和的一区二区| 国产成人a亚洲精品| 亚洲精品77777| 亚洲国产网站| 韩国三级电影久久久久久| 校园春色 亚洲| 91精品国偷自产在线电影| 中文字幕欧美精品在线 | 亚洲视频免费观看| 一级做a爰片久久| 午夜不卡视频| 中文字幕在线不卡一区二区三区| 亚洲春色在线| av影片在线看| 中文av一区二区| 亚洲国产一区二区精品视频 | 五月天久久久| 北条麻妃久久精品| 99自拍视频在线| 91精品国产乱码久久久久久| 久久综合电影一区| 欧美日韩激情在线观看| 韩国自拍一区| 97在线观看视频国产| 日韩av片在线播放| 亚洲一区二区三区免费在线观看| 欧美最猛性xxxxx亚洲精品| 日日夜夜操视频| 麻豆精品久久精品色综合| 91精品免费久久久久久久久| 国产白浆在线观看| 成人国产在线观看| 欧美在线一二三区| 日本三级视频在线播放| 亚洲欧美激情小说另类| 国产一区二区四区| 玛雅亚洲电影| 在线成人午夜影院| 午夜男人的天堂| 国产一区国产二区国产三区| 久久精品成人一区二区三区| 国产一级一片免费播放放a| 国产精品色网| 国产一区二区丝袜高跟鞋图片| 国内精品偷拍视频| 久久色在线视频| 中文字幕中文字幕一区三区| 性xxxxfjsxxxxx欧美| 欧美天堂在线观看| 国产精品嫩草影院8vv8| 成人偷拍自拍| 国产一区二区三区网站| 欧美又粗又大又长| 日韩在线一二三区| 国产91一区二区三区| 黄色的视频在线免费观看| 亚洲视频综合在线| 日韩黄色片视频| 久久av网站| 亚洲久久久久久久久久| 日本不卡一二区| 国产精品夜夜夜| 亚洲在线第一页| 青青草免费在线| 亚洲精品一二三四区| 欧洲av无码放荡人妇网站| 麻豆视频久久| 中日韩美女免费视频网站在线观看| 99精品久久久久| 日韩va亚洲va欧美va久久| 国产精品久久精品国产 | 亚洲人成网77777色在线播放| 精品久久久91| 国产字幕在线观看| 99综合电影在线视频| 国产91av视频在线观看| 巨茎人妖videos另类| 精品第一国产综合精品aⅴ| 欧美日韩生活片| 老牛嫩草一区二区三区日本| 粉嫩高清一区二区三区精品视频| 最新av网站在线观看| 欧美网站在线观看| 日韩Av无码精品| 欧美伊人影院| 91亚洲精品久久久| 在线免费看av| 欧美三电影在线| 亚洲性猛交xxxx乱大交| 国产欧美激情| 国产精品中出一区二区三区| 日本性爱视频在线观看| 91精品国产手机| 秋霞欧美一区二区三区视频免费| 日韩电影一区二区三区四区| 欧美日本韩国一区二区三区| 97人人爽人人澡人人精品| 精品日韩99亚洲| 久久免费小视频| 国产激情视频一区二区在线观看| 中文字幕中文字幕一区三区| 国产欧美日韩电影| 久久天堂电影网| 97人妻精品一区二区三区| 国产精品伦理一区二区| 在线观看国产一级片| 久久成人综合| 91视频国产高清| 国精产品一区| 欧美一区二区黄色| 2021亚洲天堂| 成人av网站在线观看免费| www.99热这里只有精品| 天堂在线精品| 国产97在线观看| avtt亚洲| 日韩一区二区精品| 日韩精品一区二区av| 久久亚洲影视婷婷| 91制片厂毛片| 国产精品久久久久无码av| 91热福利电影| 日本高清在线观看| 亚洲激情中文字幕| 国产精品久久久久久久久久精爆| 久久久久久久久久久久久女国产乱 | 亚洲精品第一区二区三区| 欧美在线se| 欧美成人免费一级人片100| 高潮一区二区三区乱码| 欧美日韩免费区域视频在线观看| 最近中文字幕免费| 激情六月婷婷久久| 久久人人爽人人爽人人av| 开心激情综合| 国产精品久久不能| av软件在线观看| 亚洲精品美女免费| 中文字幕永久在线观看| 一级女性全黄久久生活片免费| 中文字幕乱码一区| 喷白浆一区二区| 黄色一级片国产| 精品在线99| 91亚洲国产精品| 欧洲亚洲两性| 欧美老肥婆性猛交视频| 免费黄网站在线观看| 欧美一区二区三区精品| 亚洲va在线观看| 亚洲蜜臀av乱码久久精品| 短视频在线观看| 国产精品一区二区果冻传媒| 北条麻妃在线观看| 亚洲第一偷拍| 老司机精品福利在线观看| 图片一区二区| 日本精品免费一区二区三区| a级影片在线观看| 亚洲天堂日韩电影| 成人精品在线播放| 欧美午夜精品免费| 亚洲综合一二三| 亚洲女子a中天字幕| 色一情一交一乱一区二区三区| 国产99久久久国产精品免费看 | 国产成人av资源| 中文字幕天天干| 国产亚洲精品v| 污污污污污污www网站免费| 日韩国产一区二区三区| 久久综合中文色婷婷| 综合中文字幕| 91中文在线视频| 国产成人午夜性a一级毛片| 97久久精品人搡人人玩| 国产精品剧情| 按摩亚洲人久久| www黄在线观看| 亚洲精品一区久久久久久| 午夜精品久久久久久久爽| 欧美人与性动xxxx| 欧美激情一区二区三区免费观看 | 久久免费在线观看| av理论在线观看| 久久激情视频久久| 69xxxx欧美| 综合欧美国产视频二区| 韩国三级在线观看久| 日韩激情片免费| 午夜国产在线视频| 日韩成人激情在线| 视频一区 中文字幕| 精品美女在线播放| 国产黄色大片网站| 日韩一区二区三区av| 99热这里只有精品1| 欧美二区在线观看| 国产视频aaa| 在线播放欧美女士性生活| 中文字幕乱码中文字幕| 欧美三级三级三级爽爽爽| 国产乱码在线观看| 欧美日韩视频不卡| 一区二区的视频| 制服丝袜在线91| 国产三级按摩推拿按摩| 欧美一区二区在线免费观看| 国产日韩欧美中文字幕| 欧美成人aa大片| 蜜桃视频久久一区免费观看入口| 精品日韩在线一区| 天堂av网在线| 亚洲无亚洲人成网站77777| 成年人视频在线观看免费| 色噜噜狠狠狠综合曰曰曰| 巨大荫蒂视频欧美另类大| 欧美精品一区二区三区国产精品| 男插女视频久久久| 欧美在线一级va免费观看| 欧美成人h版| 国产日韩欧美日韩| 欧美高清一级片| 精品久久精品久久| 久久99高清| 自拍偷拍99| 极品中文字幕一区| 成人在线观看黄| 久久99精品久久久久久动态图 | 成人午夜福利视频| 亚洲国产成人av在线| 你懂的在线视频| 久久视频中文字幕| 中文字幕 在线观看| 国产精品夜间视频香蕉| 一区二区三区视频免费视频观看网站 | 国产免费黄色大片| 日韩av一区二区在线观看| 国产小视频免费在线网址| 久久精品一本久久99精品| 成人影音在线| 国产精品女主播视频| 午夜电影一区| 青青影院一区二区三区四区| 一区二区中文| 欧美aⅴ在线观看| 国产一区二区三区精品视频| 黄色免费视频网站| 综合久久久久久久| 中文字幕激情小说| 91精品黄色片免费大全| 青青青草网站免费视频在线观看| www.日韩免费| 日本不卡一二三| 国产成人免费观看| 色综合天天爱| 午夜肉伦伦影院| 国产99精品在线观看| 国产毛片欧美毛片久久久| 亚洲一区二区三区自拍| 中文有码在线播放| 日韩大陆欧美高清视频区| jizz性欧美| 国产精品视频在线观看| 美国成人xxx| 免费的av在线| 蜜臀国产一区二区三区在线播放 | 女厕嘘嘘一区二区在线播放 | 爽好多水快深点欧美视频| 日韩少妇一区二区| 最新欧美精品一区二区三区| 手机在线看片1024| 日韩不卡在线观看| 国产一线二线在线观看| 亚洲一区二区三区久久| 第四色成人网| 国内外免费激情视频| 成人毛片老司机大片| 欧美被狂躁喷白浆精品| 欧美精品99久久久**| 成人免费黄色网页| 国产97在线亚洲| 日韩美女国产精品| 国产成人无码a区在线观看视频| 国产精品综合在线视频| 久久99久久99精品免费看小说| 欧美在线综合视频| 免费观看成年在线视频网站| 欧美在线一区二区三区四| 欧美理伦片在线播放| 国产成a人亚洲精v品在线观看| 国模少妇一区二区三区| 欧美xxxooo| 欧美喷潮久久久xxxxx| 色网站免费在线观看| 国产精品久久久久久一区二区| 国产一区二区在线| 美女黄色片视频| 国产精品日韩精品欧美在线| www.亚洲激情| 在线日韩精品视频| 成人午夜毛片| 中文字幕成人一区| 国产在线精品免费| 永久免费看黄网站| 欧美一区二区在线免费观看| av免费在线观看网站| 91在线短视频| 今天的高清视频免费播放成人| 深田咏美中文字幕| 欧美日韩在线看| 黄色小视频在线免费观看| 国产精品露脸av在线| 亚洲成人tv| 亚洲美女高潮久久久| 午夜久久电影网| 黄色大片在线免费观看| 国产精品主播视频| 欧美1区2区| 亚洲激情 欧美| 91国产福利在线| 免费网站成人| av色综合网| 亚洲女优在线| 天堂а√在线中文在线鲁大师| 69成人精品免费视频| 色爱综合区网| 欧美成人第一区| 精品一区二区av| 国产午夜激情视频| 亚洲欧美制服中文字幕| 国外成人福利视频| 国产精品www在线观看| 久久精品一级爱片| 国产又黄又大又粗的视频| 亚州国产精品久久久| 成人一区不卡| 极品白嫩的小少妇| 欧洲在线/亚洲| 色呦呦在线播放| 日本精品一区二区三区视频| 韩国三级中文字幕hd久久精品| 国产精品23p| 三级精品视频久久久久| 国产精品香蕉| 欧美女同在线观看| 亚洲成人av中文| av在线电影观看| 国外成人在线视频网站| 久久精品123| 国产真人真事毛片| 中文字幕亚洲专区| 欧美三级自拍| 夜夜爽久久精品91| 91成人在线观看喷潮| 国产丝袜在线播放| 制服诱惑一区|