NoSQL数据库知识

NoSQL

NoSQL是一种非关系型,分布式,无需遵循ACID原则,不提供SQL功能的数据库。
其特点有:易扩展,数据种类繁多;高性能,支持高并发读写;灵活的数据模型,随时存储各种形式的数据;高可用。
能够实现海量数据的存储、高效率的并发读写、满足海量数据的管理和访问。

关系型数据库与非关系型数据库的区别:
1.存储方式:关系型数据库采用的格式存储,数据以列和行的方式进行存储,读取和查询都十分方便。然而非关系型数据库不适合采用表存储,通常是以数据集的方式进行存储,即大量的数据集中存储,类似于键值对,图结构等;
2.存储结构:关系型数据库按照结构化的方法存储数据,每张表都需要事先定义好;而非关系型数据库采用动态结构,轻松适应数据类型和结构的改变。
3.存储规范:关系数据库将数据按照最小关系表的形式存储,以此避免重复数据,充分利用存储空间;非关系型数据库则是用平面数据集的方式进行集中存放,每个数据库单独存储,便于数据的读写。
4.读写性能:关系数据库强调数据的一致性,为此降低了数据的读写性能;而非关系数据可可以很好的应对海量数据,以数据集的形式存储数据,更加便于读写。

CAP原则:一致性、可用性、分区容错性
NoSQL理论的基础是由CAP原则、BASE理论以及最终一致性奠定的。

MongoDB

MongoDB是一种可扩展的敏捷NoSQL数据库,也是基于分布式文件存储的开源数据库系统。是由C++语言编写的非关系数据库,是为快速开发互联网Web应用而设计的数据库系统。
特点:易用性,灵活的文档模型,能够快速迭代并加快开发进程;高性能,对文档进行动态填充,大部分内存并用做缓存;高可用性;易扩展性,采用水平扩展,可通过分片将数据分布在集群机器中;支持多种存储引擎。

副本集(replica set)是一组MongoDB实例保持其相同数据集的集群,由一个主服务器(primary)和多个副本(secondary)服务器构成。副本集通过维护冗余的数据库副本、读写分离和故障自动转移的功能,摆脱数据库在使用过程中出现的环境故障影响,是所有生产环境部署的基础。

分片技术是用来提高数据存储和数据读写吞吐量的常用方法。主要是将数据进行划分,然后将他们分别存放于不同机器上的过程。通常使用分片技术可以实现降低单个机器的压力和处理更大的数据负载功能。

分片和副本集的主要区别在于,分片是每个节点存储数据的不同片段,而副本集是每个节点存储数据的相同副本。

键值对存储数据库Redis

**Redis是一个高性能键值对数据库,主要是将数据以键值对的形式进行存储的。**是NoSQL中读写速度最快的数据库。
Remote Dictionary Server,简称Redis,即远程字典服务器,是一个开源的,高性能的,基于键值对的缓存与存储数据库,并且通过多种键值数据结构来适应不同场景下的缓存与存储需求。Reids数据可库是基于ANSI C 语言编写开发的,并且提供多种语言的API。
特点:
1.读写速度快,基于内存读写的,整个数据库的数据都加载到内存中进行操作或处理,定期通过异步操作把数据写入磁盘进行保存,从而保证数据库的容错性,避免在计算机断电时,存储在内存种的数据丢失。
2.支持多种数据结构,
3.功能丰富,
4.应用广泛。
Redis的应用场景:
1.缓存。缓存操作是指把数据存储在内存而不是硬盘上,而访问内存远比访问硬盘的速度要快的多。
2.构建队列系统;排行榜;实时的反垃圾系统,基于关键词,并利用Redis的高性能,为监控系统提供稳定及精确的实时监控功能。常见的应用场景有邮件系统、评论系统等
3.过期数据自动处理;计数器应用,采用单线程,并且线程安全,常用的应用场景有网站访问统计、广告点击数统计等。

列式数据库HBase

HBase是NoSQL数据库的一种类型,基于列进行存储,常见的列式数据库有HBase,Hyper Table等。由于HBase数据库基于Hadoop生态系统,利用HBase集群可在多台廉价PC Server上实现结构化数据的分布式数据存储,从而处理海量数据。

HBase是一个基于Java、开源的、高可靠的、高性能的、面向列的、可伸缩的列式非关系型数据库,目标是存储并处理海量非结构化和半结构化的松散数据。

HBase分布式数据库具有以下的显著特点:
海量存储;面向列;多版本;稀疏性;易扩展;高可靠性。

HBase分布式数据库常用的场景有:对象存储、时序数据、推荐画像、时空数据、Cube分析、消息/订单存储以及社交Feeds流等场景。

HBase构建在Hadoop分布式文件系统(HDFS)上,HDFS为HBase提供了高可靠的底层存储支持,Hadoop分布式计算框架(MapReduce)为HBase提供了高性能的计算能力,分布式协作框架(Zookeeper)为HBase提供了稳定服务容错机制。

图形存储数据库Neo4j

**图形化存储数据库Neo4j主要是应用图形理论存储实体之间的关系信息的NoSQL非关系数据库。Neo4j是一个高性能、高可靠性、可扩展的、支持ACID事务的图数据库。**可以被看作是一个高性能的图引擎,此数据库基于Java语言开发的,且是开源的,其中实体被视为图形的“结点”,关系被视为图形的“边”,“边”按照关系将“结点”进行连接。

特点:读写速度快,高效;设计灵活,图结构具有自然伸缩特性;迭代敏捷;高可用性;易用性;资源丰富以及应用广泛。

常见的应用场景:社区网络、推荐引擎、交通运输、物流管理、主数据管理、访问控制以及欺诈检测等。

Neo4j的数据模型是遵循属性图模型来存储和管理数据的。

Spark计算框架

Spark计算框架在处理数据时,所有的中间数据都保存在内存中,正是由于Spark充分利用内存对数据进行计算,从而减少磁盘读写操作,增大了框架计算效率,同时Spark还兼容HDFS,Hive,可以很好的与Hadoop系统融合,从而弥补MapReduce高延迟的性能缺点。

Spark是一个更加快速的、高效的大数据计算平台。Spark具有速度快、易用性、通用性、兼容性好等显著特点。***Spark是一个可应用于大规模数据处理的快速、通用引擎,提供内存计算和基于DAG(有向无环图)的任务调度执行机制,***减少了迭代计算时的I/O开销,也可以支持SQL即席查询、流计算、机器学习等。

Spark的部署模式有两种:Local(本地单机模式)和集群模式。在Local模式下,常用于本地开发程序与测试,而集群模式又分为Standalone模式(集群单机模式)、Yarn模式和Mesos模式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值