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/ 下载最新版本,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 neo4jimport 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 namein ['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 relationshipin 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 rowin db.query(query,id=nid):
    node= row['fof']
    print node['name']
#输出结果:user1

图形数据库Neo4j(1)----简介及使用相关推荐

  1. 图形数据库Neo4J简介

    最近我在用图形数据库来完成对一个初创项目的支持.在使用过程中觉得这种图形数据库实际上挺有意思的.因此在这里给大家做一个简单的介绍. NoSQL数据库相信大家都听说过.它们常常可以用来处理传统的关系型数 ...

  2. 图形数据库neo4j视频教程

    2019独角兽企业重金招聘Python工程师标准>>> Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌入式的.基于磁盘的.具备完全的 ...

  3. NOSQL之Neo4j:Neo4j的简介、安装、使用方法(Neo4j搭配JDK安装的图文教程)之详细攻略

    NOSQL之Neo4j:Neo4j的简介.安装.使用方法(Neo4j搭配JDK安装的图文教程)之详细攻略 目录 Neo4j的简介 Cypher语言 Neo4j之Cypher:Cypher查询语言的简介 ...

  4. NOSQL图形数据库 - Neo4j

    Neo4j入门指南 1.简介 2.特点 3.安装 4.基础操作 5.Java集成 5.1 内嵌数据库集成方式 5.2 服务器集成方式 5.3 Spring集成方式 参考文档 1.简介 Neo4j是一个 ...

  5. Neo4j 基础简介一

    Neo4j 是一个NoSQL的图形数据库 图 和 Neo4j 图论 图论起源 - 柯尼斯堡(Konigsberg)七桥问题 众所周知,图论起源于一个非常经典的问题--柯尼斯堡(Konigsberg)七 ...

  6. 图形数据库Neo4j

    前言 图表数据库是当今巨大的宏观业务趋势之一:在高度连接的数据中利用复杂和动态的关系,产生洞察力和竞争优势.无论我们想要了解客户之间的关系,电话或数据中心网络中的元素,娱乐生产商和消费者,还是基因和蛋 ...

  7. 图形数据库Neo4j基本了解

    在深入学习图形数据库之前,首先理解属性图的基本概念.一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图.顶点也称作节点(Node), ...

  8. Neo4j - CQL简介

    CQL代表Cypher查询语言. 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言. Neo4j CQL - 它是Neo4j图形数据库的查询语言. 它是一种声明性模式匹配语言 ...

  9. php 可视化neo4j,开源图形数据库Neo4j使用 php开发

    先看看它的示例数据 打开 Neo4j Browser :play movie graph 写代码,然后点play执行 Cypher, the graph query language.Neo4j提供了 ...

  10. Neo4j CQL简介

    CQL CQL 代表 Cypher 查询语言.像 Orcale 数据库具有查询语言 SQL,Neo4j 具有 CQL 作为查询语言. Neo4j CQL Neo4j 图形数据库的查询语言: 一种声明性 ...

最新文章

  1. 第02次作业-线性表
  2. 6-11数据库mysql初始
  3. 033-Unit 5 Standard I/O and Pipes
  4. POJ2828线段树 插队(单点更新)
  5. Android之bitmap压缩的几种方法的解读
  6. 简化Java内存分析
  7. window下配置SSH连接GitHub、GitHub配置ssh key
  8. MyBatis框架 拦截器简单使用
  9. Oracle_忘记密码
  10. runtime的意义
  11. wps中的相交_如何在wps中添加交叉引用 - 卡饭网
  12. Pwn入门之ELF文件
  13. MDUKEY超级节点配置及指南(简)
  14. 剑指offer之斐波那契数列求解
  15. 在照片上添加水印怎么弄?三个简单方法分享给你
  16. APP元素定位工具Weditor连接夜神模拟器
  17. M1芯片电脑安装cerebro
  18. php safari播放mp4,修复video标签在safari中无法播放mp4视频的问题
  19. Web3:创作者经济的黄金时代
  20. Trackingthe whole worlds carbon emissions - with satellites and AI

热门文章

  1. JAVA中serialVersionUID可以使用hashCode()赋值
  2. 任务状态段(Task State Segment)
  3. fatal error: absl/synchronization/mutex.h: No such file or directory
  4. epoll和libevent
  5. linux 运行ctl文件_[命令] Linux 命令 systemctl(程序单元启动和管理)
  6. 生成发布包_制作R包指南
  7. chrome应用商店打不开_Chrome 浏览器必备“扩展管理工具”,一键管理 Chrome 扩展...
  8. python求圆的面积pta_任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积...
  9. tableexport 文件格式和扩展名不匹配_让信息检索更有效率!百度有哪些你不知道的隐藏玩法?...
  10. [C/C++] C++笔试常见问题