网站设计公司易捷网络:专注企业网站设计

NOSQLI数据库是什么

来源:易捷网站设计公司     时间:2018-10-29
术语NOSQL包含了范固广泛的数据库,每一种数据库都有自己的长处和不足,而且大多都有非常不同的目标和用例。在观察今天的NOSOL共生系统时,可以将数据库划分为5大类:纯粹的键/值、数据结构、图、面向文档、高度分布。每种类别的数据库都面向不同的应用情况,而且每个类别也都做了不同的折中。我们将分别考察这些数据库,并看看其中的折中情况。
纯粹的键/值
纯粹的键值数据库实际上已经存在很长时间了。甚至在SQL数据库流行之前,dbm(一个纯粹的键/值数据库)就在世界上的很多UNX系统中使用了。之后是BerkeleyDB,目前仍然是一个维护中的富有生命活力的数据库解决方案。今天,这些纯粹的键值存储库正在重新流行起来,部分原因是所有的NOSQL数据库都在变得流行起来,但也是因为开发了一些速度更快、更为现代的数据库实现,如TokyoCabinet、KyotoCabinet、Memcachedb。
正是它们的简单性定义了这组数据库。向数据库存入一个键和一个值,然后用同一个键查询数据库,则会得到相同的值。没有结构或类型系统一一通常所处理的只是字节或字符串。因为这种简单性,这些数据库的开销极小,所以非常快。事实上,这些数据库通常都是实现为磁盘上的B树或哈希表。
对一个纯粹的键值数据库进行分片是直截了当的一一简单地选一个哈希算法,以键作为参数运行该算法,输出就是要查询或写入的数据库节点。另一方面,对于复杂查询就完全不是这么简单了。醫如对于这样的查询:年龄大于50的用户,就无法直接查询,不得不维持另外一个键/值对,其中值是一个序列化的用户键列表,这些用户的年龄大于50,每次要创建新用户或更新用户信息,都要更新这个列表。
对于纯料的键/值存储库,可能的应用包括HTTP会话、用户喜好以及URL缩写(shorteners)。我在前面已经描述过HTTP会话,HTTP会话应该以一种非常直接的方式存储在能/值摩中。其中键就是用户的会话关键字(sessionkey),而值是包含用户会话信息的一个序列化了的对象。对于用户喜好,可以这样来实现:键是用户1D连接上用户喜好的名称,值就是用户实际的喜好。对于URL缩写,URL路径就是键,而值就是路径重定向的位置。
数据结构
数据结构数据库对键/值数据库做了些修改。在纯粹键值数据库中,通常只是将键和值作为字符串或字节来存储,而数据结构数据库则将其存储为特定的数据结构,如列表、集合或哈希表。由于有了这些附加的结构,就可以对值执行一些原子操作。对于列表,可以对值进行压入或弹出操作。对于集合,可以执行并集和交集操作。可以对数据库执行在应用程序中对数据结构进行的各种操作。本质上,这些都是应用程序已经在使用的数据结构只不过由外部进程维护而已。
实际上这个领域唯一的竞争者就是Redis。某些实现细节使得Redis很有。Redis默认是在内存中存储其全部内容的,只是周期性地将内容的快照存储到磁盘。这使得Redist出奇得快,但假如数据库崩溃了,就会对数据造成一些损失。同时也意味着必须有足够的内存(RAM)存储整个数据库。值得指出的是,这些默认设置是可以改变的一可以以速度为代价来增加数据的可持续性,还可以使用虚拟内存模式,这样就可以存储比实际内存更多的数据(虽然仍然是有限制的)。
数器、任务队列或趋势分析,是很理想的。想象一下,给每个登录进来的用户一个唯一的鍵,映射到一张空表上,该用户访问的每个页面的每个URL都从尾部压人这张表。然后就可以获取任何用户的这些信息,观察该用户的访问路径,并对该路径进行分析。通过这张表的长度就可以得出该用户的活跃程度。这是一个人为的例子,但仍然展示了极快的内存操作和丰富的数据结构能做什么事情。

