前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu上安装Neo4J

如何在Ubuntu上安装Neo4J

原创
作者头像
何处惹尘埃
修改2018-08-02 14:56:49
4.6K1
修改2018-08-02 14:56:49
举报
文章被收录于专栏:云计算教程系列

介绍

什么是图表?

图表是由边连接的一组顶点。在数据库领域,图形是一组项目,每个项目与数据集中的另一个项目具有任何类型的关系。

什么是顶点和边?

  • 顶点 -顶点是图形中的数据点。对于那些熟悉任何形式的SQL数据库的人来说,顶点可以被视为行/记录。对于那些不熟悉SQL的人,可以将顶点视为一段数据。
  • 边 -边是两个不同顶点之间的关系。边很难转换为SQL术语,因为它们对图形数据库很灵活,但边可以被视为两个数据连接的方式。

例如

社交网络是大多数人可以联系到的图表的最佳示例之一。在社交网络中,人物被表示为顶点,并且关系表示为边。有许多不同类型的关系,例如:已婚,有朋友,有关系,有工作等等。图表也是如此。对于不同类型的边存在无限可能性,并且对于不同类型的顶点存在无限可能性。

一个图例

图例
图例

在此图片中,图形顶点只是整数,边未标记。尽管简单,但这仍然是一个图表。

加权图

在航空公司的例子中,当处理从A点到B点的飞机时,您想要为飞机选择最佳路径。让机场可视化为顶点,它们之间的飞行路径是边。

加权图
加权图

为每个边分配权重或成本,以便利用它。这里,重量代表两个机场之间的距离。因此,例如,在上图中,从LAX到ORD的成本是1749,加权图在地理数据表示中特别有用,其中距离是一个因素。

图数据库

图数据库是NoSQL数据库,它将信息存储为顶点和边(节点和关系)。您可以使用边和图遍历来查询数据,而不是使用外键和select语句。这种查询数据的方法在很多情况下都非常强大,例如社交网络,生物学,化学,商业分析,以及数据最好表示为与数据集中其他项目有关系的项目的任何情况。

在本教程中,我们将安装Neo4J:一个非常流行的图形数据库,具有许多语言绑定,几乎适用于任何流行的编程语言。

安装Neo4J

将Neo4J密钥添加到apt包管理器中:

代码语言:txt
复制
wget -O - http://debian.neo4j.org/neotechnology.gpg.key | apt-key add -

将Neo4J添加到Apt源列表:

代码语言:txt
复制
echo 'deb http://debian.neo4j.org/repo stable/' > /etc/apt/sources.list.d/neo4j.list

更新包管理器:

代码语言:txt
复制
apt-get update

安装Neo4J:

代码语言:txt
复制
apt-get install neo4j

Neo4J应该正在运行。您可以使用以下命令进行检查

代码语言:txt
复制
service neo4j-service status

Neo4J RESTful API和Cypher查询语言

Neo4J令人敬畏的一个原因是它有一个非常容易使用的RESTful API,这意味着几乎任何可以发出Web请求的编程语言都可以使用它。在Neo4J数据库上执行的许多操作都是使用Cypher查询执行的。Cypher查询语言是Neo4J用于操作和读取数据的查询语言。Cypher是Neo4J,因为SQL是MySQL。

Neo4J RESTful API的Web请求结构如下:

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://SERVERNAME:7474/db/data/cypher -d '{                                                      
  "query" : "CYPHER QUERY GOES HERE",
  "params" : {
    QUERY PARAMETERS GO HERE
  }
}'

将数据添加到Neo4J中

Neo4J是一个数据库,数据库需要数据,所以让我们添加一些数据!

创建一个新节点:

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{                                                      
  "query" : "CREATE (n:Person { name : {name} }) RETURN n",
  "params" : {
    "name" : "Foo"
  }
}'

我之前提到过,图形数据库将数据存储为节点和关系。关系需要两个节点,所以让我们创建另一个节点:

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{                                                      
  "query" : "CREATE (n:Person { name : {name} }) RETURN n",
  "params" : {
    "name" : "Bar"
  }
}'

现在我们可以在这两个节点之间创建一个关系:

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/node/0/relationships -d '{
  "to" : "http://localhost:7474/db/data/node/1",
  "type" : "Comes Before"
}
}'

使用Cypher查询Neo4J

下面是一些示例cypher查询,我们可以使用它们来查看我们之前插入的数据。

我们可以从我们创建的第一个节点开始,获取所有连接的节点和相应的关系:

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{
  "query" : "MATCH (x {name: {startName}})-[r]->(n) RETURN type(r), n.name",
  "params" : {
     "startName" : "Foo"
  }
}'

返回图中所有节点的name属性(注意:不应在大图上执行):

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{
    "query" : "START n = node(*) return n.name",
    "params" : {
    }
}'

返回图中的所有关系类型(注意:不应在大图上执行):

代码语言:txt
复制
curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{
    "query" : "START r=rel(*) return type(r) ",
    "params" : {
    }
}'

更完整的说明,并通过了Neo4j的REST风格的API提供的方法列表,可以发现在这里,可以发现在的Cypher查询语言的信息在这里

结论

本教程指导基于Ubuntu安装Neo4j,欢迎访问腾讯云社区查看更多关于Neo4j语法其他相关教程


参考文献:《How To Install Neo4J on an Ubuntu VPS》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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