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

随着云计算、物联网等新一代技术的发展,在移动计算、社交网络的推动下,大数据技术产生并迅速地建立起生态体系。然而,大数据在推动技术变革的同时,企业对海量数据的存储、并发访问、扩展等要求越来越高。而基于ACID原则的传统关系型数据库开始出现了瓶颈。
在这里插入图片描述

这时出现了NoSQL数据库,(NoSQLNot Only SQL),意即“不仅仅是数据库”,是一项全新的数据库理念,其为解决海量数据的存储、并发访问以及拓展而产生,具有数据模型灵活、并发访问度高、易于扩展和伸缩、开发效率高以及开发成本低等优点,能够解决大规模数据集合多重数据种类挑战,尤其是大数据应用难题。
在这里插入图片描述

必须了解的基本理论

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

  • 高并发读写需求: 对于实时性、动态性要求较高的社交网站,往往需要并发度达到每秒上万次的读写请求,需要数据库有着极高的并发负载。
  • 高性能存储和访问需求: 随着动态交互网站Web2.0的兴起,产生的数据爆发式增长,面对海量的数据传统的数据库的效率非常低,对于非关系型数据库是基于键值对的,数据处理过程不需要经过SQL层的解析,效率相对很高。
  • 高扩展性: 传统的关系型数据库很难实现水平扩展,当需要扩容时,关系型数据库往往需要进行停机维护与数据迁移,而这对于24小时不间断服务的网站显然是不可取的,而对于非关系型数据库是基于键值对,数据之间没有耦合性,能够非常容易水平扩展。

大数据对数据存储的挑战(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数据库对关系型数据库的不足进行弥补。

一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据。

NoSQL数据库的分类

数据库分类数据类型常见数据库优势劣势应用场景
键值对存储数据库Key指向 Value的键值对Redis、Tokyo Cabinet/Tyrant、Voldemort、Oracle BDB快速查询存储的数据缺少结构化会话存储、网站购物车等
文档存储数据库BSON类型(二进制JSON)MongoDB、CouchDB、RavenDB数据结构要求不严格查询性能不高,而且缺乏统一的查询语法内容管理应用程序、电子商务应用程序等
列式存储数据库将同列数据存到一起HBase、Cassandra、Riak查找速度快,可扩展性强功能相对局限日志记录、博客网站等
图形存储数据库图结构Neo4J、FlockDB、AllegroGrap、GraphDB利用图结构相关算法需要对整个图做计算,不容易做分布式的集群方案欺诈检测、推荐应用等
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙源lll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值