Neo4j介绍与使用(更新)

转载 2015年07月06日 16:37:56

Neo4j简介

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。

图形数据结构

在一个图中包含两种基本的数据类型:Nodes(节点) 和 Relationships(关系)。Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。

网络结构图

Neo4j安装

Neo4j可以被安装成一个独立运行的服务端程序,客户端程序通过REST API进行访问。也可以嵌入式安装,即安装为编程语言的第三方类库,目前只支持java和python语言。

因Neo4j是用java语言开发的,所以确保将要安装的机器上已安装了jre或者jdk

安装为服务

此种安装方式简单,各平台安装过程基本一样

  1. http://neo4j.org/download上下载最新的版本,根据安装的平台选择适当的版本。
  2. 解压安装包,解压后运行终端,进入解压后文件夹中的bin文件夹。
  3. 在终端中运行命令完成安装

    Linux/MacOS系统 neo4j install
    Windows系统 Neo4j.bat install

  4. 在终端中运行命令开启服务

    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是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个...
  • liujiandu101
  • liujiandu101
  • 2016年06月23日 10:49
  • 4189

关于Neo4j和Cypher批量更新和批量插入优化的5个建议

当通过程序向图形化数据库中写入大量数据的时候,你会希望它能够高效的处理。低效的方式下面这些方式不是十分有效: - 将值直接写入到语句中,而不是通过参数的方式 - 每一个更新都通过一个Transac...
  • hwz2311245
  • hwz2311245
  • 2017年03月09日 17:06
  • 5438

Neo4j数据建模优化:双向关系

我们通常会将现实生活中的关系型数据,通过一定的方式,转化为图形化的结构存储起来。尽管图形化的结构相比于表结构更加直观,但也存在一些常见的误区。在这篇博文中,我们来讨论其中的一个容易让人混淆的概念:双向...
  • hwz2311245
  • hwz2311245
  • 2017年01月18日 16:52
  • 2393

Neo4j的存储结构

Neo4j作为图形数据库,有其独特的数据存储结构。 数据存储主要分为节点、关系、节点或关系上属性这三类数据存储,这些数据也可以通过Lucene进行存储检索。 一个节点共占9个byte,,格式  in_...
  • huaishu
  • huaishu
  • 2013年09月15日 21:15
  • 6413

Neo4j图数据库简介和底层原理

http://www.cnblogs.com/bonelee/p/6211290.html现实中很多数据都是用图来表达的,比如社交网络中人与人的关系、地图数据、或是基因信息等等。RDBMS并不适合表达...
  • bluejoe2000
  • bluejoe2000
  • 2017年06月10日 10:36
  • 1179

Neo4j简单介绍

这篇文章简单的介绍了Neo4j图形数据库,并附上了一些可以用于参考的文章地址,希望对于初步接触了解Neo4j数据库有一定的帮助...
  • wrzcy
  • wrzcy
  • 2016年07月14日 08:44
  • 2051

php客户端neoclient遍历neo4j中的节点和关系及其属性等

neoclient遍历neo4j中的节点和关系及其属性等:环境: ubuntu 14.04 neo4j 2.3.0M02 企业版 neoclient php5.5.9 环境配置请见前一篇博文...
  • bob601450868
  • bob601450868
  • 2015年11月26日 16:05
  • 1397

Neo4j 3.2版正式发布:企业级扩展性增强、原生性能提高,还有更多特性

上周末,Neo4j的3.2官方版正式发布,此版本在扩展架构性和程序的执行性能上得到了极大的增强,它标志着以图计算和图存储为核心的互联网应用从此可以扩展到全球的架构。当然,此版本也在安全性和法规遵从性上...
  • rind
  • rind
  • 2017年05月15日 20:08
  • 1496

图数据库-Neo4j介绍与Cypher入门

1、简介 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上形成图谱而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性,如:事务,索引等...
  • wangweislk
  • wangweislk
  • 2015年08月14日 15:01
  • 15532

Neo4j介绍与使用

Neo4j简介Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象...
  • dyllove98
  • dyllove98
  • 2013年03月04日 23:27
  • 66626
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Neo4j介绍与使用(更新)
举报原因:
原因补充:

(最多只允许输入30个字)