一个网站怎么做流量统计,aws中国免费vps,wordpress及时聊天,看装修案例的网站除此接触这三个词的概念#xff0c;对今天看的资料最了一些整理。
之前经常有看到memcache、Redis与MongoDB相关的数据库#xff0c;最开始意味这些都只是用来做数据库优化的缓存工具#xff0c;后来具体看了一些资料之后才发现#xff0c;这些都是Nosql#xff0c;下面是…除此接触这三个词的概念对今天看的资料最了一些整理。
之前经常有看到memcache、Redis与MongoDB相关的数据库最开始意味这些都只是用来做数据库优化的缓存工具后来具体看了一些资料之后才发现这些都是Nosql下面是网站查找的资料整理出来的知识比较粗糙希望在之后的学习中能够不断地完善获得更深层次的理解。
memcache、Redis与MongoDB是最常用的Nosql数据库用于解决大规模数据集合多重数据种类带来的挑战尤其是大数据应用难题。对于超大规模超大流量以及高并发应用情景具有极大的优势。下面是三种数据库的相关特点与比较。
Memcache
优点
Memcached可以利用多核优势单实例吞吐量极高可以达到几十万QPS取决于key、value的字节大小以及服务器硬件性能日常环境中QPS高峰大约在4-6w左右。适用于最大程度扛量。支持直接配置为session handle。
缺点
只支持简单的key/value数据结构不像Redis可以支持丰富的数据类型。无法进行持久化数据不能备份只能用于缓存使用且重启后数据全部丢失。无法进行数据同步不能将MC中的数据迁移到其他MC实例中。Memcached内存分配采用Slab Allocation机制管理内存value大小分布差异较大时会造成内存利用率降低并引发低利用率时依然出现踢出等问题。需要用户注重value设计。
Redis
优点
支持多种数据结构如 string字符串、 list(双向链表)、dict(hash表)、set(集合、zset(排序set)、hyperloglog基数估算支持持久化操作可以进行aof及rdb数据持久化到磁盘从而进行数据备份或数据恢复等操作较好的防止数据丢失 的手段。支持通过Replication进行数据复制通过master-slave机制可以实时进行数据的同步复制支持多级复制和增量复制master-slave机制是Redis进行HA的重要手段。单线程请求所有命令串行执行并发情况下不需要考虑数据一致性问题。支持pub/sub消息订阅机制可以用来进行消息订阅与通知。支持简单的事务需求但业界使用场景很少并不成熟。
缺点
Redis只能使用单线程性能受限于CPU性能故单实例CPU最高才可能达到5-6wQPS每秒取决于数据结构数据大小以及服务器硬件性能日常环境中QPS高峰大约在1-2w左右。支持简单的事务需求但业界使用场景很少并不成熟既是优点也是缺点。Redis在string类型上会消耗较多内存可以使用dicthash表压缩存储以降低内存耗用。
MongoDB
优点
更高的写负载MongoDB拥有更高的插入速度。处理很大的规模的单表当数据表太大的时候可以很容易的分割表。高可用性设置M-S不仅方便而且很快MongoDB还可以快速、安全及自动化的实现节点数据中心故障转移。快速的查询MongoDB支持二维空间索引比如管道因此可以快速及精确的从指定位置获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话这将极大地提高数据库的查询速度。非结构化数据的爆发增长增加列在有些情况下可能锁定整个数据库或者增加负载从而导致性能下降由于MongoDB的弱数据结构模式添加1个新字段不会对旧表格有任何影响整个过程会非常快速。更类似Mysql支持字段索引、游标操作其优势在于查询功能比较强大擅长查询JSON数据能存储海量数据。Mysql在大数据量时效率显著下降MongoDB更多时候作为关系数据库的一种替代。 缺点
不支持事务。MongoDB占用空间过大 。MongoDB没有成熟的维护工具。
对比
memcache、Redis与MongoDB等常用nosql解决方案。 三者的对比特性对比如下表
特性memcacheRedisMongoDB性能TPS较高较高高便利性数据结构单一数据结构较丰富较少IO数据结构比较单一但是支持丰富的数据表达索引最类似关系型数据库支持的查询语言非常丰富。存储空间基于LRU算法可改最大可用内存redis2.0后增加VM特性突破物理内存的限制可设置过期时间类似memcache适合大数据量存储依赖OS的VM做内存管理内存消耗较大服务应独立可用性单点问题本身无数据冗余机制依赖成熟的hash或者环状算法预防故障解决单点故障引起的抖动问题单点问题比较复杂不支持自动sharding,需要依赖程序设定一致hash 机制。依赖客户端来实现分布式读写主从复制时无增量复制存在性能和效率问题支持master-slave,replicaset内部采用paxos选举算法自动故障恢复,auto sharding机制对客户端屏蔽了故障转移和切分机制可靠性持久化不支持通常用在做缓存,提升性能依赖快照进行持久化aof增强了可靠性的同时对性能有所影响从1.8版本开始采用binlog方式支持持久化的可靠性事务支持在并发场景下用cas保证一致性事务支持比较弱只能保证事务中的每个操作连续执行不支持事务数据分析不支持不支持内置了数据分析的功能(mapreduce)应用场景动态系统中减少数据库负载提升性能;做缓存提高性能适合读多写少对于数据量比较大可以采用sharding数据量较小的性能操作和运算主要解决海量数据的访问效率问题
参考
Nosql简介 RedisMemchche,MongoDb的区别MongoDB与Redis的比较MongoDB和Redis区别