赞
踩
脏读,幻读,重复读
(1)使用redis缓存
在 Web 层和 DB(数据库)层之间加一层 cache 层,主要目的:减少数据库读取负担,提高数据读取速度,如果需要高可用,可以使用哨兵模式,当一台机器不可用时,立即转移到另一台服务器上,使用端无感知。
(2)主从读写分离
当数据库的写压力增加,cache 层(如 Memcached)只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负。使用主从复制技术(master-slave 模式)来达到读写分离,以提高读写性能和读库的可扩展性。读写分离就是只在主服务器上写,只在从服务器上读,基本原理是让主数据库处理事务性查询,而从数据库处理 select 查询,数据库复制被用于把事务性查询(增删改)导致的改变更新同步到集群中的从数据库。
(3) 分库分表
水平拆分
对于访问极为频繁且数据量巨大的单表来说,首先要做的是减少单表的记录条数,以便减少数据查询所需的时间,提高数据库的吞吐,这就是所谓的分表【水平拆分】。使得数据能够较为均衡地分布到多张表中,一般采取分片策略,多个表为一组。
垂直拆分
分表能够解决单表数据量过大带来的查询效率下降的问题,但是却无法给数据库的并发处理能力带来质的提升。所以需要根据业务来进行分库,例如用户表和订单表,每个业务单独放在一个库中,即分库【垂直拆分】。
String,Hash,List,Set,Zset
1.使用全文索引
全文索引主要使用的是 倒排索引 实际就是将要插入的文本按照相应的词进行拆分,然后额外建立一张表,存储这些出现的单词,并做出相应的统计。
数据库模型 非关系型 关系型
存储方式 以类JSON的文档的格式存储 以表的方式存储
查询语句 MongoDB查询方式(类似JavaScript的函数)函数式的查询 SQL语句
数据处理方式 基于内存,将热数据存放在物理内存中,从而达到高速读写,冷数据持久化 不同引擎有不同的存储方式
成熟度 新兴数据库,成熟度较低 成熟度高
广泛度 NoSQL数据库中,比较完善且开源,使用人数在不断增长 开源数据库,市场份额不断增长
事务性 仅支持单文档事务操作,弱一致性 支持事务操作
占用空间 占用空间大 占用空间小
join操作 MongoDB没有join MySQL支持join
1.mysql和mongodb存储形式不同,mysql采用表存储,mongodb采用类似于json文档格式存储。
2. mysql支持事务操作,而mongodb不支持
3.mysql有join操作,而mongodb没有
4.mysql需要使用sql来进行查询,而mongodb使用类似函数式来查询,类似JavaScript 的函数
redis和session的区别
Redis 是一个使用 C 语言写成的,开源的高性能key-value非关系缓存数据库。它支持存储的value 类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。Redis的数据都基于缓存的,所以很快,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis也可以实现数据写入磁盘中,保证了数据的安全不丢失,而且Redis的操作是原子性的。
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都很低
(2)支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
1、Memcached 所有的值均是简单的字符串, redis 作为其替代者, 支持更为丰富的数据类
2、Redis 的速度比 Memcached 快
3、Redis 可以持久化其数据
1、存储方式 Memecache 把数据全部存在内存之中, 断电后会挂掉, 数据不能超过内存大小。 Redis有部份存在硬盘上, 这样能保证数据的持久性
2、数据支持类型 Memcache 对数据类型支持相对简单。 Redis 有复杂的数据类型。
3、使用底层模型不同 它们之间底层实现方式以及与客户端之间通信的应用协议不一样。 Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话, 会浪费一定的时间去移动和请求。
Redis 是单进程单线程的, redis 利用队列技术将并发访问变为串行访问, 消除了传统数据库串行控制的开销。
AOF持久化(即Append Only File持久化)
则是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
RDB:是Redis DataBase缩写快照
RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。
RDB优点:
char类型的长度是固定的,varchar的长度是可变的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。