由浅入深 NoSQL的五种主流数据模型

2012年03月05日10:37 来源:nosqlfan 作者:NoSQLfan 编辑:王玉圆 评论:0条

【IT168 技术】本文内容是对《NoSQL Data Modeling Techniques》一文的简单概述,原文对NoSQL的几种数据模型进行了详细深入的讨论。是了解NoSQL数据模型不过错过的全面资料。

NoSQL的一些非功能性的特性,比如扩展性、性能以及一致性的讨论,目前已经有很多。而对于NoSQL产品内部数据模型相关的知识一直比较欠缺,本文就希望能够系统地对NoSQL数据模型进行一些探讨。

我们大致先将NoSQL数据模型划分为下面几类:Key-Value存储、类BigTable数据库、文档数据库,全文索引引擎以及图数据库。

下面先上一个简单有趣的示例图,简单描述各个不同数据模型的构造:

对照上面的图片,我们对几种数据模型进行简单的描述:

·Key-Value模型是最简单,也是最方便使用的数据模型,它支持简单的key对value的键值存储和提取

·Key-Value模型的一个大问题是它通常是由HashTable实现的,所以无法进行范围查询,所以有序Key-Value模型就出现了,有序Key-Value可以支持范围查询

·虽然有序Key-Value模型能够解决范围查询和问题,但是其Value值依然是无结构的二进制码或纯字符串,通常我们只能在应用层去解析相应的结构。而类BigTable的数据模型,能够支持结构化的数据,包括列,列簇,时间戳以及版本控制等元数据的存储。

·而文档型存储相对到类BigTable存储又有两个大的提升。一是其Value值支持复杂的结构定义,二是支持数据库索引的定义。

·全文索引模型与文档型存储的主要区别在于文档型存储的索引主要是按照字段名来组织的,而全文索引模型是按字段的具体值来组织的。

·图数据库模型也可以看作是从Key-Value模型发展出来的一个分支,不同的是它的数据之间有着广泛的关联,并且这种模型支持一些图结构的算法。

对于NoSQL与关系型的差别,简单总结如下:

·NoSQL数据库的数据模型通常与实际需求更贴近。通常使用关系型数据库时,需要关心的问题是“数据库能提供哪些功能”,而NoSQL模型关心得更多的是“可以解决哪些问题”

·使用NoSQL数据模型,通常需要你对存储的内部结构和实现算法有一定的了解。

·使用NoSQL数据库,通常要自己处理数据结构解析和数据的冗余复制问题。

·对于关系型数据库来说,对数据分级存储的处理并不强。但是对图数据库,或者说其它的NoSQL数据库来说,对数据的分级处理都是预先考虑的。

目前简单将NoSQL几个分类的代表产品列举如下:

·Key-Value 存储: Oracle Coherence, Redis, Kyoto Cabinet

·类BigTable存储: Apache HBase, Apache Cassandra

·文档数据库: MongoDB, CouchDB

·全文索引: Apache Lucene, Apache Solr

·图数据库: neo4j, FlockDB

2012年03月05日10:37 来源:nosqlfan 作者:NoSQLfan 编辑:王玉圆 评论:0条

【IT168 技术】本文内容是对《NoSQL Data Modeling Techniques》一文的简单概述,原文对NoSQL的几种数据模型进行了详细深入的讨论。是了解NoSQL数据模型不过错过的全面资料。

NoSQL的一些非功能性的特性,比如扩展性、性能以及一致性的讨论,目前已经有很多。而对于NoSQL产品内部数据模型相关的知识一直比较欠缺,本文就希望能够系统地对NoSQL数据模型进行一些探讨。

我们大致先将NoSQL数据模型划分为下面几类:Key-Value存储、类BigTable数据库、文档数据库,全文索引引擎以及图数据库。

下面先上一个简单有趣的示例图,简单描述各个不同数据模型的构造:

对照上面的图片,我们对几种数据模型进行简单的描述:

·Key-Value模型是最简单,也是最方便使用的数据模型,它支持简单的key对value的键值存储和提取

·Key-Value模型的一个大问题是它通常是由HashTable实现的,所以无法进行范围查询,所以有序Key-Value模型就出现了,有序Key-Value可以支持范围查询

·虽然有序Key-Value模型能够解决范围查询和问题,但是其Value值依然是无结构的二进制码或纯字符串,通常我们只能在应用层去解析相应的结构。而类BigTable的数据模型,能够支持结构化的数据,包括列,列簇,时间戳以及版本控制等元数据的存储。

