NoSQL数据库简介-程序员宅基地

技术标签: json  数据库  大数据  

一、简介

 

    NoSQL(Not Only SQL),泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

    虽然NoSQL流行语火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动。尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟、稳定。不过现在也面临着一个严酷的事实:技术越来越成熟——以至于原来很好的NoSQL数据存储不得不进行重写,也有少数人认为这就是所谓的2.0版本。这里列出一些比较知名的工具,可以为大数据建立快速、可扩展的存储库。

 

二、NoSQL数据库的四大分类

 

  

1、键值(Key-Value)存储数据库

 

    这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。

 

2、列存储数据库

 

    这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak。

 

3、文档型数据库

 

    文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

 

4、图形(Graph)数据库

 

    图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API,如:Neo4J, InfoGrid, Infinite Graph。

 

    因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

 

三、共同特征

 

    对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:
    不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。
    无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。
    弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。
    分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。
    异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。
    BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。
    NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。

 

适用场景

NoSQL数据库在以下的这几种情况下比较适用:

1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。

 

未来与问题

 

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

















本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1614961,如需转载请自行联系原作者




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33670713/article/details/90066243

智能推荐

【Linux】 通过宝塔面板重置SSH密码,无需原密码_宝塔修改ssh密码-程序员宅基地

文章浏览阅读1.4k次,点赞12次,收藏8次。linux 忘记ssh密码(前提要有宝塔的账号密码)修改重置ssh密码_宝塔修改ssh密码

Android7.0 FileProvider-程序员宅基地

文章浏览阅读308次。一、前言Android 7.0有很多的变化,和我们开发者关联最大的,或者说必须要适配的就是去除项目中传递 file:// 类似格式的 Uri 了。要应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类,FileProvider 实际上是 ContentProvider 的一个子类,它的作用也...

SQL Server安全(9/11):透明数据加密(Transparent Data Encryption)-程序员宅基地

文章浏览阅读253次。在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切。但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念。这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保护你数据的功能上浪费时间。从让人眼花缭乱的客户端使用连接,通过到处分布的网络,尤其是互联网,关系数据库在各种应用程序里广泛使用。这使数据..._sql 透明加密enctyption

非法统方屡禁不止,看昂楷下一代防统方如何与之斗智斗勇_昂楷科技 菏泽市中医医院-程序员宅基地

文章浏览阅读403次。背景介绍目前医疗卫生信息化快速发展,医院都在往云计算、大数据中心靠拢。从以财务、药品和管理为中心,开始转向以病人信息为中心的临床业务支持和电子病历应用;从局限在医院内部应用,发展到区域医疗信息化大数据、云计算的应用。在大数据中进行多业务融合构建起医疗信息的复杂应用和数字化流程,融合了 HIS、RIS 、LIS、CIS、PACS、CPR 等系统的应用,加快了医疗卫生行业的高效、快捷、便民..._昂楷科技 菏泽市中医医院

iview 动态设置disabled_iview表单中,如何取消对 disabled的控件的验证?-程序员宅基地

文章浏览阅读1k次。根据控件是否禁用,开启或者关闭该控件的必须项检查。<Form-Item prop="link_address" :show-message="!disableLinkAddress" label="链接地址"><i-Input :disabled="disableLinkAddress" placeholder="Enter something..." v-model="form..._iview input disabled

第一篇博客关于Log4net的配置记录-程序员宅基地

文章浏览阅读67次。说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误..._log.net system.configuration.ignoresectionhandler

随便推点

uniapp做h5页面刷新页面404配置nginx后端开启伪静态_uniapp h5 nginx 伪静态-程序员宅基地

文章浏览阅读1.5k次。后端laravel,api和h5分开两个域名来管理。所以去伪静态文件找,不然就是配置文件里面配置即可。如上加上下面代码即可。tip: 如果有使用$Router,需参考另外的配置。location / { try_files $uri $uri/ /index.html;}..._uniapp h5 nginx 伪静态

四象限法推导lm曲线_让你的电脑桌面井井有条,超好用的「四象限壁纸」+ 制作方法分享...-程序员宅基地

文章浏览阅读3.5k次。前言据说大神们的电脑桌面都是空空如也的,我们大多数还是比较习惯把常用的文件直接放在桌面上,日常使用和操作也比较方便。但如果不好好整理的话,时间一久桌面就会变得乱七八糟,既不美观,也不好找文件。比较常见的是使用 Fences、腾讯桌面整理等框格式整理软件分类收纳。今天我们分享一种“神奇”的方法,只需要一张「四象限壁纸」,就可以让我们的电脑桌面变得井井有条!本文说下四象限壁纸的使用和制作方法,还有我自..._任务四象限电脑桌面

web安全php基础_搭建php环境_怎么搭建web,php环境-程序员宅基地

文章浏览阅读2.3w次。首先打开phpstudy的网站栏点击创建网站,新建一个网站(域名随便输反正是局域网)然后点击确认。然后网站好了,就可以新建项目,打开phpstorm,然后点击new project新建项目,然后再在刚刚打开的站点添加/phpinfo.php,看到如下页面,即我们的php环境搭建完成。然后在location栏里选择项目路径,就是刚刚我们创建的那个站点的路径。这个是问你文件夹不是空的是否在这个非空文件夹创建项目,点击创建就好。打开浏览器输入刚刚创建网站时输入的域名,即可看见我们的网站。如下,网站便创建好了。_怎么搭建web,php环境

高通SDX12:sar sensor AW9610x驱动移植-程序员宅基地

文章浏览阅读1.2k次。高通SDX12 sar sensor AW9610x_aw9610

微信小程序登录+后台获取oppenId+微信的授权_获取微信oppenid-程序员宅基地

文章浏览阅读949次。微信小程序登录+后台获取oppenId+微信的授权微信小程序登录 wx.login({ success(res) { wx.request({ url: '', //填入你自己的请求url method:"", data:{ code:res.code, ..._获取微信oppenid

超级庄家吕梁和中国股市第一案-程序员宅基地

文章浏览阅读651次。2001年2月3日,吕梁在他的北京亚运村北辰花园别墅被警方逮捕,他是当时的著名企业家兼顶级股评人,被捕的理由是涉嫌操纵一系列股票的股价,给股民造成了超过50亿元的损失。对于警察的到来,吕梁一点也不感到惊恐,正相反,他长长舒了一口气,脸上则露出了轻松的微笑。对于他为何如此反常,一位财经评论人解释道,“他(吕梁)此时觉得待在大牢里比待在外面被人追杀更安全。”想要“追杀”吕梁的人据说是他的合作伙..._我国打击股市坐庄的第一例

推荐文章

热门文章

相关标签