NoSQL数据建立模型本事

原稿来自“NoSQL Data Modeling
Techniques
”,由酷壳网陈皓编译《NoSQL数据建立模型本领》。那篇小说看完之后,你或者会对NoSQL的数据结构会略微认为。小编的感到是,关系型数据库想把1致性,完整性,索引,CRUD都干好,NoSQL只干某1种事,可是牺牲了过多别的东西。总体来讲,作者觉着NoSQL更契合做Cache。

下边是本文:

NoSQL数据库平时被看做繁多非效能性的地点,如,扩充性,质量和一致性的地方。那几个NoSQL的特色在理论和施行中都正在被民众广泛地商量着,商量的紧俏就是那些和特性分布式相关的非功效性的事物,大家都领会CAP
理论
被很好地运用于了NoSQL系统中(陈皓注:CAP即,一致性(Consistency),可用性(Availability),分区容忍性(Partition
tolerance),在分布式系统中,那三个要素最三只好同时落到实处四个,而NoSQL1般屏弃的是一致性)。但在1方面,NoSQL的数量建立模型手艺却因为贫乏像关系型数据库那样的基础理论未有被世人很好地研商。那篇小说从数量建立模型方面对NoSQL家族实行了相比,并研商多少个大规模的多少建立模型本事。

要从头谈论数量建立模型本领,大家只能或多或少地先系统地看一下NoSQL数据模型的成长的样子,以此我们得以了一部分他们内在的关系。下图是NoSQL家族的进化图,我们得以看来那般的升华:Key-Value时期,BigTable时代,Document时期,全文字笔迹核实索时期,和Graph数据库时期:(陈皓注:注意图中SQL说的那句话,NoSQL再这么发展下去就是SQL了,哈哈。)

皇冠直营现金网官方网 1

NoSQL Data Models

率先,大家须要留意的是SQL和关系型数据模型已存在了非常短的小时,这种面向用户的自然性意味着:

  • 最后用户①般更感兴趣于数据的聚集显示,而不是分别的数量,那首要透过SQL来成功。
  • 笔者们不可能通过人手工业调整数据的并发性,完整性,一致性,或是数据类型校验这几个事物的。这就是为何SQL需求在作业,二维表结构(schema)和外部联合上做过多事。

一面,SQL能够让软件应用程序在数不胜数场合下不须要关爱数据库的数额聚合,和数据完整性和立竿见影实行支配。而一旦大家去除了数据一致性,完整性那一个事物,会对质量和遍布存款和储蓄有重要的帮衬。正因为这么,大家才有数据模型的升华:

  • Key-Value键值对存储是11分简单而强劲的。上面包车型客车大队人马技能基本上都是基于这么些本领起始升高的。可是,Key-Value有七个十二分沉重的难点,那正是只要大家需求查究1段范围内的key。(陈皓注:学过hash-table数据结构的人都应有清楚,hash-table是非种类容器,其并不像数组,链接,队列那几个有序容器,大家得以调控数据存款和储蓄的逐条)。于是,有序键值(Ordered
    Key-Value)数据模型被规划出来化解那一限制,来从根本上升高数据集的标题。

  • Ordered
    Key-Value有序键值
    模型也不行有力,可是,其也尚未对Value提供某种数据模型。平常来讲,Value的模子能够由运用负责解析和存取。那种很不方便人民群众,于是应运而生了BigTable类型的数据库,那么些数据模型其实正是map里有map,map里再套map,1层壹层套下去,也正是稀罕嵌套的key-
    value(value里又是3个key-value),那种数据库的Value主要通过“列族”(column
    families),列,和岁月截来调控版本。(陈皓注:关于时间截来对数码的版本调节首假使竭泽而渔数量存储并发难点,也便是所谓的开朗锁,详见《多版本出现调控(MVCC)在分布式系统中的应用》)

  • Document databases
    文书档案数据库
     立异了BigTable模型,并提供了八个有含义的一字不苟。第三个是允许Value中有主观的方式(scheme),而不是map套map。第二个是索引。Full
    Text Search
    Engines全文检索引擎
    能够被作为是文书档案数据库的贰个变种,他们得以提供灵活的可变的多少格局(scheme)以及活动索引。他们之间的分裂点首借使,文书档案数据库用字段名做索引,而全文字笔迹核准索引擎用字段值做索引。

  • Graph data models图式数据库 能够被以为是其一进化历程中从Ordered
    Key-Value数据库发展过来的1个分层。图式数据库允许构提议图结构的数据模型。它和文书档案数据库有关联的案由是,它的好些个贯彻允许value可以是3个map或是一个document。

