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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 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
相关文章
|
24天前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
49 9
|
3月前
|
存储 算法 Java
惊!Java程序员必看:JVM调优揭秘,堆溢出、栈溢出如何巧妙化解?
【8月更文挑战第29天】在Java领域,JVM是代码运行的基础,但需适当调优以发挥最佳性能。本文探讨了JVM中常见的堆溢出和栈溢出问题及其解决方法。堆溢出发生在堆空间不足时,可通过增加堆空间、优化代码及释放对象解决;栈溢出则因递归调用过深或线程过多引起,调整栈大小、优化算法和使用线程池可有效应对。通过合理配置和调优JVM,可确保Java应用稳定高效运行。
140 4
|
3月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
70 9
|
3月前
|
Java 程序员
Java数据类型:为什么程序员都爱它?
Java数据类型:为什么程序员都爱它?
54 1
|
9天前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
21天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
27天前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
21 5
|
1月前
|
Java 大数据 程序员
我的程序员之路:自学Java篇
我的程序员之路:自学Java篇
|
1月前
|
存储 NoSQL Java
Java中NoSql 数据库的使用
Java中NoSql 数据库的使用
24 0
|
1月前
|
存储 NoSQL Java
使用 Java 了解和学习 NoSQL 数据库:三个主要优势
使用 Java 了解和学习 NoSQL 数据库:三个主要优势
16 0