视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
论NoSQL的数据模型_MySQL
2020-11-09 18:00:59 责编:小采
文档
 bitsCN.com

  本文内容是对《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
  • bitsCN.com

    下载本文
    显示全文
    专题