图数据库几乎就是数据结构数据库的一个特定实现,因为图本就是一种数据结构。区别是图数据库不再是基于键/值,数据是作为图的节点和边存储的。图数据库不是用键来查询值,而是给出根节点的句柄,然后就可以遍历整个图以找到需要的节点或者边。这会非常有价值,因为很多应用程序都大量使用了图这种数据结构,将这些数据结构映射为图数据库上的操作是相当容易的。就像数据结构数据库一样,数据库的图也跟应用程序使用的图是一样的,只不过是由外部进程维护的而已。
这个领域的主要竞争者是Neo4j,这是是一个嵌入式的ava图数据库,但可以用好几种语言进行访同。除了Neo4之外,其他开源的图数据库包括Hypergraphdb、Infogrid、VertexdbHypergraphdb定位在对图的一种更为通用的表示上,其中之一就是边可以指向多个节点。Vertex的有趣之处是呈现了一个RESTFULL的HTTPAPI,通过这个API可以直接访问数据库,而其他几种数据库主要都是通过Java方法来访问的。
图数据库的优势应该正是你所期望的:存储图或树形的数据。例如,假如网站想要维护一个社交图(socialgraph),则使用图数据库会产生一些有趣的应用。警如,发现或向用户推荐新朋友,传统上实现起来既复杂,速度又慢,而使用图数据库则既简单,效率又高一一仅仅运行一下宽度优先搜索或最短路径遍历,事情就搞定了。
面向文档
面向文档的数据库又类似于键值数据库,但值不再是字节、字符串、列表、集合,而是文档”。什么是文档?在我们要谈到的两个面向文档数据库COUCHDB和MONGODB中,文档是作为JSON(或类似于JSON)对象存储的,本质上是一种哈希表或字典。这些值都有相同的结构,意味着可以用查询来探测这种结构,并只返回所需要的文档。要记住的是,这种查询能力是建立在通过键来查找文档的能力之上的。
COUCHDB是一个面向文档的数据库,是用Erlang开发的,有一些有趣的实现细节,警如说是一种只附加(append-only)的数据结构,并且能够在数据库中直接向应用程序提供服务。Mongodb是另一个面向文档的数据库,是用C++开发的,在速度上做了很多优化,提供了一个更加传统的查询层。虽然这两个系统在纸上看起来很像,但目标却是不同的。在我写这些东西的时候,COUCHDB的趋势是作为桌面数据库或浏览器中的数据库,由用户下载安装,而Mongodb则趋向于更多地用在数据中心。
在不能确切地知道能获得什么数据时,如在生活串流应用中那样,面向文档的数据库就非常合适了。在这样的应用中,从一个流行的照片网站上检索的文档应该包含照片属性,而来自微博网站的文档可能有一些地理属性,而来自博客网站的文档将不会有这些信息。面向文档数据库的另一个不错的应用是内容管理系统,在这样的系统中,每个文档都表示一个页面,或页面的一部分。
高度分布
高度分布的数据库多少有些不同一一有些本质上更接近于键/值存储,其他则更像大型的多维哈希图。它们的共同点是都为多节点部署优化过。在这些系统中,简单地在集群中增加一个新节点就会增加更多的容量。其中一个节点失效并不会导致数据损失,但会失掉一些容量。多数这种系统都会允许用户牺牲掉一些一致性而保证高可用性和分区容错性。
Hbase是一个高度分布式的数据库,源自于Hadoop-项目,并且受到BigTable(Google专有的高度分布式数据库)的直接影响。Cassandra是另一个高度分布式数据库,最初是在Facebook开发的,虽然数据模型非常类似于Hbase,但集中在不产生单点故障以及写操作性能上。Hbase和Cassandra都将数据存储为大型的多维哈希图。Basho公司的Riak是另个高度分布式数据库,使用Erlang开发,可以通过RESTFULL的HTTPAPE来访问,和Hibase与Cassandra比起来,是一个更加简单的键值模型。Voldemort和Hypertable项目是另外两个值得提及的高度分布式数据库。
为什么要使用高度分布的网站建设数据库呢?噢,通常都是没有其他选择的结果。这些数据库都是用在这样的场合,就是其他的数据库(基于SQL的数据库或其他数据库)或者对数据无法处理,或者无法处理那些查询。几乎每个问题领域(problemdomain)都可以用这些数据库系统来建模,但有时候会比许多传统数据库更为诡异。
深圳网站设计公司易捷网络科技是一家专业从事深圳网站建设和深圳网页设计的深圳网络公司,主要经营的业务有:深圳网站建设、网页设计、网站推广优化、企业邮箱申请、网站域名空间备案。欢迎来电咨询(微信同号):13714247375
返回上一级
您可能需要:
网站设计图标
企业网站设计
高速稳定的国内空间,免费备案的香港、国外空间,单线、双线以多线空间
点击咨询
关键字推广优化图标
网站推广优化
指定网站关键词,确保一月之内优化到搜索引擎得首页,到首页之后再收费
点击咨询
企业邮箱图标
企业邮箱申请购买
以企业官网后缀为名称的邮箱,彰显公司企业形象,先试用,满意后再付款
点击咨询
国徽图标
网站域名空间备案
域名空间提交国家工信部备案审核,十五天即可完成,网站备案实名势在必行
点击咨询
网站设计相关资讯推荐
网站换了域名,如何向百度哭诉不降权
并不是所有的网站都适用单页面来建设
如何进行网站的真实用户监控(RUM)
网站优化之怎样把反向链接做得更好
企业网站上线后如何迅速提高排名
体验至上,让共享无处不在
客户端脚本编程语言JavaScript介绍
如何设计吸引人的LOGO
这些友情链接坚决不换的链接
网站建设中的网络响应问题
企业进行网页设计应该避免的几个细节介绍
如何选择网站设计公司
浅谈企业网站对公司的影响
网站降权的原因都有哪些
做网站的费用都包括哪些
QQ在线咨询
 
金亚洲打不开