什么是NoSQL数据库?

NoSQL数据库即为not noly sql 数据库,意为不仅仅是SQL数据库,泛指非关系型数据库:
----->>>
NoSQL 不拘泥于关系型数据库的设计范式,放弃了通用的技术标准,为某一领域特定场景而设计,从而使性能、容量或者扩展性都打到了一定程度的突破。
NoSQL数据库特点:
1.它不遵循SQL标准
2.它不支持ACID
3.它在某个领域远超于SQL的性能(我们不能绝对的说NoSQL数据库的性能远超于SQL数据库的性能,一定是在某个特定的场合)

NoSQL数据库适用和不适用的场景:

nosql适用的场景:
1.性能好
2.容量大
3.扩展性高
4.当无法使用sql的情况,可以尝试使用nosql

nosql不适用的场景:
1.需要事务支持不能使用nosql(事务必须严格的一致性)
2.基于sql的结构化查询存储,处理较为复杂的关系,不能使用nosql

NoSQL数据库家族:

1.Memcache(内存数据库)[可用性很低:因为数据无法持久化,现在已经很少有公司使用了]

很早出现的NoSql数据库;
数据都在内存中,一般不持久化;
支持简单的key-value模式,支持类型单一;
一般是作为缓存数据库辅助持久化的数据库。

2.Redis(内存数据库)[支持持久化,可以落盘]

当内存数据和磁盘数据产生冲突时,Redis数据库会优先选择内存为主要依据,因为内存数据比磁盘数据全,只有当内存的数据都丢失了,才会去磁盘获取数据;
它几乎覆盖了Memcached的绝大部分功能;
数据都在内存中,支持持久化,主要用作备份恢复;
除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。
—>>>
Redis数据库一般是作为缓存数据库辅助持久化的数据库

3.Mongodb(文档数据库)(一般会作为数据源)(它不善于做复杂的事务)

高性能、开源、模式自由(schema free)的文档型数据库;
数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘;
虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能;
支持二进制数据及大型对象;
可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。

4.Hbase(列数据库)(与Redis数据库不同,Hbase以磁盘中的数据为主,以内存的数据为次要的)

HBase是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中;
HBase的目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10亿行数据,还可处理有数百万列元素的数据表。