【面试必备】非关系数据库的优缺点及四大分类

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 【面试必备】非关系数据库的优缺点及四大分类

一、NoSql简介

NoSQL (Not Only SQL ),意即不仅仅是SQL , 泛指非关系型的数据库。Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。


1、关系型数据库

关系型数据库代表:mysql,oracle,sqlserver


特点:


`1. 以表结构存储数据
 2. 表与表之间存在关系
 4. 持久化数据到硬盘
 6. 支持事务控制
 5.用于传统项目 数据安全性(钱)
 数据库事务必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。`

2、非关系型数据库

非关系型数据库代表:redis,HBase,Mongodb


非关系型特点:


 `1. 不以表结构存储数据
 2. 也没有关系
 3.  事务弱化,没有事务   
 4.  数据存储在内存
 5. 大数据相关项目,核心考虑:程序运行效率,弱化事务`

内存 贵 数据处理效率快[NoSql]

硬盘 廉价 数据处理效率慢[Sql]


3、对象型数据库【对象型数据库】

存储对象的,已经被淘汰


二、NoSQL有什么用

1、Nosql的优点

随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。


如:


商城网站中对商品数据频繁查询、


对热搜商品的排行统计、


订单超时问题、


以及微信朋友圈(音频,视频)存储等相关使用传统的关系型数据库实现就显得非常复杂,


虽然能实现相应功能但是在性能上却不是那么乐观。


nosql这个技术门类的出现,更好的解决了这些问题,它告诉了世界不仅仅是sql。


nosql主要针对大数据处理!


2、Nosql的优缺点

(1)非关系型数据库优点:

海量数据的增删改查是可以的。

海量数据的维护和处理非常轻松。

NoSql具有扩展简单、高并发、高稳定性、成本低廉的优势。

可以实现数据的分布式处理。


(2)非关系型数据库缺点:

NoSql暂时不提供sql支持,会造成开发人员额外学习的成本。

数据和数据没有关系,他们之间就是单独存在的。

非关系数据库没有关系,没有强大的事务关系,没有保证数据的完整性和安全性适合处理海量数据,保证效率,不一定安全。

持久化的性能低。

出道时间短,功能没有关系型数据库完善。

NoSql的架构特性决定了其很难保证数据得完整性,适合一些特殊的应用常见使用。


贵 内存比较贵


效率越高 数据安全性低


3、目前开发主流 关系型数据库+非关系型数据

核心数据(关系型数据)+次要数据(非关系型数据库)


三、NoSql数据库的四大分类

1、键值(key-value)存储数据库

(1)键值型

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。


(2)特点

Key/value模型对于IT系统来说的优势在于简单、易部署。


但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。


(3)相关产品

`Tokyo Cabinet/Tyrant,
Redis key value  内存
Ssdb  key value  磁盘
Voldemort 
Oracle BDB`

2、列存储数据库,海量存储

`# 1.说明
- 这部分数据库通常是用来应对分布式存储的海量数据。 传统应用 互联网  大数据领域(key指向多个列)
# 2.特点
- 键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。 
# 3.相关产品
- Cassandra、HBase(hadoop)、Riak.`

3、文档性数据库

`# 1.说明
- 文档型数据库的灵感是来自于Lotus Notes办公软件的,
   而且它同第一种键值存储相类似该类型的数据模型是版本化的文档
   ,半结构化的文档以特定的格式存储,比如JSON。
   文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高
# 2.特点
- 以文档形式存储
# 3.相关产品
- MongoDB、CouchDB、
  MongoDb(4.x)(单条支持事务) 
  mysql inndb 单条加锁 
  myisam 表. 国内也有文档型数据库SequoiaDB,已经开源。`

4、图形(Graph)数据库(阿里云 OSS 对象存储 图片 视频 音频)

`# 1.说明
- 图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,
   并且能够扩展到多个服务器上。
- NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。
  许多NoSQL数据库都有REST式的数据接口或者查询API。
# 2.特点
# 3.相关产品
- Neo4J、InfoGrid()、 Infinite Graph、`

五、NoSQL应用场景

数据模型比较简单


需要灵活性更强的IT系统


对数据库性能要求较高


不需要高度的数据一致性