NoSQL数据模型摘要

本文剩下的章节将向您介绍数据建立模型的工夫完毕和相关情势。可是,在介绍这么些技能此前,先来一段序言:

  • NoSQL数据模型设计壹般从作业使用的实际数量查询出手,而不是数码间的关联:
  • 关系型的数据模型基本上是分析数据间的构造和关联。其安排意见是:
    What answers do I have?”
  • NoSQL数据模型基本上是从应用对数码的存取格局起始,如:小编急需辅助某种数据查询。其安插意见是 ”What
    questions do I have?”
  • NoSQL数据模型设计比关系型数据库需求对数据结构和算法的更加深的摸底。在那篇文章中笔者会和大家说这多少个明明的数据结构,那几个数据结构并不只是被NoSQL使用,可是对于NoSQL的数据模型却10分有赞助。
  • 数码冗余和反规格化是一等公民。
  • 关系型数据库对于拍卖层级数据和图式数据充足的不便于。NoSQL用来消除图式数据显著是1个相当好的消除方案,大致全数的NoSQL数据库可以很强地缓解此类主题素材。那便是干什么那篇作品专门拿出一章来注脚层级数据模型。

上面是NoSQL的分类表,也是自家用来写那篇小说时抓牢践的成品:

  • Key-Value 存储: Oracle Coherence, Redis, Kyoto Cabinet
  • 类BigTable存储: Apache HBase, Apache Cassandra
  • 文书档案数据库: MongoDB, CouchDB
  • 全文索引: Apache Lucene, Apache Solr
  • 图数据库: neo4j, FlockDB

皇冠直营现金网官方网,概念本领Conceptual Techniques

那壹节重视介绍NoSQL数据模型的着力尺度。

(一)反规格化Denormalization

反规格化Denormalization能够被以为是把同样的数额拷贝到不相同的文书档案或是表中,那样就能够简化和优化查询,或是正好合乎用户的某中特意的数据模型。那篇著作中所说的超过半数技巧都或多或少地导向了这一才具。

完全来说,反规格化须要权衡上面那么些东西:

  • 询问数据量
    /查询IO 
    VS 总和据量。使用反规格化,1方面能够把一条查询语句所供给的具备数据整合起来放到3个地方贮存。那代表,其余分歧不一样查询所急需的同样的多少,须要放在别差异的地点。因而,那产生了许多冗余的数据,从而产生了数据量的附加。

  • 处理复杂度 VS 总量据量.
    在符合范式的数额情势上开始展览表连接的询问,很显眼会追加了查询处理的复杂度,尤其对于分布式系统来讲特别。反规格化的数据模型允许大家以利于查询的点子来存构造数据结构以简化查询复杂度。

适用性:Key-Value Store 键值对数据库,Document
Databases文书档案数据库,BigTable风格的数据库。

(2)聚合Aggregates

具有类别的NoSQL数据库都会提供灵活的Schema(数据结构,对数码格式的限量):

  • Key-Value Stores 和 Graph
    Databases基本上来说不会Value的花样,所以Value能够是任意格式。那样1来,那使得大家得以随心所欲组合2个业务实体的keys。比如,大家有一个用户帐号的思想政治工作实体,其可以被如下这么些key组合起来: UserID_name,UserID_email,
    UserID_messages
    等等。要是几个用户并未有email或message,那么相应也不会有如此的笔录。

  • BigTable模型通过列集合来援救灵活的Schema,大家誉为列族(column
    family
    )。BigTable还足以在同等记录上冒出不相同的版本(通过时间截)。

  • Document
    databases文书档案数据库是一种层级式的“去Schema”的囤积,即使有点那样的数据库允许核实需求保留的多少是不是满意某种Schema。

利落的Schema允许你能够用一种嵌套式的里边数据格局来储存一组有涉及的政工实体(陈皓注:类似于JSON这样的数量封装格式)。那样可感觉大家带来三个好处。

  • 最小化“1对多”关系——能够通过嵌套式的法子来储存实体,那样能够少一些表联结。

  • 能够让当中技巧上的数量存储更类似于业务实体,特别是那种混合式的作业实体。可能存于二个文书档案集或是一张表中。

