微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

(原创)NoSQL非关系型数据库

本文主要讲述我对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特性,保证事务的最终一致性

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