您的位置:首页 > 数据库

NoSQL非关系型数据库

2015-10-09 09:06 309 查看
本文主要讲述我对NoSQL非关系型数据库的一点理解

1.NoSQL特点

a.模式自由:增删数据时不必进行数据完整性检查。不需要定义表结构,数据表中的每条记录都可能有不同的属性和格式

b.逆范式化:为了减少数据冗余,增强数据一致性,SQL要进行范式要求第三范式,大量的连接操作会降低存储效率。nosql用空间换时间

c.多分区存储:传统SQL数据库将数据存储在单一节点上,通过增加内存和磁盘空间提升效率,这叫纵向扩展,不可持续,因为系统总会达到一个极限。NoSQL会将数据进行分区,将数据存储在多个节点上,横向扩展方式,提高性能,满足大数据时代要求

d.弹性可扩展:可在系统运行的过程中动态的删除或增加节点。NoSQL可再系统运行过程中动态的增加或删除节点,数据块可以在节点之间自动移动

e.多副本异步复制:为了保证数据的安全,NoSQL数据库会存储多个副本,比如Hadoop生态系统中的Hbase,借助于底层的HDFS分布式文件系统,默认情况下可以有三个副本,且存储在不同的三个节点上

f.软事务:不能完全满足事务的ACID特性,保证事务的最终一致性。事务是SQL数据库的概念,一个事务包含多个数据库操作,且这些操作要么全做要么都不做,比如银行转账,转账和收款就是一个完整的事务,他们是不可拆分的,这样才能保证系统中数据的一致性。NoSQL保证的是事务的最终一致性,即一个用户立即进行数据更新后,其余的用户不能立即得到最新的数据,会有一定延迟。比如12306中看到有票,可是点击买票的时候告诉我们票已售完,火车票数量的更新不能立即同步到所有的节点

2.什么是ACID特性?

A(atomic原子性) C(consistency一致性) I(isolation隔离性) D(durability持久性)

SQL数据库是必须要满足ACID特性的,但是NoSQL非关系型数据库对此没有任何要求

3.NoSQL适用的一些场景

一般对数据冗余程度比较高,并且对数据库不要求有事务一致性,比如像SNS网站,他们并不要求更新的东西要时刻同步在用户的界面,比如新浪微博这个app,实时更新的只有新鲜事下面的那个气泡提示,还有信息推送等,这些必须保证事务一致性,但是新鲜事里面的内容如果保证实时对用户更新的话,那对服务器的压力实在是太大了,并且有大量僵尸粉,服务器会做很多无用功。这时就没必要采用事务一致性,我们点刷新再更新信息,就算信息不是同步的,是过去式的,对我们也没有任何影响。

但是像银行系统就不行了,我们在转账的时候转入方和接收方的信息必须是同步的,如果钱转过去但是接收方的钱款没收到,那在电影里估计早就撕票了。
不能完全满足事务的ACID特性,保证事务的最终一致性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: