neo4j 从零开始

neo4j 从零开始

neo4j 简介

http://www.durusau.net/localcopy/Graph-Modeling-Do.s-and-Don.ts.pdf
https://www.youtube.com/watch?v=78r0MgH0u0w
https://www.youtube.com/watch?v=AaJS-DGBQX4
https://www.youtube.com/watch?v=GekQqFZm7mA

开始

red hat 安装 neo4j

https://neo4j.com/docs/operations-manual/current/installation/linux/rpm/

命令行启动

neo4j console

建议用 root,screen 内操作。一台电脑同时只能打开一个 neo4j 数据库。

远程访问 neo4j

利用端口转发,需要同时 tunnel 7474 端口(浏览器页面)和 7687 端口(数据库访问)。

备份与读取整个数据库

无论备份 与 还原 都必须关闭Neo4j

neo4j-admin dump --database=graph.db --to=/backups/graph.db/2016-10-02.dump
neo4j-admin load --from=/backups/graph.db/2016-10-02.dump --database=graph.db --force

Browser 命令

进入 http://localhost:7474/browser/ 即可操作。
默认用户名与密码均为 neo4j,默认 server 为 bolt://localhost:7687

系统控制

:server change-password // 修改密码
:server disconnect // 断开连接
:sysinfo // 这里 ID Allocation 意味着这些点存在过,不都现在还在

Cypher 语言入门操作

https://neo4j.com/developer/guide-neo4j-browser/

MATCH (n) RETURN n limit 1000 // 返回至多 1000 个点
:config initialNodeDisplay: 1000 // 图中一次显示 1000 个点(越大越慢)
MATCH (n) RETURN count(*) // 返回点的数目
MATCH (n)-[r]->() RETURN COUNT(r) // 返回边的数目
// MATCH (n) DETACH DELETE n // !删除图中所有点!

Cypher 进阶

https://neo4j.com/docs/developer-manual/current/cypher/
https://gist.github.com/DaniSancas/1d5265fc159a95ff457b940fc5046887
https://neo4j.com/blog/query-cypher-data-relationships/
https://neo4j.com/blog/tuning-cypher-queries/

// 查看 name 为 12514_r 的 contig 类型节点的子节点,关系类型为 next,关系的 property 中 link_num > 4. 限制返回至多 5 个 match
MATCH (n1:contig {name:"12514_r"})-[r:next]->(n2) where r.link_num>4 RETURN n1,n2 LIMIT 5
// 在以上基础上再加一层
MATCH (n1:contig {name:"8111_r"})-[r1:next]->(n2)-[r2:next]->(n3) where r1.link_num > 5 and r2.link_num > 3 RETURN n1, n2, n3 limit 300

py2neo 使用样例

http://py2neo.org/2.0/essentials.html
http://py2neo.org/v3/types.html

pip install py2neo
from py2neo import Graph, Node, Relationship, NodeSelector
link_graph = Graph( # 连接数据库
    "http://localhost:7474", 
    username="neo4j", 
    password="neo4j"
)
selector = NodeSelector(link_graph) # 建立数据库查询器
# link_graph.delete_all() # !清空数据库!

ctg1 = Node("contig", name="contig1_f") 
link_graph.create(ctg1) # 创建节点

ctg1 = selector.select("contig", name="contig1_f").first() # 选择已有节点
ctg2 = Node("contig", name="contig2_f")
link_graph.create(ctg2)
# 边的类型就是 link_num 的字符串表示,这样可以直接在 neo4j 图中显示,但好像难以进行 Cypher 操作
ctg1_ctg2 = Relationship(ctg1, str(parent_child_link), ctg2) 
# 或者边的类型为 next,边中含有更多信息,可以用于 Cypher 分析
ctg1_ctg2 = Relationship(ctg1, "next", ctg2, link_num=10, gapsizes=100) 
link_graph.create(ctg1_ctg2) # 创建有向边

注意

我们需要考虑 neo4j 是用来分析数据还是展示数据。
考虑到 Python 中 networkx 进行图的表示已经很不错,我更倾向于将 neo4j 作为一个可视化的工具,而不是用它和 Cypher 代替 Python 进行数据分析。(也许经过深入学习 Cypher 后,可以用 neo4j 处理数据,但现在直接用 Python 进行 DFS 这种图算法更加简单。)

TODO

使用 neovis.js 显示权重

https://github.com/neo4j-contrib/neovis.js
https://www.lyonwj.com/2016/06/26/graph-of-thrones-neo4j-social-network-analysis/
https://medium.com/neo4j/hands-on-graph-data-visualization-bd1f055a492d
https://medium.com/neo4j/graph-visualization-with-neo4j-using-neovis-js-a2ecaaa7c379
https://www.youtube.com/watch?v=0-1A7f8993M

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容