关系型数据库:
简介:
建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。强调实体和实体之间的联系。
优点:
1. 保持数据的一致性(最大优势)
2. 数据更新开销小(数据表设计满足范式规范,相同的字段基本上只保留一处)
3. 可以进行表间级联Join等复杂操作
缺点:
1. 大量数据写入处理(负载高,处理慢)
2. 大规模数据集合多重数据种类处理困难(针对超大规模和高并发的动态网站问题)
3. 字段不固定的应用场景(表结构经常变更风险高)(扩展性差)
4. 对简单查询需要快速返回结果的处理(处理简单查询时额外开销较大)
非关系型数据库(NoSQL):
简介:
针对关系型数据库的不足,为了应用于特定领域的数据库。
适用场景:
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。
与关系型数据库区别:
关系型数据库是二维表结构,关系型数据库是由二维表以及表间关系组成的一个数据组织。
而关系型数据库是一种数据结构化存储方法的集合,主要目的是提高海量数据的存储性能。
图1 关系型数据库模型
图2非关系型数据库模型
优点:
1.易于处理没有明确关系的分散数据
2.便于大量数据写入操作
3.减少每个服务器上的数据量
缺点:
1. 处理数据时思维方式不同,应用困难
2. 不具备表间级联Jion等处理能力
3. 无法确保数据一致性
分类:
分类 | 实例 | 应用场景 | 数据模型 | 优点 | 缺点 |
(key-value) |
Redis
Oracle BDB |
1.内容缓存 2.大量数据的高访问负载 3.日志系统 |
Key 指向 Value 的键值对,通常用hash table来实现 |
1.查找速度快
2.简单、易部署 |
数据无结构化,通常只被当作字符串或者二进制数据 |
列存储数据库 |
Cassandra
HBase |
分布式文件系统 |
以列簇式存储,将同一列数据存在一起,以列为单位读入数据 |
1.查找速度快 2.可扩展性极强,数据增加不会降低处理速度 3.容易进行分布式扩展 4.方便对大量行、少量列进行读取 5.对所有行的特定列进行同时更新 |
功能相对局限 |
文档型数据库 |
CouchDB
MongoDb |
Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) |
1.不定义表结构,避免表结构频繁变更问题
2.允许使用复杂查询条件 |
数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 |
查询性能不高,而且缺乏统一的查询语法。 |
图形(Graph)数据库 | I nfoGrid
Infinite Graph |
社交网络,推荐系统等。专注于构建关系图谱 |
图结构,方便扩展 |
利用图结构相关算法。比如最短路径寻址,N度关系查找等 |
很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。 |