通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图

最近疫情反复,我被为拜托建一张“某某行动轨迹及接触关系图”。

这类行动轨迹或接触关系,可以抽象成网或者图,从这类图结构立刻就会联想到图数据库Neo4J,正好并没有在公司电脑上安装和使用过Neo4J,于是在这里简单记录下,整个过程还是非常简单的,10min之内即可搞定。

Neo4J 安装 & 启动

选择通过docker镜像进行安装,首先打开 DockerHub,搜索Neo4J。
通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图_第1张图片
这里选择最新版本即可,拉取镜像 docker pull neo4j

$ docker image ls neo4j
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
neo4j        latest    cbd9c9af52a3   13 days ago   568MB

待镜像拉取完毕后,即可启动Neo4J

docker run -it -d -p 7474:7474 -p 7687:7687 --volume=$HOME/neo4j/data:/data neo4j

此时就可以顺利打开Neo4J的web console了 http://localhost:7474/browser
通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图_第2张图片

Neo4J 节点 & 边

图(Graph)中最重要的就是节点和边,让我们先来创建节点:

在“行动轨迹&接触关系”这个场景中,有两类节点,一类是”地点“,一类是”人“

CREATE (西二旗:Location {title:'西二旗地铁站'})

CREATE (张三:Person {name:'张三'}) #此时满脑子都是罗老师 哈哈
CREATE (李四:Person {name:'李四'})
CREATE (王五:Person {name:'王五'})
CREATE (刘六:Person {name:'刘六'})
CREATE (赵七:Person {name:'赵七'})
CREATE (周八:Person {name:'周八'})

通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图_第3张图片
节点有了,建立关联关系:

CREATE
(张三)-[:工作]->(西二旗),
(李四)-[:乘车]->(西二旗),
(王五)-[:乘车]->(西二旗),
(刘六)-[:乘车]->(西二旗)

CREATE (和合谷:Location {title:'和合谷'}),
(张三)-[:就餐 {roles:['消费者']}]->(和合谷),
(王五)-[:就餐 {roles:['消费者']}]->(和合谷),
(周八)-[:就餐 {roles:['消费者']}]->(和合谷)

CREATE (软件园:Location {title:'软件园'}),
(王五)-[:工作 {roles:['社畜']}]->(软件园),
(赵七)-[:工作 {roles:['社畜']}]->(软件园)

CREATE (电影院:Location {title:'电影院'}),
(周八)-[:观影 {roles:['消费者']}]->(电影院)

通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图_第4张图片
此时图和边都建立好了,就可以进行搜索,让我们看一下张三都去过哪些地方 MATCH (三 {name: "张三"}) RETURN 三
通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图_第5张图片
然后以张三为起点查看所有关联关系
通过图数据库 Neo4J 建立疫情行动轨迹及接触关系图_第6张图片

至此,一张“某某行动轨迹 & 接触关系图”创建完毕。

可见,工欲善其事必先利其器,图数据库可以很好的解决此类问题;除此之外,图数据库也广泛应用在风控、社交、推荐等领域。

你可能感兴趣的:(中间件,数据库,缓存,docker,kubernetes,容器技术,随笔,杂谈,图数据库,neo4j,docker,疫情)