美文网首页
Nosql-neo4j- APOC存储过程库概述

Nosql-neo4j- APOC存储过程库概述

作者: Viterbi | 来源:发表于2022-09-10 15:37 被阅读0次

概述

APOC是Neo4j 3.3版本推出时正式推荐的一个Java存储过程包,里面包含丰富的函数和过程,作为对Cypher所不能提供的复杂图算法和数据操作功能的补充,APOC还具有使用灵活、高性能等优势。

neo4 3.0 开始引入用户定义的从存储过程(非常类型关系型数据库的存储过程):

  • Java实现
  • 可以在neo4j数据库启动时加载
  • 可以方便的在cypher中调用
  • 实现cypher很难实现的功能

APOC

  • 包含300+强大函数和过程
  • 最早表示"A package of components"
  • 后来表示“Awesome procedures on cypher”

文本和查找索引

CALL apoc.index.*
  • Neo4j使用Lucene库来进行文本处理
  • 文本索引过程用来对属性的文本内容进行NLP处理和创建索引
  • 支持快速对节点和关系属性值进行全文查询
  • 手工索引方式,需要随数据更新而定期更新
  • 如果加载中文分词库,也能实现中文文本的索引

功能函数

CALL apoc.text.* /date.* /number.*
  • 字符串处理
  • 时间戳
  • 数字类型
  • 日期
  • 科学计数

图论算法

社区检测和社团划分(Community Detection)

CALL apoc.algo.community()
  • 标签传播
  • 可自定义迭代层数和权重
  • 对网络实施分区(partition)

路径扩展和图的遍历

CALL apoc.path.*
  • 广度优先和无重复的关系路径
  • 可自定义遍历规则:起始节点、层级、包含关系及方向等等
  • 按照节点类型进行过滤:排除(blacklist)、终止(ter)、结束(end)、包含(whitelist)
  • 最大节点和关系数限制
  • 子图遍历
  • 生成树(spanning tree)遍历

中心性(Centrality algorithm)

CALL apoc.algo.closeness()/betweeness
  • 紧密中心性(Closeness Centrality)
  • 间接中心性(Betweenness Centrality)
  • 计算节点在网络中的核心程度
  • 发现社交网络中重要人物
  • 发现诈骗团伙中的核心/老大

页面排序(Page rank)

CALL apoc.algo.pagerank)
  • 用来计算节点在整个网络的重要性
  • 可以指定参与计算的节点
  • 目前计算是基于全网的所有指定节点

地理空间函数

CALL apoc.spatial.*
  • 根据地址返回全球坐标
  • 计算直线距离
  • 按照距离远近排序节点

数据集成

CALL apoc.load.*
  • 加载JSON数据,调用RESTful API
  • 加载关系型数据库数据,通过JDBC
  • 流式化数据到Gephi
  • 集成Elastic Search
  • 加载XML文档

Cypher查询

CALL apoc.cypher.^
  • 可以在apoc中调用cypher
  • 好处
    • 可以动态构建查询语句
    • 控制查询的执行时间
    • 条件化查询分支:when,case
    • 灵活查询执行任务:批次查询、并行查询

虚拟图

CALL apoc.create.*
  • apoc 支持构建虚拟的节点和关系,从而构建虚拟的路径和子图
  • 虚拟图类似关系型数据库的视图的概念,它可以被查询并放回数据,但是并不在物理存储z数据库中
  • 虚拟图使得默写查询的更加灵活和高效
    • 创建数据库中并不存在的节点和关系
    • 缩小查询的相关子图的规模
    • 控制遍历路径
  • 虚拟节点的和关系ID都是负数
  • 内存管理

重构和优化图

CALL apoc.refactor.*
  • 对已有的图进行转换操作,实现重构(Refactoring)
    • 复制节点及其属性,包括不包括关系
    • 合并节点
    • 重建关系到性的节点
    • 改变关系类型
    • 将关系转换成节点
    • 将节点转换为关系
    • 将属性转换成分类的节点和相关节点建立 的关系

并行节点查询

CALL apoc.search.*
  • 在可能的情况下并行查询节点
  • 结果可以是全部匹配的节点或者去除重复的节点
  • 可以使用JSON格式定义要查询的节点的属性集
  • 支持多种匹配类型,>,<, = , <>, <= ,>=, =~

其他数据库特性

  • 触发器(Trigger)
  • 写入锁
  • 显示数据库元数据(metedata)
  • 数据轮廓(data profiling)
  • 管理索引和限制
  • 对节点和关系并发操作的支持:原子性

https://neo4j.com/blog/import-10m-stack-overflow-questions/

本文使用 文章同步助手 同步

相关文章

  • Nosql-neo4j- APOC存储过程库概述

    概述 APOC是Neo4j 3.3版本推出时正式推荐的一个Java存储过程包,里面包含丰富的函数和过程,作为对Cy...

  • Neo4j学习(二)过程——APOC的安装

    1.APOC介绍 APOC是Neo4j 3.3版本推出时正式推荐的一个Java存储过程包,里面包含丰富的函数和过程...

  • 4.存储过程(一)

    1. 存储过程和函数概述 存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和...

  • 存储过程

    4.1 存储过程和函数概述 存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过...

  • Nosql-neo4j- 安装APOC插件

    安装APOC插件 APOC下载地址:https://github.com/neo4j-contrib/neo4j-...

  • 15 MySQL 存储过程

    MySQL 存储过程 [toc] 存储过程概述 存储过程介绍 存储过程,相当于是 MySQL 语句组成的脚本 指的...

  • SQL Server基础之存储过程

    阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存...

  • 27-存储过程

    一、存储过程概述 存储过程就是一组经过 预先编译 的 SQL 语句的封装 执行过程:存储过程预先存储在 ...

  • mysql使用存储过程进行简单数据迁移

    1. 单库主键范围分表-数据分片 新建存储过程 执行存储过程 删除存储过程 2. 单库分表建表 新建存储过程 执行...

  • Oracle跨数据库实现定时同步指定表中的数据

    一. 概述 在目标数据库中向源数据库建立一个database link远程连接,之后编写一个存储过程,用于将源数据...

网友评论

      本文标题:Nosql-neo4j- APOC存储过程库概述

      本文链接:https://www.haomeiwen.com/subject/fxonnrtx.html