下图表示了那两种利润。图中描给了电子商务中的商品模型(陈皓注:笔者记念笔者在“挑衅无处不在”一文中提起过电商业中学产品分类数据库设计的挑战)

  • 先是,全部的货物Product都会有3个ID,Price和Description。

  • 然后,大家能够理解分歧的连串的商品会有两样的属性。比如,小编是书的属性,长度是哈伦裤的属性。其些属性或者是“壹对多”或是“多对多”的关联,如:唱片中的曲目。

  • 接下去,大家清楚,有个别事情实体不可能应用一定的花色。如:羊绒裤的品质并不是兼具的品牌都有的,而且,有个小名牌还会搞相当尤其的习性。

对此关系型数据库来讲,要规划那样的数据模型并不轻巧,而且设计出来的相对离优雅很远很远。而作者辈NoSQL中灵活的Schema允许你使用多个聚合Aggregate
(product) 能够建出全数分裂门类的货色和她俩的比不上的特性:

皇冠直营现金网官方网 2

Entity Aggregation

上海教室中我们得以比较关系型数据库和NoSQL的歧异。只是我们能够看出在多少更新上,非规格化的数额存款和储蓄在性质和1致性上会有极大的影响,那即是我们要求注重注意和不得不捐躯的地点

适用性: Key-Value Store键值对数据库,Document
Databases文书档案数据库,BigTable风格的数据库。

(三)应用层联结Application Side Joins

表联结基本上不被NoSQL帮衬。正如笔者辈近年来所说的,NoSQL是“面向难题”而不是“面向答案”的,不协理表联结便是“面向难题”的结果。表的联合是在布署时被组织出来的,而不是在施行时建造出来的。所以,表联结在运维时是有一点都不小支出的(陈皓注:搞过SQL表联结的都知道笛Carl积是什么事物,大能够在参考从前酷壳的“图解数据库表Joins”),可是在使用了Denormalization和Aggregates技巧后,大家着力不用实行表联结,如:你们使用嵌套式的数额实体。当然,假使您需求联合数据,你须要在应用层完毕那个事。上面是多少个基本点的Use
Case:

  • 多对多的数额实体关系——平常索要被连接或合并。

  • 聚合Aggregates并不适用于数据字段常常被退换的气象。对此,大家须要把那个平日被转移的字段分到此外的表中,而在询问时大家须要统1数据。例如,大家有个Message系统能够有2个User实体,其包涵了贰个内嵌的Message实体。不过,固然用户不断在叠加message,那么,最佳把message拆分到另三个独立的实体,但在查询时联结那User和Message那七个实体。如下图:

适用性: Key-Value Store键值对数据库,Document
Databases文书档案数据库,BigTable风格的数据库,Graph Databases图数据库。

通用建立模型技能General Modeling Techniques

在本书中,大家将斟酌NoSQL中各个分裂的通用的多寡建立模型工夫。

(四)原子聚合Atomic Aggregates

许多NoSQL的数据库(并不是独具)在事务处理上都是短板。在1些意况下,他们得以透过分布式锁手艺恐怕应用层管理的MVCC技能来落到实处其事务性(陈皓注:可参考本站的“多版本出现调节(MVCC)在分布式系统中的应用”)然则,平常来讲只可以利用聚合Aggregates技巧来担保1些ACID原则。

那正是怎么大家的关系型数据库要求有无往不胜的事务处理机制——因为关系型数据库的多寡是被规格化存放在了不一样的地点。所以,Aggregates聚合允许大家把3个事情实体存成八个文书档案、存成一行,存成3个key-value,那样就足以原子式的换代了:

皇冠直营现金网官方网 3

Atomic Aggregates

自然,原子聚合Atomic
Aggregates那种数据模型并不可能落到实处完全意义上的事务处理,但是若是支持原子性,锁,或test-and-set指令,那么,Atomic
Aggregates是能够适用的。

**适用性: **Key-Value Store键值对数据库,Document
Databases文书档案数据库,BigTable风格的数据库。

(5)可枚举键Enumerable Keys

