与传统的关系相比,NoSQL具有更复杂的分类-键值,面向文档,列存储和图形。这是各种NoSQL的适用方案以及一些知名公司的程序选项的列表。
在过去的几年中,关系一直是数据持久性的唯一选择,并且数据工作人员仅考虑在这些传统(例如SQL Server,Oracle或MySQL)之间进行过滤。甚至做出一些默认选择。例如,那些使用.NET的用户通常会选择SQL Server。使用Java的人可能更喜欢Oracle,Ruby是MySQL,Python是PostgreSQL或MySQL,等等。
原因很简单。过去很长一段时间,关系的健壮性已在大多数应用程序中得到证明。我们可以使用这些传统很好地控制并发操作,事务等。但是,如果传统的关系一直如此可靠,那么NoSQL是什么? NoSQL之所以能够生存和发展,是因为NoSQL可以完成传统的关系无法做到的事情!
关系中的问题
阻抗不匹配

我们使用Python,Ruby,Java,.Net和其他语言编写应用程序。这些语言具有面向对象的共同特征。但是我们使用MySQL,PostgreSQL,Oracle和SQL Server,这些也有一个通用的功能关系。这涉及术语“阻抗不匹配”:存储结构是面向对象的,但是是关系的,因此,每次我们存储或查询数据时,都需要进行转换。像Hibernate和Entity Framework这样的ORM框架确实可以简化此过程,但是当对查询的高性能要求很高时,这些ORM框架就会被拉伸。
应用程序的规模变大
Web应用程序的规模越来越大。我们需要存储更多的数据,服务更多的用户,并需要更多的计算能力。为了应对这种情况,我们需要继续扩大。扩展有两种类型:一种是垂直扩展,这意味着购买更好的机器,更多的磁盘,更多的内存等。另一个是水平扩展,这意味着要购买更多计算机以形成集群。
在大范围内,垂直扩展没有太大的作用。首先,单台机器的性能提升需要大量开销,并且存在性能极限。在Google和Facebook的规模上,永远不可能使用一台机器来支持所有负载。考虑到这种情况,我们需要一个新的,因为关系在群集上不能很好地运行。是的,您也可以构建一个关系集群,但是它们使用共享存储,这不是我们想要的类型。因此,存在一个以Google,Facebook和Amazon为首的NoSQL时代,它试图处理更多的传输。
NoSQL时代
已经有许多NoSQL,例如MongoDB,Redis,Riak,HBase,Cassandra等。每个都具有以下特征之一:
NoSQL的类型
NoSQL可以大致分为4类:键值,面向文档,列族和面向图的。下面是这些类型的特征的列表。
一、键值
键值就像传统语言中使用的哈希表一样。您可以按键添加,查询或删除数据。鉴于使用主键进行访问,您将获得良好的性能和可伸缩性。
适用方案

存储用户信息,例如会话,配置文件,参数,购物车等。此信息通常链接到ID(键)。在这种情况下,键值是一个不错的选择。
不适用的情况
二、面向文档的
面向文档的以文档形式存储数据。每个文档都是一个独立的数据单元,是一系列数据项的集合。每个数据项都有一个名称和一个相应的值。该值可以是简单的数据类型,例如字符串,数字和日期等。它也可以是复杂类型,例如有序列表和关联的对象。数据存储的最小单位是文档。存储在同一表中的文档属性可以不同,并且数据可以以多种格式存储,例如XML,JSON或JSONB。
适用方案
不适用的情况
将交易添加到其他文档。面向文档的不支持文档之间的事务。如果有此需求,则不应使用此解决方案。
三、宽列存储/列族
列存储将数据存储在列族中,并且列族存储经常一起查询的相关数据。例如,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄,而不是工资。在这种情况下,姓名和年龄将被放在一个列族中,而薪水将在另一个列族中。
适用方案
不适用的情况
四、面向图形的
图允许我们以图的形式存储数据。实体将被视为顶点,而实体之间的关系将被视为边。例如,如果我们有三个实体,即史蒂夫·乔布斯,苹果和Next,那么将有两个“创建者”边缘将Apple和Next与史蒂夫·乔布斯联系起来。
适用方案
(编者注0:本文以下内容的英语来源:KristófKovács,由Bole Online-Tang Youhua翻译)NoSQL之间的差异远远超过了两个SQL之间的差异。这意味着软件设计师应在项目开始时选择合适的NoSQL。针对这种情况,下面是Cassandra,Mongodb,CouchDB,Redis,Riak,Membase,Neo4j和HBase之间的比较。
(编者注1:NoSQL:是一种革命性的运动,NoSQL的提倡者提倡使用非关系数据存储。当今的计算机体系结构在数据存储方面需要巨大的水平可扩展性,并且NoSQL致力于改变这种状态融业(尽管金融交易不是必需的,但是这些行业对的要求要比其高),写入的速度比读取的速度快,所以自然的特征是实时数据分析
8. HBase
HBase与ghshephard一起使用。
最佳应用方案
适用于首选BigTable且需要随机,实时访问大数据的情况。
例如:Facebook消息(更多常见用例即将推出)。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-373472-1.html
是狗天性多自负
你TMD这是做广告的吧
好好伤心