暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

图数据库基础(三):原生图数据库和非原生图数据库

原创 liaju 2021-09-26
4601

根据图数据库底层存储模式对图数据库产品进行分类,可以分为原生(Native)图存储和非原生(Non-Native)图存储两种。

其中原生图存储数据存储模式专门为存储和处理图而设计优化,可支持各类图算法的快速遍历;非原生图存储则采用关系数据库、面向对象数据库或其它通用数据存储策略存储数据,未专门优化存储方式

Neo4j 是 Native 的图数据库,所谓 Native 图数据库,中文一般翻译为 “原生图数据库”,指从一开始便是为了解决图类数据结构而设计的数据库。对了解数据结构的同学来看,这里的 “原生” 的体现,其实主要就在两个方面:

  1. 图数据结构的存储
  2. 图数据的处理和查询
  • 图数据结构的存储

不管是什么数据库,mysql,sql server,mongo,neo4j 等等,其存储的数据,最终都要落地到文件系统上的,那 neo4j 落地的文件大概都是什么样的呢?这里我以本地的一个应用的数据库来介绍一下。
image.png

上面是我的本地一个图数据库的数据库文件,可以看出 Neo4j 把其数据库文件分为四大类来分类存储:

标签
节点
属性
关系

其实按照我们图论中的一般说法,其实对于一个图数据结构来说,只需要存储节点和关系就可以了,如下面这个图数据一样:
image.png
这里是我们应用中一个实际案例,大家看看我们对标签和属性的划分:
image.png

– 这里咱们先看看这个语句表达的什么意思,这是 Neo4j 专用的查询语言 Cypher
– 下面这个查询语句含义如下:
– step 1: 首先查询一个具有标签为 “沪深股市”,且有一个属性对 “{name: “sha_600610”}” 的节点,
– step 2: 然后查找这个节点的所有双向关系
– step 3: 在这些关系的中,要求另外一个节点具有 “人物_公司股东” 这个标签
– step 4: 返回这个节点,以及满足要求的关系和相关节点

MATCH (node1:沪深股市 {name: “sha_600610”})-[relation]-(node2:人物_公司股东)
RETURN node1, node2, relation

最后修改时间:2021-09-26 11:13:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论