如何在Ubuntu上安装Neo4J
原创介绍
什么是图表?
图表是由边连接的一组顶点。在数据库领域,图形是一组项目,每个项目与数据集中的另一个项目具有任何类型的关系。
什么是顶点和边?
- 顶点 -顶点是图形中的数据点。对于那些熟悉任何形式的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" : {