前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NEO4J 图数据库哪里和哪里 从哪里开始

NEO4J 图数据库哪里和哪里 从哪里开始

作者头像
AustinDatabases
发布2020-05-09 16:55:27
2.9K0
发布2020-05-09 16:55:27
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

上期已经安装了图数据库,本期就该讨论到底这个图数据库里面的一些基本的概念和如何操作。最近听到一句话,年轻不年轻,不是看年龄,而是看你对新鲜事物的热情,即使你20岁,谈起新事物也是一脸的不屑,只能说明身体和灵魂分了家。闲话不谈 回归正题。

节点和节点之间可以存在多种关系,单向,双向

上图是一个人际关系图,其中的每个人的关系是凌乱的,一个人对另外的几个人之间的角色也是不同的,这里NEO4J 通过 lable 来定位一个节点(方块位置)在整体中的扮演的角色,例如这张图中“某公司的客户”,就是定义这群人在这个图中的角色,都是某公司的客户。用这样的概念可以将这些人,进行一个一致性的分类。

理解NEO4J 中的关键的几个属性:

1 节点:下图中每个方块可以看做一个节点

2 属性:每个节点有多个属性,以 KEY VALUE 的形式来进行描述

3 关系: 节点和节点之间的关系,也是通过key value的方式来存储,同时节点和节点的关系不唯一,可以双向

4 标签:标签就是这组节点的共性,例如都是某公司的职员,或者摇身一变都是一个城市的市民 ,标签是标记每个节点之间的相同点

个人浅薄的理解

1 节点,可以理解为传统数据的行的概念

2 关系:就是表和表之间 join 的概念 (这也是比传统数据库高明的地方,其实还是空间换了时间),关系本身也是带有方向和属性的,这也是传统数据库本身做不到的地方

3 属性:理解为一个MONGODB 里面的document,一个节点会有多种属性

4 标签:理解为mongodb里面的collection 或者 传统数据库中的表,但一个节点可以属于多个表,这个又超越了传统数据库的理解的理念。

图数据库是什么个人总结一下,一个通过key value来存储数据,并且在在查询前就建立了JOIN关系的,数据字段属于多个表的 “weirdo” 出现了。

实际上在安装完neo4j 本身他就拥有自己的exmaple 的指导

在输入 :play movie graph 后,你可以看到上图从如何创建,一个实例的图,找寻数据,查询数据等等这些操作

点击箭头,可以将要执行的sample movie 库,在执行框中执行,执行后结果如下。

下面贴部分代码,并辅以解释,加速学习进度

1 建立节点和属性 CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'}) CREATE (Keanu:Person {name:'Keanu Reeves', born:1964}) CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967}) 上面两句话创建了三个节点,

1 TheMatrix

2 Keanu

3 Carrie

这三个节点具有两个lable 也就是这三个节点目前属于两个表

1 Movie

2 Person

而这三个节点, {} 中的信息是代表这个节点的属性,也就是这个节点的内部信息,相当于字段以key value 形式表达,或直接理解为 mongodb的部分知识

所以建立节点需要几个信息,1 节点本身,2 节点属于哪个lable 3 节点本身的属性信息, 下面就开始创建相关的关系,也就是节点和节点之间爱你的关系

CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix), (Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix), (Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix), (Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix), (LillyW)-[:DIRECTED]->(TheMatrix), (LanaW)-[:DIRECTED]->(TheMatrix), (JoelS)-[:PRODUCED]->(TheMatrix)

首先上面这句话的意思是(翻译成人类能看懂的文字)

1 keanu 作为一个演员在TheMatrix电影里面扮演了 Neo这个角色,同时

Carrie在TheMatrix 这个电影里面扮演了Trinity 这个角色,Laurence 在TheMatrix 电影里面扮演Morpheus角色,Hugo在TheMatrix 扮演Agent Smith 角色,LillyW LanaW Joels 导演了TheMatrix 这部电影。

通过这一个语句,将六个人与这部电影的关系描述清楚。

在能读懂一些简单的创建节点和关系的语句后,我们来一边创建创建节点,一边查询节点,加快理解的速度

CREATE (TomH:Person {name:'Tom Hanks', born:1956})

创建一个节点 TomH ,然后查询这个节点通过节点的属性

如果不理解,这里通过传统的数据库来翻译一下

select tom from Person where name = 'Tom Hanks';

CREATE (CloudAtlas:Movie {title:'Cloud Atlas', released:2012, tagline:'Everything is connected'})

创建一个MOVIE的节点,叫CloudAtlas ,并且相关的电影的title, released, tagline 等字段的内容

查询 tilte 等于 Cloud Atlas 返回节点本身

select CloudAtlas from Movie WHERE title = 'Cloud Atlas'

下面这张图的意思是 查找tom hanks 到底演过几部电影

当然写到这里我也是纳闷了两天 tom 和 tomHanksMovies 我根本就没有在任何地方输入过这些信息到NEO4J中,到底他们是怎么展示的这些信息,在经过琢磨后,照猫画虎的写出了下面查询Keanu 到底演过什么电影的查询语句。同样 K,Kmovies 我都没有输入过,到底是怎么回事???

See you next time

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档