图形数据库Neo4j(1)----简介及使用
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。
图形数据结构
在一个图中包含两种基本的数据类型:Nodes(节点) 和 Relationships(关系)。Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。
Neo4j安装
Neo4j可以被安装成一个独立运行的服务端程序,客户端程序通过REST API进行访问。也可以嵌入式安装,即安装为编程语言的第三方类库,目前只支持Java和Python语言。
因Neo4j是用java语言开发的,所以确保将要安装的机器上已安装了jre或者jdk
安装为服务
此种安装方式简单,各平台安装过程基本一样
- 从http://neo4j.org/download上下载最新的版本,根据安装的平台选择适当的版本。
- 解压安装包,解压后运行终端,进入解压后文件夹中的bin文件夹。
- 在终端中运行命令完成安装
Linux/MacOS系统
neo4j install
Windows系统Neo4j.bat install
- 在终端中运行命令开启服务
Linux/MacOS系统
service neo4j-service start
Windows系统Neo4j.bat start
通过stop
命令可以关闭服务,status
命令查看运行状态
支持python嵌入式安装
第一步:安装Jpype
从http://sourceforge.net/projects/jpype/files/JPype/ 下载最新版本,windows有exe格式的直接安装程序,linux平台要下载源码包,解压后运行sudo python setup.py install
完成安装
第二步:安装 neo4j-embedded
如果安装了python的包管理工具 pip 或者 easy_install 可直接运行
Pip install neo4j-embedded
easy_install neo4j-embedded
也可以从http://pypi.python.org/pypi/neo4j-embedded/下载相应的安装包完成安装。
Neo4j使用实例
有如下所示的用户关注关系所形成的关系网络
现在利用图形数据库进行数据的储存,并获得user1 的粉丝,并为user4 推荐好友
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Neo4j图形数据库示例
#
from neo4j import GraphDatabase, INCOMING
# 创建或连接数据库
db = GraphDatabase( 'neodb' )
# 在一个事务内完成写或读操作
with db.transaction:
#创建用户组节点
users = db.node()
# 连接到参考节点,方便查找
db.reference_node.USERS(users)
# 为用户组建立索引,便于快速查找
user_idx = db.node.indexes.create( 'users' )
#创建用户节点
def create_user(name):
with db.transaction:
user = db.node(name = name)
user.INSTANCE_OF(users)
# 建立基于用户name的索引
user_idx[ 'name' ][name] = user
return user
#根据用户名获得用户节点
def get_user(name):
return user_idx[ 'name' ][name].single
#建立节点
for name in [ 'user1' , 'user2' , 'user3' , 'user4' ]:
create_user(name)
#为节点间添加关注关系(FOLLOWS)
with db.transaction:
get_user( 'user2' ).FOLLOWS(get_user( 'user1' ))
get_user( 'user3' ).FOLLOWS(get_user( 'user1' ))
get_user( 'user4' ).FOLLOWS(get_user( 'user3' ))
# 获得用户1的粉丝
for relationship in get_user( 'user1' ).FOLLOWS.incoming:
u = relationship.start
print u[ 'name' ]
#输出结果:user2,user3
#为用户4推荐好友,即该用户关注的用户所关注的用户
nid = get_user( 'user4' ). id
#设置查询语句
query = "START n=node({id}) MATCH n-[:FOLLOWS]->m-[:FOLLOWS]->fof RETURN n,m,fof"
for row in db.query(query, id = nid):
node = row[ 'fof' ]
print node[ 'name' ]
#输出结果:user1
|
图形数据库Neo4j(1)----简介及使用相关推荐
- 图形数据库Neo4J简介
最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数 ...
- 图形数据库neo4j视频教程
2019独角兽企业重金招聘Python工程师标准>>> Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌入式的.基于磁盘的.具备完全的 ...
- NOSQL之Neo4j:Neo4j的简介、安装、使用方法(Neo4j搭配JDK安装的图文教程)之详细攻略
NOSQL之Neo4j:Neo4j的简介.安装.使用方法(Neo4j搭配JDK安装的图文教程)之详细攻略 目录 Neo4j的简介 Cypher语言 Neo4j之Cypher:Cypher查询语言的简介 ...
- NOSQL图形数据库 - Neo4j
Neo4j入门指南 1.简介 2.特点 3.安装 4.基础操作 5.Java集成 5.1 内嵌数据库集成方式 5.2 服务器集成方式 5.3 Spring集成方式 参考文档 1.简介 Neo4j是一个 ...
- Neo4j 基础简介一
Neo4j 是一个NoSQL的图形数据库 图 和 Neo4j 图论 图论起源 - 柯尼斯堡(Konigsberg)七桥问题 众所周知,图论起源于一个非常经典的问题--柯尼斯堡(Konigsberg)七 ...
- 图形数据库Neo4j
前言 图表数据库是当今巨大的宏观业务趋势之一:在高度连接的数据中利用复杂和动态的关系,产生洞察力和竞争优势.无论我们想要了解客户之间的关系,电话或数据中心网络中的元素,娱乐生产商和消费者,还是基因和蛋 ...
- 图形数据库Neo4j基本了解
在深入学习图形数据库之前,首先理解属性图的基本概念.一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图.顶点也称作节点(Node), ...
- Neo4j - CQL简介
CQL代表Cypher查询语言. 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言. Neo4j CQL - 它是Neo4j图形数据库的查询语言. 它是一种声明性模式匹配语言 ...
- php 可视化neo4j,开源图形数据库Neo4j使用 php开发
先看看它的示例数据 打开 Neo4j Browser :play movie graph 写代码,然后点play执行 Cypher, the graph query language.Neo4j提供了 ...
- Neo4j CQL简介
CQL CQL 代表 Cypher 查询语言.像 Orcale 数据库具有查询语言 SQL,Neo4j 具有 CQL 作为查询语言. Neo4j CQL Neo4j 图形数据库的查询语言: 一种声明性 ...
最新文章
- IDA Pro的patch插件 KeyPatch
- Flink SQL Client注册JAVA UDF完整流程
- hdu1068 Girls and Boys --- 最大独立集
- Windows消息拦截技术的应用
- 人工智能将为维护网络安全带来更多可能
- 错误:Property or field 'default' cannot be found on object of type 'com.netflix.appinfo.InstanceInfo'
- keil+proteus 制作计算器_设计费 | 工程设计费计算器使用指南
- 园林景观cad_CAD设计师含泪分享!2000多个CAD素材模板,同行都在用
- GAN变种介绍 - DCGAN、InfoGAN、CycleGAN、WGAN、Self-Attention GAN、BigGAN
- Crackme 21
- 深度学习与计算机视觉教程(12) | 目标检测 (两阶段,R-CNN系列)(CV通关指南·完结)
- dfa确定有限自动机定义_确定性有限自动机(DFA)
- 我奋斗了18年,不是为了和你一起喝咖啡
- 微信OAuth2接口40163错误怎么解决?
- 构件3扩大构件法的本质+W3是否等于W2 +角加速度α3是否等角加速度α2+科氏加速度诞生
- vue富媒体编辑器组件:vue-wangeditor的使用
- (精)广东工业大学《数据可视化技术》 2018实验报告
- 微信点餐系统——用Enum枚举来保存商品状态
- 为黑客打工能挣多少?月薪最高达2万美元
- 前程无忧助力,再次举办湖北武汉网络专场招聘会
热门文章
- fork的写时复制1
- java输入年月输出日历_java输入年份打印该年份的年历 | 学步园
- C# 读取XML 写入XML 读写XML
- C++11 static_assert 使用方法及assert 与 #error
- unix 网络编程全解
- html5 video mute按钮,How to mute an html5 video player
- 等比缩放公式_CVPR2019 | 旷视提出MetaSR:单一模型实现超分辨率任意缩放因子
- php fsockopen,php fsockopen()有什么用?
- c语言小球触地问题,OC语言中关于触摸事件和手势
- 策划通不过,不是老板的错