NoSQL数据库以及架构介绍

文章目录

  • [一. 什么是NoSQL?](#一. 什么是NoSQL?)
  • [二. NoSQL分类](#二. NoSQL分类)
  • [三. NoSQL与关系数据库有什么区别](#三. NoSQL与关系数据库有什么区别)
  • [四. NoSQL主要优势和缺点](#四. NoSQL主要优势和缺点)
  • [五. NoSQL体系框架](#五. NoSQL体系框架)

其它相关推荐:
系统架构之微服务架构
系统架构设计之微内核架构
鸿蒙操作系统架构
架构设计之大数据架构(Lambda架构、Kappa架构)
所属专栏:系统架构设计师

一. 什么是NoSQL?

NoSQL(Not-onlySQL):不仅仅只是SQL,泛指非关系型的数据库。

是对关系型数据库的补充和完善,它不使用传统的表格模式,而是使用其他的数据模型来存储数据。NoSQL数据库非常适合处理大规模的非结构化或半结构化数据,具有高可扩展性、高灵活性、高性能、高可用性等特点。常见的NoSQL数据库包括MongoDB、Cassandra、Redis等。

二. NoSQL分类

  1. 键值(key-value)
  • 这种类型的数据库有Redis、Memcached、Tokyo Cabinet/Tyrant、Voldement、Oracle BDB
  • 典型应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。
  • 数据模型:key 指向 value 的键值对,通常用hash table来实现。
  • 优点:查找速度快。
  • 缺点:数据无结构化,通常只被当作字符串或者二进制数据。
  1. 列存储数据库
  • 这种类型的数据库有Hbase、Cassandra、Riak
  • 典型应用场景:分布式的文件系统。
  • 数据模型:以列簇式存储,将同一列数据存在一起。
  • 优点:查找速度快,可扩展性强,更容易进行分布式扩展。
  • 缺点:功能相对局限。
  1. 文档型数据库
  • 这种类型的数据库有MongoDB、CouchDB
  • 典型应用场景:Web应用(与key-value类似,value是结构化的,不同的是数据库能够了解value内容)
  • 数据模型:key-value对应的键值对,value为结构化数据。
  • 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样预先定义表结构。这种数据库类型按照文档格式(如JSON、XML等)来存储数据,数据之间可以有嵌套关系,具有更好的灵活性,支持各种复杂的数据结构。支持动态模式、可扩展性好、数据结构灵活。
  • 缺点:查询性能不高,而且缺乏统一的查询语法。
  1. 图形数据库(Graph)
  • 这种类型的数据库有Neo4J、InfoGrid、Infinite Graph
  • 典型应用场景:社交网络,推荐系统等。专注于构建关系图谱。
  • 数据模型:图结构。
  • 优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等。
  • 缺点 :很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式存的集群方案。

三. NoSQL与关系数据库有什么区别

对比维度 关系数据库 NoSQL
应用领域 面向通用领域 特定应用领域
数据容量 有限数据 海量数据
数据类型 结构化数据(二维表) 非结构化数据
并发支持 支持并发,但性能低 高并发
事务支持 高事务性 弱事务性
扩展方式 向上扩展 向外扩展

与关系型数据库相比,NoSQL数据库对数据之间的关系的处理更加灵活,因此可以满足更多种类的应用场景,例如大数据、云计算、分布式存储等。

四. NoSQL主要优势和缺点

主要优势:

(1)避免不必要的复杂性

(2)高吞吐量

(3)高水平扩展能力和低端硬件集群

(4)避免了昂贵的对象-关系映射

缺点:

(1)数据模型和查询语言没有经过数学验证

(2)不支持ACID特性

(3)功能简单

(4)没有统一的查询模型

五. NoSQL体系框架

NoSQL数据库整体框架分为四层,分别为数据持久层(data persistence)、整体分布层(data distribution model)、数据逻辑模型层(data logical model)和接口层(interface),这四层之间是相辅相成,协调工作。

数据持久层定义了数据的存储形式,主要包括基于内存、硬盘、内存与硬盘相结合、订制可插拔四种形式。基于内存形式的数据存取速度最快,但可能会造成数据丢失;基于硬盘的数据可能保存很久,但存取速度较基于内存的形式慢;内存和硬盘相结合的形式,结合了前两种形式的优点,既保证了速度,又保证了数据不丢失;订制可插拔则保证了数据存取具有较高的灵活性。

整体分布层定义了数据是如何分布的,相对于关系型数据库,NoSQL可选的机制比较多,主要有三种形式:一是CAP支持,可用于水平扩展。

数据逻辑模型层定义了数据之间的联系和操作方式,主要包括文档、键值对、图像、列存储等。

接口层定义了与数据访问相关的接口,包括查询、索引、事务、权限等。

其它相关推荐:
系统架构之微服务架构
系统架构设计之微内核架构
鸿蒙操作系统架构
所属专栏:系统架构设计师

相关推荐
Java探秘者7 分钟前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
2301_7869643613 分钟前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
千年死缓1 小时前
go+redis基于tcp实现聊天室
redis·tcp/ip·golang
阿维的博客日记1 小时前
图文并茂解释水平分表,垂直分表,水平分库,垂直分库
数据库·分库分表
wrx繁星点点2 小时前
事务的四大特性(ACID)
java·开发语言·数据库
_.Switch3 小时前
Python机器学习框架介绍和入门案例:Scikit-learn、TensorFlow与Keras、PyTorch
python·机器学习·架构·tensorflow·keras·scikit-learn
小小娥子3 小时前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
DieSnowK3 小时前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
-XWB-3 小时前
【MySQL】数据目录迁移
数据库·mysql
老华带你飞3 小时前
公寓管理系统|SprinBoot+vue夕阳红公寓管理系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·课程设计