【NoSQL数据库四大类型解析】如何选择键值型数据库和文档型数据库?

日期: 2015-10-14 作者:Dan Sullivan翻译:杨宏玉 来源:TechTarget中国 英文

编者注:本文内容节选自作家兼独立顾问Dan Sullivan的新作《NoSQL for Mere Mortals》第15章。在本章中,Sullivan介绍了NoSQL数据库的主要四种类型,以及提出哪些应用适合哪种类型的见解。他还讨论了关系型数据库和NoSQL数据库设计的区别,以及这两种技术共同存在的必要性。如有兴趣购买,可登录Informit.com,输入优惠码AWDATA35,即可获得65折优惠。

在关系型数据库设计中,实体的结构和关系驱动设计,但NoSQL数据库设计并不是这样。当然,你也同样需要对实体和关系进行建模,但是与保持关系模型相比,性能更为重要。 关系性模型的出现与实际需求有关——……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

编者注:本文内容节选自作家兼独立顾问Dan Sullivan的新作《NoSQL for Mere Mortals》第15章。在本章中,Sullivan介绍了NoSQL数据库的主要四种类型,以及提出哪些应用适合哪种类型的见解。他还讨论了关系型数据库和NoSQL数据库设计的区别,以及这两种技术共同存在的必要性。如有兴趣购买,可登录Informit.com输入优惠码AWDATA35,即可获得65折优惠。

在关系型数据库设计中,实体的结构和关系驱动设计,但NoSQL数据库设计并不是这样。当然,你也同样需要对实体和关系进行建模,但是与保持关系模型相比,性能更为重要。

关系性模型的出现与实际需求有关——数据的经常性异常以及新应用程序难以重用现有数据是其出现的主要原因。NoSQL数据库的出现也有其现实原因——具体来说,就是数据的规模已经无法满足日益增长的大量读写操作。

为了换取读写性能的提升,你可能会失去关系型数据库的一些功能,例如即时一致性以及ACID事务等(虽然并非总是如此)。

本书认为,查询是数据模型设计的主要驱动力。的确是如此,因为查询描述了数据的使用方式。要了解不同的NoSQL数据库是如何满足用户的需求,先理解查询不失为好的着手点。此外,你还需要了解其他因素,如:

  • 读写操作的数量
  • 对副本中不一致数据的容忍度
  • 实体之间关系的性质及其影响查询模式的方式
  • 对于可用性和灾难恢复的需求
  • 对数据模型灵活性的需求
  • 对于处理延迟的需求

接下来的部分将介绍一些应用实例以及根据不同需求选择合适的NoSQL数据库时所应遵循的标准。

如何选择键值型数据库(key-value databases)?

键值数据库适用于那些频繁读写,拥有简单数据模型的应用。键值数据库中存储的值可以是简单的标量值,如整数或布尔值,也可以是结构化数据类型,比如列表和JSON结构。

键值数据库通常具有简单的查询功能,允许你通过键来查找一个值。一般键值数据库都支持搜索功能,这提供了更高的灵活性。开发人员可以选择使用一些技巧,比如用枚举键来实现范围查询,但这些数据库通常缺乏对于文档、列族、图形数据库的查询功能。

键值数据库广泛应用于以下类型的应用:

  • 从关系型数据库缓存数据来用于提高性能
  • 对Web应用暂时性数据的追踪,例如购物车数据等
  • 存储配置和用户数据信息的移动应用
  • 需要存储图片和音频文件等较大对象的应用

如何选择文档型数据库(document databases)?

文档型数据库按照灵活性的标准设计。如果一个应用程序需要存储不同的属性以及大量的数据,那么文档数据库将会是一个很好的选择。例如,要在关系数据库中表示产品,建模者可以使用通用的属性和额外的表来为每个产品子类型存储属性。文档数据库却可以更为简单的处理这种情况。

文档数据库提供嵌入式文档,这对于非规范化非常有用。文档数据库将经常查询的数据存储在同一个文档中,而不是存储在不同的表中。

此外,文档数据库改善了键值数据库的查询功能和文档中基于属性的过滤功能。

由于其灵活性、高性能和易用性,文档数据库可能是目前最受欢迎的NoSQL数据库。

这些数据库适用于如下一些用例,包括:

  • 用于后台具有大量读写操作的网站
  • 管理数据类型和变量属性,比如产品
  • 跟踪元数据的变量类型
  • 使用JSON数据结构的应用
  • 使用类似结构套结构等非规范化数据的应用程序

微软Azure和Cloudant等云服务数据库同样提供了文档型数据库。

在接下来的文章中,我们将继续介绍如何选择NoSQL数据库的另外两大类型:列族数据库和图形数据库。

作者

Dan Sullivan
Dan Sullivan

Dan Sullivan是一名作家、系统架构师和顾问,拥有超过20年关于先进的分析、系统架构、数据库设计、企业安全、商业智能的IT从业经验。他的从业范围广泛,包括金融服务业、制造业、医药、软件开发、政府、零售、天然气和石油生产、发电、生命科学和教育。

翻译

杨宏玉
杨宏玉

TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。

相关推荐