打算跳槽的Java程序员一定要看完:谈谈你对NoSQL的理解

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介: NoSQL呢常见的解释有Non-Relational SQL或者Not Only SQL,不过Not Only SQL被更多人接受,一般泛指非关系型数据库。它和关系型数据库不同的是,不保证关系数据的ACID特性。

有粉丝给我留言说,希望我更新一期关于NoSQ的视频,那今天,咱们就来聊一聊我对NoSQL的理解。如果你也有想要我分享的面试题,请在评论区告诉我,后续安排。

另外,我花了1个多星期,准备了一份10W字的面试题解析配套文档,想获取的小伙伴可以扫描文章底部二维码领取!

1、什么是NoSQL?

NoSQL呢常见的解释有Non-Relational SQL或者Not Only SQL,不过Not Only SQL被更多人接受,一般泛指非关系型数据库。它和关系型数据库不同的是,不保证关系数据的ACID特性。

cb66bed51768fca65f0ad50756f0a1ca.jpg

随着互联网的发展,NoSQL数据库的产生就是为了解决超大规模和高并发系统中多重数据种类带来的挑战,特别是大数据应用的难题。目前具有代表性的NoSQL数据库有Redis、HBase、ES、MongoDB等等。

f870007b4f0eef0dd8a0a51bc99ea49a.jpg

NoSQL非常适合以下几个场景:

e5abdd978bc4e3ee95e83ef81580f513.jpg

1、数据模型比较简单;

2、需要灵活性更强的数据库;

3、对数据库性能要求较高;

4、不需要高度的数据一致性;

5、对于给定Key,比较容易映射复杂值的环境。

2、NoSQL分类

通常来说,现在主流的NoSQL数据库可以分为四大类:K-V键值数据库、列存储数据库、文档数据库和图形数据库。

a46c806b845e3d2f750390c3aa3d5ad7.jpg

首先来看,K-V键值数据库,主要应用于内容缓存、处理大量数据的高负载访问,也可以用于记录系统日志。比较有代表性的产品有Redis、Memcached等等。

850fec62aa82a468ba113c24f3ec9083.jpg

其次是,列存储数据库,主要应用于布式数据的储存与管理,分布式可扩展性强,比较有代表性的产品有HBase、HadoopDB、BigTable等等。

image.jpeg


然后就是,文档数据库,主要应用于管理半结构化数据或者面向文档的数据,比较有代表性的产品有MongoDB,ES等等,当然,ES不仅仅只是数据库,它还是一个分布式搜索引擎,是基于Lucene来开发的,现在已经发展成为一个自有生态Elastic Stack。

c984c96d9982ec48cb868c8c1ec92ebd.jpg

最后就是,图形数据库,主要应用于复杂、互连接但又低结构化的图结构场合,可以用来构建数据关系图谱,Neo4J、InfoGrid、GraphDB等等。

9eb3013a38f6ce0609f4e3b9a0fd731e.jpg

下面我把四种分类的NoSQL数据库整理成了一个表格,并总结了它们的优缺点

image.jpeg

3、主流NoSQL对比

对于NoSQL数据库对互联网开发的重要性就不多说了,在互联网分布式开发场景中,我认为掌握Redis、HBase、Elastic、MongoDB就能满足绝大部分需求。

image.png


如果对数据的读写要求极高,并且数据规模不大,也不需要长期存储,那就选Redis;

如果数据规模较大,对数据的读性能要求很高,数据表的结构需要经常变,有时还需要做一些聚合查询,那就选MongoDB;

如果要构造一个搜索引擎或者要完成一个高大上的数据可视化平台,并且数据本身也具有分析价值,就选ES;

如果你要存储海量数据,而且还不能预估数据规模将来会增长多么大,那么选HBase。

这里我也整理了一种表格,大家可以保存一下

6abaff140ed7781cc9669522b6b89c61.jpg

最后,再给大家来个更加形象的对比:

Redis就相当于开战斗机,MongoDB就相当于坐高铁,HBase就相当于航母,ES那就是帝国铁骑,山地装甲机器人

好了,以上就是我对NoSQL的理解。

最后,我把之前分享的视频全部整理成了文字,想获取的小伙伴可以扫描文章底部二维码拿!希望能够以此来提高各位粉丝的通过率。

image.gif


我是被编程耽误的文艺Tom,只弹干货不掺水!你们的支持就是我最大的动力!关注我,面试不再难!





相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
28天前
|
Java 程序员 C++
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
|
6天前
|
设计模式 前端开发 Java
Spring,作为Java程序员的你能想到什么呢?
该文章主要介绍了Spring框架对于Java程序员的意义,包括Spring框架的一些核心能力和为什么它是如此重要。
|
2月前
|
IDE Java 程序员
JAVA注解大揭秘:为何程序员都爱它如命?
【6月更文挑战第29天】Java注解是元数据机制,用于在代码中嵌入信息供编译器、IDE和工具使用。它们以`@`标识,可用于类、方法等,用于编译时检查、代码生成(如Lombok的`@Getter`、`@Setter`)、框架集成(如Spring的`@Autowired`)。程序员喜欢注解因其简洁性、可读性和可扩展性,能减少冗余代码并增强代码的可理解性。
41 15
|
2月前
|
JSON Java fastjson
老程序员分享:java对象转json
老程序员分享:java对象转json
93 3
|
2月前
|
机器学习/深度学习 Java 关系型数据库
程序员必知:关于高淇JAVA中SORM总结学习笔记详细个人解释
程序员必知:关于高淇JAVA中SORM总结学习笔记详细个人解释
27 2
|
2月前
|
Java 程序员
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
70 3
|
2月前
|
自然语言处理 Java 程序员
老程序员分享:Java的标识符
老程序员分享:Java的标识符
15 0
老程序员分享:Java的标识符
|
2月前
|
NoSQL Java 程序员
写给迷茫的java程序员朋友!
写给迷茫的java程序员朋友!
|
2月前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
2月前
|
算法 Java 程序员
老程序员分享:Java开源
老程序员分享:Java开源
20 0