NoSQL概念
NoSQL = Not Only SQL (不仅仅是SQL)
关系型数据库:表格、行、列
NoSQL泛指非关系型数据库的,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发社区,暴露出很多难以克服的问题。NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!
现在有很多的数据类型:用户的个人信息、社交网络、地理位置…这些数据的存储不需要一个固定的格式,不需要多余的操作就可以进行横向的扩展。所以我们用Map<String,Object>使用键值对来控制存储。
NoSQL特点
-
方便扩展
数据之间没有关系,很好扩展(解耦) -
大数据量高性能
Redis一秒写入8万次,读取11万次;NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高 -
数据库类型多样性
不需要实现设计数据库,速取随用,适合大数据量设计的表 -
RDBMS和NoSQL区别
传统的RDBMS(关系型数据库)
- 结构化组织
- SQL
- 数据和关系都存在单独的表中
- 数据操作、数据定义(琐碎)
- 严格的一致性
…
NoSQl(非关系型数据库)
- 不仅仅是数据
- 没有固定的查询语言
- 键值对存储,列存储,文档存储,图形数据库(社交关系)
- 最终一致性
- CAP定理和BASE(异地多活)
- 高性能、高可用、高可扩
…
3V与3高
- 大数据时代的3V
1.海量 Volume
2.多样 Variety
3.实时 Velocity - 互联网需求的三高
1.高并发
2.高可拓
3.高性能
在公司真实使用架构:NoSQL+RDBMS
NoSQL四大分类
kv键值对:
-新浪: Redis
-美团: Redis + Tair
-阿里: Redis + MemeCache
文档型数据库
- MongoDB
MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量的文档,它是介于关系型数据库和非关系型数据库中间的产品。MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的。- CothDB(国外产品)
列存储数据库
- HBase
- 分布式文件系统
图关系数据库
- 并非存储图形,而是存储关系
- Neo4j,infoGrid
四大分类的对比
分类 | Examples | 典型应用场景 | 数据模型 | 优点 | 缺点 |
---|---|---|---|---|---|
键值(key-value) | Tokyo Cabinet/Tyrant,Redis,Voldemort.Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等 | Key指向Value的键值对,通常用HashTable来实现 | 查找速度快 | 数据无结构化,通常只被当作字符串或者二进制数据 |
文档型数据库 | CouchDB,MongoDB | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 | 查询性能不高,而且缺乏统一的查询语法 |
列存储数据库 | Cassandra,HBase,Rlak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 | 功能相对局限 |
图形(Graph)数据库 | Neo4J,InfoGrid,Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法,比如最短路径寻址、N度关系查找等 | 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案 |