·而文档型存储相对到类BigTable存储又有两个大的提升。一是其Value值支持复杂的结构定义,二是支持数据库索引的定义。

·全文索引模型与文档型存储的主要区别在于文档型存储的索引主要是按照字段名来组织的,而全文索引模型是按字段的具体值来组织的。

·图数据库模型也可以看作是从Key-Value模型发展出来的一个分支,不同的是它的数据之间有着广泛的关联,并且这种模型支持一些图结构的算法。

对于NoSQL与关系型的差别,简单总结如下:

·NoSQL数据库的数据模型通常与实际需求更贴近。通常使用关系型数据库时,需要关心的问题是“数据库能提供哪些功能”,而NoSQL模型关心得更多的是“可以解决哪些问题”

·使用NoSQL数据模型,通常需要你对存储的内部结构和实现算法有一定的了解。

·使用NoSQL数据库,通常要自己处理数据结构解析和数据的冗余复制问题。

·对于关系型数据库来说,对数据分级存储的处理并不强。但是对图数据库,或者说其它的NoSQL数据库来说,对数据的分级处理都是预先考虑的。

目前简单将NoSQL几个分类的代表产品列举如下:

·Key-Value 存储: Oracle Coherence, Redis, Kyoto Cabinet

·类BigTable存储: Apache HBase, Apache Cassandra

·文档数据库: MongoDB, CouchDB

·全文索引: Apache Lucene, Apache Solr

·图数据库: neo4j, FlockDB


相关文章

  • [云计算技术与案例培训提纲]-段方
  • <云计算技术提纲> 一.云计算背景 1.什么是大数据? 运营商的数据满足4V 特征:与互联网的对比 大数据对传统架构带来的冲击 各行业对大数据技术的共性需求,催生新技术 运营商对大数据技术的需求 2.云计算主流技术总览 二.云计 ...查看


  • 视频监控大数据的关键技术和应用
  • 视频监控的大数据趋势 视频监控从最早的模拟闭路监控系统开始,经历过模拟监控.数字监控.网络监控等重要发展阶段,如今进入了大数据的时代,并面临着一系列的挑战. 视频监控产生的数据正迅速增长 视频监控数据的增长有三个主要的因素.首先,视频监控不 ...查看


  • NoSQL那些事:51CTO带您走进列数据库
  • 摘要:列数据库算不算NoSQL,目前来看还是存在争议的.51CTO数据库频道认为还是要一分为二的看待,按列存储也含有一定的关系,因此严格意义上说列数据库有一些还是属于关系型数据库的. 标签:列数据库  NoSQL [51CTO外电头条]列数 ...查看


  • 社交网络数据库技术分析
  • 社交网络数据库技术分析 传统互联网正在迈向一个全新的时代--社交服务网(Social Networking Service)时代,从"人与机器"的时代迈向"人与人"的时代.互联网社交服务网站的发展验证 ...查看


  • 大数据关键技术
  • 大数据关键技术 Research on Key Technologies of Big Data 王秀磊/WANG Xiulei 刘鹏/Liu Peng (解放军理工大学指挥信息系统学院,江苏 南京 210007) (College of ...查看


  • 解读NoSQL技术代表之作Dynamo
  • NoSQL在过去的一年里,逐渐已经成为了家喻户晓的东西,我(54chen)自从去年开始人人网的NoSQL系统Nuclear的研发以来,一直看 NoSQL越来越热,越来越引来大家的围观.受InfoQ中文站编辑之托,特作此文,一来作为过去一年的 ...查看


  • 大数据时代数据存储技术的发展
  • 大数据时代数据存储技术的发展 [摘要]数据存储技术经历了从手工管理到文件管理.再到数据库管理系统三个阶段,数据库技术中关系数据库占据了主要地位.互联网络的兴起,促使用户数据暴增,大数据时代已经来临,对存储介质容量和数据检索速度都提出了更高的 ...查看


  • 关系型数据库与非关系型数据库的选择
  • 自1970年,埃德加·科德提出关系模型之后,关系数据库便开始出现,经过了40多年的演化,如今的关系型数据库具备了强大的存储.维护.查询数据的能力.但在关系数据库日益强大的时候,人们发现,在这个信息爆炸的"大数据"时代,关 ...查看


  • 数据架构师岗位职责
  • 数据架构师岗位职责 1.数据架构师岗位职责 1.深入理解MDM主数据管理思想和流程: 2.理解业务数据.主数据与元数据的区别与关系: 3.参与过数据模型的设计与开发: 4.深入理解数据清洗,标准化,转换,匹配,数据质量.安全管理的原理和业务 ...查看


热门内容