Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念
Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念
在学习redis之前我们先来学习两个概念,即什么是关系型数据库什么是非关系型数据库,二者的区别是什么,二者的关系又是什么?
**
关系型数据库
**
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
1.
关系型数据库是依据关系模型来创建的数据库。
2.
所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
3.
关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
4.
关系模型是我们生活中能经常遇见的模型,存储这类数据一般用关系型数据库
5.
关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。
**
非关系型数据库
**
非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL(StructuredQueryLanguage,结构化查询语言),据维基百科介绍,NoSQL最早出现于1998 年,是由Carlo Storzzi最早开发的个轻量、开源、不兼容SQL 功能的关系型数据库,2009 年,在一次分布式开源数据库的讨论会上,再次提出了NoSQL 的概念,此时NoSQL主要是指非关系型、分布式、不提供ACID (数据库事务处理的四个基本要素)的数据库设计模式。同年,在亚特兰大举行的“NoSQL(east)”讨论会上,对NoSQL 最普遍的定义是“非关联型的”,强调Key-Value 存储和文档数据库的优点,而不是单纯地反对RDBMS,至此,NoSQL 开始正式出现在世人面前。,存储方式有更多的选择:"键-值"对存储,列存储,文档存储,图形数据库等,没有声明性查询语言,没有预定义的模式,非结构化和不可预知的数据,高性能,高可用性和可伸缩性。
关系型数据库与非关系型数据库的使用场景与优缺点
关系型数据库
优点:
1.安全,严谨:
事务支持使得对于安全性能很高的数据访问要求得以实现。:链接:https://blog.csdn.net/pjh88/article/details/107574137)
而且数据存储在硬盘上不容易丢失
2.方便使用:
SQL语言通用,学习成本低
3.易于维护:
都使用表结构,格式一致
4.复杂查询:
:可用于多个表之间非常复杂的查询
缺点:
1.读写性能比较差,尤其是海量数据的读写,要不断进行io操作
2.固定的表结构,灵活性稍欠
3.高并发的读写需求,传统关系型数据库来说,硬盘i/o是一个很大的瓶颈
非关系型数据库:
优点:
1、格式灵活:
存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2.高拓展性
数据是基于键值对的,数据之间没有耦合性,所以非常容易水平拓展
3.性能高:
nosql是基于键值对的,可以想象成表中主键与值的关系,而且不需要经过sql层的解析,性能非常高
4.成本低:
noslq部署简单,基本都是开源的
缺点:
1.没有标准化,不提供slq支持,学习使用成本高
2.没有事务的处理
3.数据结构相对复杂,复杂查询方面稍欠,即有限的查询功能
关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据
主流的noslq产品:
• 键值(Key-Value)存储数据库
相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化
• 列存储数据库
相关产品:Cassandra, HBase, Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限
• 文档型数据库
相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型: 一系列键值对
优势:数据结构要求不严格
劣势: 查询性能不高,而且缺乏统一的查询语法
• 图形(Graph)数据库
相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
以上就是关系型数据库与非关系型数据库的优缺点及概念,这也是我JAVA redis系列的第一篇,后面我会继续更新,写作不易,请各位老铁点个赞支持一下,觉得有帮助的也可以收藏呀,我会经常更新文章,也可以关注我呀