什么是NoSQL
not only SQL,不仅仅是SQL,是一种新的数据库理念,泛指非关系型的数据库
为什么需要NoSQL
高并发——对数据库高并发读写的需求
高负载——对海量数据的高效率存储和访问的需求
高扩展——对数据库的高扩展性和高可用性的需求
NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题
主流NoSQL产品
Redis Cassandra MongoDB membase HBASE
NoSQL数据库的四大分类
键值存储数据库
产品:Redis,voldemort,Berkeley DB
应用:内容缓存,主要用于处理大量数据的高访问负载
数据模型:一系列键值对
优势:快速查询
劣势:存储的数据缺少结构化
列存储数据库
产品:HBASE
应用:分布式的文件系统
数据模型:以列模式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限
文档型数据库
产品:MongoDB CouchDB
应用:web应用(与key-value类型,value是结构化的)
数据模型:一系列键值对
优势:数据结构要求不严格
劣势:查询性能不高,而且缺乏统一的查询语法
图形(Graph)数据库
产品:Neo4j InfoGrid
应用:社交网络
数据模型:图结构
优势:利用图结构相关算法
劣势:需要对整个图做计算才能得出结构,不容易做分布式的集群方案
NoSQL特点
易扩展:NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的 关系型特征。数据之间无关系,这样就非常容易扩展,无形中在架构的层面上带来了可扩展的能力
大数据量、高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于他的无关系性,数据库的结构简单
灵活的数据模型:NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的 数据格式。而在 关系型数据库里,增删字段是很麻烦的,特别是非常大数据量的表。
高可用:NoSQL在不太影响性能的情况下,就可以方便的实现高可用的架构,比如Cassandra,HBASE模型,通过复制模型也能实现高可用