或然,对于无顺序的Key-Value最大的裨益是业务实体能够被轻巧地hash以分区在多少个服务器上。而排序了的key会把职业搞复杂,但是有个别时候,贰个采纳能从排序key中拿走广大好处,尽管是数据库本身不提供这一个功效。让大家来合计下email音讯的数据模型:

  1. 有的NoSQL的数据库提供原子计数器以允许生壹些连连的ID。在那种意况下,大家得以应用 userID_messageID 来做为二个组合key。假使我们领略最新的message
    ID,就能够知道前3个message,也大概知道再后面和前边的Message。
  2. Messages能够棉被服装进。比如,天天的邮件包。那样,我们就足以对邮件按钦赐的时刻段来遍历。

**适用性: **Key-Value Store键值对数据库

(6)降维Dimensionality Reduction

Dimensionality
Reduction降维是一种技艺能够允许把2个多维的数码映射成3个Key-Value或是其余非多给的数据模型。

价值观的地理地点音信连串利用部分如“四分树QuadTree”或“R-Tree”来做地理地方索引。这个数据结构的始末需求被在适用的地方更新,并且,假若数据量十分的大的话,操作花费会异常高。另1个格局是我们能够遍历一个二维的数据结构并把其扁平化成2个列表。一个强烈的例证是Geohash(地理哈希)。1个吉优hash使用“之字形”的门径扫描贰个2维的上空,而且遍历中的移动能够被归纳地用0和1来代表其可行性,然后在活动的进程中产生0/一串。下图体现了那一算法:(陈皓注:先把地图分成四份,经度为率先位,纬度为第一位,于是左侧的经度是0,左边的是1,纬度也一如既往,下面是为壹,上边包车型客车为0,这样,经纬度就能够组合成0一,1壹,00,10那多少个值,其标志了4块区域,大家能够如此不断的递归地对各个地方拓展伍分,然后能够获得壹串1和0结缘的字串,然后利用0-九,b-z去掉(去掉a,
i, l,
o)那36个字母实行base3贰编码得到二个九个长度的编码,那就是吉优hash的算法)

皇冠直营现金网官方网 4

Geohash Index

吉优hash的最强劲的意义是选择简单的位操作就能够清楚五个区域间的偏离,就好像图中所示(陈皓:proximity框着的这七个,这几个很像IP地址了)。吉优hash把2个二维的坐标生生地改成了三个一维的数据模型,那就是降维技艺。BigTable的降维才能参考到小说前边的[6.1]。越多的关于Geohash和其余本事可以参考[6.2]
和 [6.3]。

**适用性:** Key-Value Store键值对数据库,Document
Databases文书档案数据库,BigTable风格的数据库。

(7)索引表 Index Table

Index
Table索引表是一个可怜直白的手艺,其得以你在不援助索引的数据库中收获索引的便宜。BigTable是那类最根本的数据库。这亟需我们保险2个有相应存取格局的专门表。例如,咱们有八个主表存着用户帐号,其能够被UserID存取。某询问供给查出某些城市里全体的用户,于是大家能够进入一张表,那张表用城市做主键,全体和这几个城市有关的UserID是其Value,如下所示:

皇冠直营现金网官方网 5

Index Table Example

足见,城市索引表的急需和对主表用户表保持一致性,因而,主表的每2个革新大概要求对索引表进行更新,否则便是二个批处理更新。无论哪个形式,那都会危机1些质量,因为需要保持一致性。

Index Table索引表可以被以为是关系型数据库中的视图的等价物。

适用性:BigTable数据库。

(八)键组合索引 Composite Key Index

Composite
key键组合是1个很常用的本领,对此,当大家的数据库帮忙键排序时能获取巨大的好处。Composite
key组合键的拼凑成为第二排序字段能够让您营造出1种多维索引,那很像大家事先说过的 Dimensionality
Reduction降维手艺。例如,大家须求存取用户计算。要是我们供给基于分化的地方来计算用户的分布境况,大家得以把Key设计成那样的格式 (State:City:UserID),那样一来,就使得大家得以透过State到City来按组遍历用户,尤其是我们的NoSQL数据库援助在key上按区查询(如:BigTable类的系统):

  1. SELECT Values WHERE state=”CA:*” 
  2. SELECT Values WHERE city=”CA:San Francisco*” 

Composite Key Index

**适用性:** BigTable 数据库。

(玖)键组合聚合 Aggregation with Composite Keys