相关实践学习
使用DAS实现数据库SQL优化
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。
相关文章
|
9月前
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块,动态控制不同参数(如红绿蓝三色值),并实时显示最终结果。我们将以动态颜色调节为例,展示如何结合状态管理和交互逻辑,打造一个高级的滑块控制器应用。
270 78
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
|
10月前
|
存储 Kubernetes 调度
如何驱逐某个节点上到某些名称空间的pod到其他节点
在 Kubernetes (k8s) 中,驱逐某个节点上特定命名空间的 Pod 到其他节点可以通过以下步骤实现: ### 步骤一:找到要驱逐的 Pod 首先,你需要找到位于特定命名空间并且运行在目标节点上的 Pod。你可以使用 `kubectl get pods` 命令并指定 `-o wide` 和 `--namespace` 参数来获取这些信息。 ```bash kubectl get pods -o wide --namespace=<your-namespace> ``` 此命令将返回指定命名空间中的所有 Pod,并显示它们的详细信息,包括所在的节点名称。 ### 步骤二:标记
792 4
|
11月前
|
缓存 网络协议 前端开发
dns-prefetch DNS 预解析
dns-prefetch DNS 预解析
|
6月前
|
运维 安全 持续交付
Websoft9 运维面板有多好用,试了才知道
Websoft9 运维面板以开源应用全生命周期管理为核心,内置 ​200+ 应用模板,支持 WordPress、Magento 等一键部署,10 分钟完成复杂环境搭建,对比宝塔节省 80% 手动配置时间。其基于 ​GitOps 架构,实现代码与数据分离管理,支持持续部署与回滚。安全层面提供全链路防护,覆盖漏洞扫描、WAF 防御及一键修复,资源占用仅为 cPanel 的 1/3,适配多云及 Docker/K8s 生态。相较于宝塔,Websoft9 在开源适配深度、自动化能力及轻量化设计上优势显著,尤其适合企业级 SaaS 与开发者。
191 0
Elasticsearch【问题记录 02】【不能以root运行es + max virtual memory areas vm.max_map_count [65530] is too low处理】
【4月更文挑战第12天】Elasticsearch【问题记录 02】【不能以root运行es + max virtual memory areas vm.max_map_count [65530] is too low处理】
196 3
|
存储 SQL 机器学习/深度学习
阿里云数加大数据计算服务MaxCompute学习路线图:从入门到精通
将所学知识应用于实际工作中并不断进行实践和创新是提升技术能力的关键所在。用户可以结合业务需求和技术发展趋势积极探索新的应用场景和解决方案,并在实践中不断总结经验和教训以提升自己的技术水平和实践能力。
|
Java 编译器 程序员
Java异常处理和最佳实践(含案例分析)
如何处理Java异常?作者查看了一些异常处理的规范,对 Java 异常处理机制有更深入的了解,并将自己的学习内容记录下来,希望对有同样困惑的同学提供一些帮助。
13404 3
Java异常处理和最佳实践(含案例分析)
|
存储 消息中间件 缓存
Redis:内存数据存储与缓存系统的技术探索
**Redis 概述与最佳实践** Redis,全称Remote Dictionary Server,是流行的内存数据结构存储系统,常用于数据库、缓存和消息中介。它支持字符串、哈希、列表等数据结构,并具备持久化、主从复制、集群部署及发布/订阅功能。Redis适用于缓存系统、计数器、消息队列、分布式锁和实时系统等场景。最佳实践包括选择合适的数据结构、优化缓存策略、监控调优、主从复制与集群部署以及确保安全配置。
278 3
|
存储 Java
Java中的for循环语句深入解析
Java中的for循环语句深入解析
284 0
|
机器学习/深度学习 人工智能 算法
构建未来:AI驱动的自适应网络安全防御系统
【5月更文挑战第11天】在数字时代的风口浪尖,网络安全问题日益凸显。传统的安全防御手段在应对不断进化的网络威胁时显得力不从心。本文提出了一个基于人工智能技术的自适应网络安全防御系统框架,旨在通过实时分析、学习和预测网络行为,自动调整防御策略以抵御未知攻击。系统采用先进的机器学习算法和大数据分析技术,能够在保持高效性能的同时,最小化误报率。文章详细阐述了系统的设计理念、关键技术组件以及预期效果,为网络安全的未来发展方向提供新思路。