Date: 2016-01-27
Title: 图形数据库-1
Published: true
Type: post
Excerpt:
Category: GraphDB

图形数据库(GraphDB)

如果您对此文章感兴趣,欢迎发邮件至andy.zhangtao@hotmail.com

何谓图形数据库

在我们生存的实际世界当中,到处都存在着"关系"。世界当中没有独立存在的事物,在我们身边充斥着大量的,相互交织的各种关系。

如果需要处理这些相互交织的关系数据,凭借关系型数据库是无法完成的。此时,就需要一种以关系为核心,并且可以高效存储,高效处理的数据库。

相对于图形数据库而言,关系型数据库虽然也可以计算这些"关系"数据,但计算的代价却是异常昂贵。得益于图形数据库天生以"关系"为核心,因此其在检索关系数据时非常高效,目前可以支持每颗CPU每秒处理百万次关系检索,效率比RDBMS高出好几个数量级。

那图形数据库会替代RDBMS吗?首先来说,两者适用场景不同。图形数据库更加侧重于处理海量数据下的,高度链接的关系拓扑关系和复杂的查询需求,而这些恰恰不是RDBMS的强项。

图形数据库使用的数据模型

如果读者接触过对象模型或者实体图,那么想必对下面的模型必然不陌生。在图形数据库模型中,一个实体称之为一个节点(node),每个node都有非常多的属性,这些属性通过key-value来表示。相同的node在不同的场景当中可以拥有不同的标签信息(lable)。而这些Lable信息,除了可以用来标记node之外,也可以用来附加一些metadata(例如索引信息或者约束信息等).

而在两个节点之间,有向并且语义清楚的连接就称之为关系。

通常来说,一个关系包括方向,类型,起点node和结束node四个要素。而对于node来说,一个关系则可以同时拥有多个属性。例如权重,代价,距离,级别,新鲜度或者优势度等等。因为在图形数据库当中,维护一条关系是一个代价非常小的事情,所以两个节点之间可以在不带来额外性能损失的情况下,拥有无限条的关系或者属性。

但有一点需要注意,尽管关系是有向的,但关系本身却不关心方向。只有node才会关心方向。

虽然关系很便宜,但在图形数据库当中却有一条铁的纪律:"不允许存在死链"。因为每条关系都必须存在起始node和结束node,所以用户无法在删除所有关系之前删除掉与之相关联的node。用户可以认为,一条存在的关系必然会连接两个存在的node。

图形数据库(GraphDB)的更多相关文章

  1. 图形数据库 Neo4j 开发实战

    https://www.ibm.com/developerworks/cn/java/j-lo-neo4j/ Neo4j 是一个高性能的 NoSQL 图形数据库.Neo4j 使用图(graph)相关的 ...

  2. 图形数据库Neo4J简介

    最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数 ...

  3. neo4j-jersey分嵌入式和服务式连接图形数据库

    原文载自:http://blog.csdn.net/yidian815/article/details/12887259 嵌入式: 引入neo4j依赖 <dependency> <g ...

  4. 图形数据库、NOSQL和Neo4j

    简介 在众多不同的数据模型里,关系数据模型自80年代就处于统治地位,而且有不少实现,如Oracle.MySQL和MSSQL,它们也被称为关系数据库管理系统(RDBMS).然而,最近随着关系数据库使用案 ...

  5. 通过Spring Data Neo4J操作您的图形数据库

    在前面的一篇文章<图形数据库Neo4J简介>中,我们已经对其内部所使用的各种机制进行了简单地介绍.而在我们尝试对Neo4J进行大版本升级时,我发现网络上并没有任何成型的样例代码以及简介,而 ...

  6. Neo4j 第二篇:图形数据库

    在深入学习图形数据库之前,首先理解属性图的基本概念.一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图.顶点也称作节点(Node), ...

  7. Linux下图形数据库Neo4j单机安装

    Neo4j数据库简介 Neo4j 是一个NoSQL的图形数据库(Graph Database).Neo4j使用图(graph)相关的概念来描述数据模型,把数据保存为图中的节点以及节点之间的关系.很多应 ...

  8. NoSql图形数据库

    NoSQL数据库可以按照它们的数据模型分成4类: 键-值存储库(Key-Value-stores); BigTable实现(BigTable-implementations); 文档库(Documen ...

  9. 图形数据库Neo4j基本了解

    在深入学习图形数据库之前,首先理解属性图的基本概念.一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图.顶点也称作节点(Node), ...

随机推荐

  1. hdu 3667 /2010哈尔滨赛区H题 费用与流量为非线性关系/费用流

    题意: 在一般费用流题目改动:路过某路,每x单位流量须要花费 ai*x^2(ai为给定的系数). 開始的的时候,一看仅仅只是是最后统计费用上在改动罢了,一看例子.发现根本没那么简单(ps:以后每次写程 ...

  2. 最美应用-从Android研发project师的角度之[最美时光]

    最美应用-从Android研发project师的角度之最美时光 @author ASCE1885的 Github 简书 微博 CSDN 近期发现最美应用这样一个站点.它会定期推介一些非常有意思的app ...

  3. sort-colors——排序3种数字

    题目描述 Given an array with n objects colored red, white or blue, sort them so that objects of the same ...

  4. cocos2d-x 3.0 回调函数

    參考文章: http://blog.csdn.net/crayondeng/article/details/18767407 http://blog.csdn.net/star530/article/ ...

  5. 【SpringMVC学习03】SpringMVC中注解和非注解方式下的映射器和适配器总结

    从上一篇的springmvc入门中已经看到,springmvc.xml中的配置了映射器和适配器,是使用非注解的方式来配置的,这是非注解方式的一种,这里再复习一下: 1. 非注解方式 1.1 处理器适配 ...

  6. JQuery小结(转)

    一.页面加载 JQ的页面加载比JS要快,当整个dom树结构生成完毕后就会加载 JQ页面加载不存在覆盖问题,加载的时候是顺序执行 JQ的页面加载最简写的方式为: $(function(){ alert( ...

  7. UVALive - 4255 - Guess (拓扑排序)

    Guess 题目传送:Guess 白书例题 注意拓扑排序时,,入度同一时候为0的前缀和须要赋值为同一个数(这个数能够随机取.由于前缀和是累加的,每个a的数值都仅仅和前缀和之差有关).,由于此时能够看成 ...

  8. 分享牛人就是的volatilekeyword

    volatile作用 一个定义为volatile的变量是说这变量可能会被意想不到地改变.这样,编译器就不会去如果这个变量的值了. 精确地说就是.优化器在用到这个变量时必须每次都小心地又一次读取这个变量 ...

  9. iOS swift NSClassFromString将字符串转换成类名

    在oc中将字符串转换成类名直接调用NSClassFromString("classname")即可,但是到了swift中变的麻烦多了 swift中如果要将字符串转换为类型需要以下几 ...

  10. php判断页面是否是微信打开的示例(微信打开网页)

    代码如下: $user_agent = $_SERVER['HTTP_USER_AGENT'];if (strpos($user_agent, 'MicroMessenger') === false) ...