NoSQL
NoSQL有时也称作NotOnlySQL的缩写,是对不同于传统的关联式数据库的数据库管理系统的统称。
两者存在许多显著的不同点,其中最重要的是NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。NoSQL的实现具有二个特征:使用硬盘,或者把随机存储器作存储载体。
特点
当代典型的关联式数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档建立索引、高流量网站的网页服务,以及发送流式媒体。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量极少写访问的事务。NoSQL的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的ACID保证在某些情况下,增加了补充中间件层(例如,CloudTPS)。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable,和滑铁卢大学发展的HBase。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分散式ACID交易的快照隔离(snapshotisolation)保证为基础列储存,无需额外的资料管理开销,中间件系统部署或维护,减少了中间件层。少数NoSQL系统部署了分布式结构,通常使用分散式杂凑表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。
常用的NOSQL数据库
- 键值型:Memcached,Redis
- 文档型:MongoDB,CouchDB
- 图型(网络型):Neo4J
- 列值型:Cassandra,HBase
NOSQL的优点
- 都注重访问速度的提高
- 高可用性,高扩展性
- 海量数据处理
NOSQL的缺点
- 新鲜事务,每天在变化,很多NOSQL都没有大规模部署的案例
- NOSQL缺乏统一的标准
- 它的事务处理能力不如关系型数据库
MySQL可能遇到的瓶颈
- 对于大表的多表链接查询,速度慢
- 数据库集群和备份很麻烦
- 大量的应用,根本不会用到事务处理
- 大数据量的读写操作很慢
可能的方案:
- 做一个方案,让它冗余,但不会像MySQL造成性能急速下降,于是文档型/列值型的NOSQL数据库就出来了
- 数据库访问慢,我们就把数据缓存到内存中,于是 Memcached,Redis 出来了
- 集群备份很麻烦 ---NOSQL 都比较方便
- 弱化事务处理 ---NOSQL
集群:并发数:500~1000
冷备份:关闭数据库
热备份:不关数据库(技术,软件的支持)
概念补充
ACID
ACID,是指数据库管理系统(DBMS)在写入/异动资料的过程中,为保证交易(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。在数据库系统中,一个交易是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个交易,具有ACID特性。
原子性(atomicity)
一个交易(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性(consistency)
在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的默认规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
隔离性(isolation)
当两个或者多个事务并发访问(此处访问指查询和修改的操作)数据库的同一数据时所表现出的相互关系。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
持久性(durability)
在事务完成以后,该事务对数据库所作的更改便持久地保存在数据库之中,并且是完全的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。