天天看点

图形数据库和NOSQL图形数据库和NOSQL

数据内部依赖和复杂度的增加,这一问题因互联网、web2.0、社交网络,以及对大量不同系统的数据源开放和标准化的访问而加剧。

本文旨在介绍图形数据库(graph database)在nosql运动里的地位,第二部分则是对neo4j(一种基于java的图形数据库)的简介。

<a target="_blank"></a>

简单地讲,nosql数据库可以按照它们的数据模型分成4类:

键-值存储库(key-value-stores)

bigtable实现(bigtable-implementations)

文档库(document-stores)

图形数据库(graph database)

在此,让我们深入检阅nosql数据库的两个有意思的方面:伸缩性和复杂度。

高可用性(a):所有客户端总能找到所请求数据的至少一个版本,即使集群中某些机器已经宕机,

分区容忍性(p):整个系统保持自己的特征,即使是被部署到不同服务器上的时候,这对客户端来讲是透明的。

cap法则假定向外扩展的3个不同方面中只有两个可以同时完全实现。

图形数据库和NOSQL图形数据库和NOSQL

为了能处理大型分布式系统,让我们深入了解所采用的不同cap特征。

图形数据库和NOSQL图形数据库和NOSQL

这只是理论。然而在实践中,rdbm遇到了前面提到的cap问题的限制,以及由高性能查询实现而产生的问题:联结大量表、深度嵌套的sql查询。其他问题包括伸缩性、随时间的模式演变,树形结构的建模,半结构化数据,层级和网络等。

尽管图结构在理论上甚至可以用rdbms规范化,但由于关系数据库的实现特点,对于象文件树这样的递归结构和象社交图这样的网络结构有严重的查询性能影响。网络关系上的每次操作都会导致rdbms上的一次"联结"操作,以两个表的主键集合间的集合操作来实现 ,这种操作不仅缓慢并且无法随着这些表中元组数量的增加而伸缩。

图形数据库和NOSQL图形数据库和NOSQL

属性图形(property graph)的基本术语

节点(即顶点)

关系(即边) - 具有方向和类型(标记和标向)

节点和关系上面的属性(即特性)

更特殊的是,这个模型是一个被标记和标向的属性多重图(multigraph)。被标记的图每条边都有一个标签,它被用来作为那条边的类型。有向图允许边有一个固定的方向,从末或源节点到首或目标节点。属性图允许每个节点和边有一组可变的属性列表,其中的属性是关联某个名字的值,简化了图形结构。多重图允许两个节点之间存在多条边。这意味着两个节点可以由不同边连接多次,即使两条边有相同的尾、头和标记。

下图显示了一个被标记的小型属性图。

图形数据库和NOSQL图形数据库和NOSQL

下图展示了在复杂度和伸缩性方面背景下的主要nosql分类的位置。

图形数据库和NOSQL图形数据库和NOSQL

原文发布时间:2014-5-24

本文来自云栖合作伙伴“linux中国”