Composite
keys键组合手艺并不只好用来做索引,一样能够用来区分不用的品种的数额以支撑数据分组。思索一个例子,大家有二个海量的日志数组,这一个日志记录了互连网上的用户的拜访来源。大家要求总结从某一网址苏醒的独立访客的数目,在关系型数据库中,大家大概必要上面那样的SQL查询语句:

  1. SELECT count(distinct(user_id)) FROM clicks GROUP BY site  

大家得以在NoSQL中创造如下的数据模型:

皇冠直营现金网官方网 6

Counting Unique Users using Composite Keys

这么,大家就能够把数据按UserID来排序,我们就足以很轻巧把同四个用户的数目(一个用户并不会发出太多的event)实行处理,去掉那个重复的站点(使用hash
table或是别的什么)。另二个可选的本事是,大家得以对每3个用户建立1个数码实体,然后把其站点来源追加到这些数据实体中,当然,那样一来,数据的更新在性质比较之下会有早晚损失。

**适用性:** Ordered Key-Value Store 排序键值对数据库,
BigTable风格的数据库。

(拾)反转寻觅 Inverted Search – 直接聚合 Direct Aggregation

这几个才干越来越多的是数据处理手艺,而不是数量建立模型技巧。固然如此,这么些能力或许会潜移默化数据模型。那些本事最重大的想法是选取多个目录来找到满意某条件的多少,不过把数据聚合起须求使用全文字笔迹核算索。照旧让大家来讲二个演示。依旧用地点十一分例子,大家有为数不少的日志,个中囊括网络用户和他们的拜会来源。让大家即使每条记下都有二个UserID,还有用户的体系 (Men,Women,Bloggers,等),以及用户所在的都会,和走访过的站点。大家要干的事是,为各样用户体系找到满意某个原则(访问源,所在城市,等)的的独门用户。

很分明,大家要求探索那么些满意条件的用户,纵然大家使用反转搜索,那会让我们把那事干得很轻易,如: {Category
-> [user IDs]}
 或 {Site -> [user
IDs]}
。使用那样的目录,大家得以取多个或多个UserID要的名不副实或并集(那一个事很轻巧干,而且能够干得飞速,假诺这么些UserID是排好序的)。不过,大家要按用户系列来生成报表会变得稍微麻烦,因为大家用讲话也许会像上面那样

  1. SELECT count(distinct(user_id)) … GROUP BY category  

但这么的SQL很未有功能,因为category数据太多了。为了回应那几个难题,我们得以成立1个直接索引 {UserID
-> [Categories]}
下一场大家用它来生成报表:

皇冠直营现金网官方网 7

Counting Unique Users using Inverse and Direct Indexes

最后,大家须求驾驭,对每一个UserID的随意询问是很未有作用的。大家得以经过批查询处理来消除这几个难点。那意味,对于部分用户集,我们得以拓展预处理(区别的查询条件)。

适用性: Key-Value Store键值对数据库,Document
Databases文书档案数据库,BigTable风格的数据库。

层级式模型Hierarchy Modeling Techniques

(1壹)树形聚合Tree Aggregation

树形或是任意的图(需反规格化)能够被间接打成一条记下或文书档案存放。

  • 当树形结构被2次性收取时那会分外有功能(如:大家需求出示2个blog的树形评论)
  • 查究和别的存取那一个实体都会设不不荒谬。
  • 对此超越二分之一NoSQL的兑现的话,更新数据都以很不合算的(相比较起独立结点来讲)

皇冠直营现金网官方网 8

Tree Aggregation

适用性:Key-Value键值对数据库,Document Databases文书档案数据库

(1二)邻接列表 Adjacency Lists

Adjacency
Lists邻接列表是1种图–每贰个结点都以三个独门的记录,其包蕴了具备的父结点或子结点。那样,大家就足以经过给定的父或子结点来开始展览查找。当然,我们必要经过hop查询遍历图。这么些技能在广度和深度查询,以及获得某些结点的子树上并未有功用。

适用性:Key-Value键值对数据库,Document Databases文书档案数据库

(13) Materialized Paths

Materialized
Paths能够扶持制止递归遍历(如:树形结构)。那些技能也得以被感到是反规格化的一种变种。其想尽是为种种结点加上父结点或子结点的标志属性,那样就能够不要求遍历就知道全体的遗族结点和祖先结点了:

皇冠直营现金网官方网 9

