NOSQL的类型及其特点

来源:互联网 发布:科比季后赛平均数据 编辑:程序博客网 时间:2024/05/18 13:07

在关系型数据库设计中,实体的结构和关系驱动设计,但NoSQL数据库设计并不是这样。当然,你也同样需要对实体和关系进行建模,但是与保持关系模型相比,性能更为重要。
关系性模型的出现与实际需求有关——数据的经常性异常以及新应用程序难以重用现有数据是其出现的主要原因。NoSQL数据库的出现也有其现实原因——具体来说,就是数据的规模已经无法满足日益增长的大量读写操作。
为了换取读写性能的提升,你可能会失去关系型数据库的一些功能,例如即时一致性以及ACID事务等(虽然并非总是如此)。
查询是数据模型设计的主要驱动力。的确是如此,因为查询描述了数据的使用方式。要了解不同的NoSQL数据库是如何满足用户的需求,先理解查询不失为好的着手点。此外,你还需要了解其他因素,如:
读写操作的数量
对副本中不一致数据的容忍度
实体之间关系的性质及其影响查询模式的方式
对于可用性和灾难恢复的需求
对数据模型灵活性的需求
对于处理延迟的需求
接下来的部分将介绍一些应用实例以及根据不同需求选择合适的NoSQL数据库时所应遵循的标准。
1:键值型数据库(key-value databases)
键值数据库适用于那些频繁读写,拥有简单数据模型的应用。键值数据库中存储的值可以是简单的标量值,如整数或布尔值,也可以是结构化数据类型,比如列表和JSON结构。
键值数据库通常具有简单的查询功能,允许你通过键来查找一个值。一般键值数据库都支持搜索功能,这提供了更高的灵活性。开发人员可以选择使用一些技巧,比如用枚举键来实现范围查询,但这些数据库通常缺乏对于文档、列族、图形数据库的查询功能。
键值数据库广泛应用于以下类型的应用:
从关系型数据库缓存数据来用于提高性能
对Web应用暂时性数据的追踪,例如购物车数据等
存储配置和用户数据信息的移动应用
需要存储图片和音频文件等较大对象的应用

2:文档型数据库(document databases)
文档型数据库按照灵活性的标准设计。如果一个应用程序需要存储不同的属性以及大量的数据,那么文档数据库将会是一个很好的选择。例如,要在关系数据库中表示产品,建模者可以使用通用的属性和额外的表来为每个产品子类型存储属性。文档数据库却可以更为简单的处理这种情况。
文档数据库提供嵌入式文档,这对于非规范化非常有用。文档数据库将经常查询的数据存储在同一个文档中,而不是存储在不同的表中。
此外,文档数据库改善了键值数据库的查询功能和文档中基于属性的过滤功能。
由于其灵活性、高性能和易用性,文档数据库可能是目前最受欢迎的NoSQL数据库。
这些数据库适用于如下一些用例,包括:
用于后台具有大量读写操作的网站
管理数据类型和变量属性,比如产品
跟踪元数据的变量类型
使用JSON数据结构的应用
使用类似结构套结构等非规范化数据的应用程序
微软Azure和Cloudant等云服务数据库同样提供了文档型数据库。

3:列族数据库(column family database)
列族数据库被设计应用于大量数据的情况,它保证了读取和写入的性能和高可用性。谷歌推出Bigtable来应对其服务需求。Facebook开发Cassandra 来支持其收件箱搜索服务。
这些数据库管理系统运行在多个服务器组成的集群上。如果你的数据量小到能运行在一个服务器上,那么一个列族数据库相对于键-值数据库来说,可能更加符合你的需要。
列族数据库广泛适用于如下情况:
那些对数据库写操作能力有着特殊要求的应用程序
数据在地理上分布于多个数据中心的应用程序
可以容忍副本中存在短期不一致情况的应用程序
拥有动态字段的应用程序
拥有潜在大量数据的应用程序,大到几百TB的数据
谷歌证实了运行在其计算引擎上的Cassandra数据库的优秀性能。谷歌工程师部署了:
330个谷歌计算引擎虚拟机
300个1TB硬盘
Debian Linux系统
Datastax Cassandra 2.2 版本
数据被写入到两个节点
30个虚拟机生成的30亿条记录,每个记录170字节
在这个配置中,Cassandra 集群每秒写入100万条,在23毫秒内完成了95%。当三分之一的节点丢失时,100万写操作仍在持续进行,但会有较高的延迟。
一些领域可以使用这种大数据处理能力,例如:
用网络流量和日志数据模式进行安全性分析
大量的科学计算,例如分析基因和蛋白质的生命科学
使用交易数据进行股票市场分析
网络应用例如搜索引擎等
社交网络服务
键值、文档和列族数据库广泛适用于各种应用。然而,图形数据库,更适合另一个特定类型的问题。

4:图形数据库(graph database)
图形数据库非常适合表示网络实体连接等问题。评估图形数据库有效性的一种方法是确定实例和实例间是否存在关系。
例如,一个电子商务应用程序中的两个订单可能没有相互连接。他们来自同一个客户,但这是一个共享的属性,而不是一个连接。
同样,一个游戏玩家的配置和游戏状态与其他游戏玩家的配置也没什么关系。这样的实体很容易使用键值型、文档型或者关系型数据库来进行建模。
现在,考虑讨论中提到的图形数据库应用的例子,如城市间的高速公路连接或者蛋白质和蛋白质相互作用,员工与员工间的工作关系等。所有这些情况都存在着一些类型的连接或者实体包含的两个实例之间的关系等。
这些问题的类型适用于图形数据库。其他类似问题的例子包括:
网络和IT基础设施管理
认证与访问权限管理
商业流程管理
产品和服务推荐
社交网络
从这些例子中可以看出,当需要模型来明确的实体和实体之间的关系,以及快速遍历路径时,图形数据库将是一个很好的选择。
大规模图形化处理,例如大型社交网络,可以使用列族数据库存储和检索。图形操作是建立在数据库管理系统之上的。Titan 图形数据库和分析平台采用了这种方法。
键值型、文档型、列族和图形数据库满足了不同类型的需求。与关系数据库基本上取代其之前的数据库不同,这些NoSQL数据库将继续与关系型数据库共存,因为应用程序越来越多且不同类型的应用程序有不同的数据库需求。
转至:http://www.searchdatabase.com.cn/showcontent_90828.htm

0 0
原创粉丝点击