相关文章推荐
完美的黑框眼镜  ·  SpringCloud Gateway ...·  2 月前    · 
胡子拉碴的葫芦  ·  lodash判断对象数组是否相等_js删除数 ...·  1 年前    · 
酷酷的小蝌蚪  ·  logstash filter json ...·  2 年前    · 
捣蛋的土豆  ·  泛型弱引用(不继承 ...·  2 年前    · 
善良的牛肉面  ·  javascript - 如何让 ...·  2 年前    · 
长情的刺猬  ·  JSON函数的语法及示例_日志服务-阿里云帮助中心·  2 年前    · 
Code  ›  如何在Ubuntu上安装Neo4J开发者社区
neo4j 数据库 localhost
https://cloud.tencent.com/developer/article/1174666?areaSource=106001.34
读研的橡皮擦
2 年前
何处惹尘埃
0 篇文章

如何在Ubuntu上安装Neo4J

原创
前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
何处惹尘埃
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 云计算教程系列 > 如何在Ubuntu上安装Neo4J

如何在Ubuntu上安装Neo4J

原创
作者头像
何处惹尘埃
修改 于 2018-08-02 14:56:49
3.1K 1
修改 于 2018-08-02 14:56:49
举报

介绍

什么是图表?

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

什么是顶点和边?

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

例如

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

一个图例

图例
图例

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

加权图

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

加权图
加权图

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

图数据库

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

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

安装Neo4J

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

wget -O - http://debian.neo4j.org/neotechnology.gpg.key | apt-key add -

将Neo4J添加到Apt源列表:

echo 'deb http://debian.neo4j.org/repo stable/' > /etc/apt/sources.list.d/neo4j.list

更新包管理器:

apt-get update

安装Neo4J:

apt-get install neo4j

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

service neo4j-service status

Neo4J RESTful API和Cypher查询语言

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

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

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是一个数据库,数据库需要数据,所以让我们添加一些数据!

创建一个新节点:

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"
}'

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

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"
}'

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

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查询,我们可以使用它们来查看我们之前插入的数据。

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

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属性(注意:不应在大图上执行):

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" : {
 
推荐文章
完美的黑框眼镜  ·  SpringCloud Gateway 修改请求路径的过滤器(StripPrefix Filter和PrefixPath Filter) - 哈喽哈喽111111
2 月前
胡子拉碴的葫芦  ·  lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的-腾讯云开发者社区-腾讯云
1 年前
酷酷的小蝌蚪  ·  logstash filter json remove_field-掘金
2 年前
捣蛋的土豆  ·  泛型弱引用(不继承 System.WeakReference)_weixin_34357267的博客-CSDN博客
2 年前
善良的牛肉面  ·  javascript - 如何让 useEffect 支持 async...await? - FE杂货铺 - SegmentFault 思否
2 年前
长情的刺猬  ·  JSON函数的语法及示例_日志服务-阿里云帮助中心
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号