什么是NoSQL?为什么要使用NoSQL数据库?

大数据对数据存储的挑战(3V):

  • 海量(Volume):数据总量大

  • 多样(Variety):数据类型多

  • 实时(Velocity):数据处理速度快

ACID理论:(事务的基本特性)

  • A(Atomicty)原子性: 事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

  • C(Consistency)一致性: 事务前后数据的完整性必须保持一致。

  • I(Isolation)独立性: 多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

  • D(Durability)持久性: 一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

BASE理论:

  • BA(Basically Available)基本可用: 分布式系统在出现不可预知的故障的时候,允许损失部分可用性——但请注意,这绝不等价于系统不可用。

  • S(Soft state)软状态: 指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

  • E(Eventually Consistent)最终一致: 系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。

CAP原则:(分布式基本理论)

  • C(Consistency)一致性: 数据复制的时候,按照强一致性的方式进行数据复制。保证了在读操作总是能够读取到之前写入的数据,无论从那个主数据或者副本数据。

  • A(Availability)可用性: 数据写入成功后,正在进行数据复制时,任何一个副本节点发生异常也不会影响此次写入操作。可以理解为,此时数据的复制采用的是弱一致性,数据的读写操作在单台集器发生故障的情况下仍然可以正常执行。

  • P(Partition tolerance)分区容错性: 在服务实例发生异常时,分布式系统任然能够满足一致性和可用性。

在这里插入图片描述

NoSQL的特点:

  • 易扩展: NoSQL数据库中的数据之间是无关系的,这就使得数据库可以非常容易地扩展。

  • 高性能: NOSQL数据库具有高并发读写性能,适合处理海量的数据

  • 灵活的数据模型: NoSQL数据库不需要实现存储的数据建立相应的字段,用户可以随时存储自定义的各种数据格式。

  • 高可用: NoSQL在不太影响性能的情况下,可以方便地实现高可用的架构。

  • 低成本: nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜

NoSQL的缺点:

  • 维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。

  • 不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。

  • 不提供关系型数据库对事务的处理。

非关系型数据库和关系型数据库比较


目前的数据库主要分为关系行数据库和非关系型数据库两类,二者在多方面均有区别,各有优势:

在这里插入图片描述

  • 存储方式: 传统数据库采用表的格式进行存储,数据以行和列的方式进行存储,读取和查询十分方便。而非关系型数据库不适合以表的格式进行存储,而是以数据集的方式进行存储,没有固定的格式,类似于键值对、图结构或者文档,可以可以很方便的进行扩展。

  • 存储结构: 关系型数据库按照结构化的方式存储数据,每张数据表都必须实现定义好数据表的表结构,然后再根据表结构对数据进行存储。而非关系型数据库采用的是动态结构,如果面对大量的非结构化数据,它可以非常轻松地适应数据类型和结构的改变,也可以根据需要改变数据表的结构。

  • 存储规范: 关系型数据库将数据按照最小关系表的形式进行存储,这样数据管理就变得清晰,但是随着数据表数量的增加,数据的管理会变得十分困难。非关系型数据库的数据存储方式是用平面数据集的方式存放,虽然会出现数据重复存放造成空间浪费的问题,但是通常单独的数据库都是采用单独存储的形式,将数据存为一个整体,对于大量数据的读写十分方便。

  • 扩展方式: 关系型数据库将数据存储到表中,随着表数量的增多,进行多表操作时会出现I/O瓶颈,想要解决这个问题,可以选择提高处理能力,选择更好的硬件设施,当时名不能彻底解决问题,而非关系型数据库使用的时数据集的方式,存储方式是分布式的,可以通过水平扩展的方式扩展数据库。

  • 查询方式: 关系型数据库采用结构化查询语言(SQL),可以执行更复杂的操作,而非关系型数据库使用的是非结构化语言(UnQL),并没有统一的标准,不同的数据库厂商提供的方式可能比不一样。

  • 规范化: 在关系型数据库中,一个数据实体会被分割为多个部分,然后对分割后的数据进行规范化处理,之后在将数据存储到多张关系数据表中,过程相对复杂。而非关系数据库没有这方面的问题,不需要规范化数据,通常会在一个单独的数据单元中存储一个复杂的数据实体。

  • 事务性: 关系型数据库遵循ACID规则,而非关系型数据库则强调BASE原则。

  • 读写性能: 关系型数据库强调数据的一致性为此降低了数据的读写性能,对于海量数据的处理效率很低。而非关系型数据库可以很好的应对海量数据。

  • 授权方式: 关系型数据库包括Oracle、SQL server 、DB2、MySQL等,除MySQL外其它大多数都是非开源的,需要支付高昂的使用费。非关系型数据库包括Redis、HBase、MongoDB、Memcache等都是开源的(企业版除外)

关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)

image

image

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

12889155202)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-sIQNzlFB-1712889155202)]

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值