本文目录导航:
千万别用MongoDB?真的吗
为什么这么说?数据库应该是正确的,或是尽或者的正确,由于数据库的失误解比其它失误危害更大。
不只仅是由于其对运转,性能,开支,和其价值影响渺小,还由于其连带的物品。
匆忙去去移植 TB 级的数据相比起去修正代码中的一个逻辑失误来说是一个很渺小的上班。
而在系统出疑问后须要复原 TB 级的数据,你会被硬盘的速度所限度,你会有一种悲观的觉得。
数据库是一个很复杂的系统,关于开发者来说就像一个黑盒一样。
你须要对你所驳回的数据库持相对信赖的态度,信赖它会做正确的事,并会坚持分歧性和可用性。
为什么 MongoDB 会盛行?说句公平话,咱们必须抵赖 MongoDB 是盛行的,由于上方这些要素让其盛行变得很正当:它十分容易地运转十分自在的 Schema 模型,而且可以很容易地和 JSON 类的数据结果映射起来,这关于程序员来于有很大的感化力(它齐全合乎程序员的逻辑思想),而且,程序员总是在名目可以做技术选型的人。
成熟和强健,track record,被实在的 Use Case 测试过,等等。
关于那些青睐选用成熟的技术的系统治理员和经营专业来说,这是一个很典型的选用。
它单系统,低并发读的性能测试十分令人惊讶,而关于那些没有阅历的评价者来说,这基本过去说是最关键的。
如今,你或者正在开发一个随意玩一玩的网站,或是一个原型,或是那种只思考开发速度不思考别的的名目。
诚恳说,关于这种名目,次要你用什么样的技术,只需搞定上班就行了。
然而,假设你想要在 MongoDB 上搞一个大规模的系统,在上方运转实在的业务,那么,请不要用 MongoDB。
转载,仅供参考。
mongodb 能做什么
MongoDB属于内存型数据库,在须要读性能要求很高的名目中有着比拟不错的体现。
可做前段缓存主机、缓冲数据存储区,雷同也可以作为运行系统的存储主机,例如微博、论坛等运行系统,也可以作为图片存储主机(散布式);在数据写方面,Mongo也允许比拟高的写速率(当然这取决于配件设施)。
这比普通经常使用硬盘存储介质的相关数据库的存储效率要高很多。
然而,非相关数据库会形成少量冗余数据,假设前期的系统设计很毛糙,前期的数据保养将会相当艰巨。
redis 和 mongodb 比起来优缺陷是什么?
一、好处:
1、允许多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(汇合)、zset(排序set)、hyperloglog(基数预算)
2、允许耐久化操作,可以启动aof及rdb数据耐久化到磁盘,从而启动数据备份或数据复原等操作,较好的防止数据失落的手腕。
3、允许经过Replication启动数据复制,经过master-slave机制,可以实时启动数据的同步复制,允许多级复制和增量复制,master-slave机制是Redis启动HA的关键手腕。
二、缺陷:
1、Redis只能经常使用复线程,性能受限于CPU性能,故单实例CPU最高才或者到达5-6wQPS每秒(取决于数据结构,数据大小以及主机配件性能,日常环境中QPS高峰大概在1-2w左右)。
2、允许便捷的事务需求,但业界经常使用场景很少,并不成熟,既是好处也是缺陷。
3、Redis在string类型上会消耗较多内存,可以经常使用dict(hash表)紧缩存储以降落内存耗用。
裁减资料:
redis经常使用留意事项:
1、留意渣滓回收:Redis是一个提供耐久化性能的内存数据库,假设不指定上方值的过时期间,并且也不启动活期的清算上班,那么Redis内存占用会越来越大,当有一天超越了系统可用内存,那么swap上场,离性能陡降的期间就不远了。
2、经常使用key值前缀来作命名空间:只管说Redis允许多个数据库(自动32个,可以性能更多),然而除了自动的0号库以外,其它的都须要经过一个额外恳求能力经常使用。
所以用前缀作为命名空间或者会更理智一点。
3、Redis并不允许Sharding,然而当数据量超越单机内存时,不得不思考Sharding的事(留意Slave不是用来做Sharding操作的,只是数据的一个备份和读写分别而已)。