Neo4j介绍与使用(更新)
来源:互联网 发布:云计算发展史 编辑:程序博客网 时间:2024/05/18 01:04
Neo4j简介
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/0.5.4/JPype-0.5.4.2.win32-py2.7.exe/download 下载最新版本,python2.7适用于2.7版本,windows有exe格式的直接安装程序,linux平台要下载源码包,解压后运行sudo python setup.py install
完成安装,但是以上在sourceforge只有32位版本的,如果需要安装64位版本,可以到:点击打开链接,但是这是一个whl格式的文件,在python的主页中也有JPype 64位的库,但是名字更改为Jpype1 64le,地址为:https://pypi.python.org/pypi/JPype1-py3。还有一个网址:http://rpmfind.net/linux/rpm2html/search.php?query=python-jpype(x86-64)
第二步:安装 neo4j-embedded
如果安装了python的包管理工具 pip 或者 easy_install 可直接运行
Pip install neo4j-embedded easy_install neo4j-embedded
也可以从http://pypi.python.org/pypi/neo4j-embedded/下载相应的安装包完成安装。
Neo4j使用实例
有如下所示的用户关注关系所形成的关系网络
现在利用图形数据库进行数据的储存,并获得user1 的粉丝,并为user4 推荐好友
#!/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介绍与使用(更新)
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与使用
- Neo4j介绍与安装
- Neo4j 第四篇:使用C#更新和查询Neo4j
- 图数据库-Neo4j介绍与Cypher入门
- 图数据库-Neo4j介绍与Cypher入门
- neo4j介绍
- neo4j介绍
- neo4j使用教程(1) 从搭建neo4j网络服务开始
- neo4j使用
- angularJS基于WEB的静态页面模板
- iOS 处理方法中的可变参数
- Spring线程池ThreadPoolExecutor配置并且得到任务执行的结果
- 利用SecureCRT上传、下载文件(使用sz与rz命令)
- RTP传输协议
- Neo4j介绍与使用(更新)
- Important Points for Inheritance in Java
- Mysql自动备份
- 通过Shunra VE SMB 测试系统(如视频监控、楼宇对讲、VOIP、IPTV等系统)在广域网中的性能
- A conflict in the working copy obstructs the current operation异常
- Android 自定义progressDialog实现
- ios学习笔记:利用sizeclass匹配不同设备
- Swift 中的值类型和引用类型
- iOS 后台定位需要注意的两个问题