Nosql数据库简介

NoSQL

NoSQL(Not Only SQL,不仅仅是SQL)泛指非关系型的数据库。它是为了解决大规模数据集合以及多种数据类型带来的问题,尤其是大数据应用难题。NoSQL数据库并没有一个统一的架构,各有所长。

一、为什么要使用NoSQL数据库

NoSQL数据库在我的理解是一类数据库的统称(如键值存储型,文档型,列存储型等等)。

NoSQL出现的意义是啥呢?
适用关系型数据库的时候就使用关系型数据库(目前大部分我们所使用的数据库均为关系型),不适用的时候也没有必要非使用关系型数据库不可,这个时候就可以考虑更加合适的数据库,比如NoSQL数据库。

至于为什么说在这里使用NoSQL数据库会更加合适呢?我们只要弄明白关系型数据库有什么优势和不足,问题就迎刃而解了。我在这里也总结一下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

总结

(1 )关系数据库
优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持.
劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等.

(1)无法满足海量的数据管理需求。
(2)无法满足数据高并发的需求。
(3)无法满足高可扩展性和高可用性的需求。

(2 )NoSQL 数据库
优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等.
劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等.

关系数据库和NoSQL数据库各有优缺点,彼此无法取代
• 关系数据库应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性.
•NoSQL 数据库应用场景:互联网企业、传统企业的非关键业务(比如数据分析)采用混合架构.
•案例:亚马逊公司就使用不同类型的数据库来支撑它的电子商务应用
•对于“购物篮”这种临时性数据,采用键值存储会更加高效
•当前的产品和订单信息则适合存放在关系数据库中
•大量的历史订单信息则适合保存在类似MongoDB的文档数据库中

NoSQL数据库适用的场景有:
1、数据模型比较简单,不需要高度的数据一致性;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、对于给定key,比较容易映射到复杂的值。
Google的 BigTable 和Amazon 的Dynamo使用的就是NoSQL型数据库

八种常见的NoSQL数据库

Redis,HBase, Mongodb, Membase、Neo4j ,Cassandra, CouchDB, Riak
简单介绍两个:
Redis
• 所用语言:C/C++ ,特点:运行异常快,支持哈希表(带有多个域的对象)
• 支持事务
应用场景:适用于数据变化快且数据库大小可预见(适合内存容量)的应用程序。例如:股票价格、数据分析、实时通讯、实时数据搜集。

HBase(配合 ghshephard使用)
HBase数据库是安全特性最完善的NoSQL数据库产品之一,而其他的NoSQL数据库多数没有提供内建的安全机制
• 所用语言: Java,特点:支持数十亿行X上百万列,使用许可: Apache
• 协议:HTTP/REST ,采用分布式架Map/reduce
• 对实时查询进行优化
应用场景:适用于需要对大数据进行随机、实时访问的场合。
例如: Facebook消息数据库

NoSQL数据库的四大分类

1.键值(Key-Value)存储数据库
应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。优点:查找速度快。这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。如:Redis,Oracle BDB.
2.列存储数据库。
应用场景:分布式的文件系统,应对分布式存储的海量数据。优点:查找速度快,可扩展性强,更容易进行分布式扩展。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如: HBase, Riak, Cassandra,
3.文档型数据库
应用场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)。优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。文档型数据库可以看作是键值数据库的升级版,而且比键值数据库的查询效率更高。如:MongoDB ,CouchDB,国内也有文档型数据库SequoiaDB,已经开源。
4.图形(Graph)数据库
场景:社交网络,推荐系统等。专注于构建关系图谱。优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等。使用灵活的图形模型,并且能够扩展到多个服务器上。

NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph.

尽管大多数NoSQL数据存储系统都已被部署于实际应用中,但归纳其研究现状,还有许多挑战性问题。

已有key-value数据库产品大多是面向特定应用自治构建的,缺乏通用性;
已有产品支持的功能有限(不支持事务特性),导致其应用具有一定的局限性;
已有一些研究成果和改进的NoSQL数据存储系统,但它们都是针对不同应用需求而提出的相应解决方案,如支持组内事务特性、弹性事务等,很少从全局考虑系统的通用性,也没有形成系列化的研究成果;
缺乏类似关系数据库所具有的强有力的理论(如armstrong公理系统)、技术(如成熟的基于启发式的优化策略、两段封锁协议等)、标准规范(如SQL语言)的支持。
但随着NoSQL的发展,越来越多的人开始意识到安全的重要,部分NoSQL产品逐渐开始提供一些安全方面的支持。
随着云计算、互联网等技术的发展,大数据广泛存在,同时也呈现出了许多云环境下的新型应用,如社交网络网、移动服务、协作编辑等。这些新型应用对海量数据管理或称云数据管理系统也提出了新的需求,如事务的支持、系统的弹性等。同时云计算时代海量数据管理系统的设计目标为可扩展性、弹性、容错性、自管理性和“强一致性”。目前,已有系统通过支持可随意增减节点来满足可扩展性;通过副本策略保证系统的容错性;基于监测的状态消息协调实现系统的自管理性。“弹性”的目标是满足Pay-per-use 模型,以提高系统资源的利用率。该特性是已有典型NoSQL数据库系统所不完善的,但却是云系统应具有的典型特点;“强一致性”主要是新应用的需求。

原文链接:https://blog.csdn.net/williamjame/article/details/86533727

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值