NoSQL
一.NoSQL
1.什么是NoSQL
NoSQL:not only SQL,非关系型数据库
NoSQL是一个通用术语
- 指不遵循传统RDBMS模型的数据库
- 数据是非关系的,且不使用SQL作为主要查询语言
- 解决数据库的可伸缩性和可用性问题
- 不针对原子性或一致性问题
注:非原子性:字段可拆
2.为什么使用NoSQL(NoSQL优点)
- 高并发读写
- 高存储量
- 高可用性
- 高扩展性
- 低成本
3.NoSQL和关系型数据库对比
| 对比 | NoSQL | 关系型数据库 |
|---|---|---|
| 常用数据库 | HBase、MongoDB、Redis | Oracle、DB2、MySQL |
| 存储格式 | 文档、键值对、图结构 | 表格式,行和列 |
| 存储规范 | 鼓励冗余 | 规范性,避免重复 |
| 存储扩展 | 横向扩展,分布式 | 纵向扩展(横向扩展有限) |
| 查询方式 | 结构化查询语言SQL | 非结构化查询 |
| 事务 | 不支持事务一致性 | 支持事务 |
| 性能 | 读写性能高 | 读写性能差 |
| 成本 | 简单易部署,开源,成本低 | 成本高 |
4.NoSQL的特点
- 最终一致性
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
- NoSQL != 大数据
NoSQL产品是为了帮助解决大数据存储问题
大数据不仅仅包含数据存储的问题
Hadoop
Kafka
Spark, etc
5.NoSQL基本概念
-
三大基石
CAP、BASE、 最终一致性

-
Indexing(索引)、Query(查询)
-
MapReduce
-
Sharding
5.1 三大基石
(1)CAP理论
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Unw7SZGO-1600945337144)(C:\Users\86188\Desktop\截图\1.1.png)]
-
数据库最多支持3个中的2个
Consistency(一致性)
Availability(可用性)
Partition Tolerance(分区容错性) -
NoSQL不保证“ACID”
-
提供“最终一致性”
(2)BASE
- Basically Availble(基本可用)
保证核心可用 - Soft-state(软状态)
状态可以有一段时间不同步(即不保证过程一致性) - Eventual Consistency(最终一致性)
系统经过一定时间后,数据最终能够达到一致的状态
核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性
(3)最终一致性
- 最终结果保持一致性,而不是时时一致
- 如账户余额,库存量等数据需强一致性
- 如catalog等信息不需要强一致性
Causal consistency(因果一致性)
Read-your-writes consistency
Session consistency
5.2索引和查询
(1)Indexing(索引)
- 大多数NoSQL是按key进行索引
- 部分NoSQL允许二级索引
- HBase使用HDFS,append-only(仅追加)
批处理写入Logged
重新创建并排序文件
(2)Query(查询)
- 没有专门的查询语言,通常使用脚本语言查询
- 有些开始支持SQL查询
- 有些可以使用MapReduce代码查询
5.3MapReduce、Sharding
(1)MapReduce
- 不是Hadoop的MapReduce,概念相关
- 可进行数据的处理查询
(2)Sharding(分片)
-
一种分区模式
-
可以复制分片
有利于灾难恢复
6.NoSQL分类
| 分类 | 举例 | 典型应用场景 |
|---|---|---|
| 键值存储数据库(key-value) | Redis, MemcacheDB, Voldemort | 内容缓存等 |
| 列存储数据库(WIDE COLUMN STORE) | Cassandra, HBase | 应对分布式存储的海量数据 |
| 文档型数据库(DOCUMENT STORE) | CouchDB, MongoDB | Web应用(可看做键值数据库的升级版) |
| 图数据库(GRAPH DB) | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等,专注于构建关系图谱 |
6.1键值存储数据库(Key-Value)
- 通常用hash table来实现
可以通过key来添加、查询或者删除数据 - 常应用于内容缓存
储存用户信息,比如会话、配置文件、参数等等 - 不适用场景
需要事务支持场景

6.2列存储数据库(Wide Column Store)
- 将数据储存在列族
一个列族存储经常被一起查询的相关数据
每一个列族包含kv键值对的“列”,可以随行变化 - 应用于分布式数据存储与管理
- 优点
查找速度快
可扩展性强
容易进行分布式扩展

6.3文档型数据库(Document Store)
- 将数据以文档的形式存储
文档通常为JSON对象,也可以使用XML
每个文档都有属性和值
值可以是简单数据类型或复杂数据类型
数组、到其他数据库中的文档的链接或子文档 - 应用
存储、索引并管理面向文档的数据或类似的半结构化数据 - 优点
数据结构要求不严格,表结构可变
可以使用它储存不同的信息

6.4图数据库(Graph Databases)
- 将数据以图的方式储存
- 适用的场景
在一些关系性强的数据中
推荐引擎

7.NoSQL和BI、大数据的关系
- BI(Business Intelligence):商务智能
它是一套完整的解决方案
BI应用涉及模型,模型依赖于模式
BI主要支持标准SQL,对NoSQL支持弱于关系型数据库
- NoSQL和大数据相关性较高
通常大数据场景采用列存储数据库
如:HBase和Hadoop
本文深入探讨了NoSQL数据库,包括其非关系型特性、优点、与关系型数据库的对比,以及基本概念如CAP理论、BASE原则和最终一致性。NoSQL适用于高并发、高存储需求,提供了灵活的数据模型。文中还介绍了NoSQL的四大分类:键值存储、列存储、文档型和图数据库,并讨论了它们在大数据和BI中的角色。

334

被折叠的 条评论
为什么被折叠?



