Neo4j部署及使用

看得见的叫博弈;看不见的是赌博

引言

做交易相关的风控嘛,面对两个问题1、买卖家成环;2、区域内用户交易。为了清晰的看到多个用户之间的关联关系,选择neo4j作为我们的可视化工具。

部署

建议有条件的用docker

一、准备

机器:188G内存
neo4j-community-3.5.11-unix.tar.gz 安装包
apoc-3.5.0.6-all.jar,graph-algorithms-algo-3.5.4.0.jar算法库
mysql-connector-java-8.0.8-dmr.jar 连接库
batch-import-tool-master.zip 外部增量导入数据程序

二、安装

解压neo4j-community-3.5.11-unix.tar.gz到service目录下,建立软连接neo4j
将apoc-3.5.0.6-all.jar、graph-algorithms-algo-3.5.4.0.jar和mysql-connector-java-8.0.8-dmr.jar放在neo4j/plugins下
解压batch-import-tool-master.zip到neo4j目录下

三、配置

打开neo4j/conf/neo4j.conf

更改配置:

# java heap 初始值,大一点
dbms.memory.heap.initial_size=30G
# java heap 最大值,一般不要超过可用物理内存的80%
dbms.memory.heap.max_size=140G
# pagecache大小,官方建议设为:(总内存-dbms.memory.heap.max_size)/2
dbms.memory.pagecache.size=30g
  
# 配置地址
dbms.connectors.default_listen_address=10.10.10.77
dbms.connectors.default_advertised_address=10.10.10.77
  
# 开启http和GC的日志,其他默认(分片时间、大小、保留时长等等)
dbms.logs.http.enabled=true
dbms.logs.gc.enabled=true
  
# 允许外界load文件
dbms.security.allow_csv_import_from_file_urls=true
## 添加apoc库配置
dbms.security.procedures.unrestricted=apoc.*,algo.*
apoc.import.file.enabled=true
apoc.export.file.enabled=true

在debug日志中发现两条warn,不影响使用:

  • mysql-connector-java-8.0.8-dmr.jar的警告
  • The client is unauthorized due to authentication failure. 客户端验证失效

四、启动

./bin/neo4j start
在http://neo4j01:7474/端口查看
已经做好了http日志,任何人在上面的操作都在日志中可以查看
在这里插入图片描述

五、测试

# 添加两个点,有则覆盖无则添加
MERGE (p1:C1{id:'4')
MERGE (p2:C2{id:'5')
  
# 给两个点添加一条边,有则覆盖无则添加
MATCH (p1:C1{id:'4'}),(p2:C2{id:'5'})
MERGE (p1)-[r:ce]->(p2)
set r.id=1,r.list=[2,3,4]
RETURN r

在这里插入图片描述

基础用法

图数据应用策略

优先考虑使用SparkGraphX进行数据的处理和初始化,然后进行数据加载到图数据库
使用图数据的目的在于灵活、直观的进行数据的查询,而不是进行计算
图数据库权限问题,防止某些的操作导致服务崩溃,比如:(n)-[r*]-(m),全量数据会把数据库卡死

基础使用规范

1、数据初始化

MATCH (n)
OPTIONAL MATCH (n)-[r]->()
RETURN count(n.uid) + count(r);

2、索引建立

查询::schema
创建:CREATE INDEX ON :Person(name)

3、点查询
1)、指明所属标签 2)、指定索引id 3)、进行limit限制

例如:MATCH (n:GangUser{uid:29043916}) RETURN n
或 MATCH (n:GangUser) RETURN n limit 25

4、关系查询
1)、指明起始点所属标签 2)、指定起始点的索引id 3)、进行度的限制 4)、进行limit限制

例如:MATCH p=(n:GangUser{uid:29043916})-[r:SameInfo]->(m:GangUser{uid:GangUser{uid:29043916}}) RETURN p
或 MATCH p=(n:GangUser{uid:29043916})-[r:SameInfo*..2]->(m) RETURN p limit 50

5、ui界面
查询后进行关闭页面,不要保留太多的查询页面,减少页面压力

6、算法使用
引入新的库algo,更加方便的进行数据查询
最小生成树的使用
进行建树(指定起点,点的标签,关系的标签,关系的权值,write:true追加关系,writeProperty:"mst"追加关系的标签)

match (n:GangUser{uid:'27386239'})
CALL algo.spanningTree.minimum("GangUser", "SameInfo", "score", id(n), {write:true, writeProperty:"mst"})
YIELD loadMillis, computeMillis, writeMillis, effectiveNodeCount
RETURN loadMillis, computeMillis, writeMillis, effectiveNodeCount

进行查询

MATCH p = (n:GangUser{uid:'30296142'})-[r:mst*]-(m) return n,r,m

运维

备份和还原

offline:

关闭neo4j
bin/neo4j stop
dump备份
bin/neo4j-admin dump --database=graph.db --to=/tmp/20191213-1650.dump
load还原

bin/neo4j-admin load --from=/tmp/20191213-1650.dump --database=graph.db --force

启动服务
bin/neo4j-admin start

online:

切换Neo4j服务域名到备份服务

登录线上Neo4j服务器,执行下列命令进行数据备份 
neo4j stop && neo4j-admin dump --database=graph.db --to=/tmp/neo4j-`date "+%Y_%m_%d"`.dump && neo4j start

线上服务启动好了,将Neo4j服务域名切回线上服务

至此线上服务一切如常了,下面将备份的数据同步到备份服务器上
scp /tmp/neo4j-`date "+%Y_%m_%d"`.dump root@$backup_service_ip:/tmp
将备份数据导入备份服务,保持两个服务数据一致
neo4j stop && neo4j-admin load --from=/tmp/neo4j-`date "+%Y_%m_%d"`.dump --database=graph.db --force && neo4j start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值