Materialized Paths for eShop Category Hierarchy

其一手艺对于全文字笔迹核查索引擎来说10分有帮扶,因为其得以允许把三个层级结构转成3个文档。上边包车型大巴示图中大家得以看出有着的商品或Men’s
Shoes
下的子分类能够被一条相当的短的查询语句处理——只须要给定个分类名。

Materialized
Paths能够储存二个ID的汇集,或是一群ID拼出的字符串。后者允许你通过二个正则表明式来寻觅三个特定的道岔路线。下图展示了这一个本领(分支的门道总结了结点本人):

皇冠直营现金网官方网 10

Query Materialized Paths using RegExp

适用性:Key-Value键值对数据库,Document Databases文书档案数据,Search
Engines寻找引擎

(14)嵌套集 Nested Sets

Nested
sets
嵌套集是树形结构的行业内部技艺。它被大规模地用在了关系性数据库中,它完全地适用于Key-Value键值对数据库和Document
Databases文书档案数据库。这一个才能的想法是把叶子结点存款和储蓄成二个数组,并透过利用索引的起来和告竣来映射每多个非叶子结点到贰个卡牌结点集,就像是下图所示一样:

皇冠直营现金网官方网 11

Modeling of eCommerce Catalog using Nested Sets

这般的数据结构对于immutable
data不改变的数目有11分不易的频率,因为其点内部存款和储蓄器空间小,并且能够急迅地搜索富有的卡牌结点而不须求树的遍历。就算如此,在插入和换代上急需非常高的属性开支,因为新的卡牌结点供给大规模地换代索引。

适用性:Key-Value Stores键值数据库,Document Databases文书档案数据库

(15)嵌套文档扁平化:有限的字段名Nested Documents Flattening:Numbered Field Names

搜寻引擎基本上来说和扁平文书档案一齐职业,如:每八个文书档案是三个扁平的字段和值的例表。那种数据模型的用来把事情实体映射到3个文本文书档案上,要是您的事情实体有很复杂的内部结构,那或然会变得很有挑衅。3个杰出的挑衅是把七个有层级的文书档案映映射出来。例如,文书档案中嵌套另2个文书档案。让我们看看下边包车型地铁以身作则:

皇冠直营现金网官方网 12

Nested Documents Problem

地方的每2个作业实体代码壹种简历。其包蕴了人名和一个技能列表。笔者把这几个层级文书档案映射成多个文本文书档案,1种方法是成立Skill和Level字段。这么些模型能够透过本领只怕品级来搜索一个人,而上海体育场面标注的那么的组合查询则会失利。(陈皓注:因为分不清Excellent是不是是Math依然Poetry上的)

在引用中的[4.6]付出了一种缓解方案。其为各类字段都标上数字 Skill_i 和 Level_i,那样就能够分开寻觅每贰个对(下图中央银行使了O奥迪Q3来遍历查找全数极大希望的字段):

皇冠直营现金网官方网 13

Nested Document Modeling using Numbered Field Names

这么的格局根本未有扩充性,对于部分错综复杂的题材来说只会让代码复杂度和保证工作变大。

适用性:Search Engines全文字笔迹核算索

(16)嵌套文书档案扁平化:周边查询 Nested Documents Flattening: Proximity Queries

在附录[4.6]中提交了那一个技术用来化解扁平层次文书档案。它用接近的询问来界定可被询问的单词的限定。下图中,全体的技术和品级被放在一个字段中,叫
SkillAndLevel,查询中冒出的“Excellent”和“Poetry”必需叁个紧跟另贰个:

皇冠直营现金网官方网 14

Nested Document Modeling using Proximity Queries

附录[4.3]中描述了那些本事被用在Solr中的一个成功案例。

适用性:Search Engines全文字笔迹核实索

(1⑦) 图结构批处理 Batch Graph Processing

Graph
databases图数据库,如neo肆j是3个超人的图数据库,越发是应用一个结点来探寻邻居结点,或是索求五个或少量结点前的涉及。可是处理大量的图数据是很没有功效的,因为图数据库的性质和扩张性并不是其指标。分布式的图数据处理可以被MapReduce
和 Message Passing
pattern来拍卖。如:在自家前一篇的篇章中的那三个示例。这几个主意能够让Key-Value
stores, Document databases和BigTable-style databases适合于处理大图。

作品来源:酷壳网

相关文章