Neo4j图数据库高级应用系列 / 服务器扩展指南 (1) - 概述

Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.1)- 图重构 概述 Neo4j图数据库除了对复杂、深度查询的性能有更好的支持之外,其灵活的数据库模式(schema)管理是另外一个在处理大数据方面的独特优势。 随着数据的积累和应用需求的演变,我们往往会意识到最初的数据库模型不再是最优化和最适合的,这时就需要进行数据库模式的重构(Refactoring)。 APOC的图重构(Refactoring)过程提供对图中节点、关系和属性的转换、合并、复制等功能。Neo4j的图模式重构不像关系数据库那样需要删除和重新创建表、涉及复杂的运维操作,使用APOC中提供的过程可以方便的实现。 阅读详情

        随着Neo4j图数据库学习和应用不断普及、特别是对复杂图操作的需求越来越多样化,Neo4j的服务器端扩展包越来越多地被提及和使用。从2019年6月起,将连载Neo4j迄今为止发布的最重要的两个扩展包APOC和ALGO中主要过程的用途、用法和样例,供大家学习和讨论。相关内容计划在明年初成书出版,欢迎提出问题和意见!

1.1 背景

        Neo4j图数据库扩展是基于Neo4j核心API和开发框架、使用Java开发的、部署在服务器端的过程和函数。这些过程和函数可以在Cypher中被调用。有时候,我们也称这些过程为“存储过程”。

        APOC和ALGO都是Neo4j开发和共享的数据库扩展,它们包含了很多实用的算法过程和函数。APOC提供了丰富的与查询执行、数据集成、数据库管理等相关的过程和函数,而ALGO则主要包含常用的图算法过程。 APOC是最先得到广泛使用和好评的扩展包。说起来,它的名字APOC,还有颇些“来历”。

1.2 APOC扩展库的内容

Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.2) - 可配置的路径扩展过程 1. 定义 可配置的路径扩展过程提供完整的配置参数来控制遍历过程。 2.过程调用接口 过程接口 CALL apoc.path.expandConfig( startNode <id>Node/list, { minLevel, max... 阅读详情

相关推荐

Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.1) - 基本路径扩展过程

1、概述 路径扩展过程(Path Expanding)是从指定的一个或一组起始节点开始,根据过滤规则沿着特定关系依次访问其他相连节点的过程。该过程迭代执行,直到没有更多相连节点或者预设的结束条件满足时终止。路径扩展可以看作是图的遍历(Graph Traversal)的一种实现方式。 2、应用 在Cypher中也可以实现图的遍历。APOC的路径扩展过程除了调用方法不一样以外,还具有下面的优势: 1...

GraphWay的博客 1475

Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC (8.4) - 集合相关操作

1、概述 在Cypher查询语言中,集合的使用非常普遍。集合的元素可以是简单类型的值、节点、关系、路径,甚至混合类型。下面的例子是产生集合的一些常用方法: // 返回一个包含从1到10 的整数集合 RETURN range(1,10) AS collection; // 返回节点的集合 MATCH (n:Node) RETURN collect(n) AS nodeColl // 提取路径中的节点和关系集合 MATCH path = (from:Node) -[:REL]-> (to..

GraphWay的博客 1788

Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.1) - 查询任务管理

概述 APOC扩展包中的查询任务管理提供相关过程帮助将复杂查询分解成较小的批次迭代执行,从而减少事务处理的开销、提高内存使用效率。 Cypher的LOAD CSV语句允许通过USING PERIODIC COMMIT 指定批次大小,以减小更新事务的规模、提高性能并降低对内存(主要是Java堆内存/Heap Memory)的需求。对于其他Cypher语句,例如CRE...

GraphWay的博客 1918

Neo4j图数据库高级应用系列 / 服务器扩展指南 (2) - 安装和配置

2.1 扩展包的下载 ALGO和APOC扩展包是二进制JAR文件,可以直接下载、安装,经过简单配置即可使用。 APOC的下载链接是:http://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/,在线文档:https://neo4j-contrib.github.io/neo4j-apoc-proc...

GraphWay的博客 775

Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.2)- 克隆节点和关系

​​​​​​6.2、克隆节点 6.2.1 定义 克隆节点及其所有属性到新节点。被克隆节点的关系在缺省情况下则不被复制。 6.2.2 过程接口 过程接口 CALL apoc.refactor.cloneNodes( nodes [node1, node2, …], withRelationships, skipProperties ) YIELD inpu...

GraphWay的博客 553

Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.3) - 搜索子图

​​​​​1.定义 搜素子图的过程使用与路径扩展类似的方法从指定节点出发、沿着特定关系类型遍历,并返回能够到达的所有节点和关系。 APOC提供两种搜素子图的过程: - subgraphNodes():仅返回可以到达的节点; - subgraphAll():返回节点和关系。 与路径扩展过程expand和exp...

GraphWay的博客 2933

Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.4) - 合并节点和关系

1.合并节点 1.1定义 根据指定规则合并数组中的节点及其属性、并删除被合并的节点。 1.2过程调用接口 过程接口 // 合并节点 CALL apoc.refactor.mergeNodes( nodes [node1, node2, …], { configurations } ) YIELD node 参数名 类型 ...

GraphWay的博客 2360

Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.1) - 导出数据到CSV文件

1、配置要求 为了能够使用APOC过程导出数据,需要增加下面的配置项: neo4j.conf apoc.export.file.enabled=true 为了能够使用APOC过程导入数据,需要增加下面的配置项: neo4j.conf apoc.import.file.enabled=true APOC的数据导入和导出目录是服...

GraphWay的博客 1364

Neo4j:入门基础(七)之Algo插件

前言 Neo4j提供了两个常用的算法库:apoc和algo。相对于algo,apoc不仅仅提供了一些算法实现,还提供了数据导入等功能,更多地像一个工具包。而在算法实现方面,algo显得更专业、全面。 Neo4j v3.5以前,使用的是Neo4j Graph Algorithms,往后的版本更新为Neo4j Graph Data Science Graph Algorithms Docs:https://neo4j.com/docs/graph-algorithms/cu...

Puzzle的博客 6921

强悍的动作效果制作:物理实验模仿ppt

强悍的动作效果,可以作为初中物理教学的PPT,也可以下载下来模仿,制作别的PPT

neo4j图数据库algo3.5.01版本jar包

图数据库neo4j图相关算法包,放在plugin插件目录下,修改conf目录下配置文件,重新启动即可使用。有问题可私信沟通交流

neo4j高级算法应用封装包

好用的基于Neo4j的算法开发库,里面有丰富的高级算法可以使用

Neo4j高级应用技术系列-APOC-1-Overview-v1_2

Neo4j高级应用技术系列-APOC 帮助文档。 APOC就是图数据库neo4j的存储过程

LAMMPS ReaxFF模拟后处理:如何用Python精准追踪C-N键的断裂与形成?

本文详细介绍了如何利用Python对LAMMPS ReaxFF模拟结果进行后处理,精准追踪C-N键的断裂与形成过程。通过解析键级输出文件、构建原子类型映射字典,并实现C-N键的统计与可视化,为材料科学和催化反应研究提供了高效的数据分析解决方案。文章特别强调了ReaxFF力场在断键分析中的关键作用,并提供了完整的Python代码实现。

weixin_28706923的博客 356

CentOS7下用FreeRADIUS+AD实现802.1X认证完整指南(附华为交换机配置)

本文提供了在CentOS 7系统上部署FreeRADIUS并与Windows Active Directory集成,以实现企业级802.1X网络认证的完整实战指南。内容涵盖从架构原理、服务器配置(包括Kerberos、Samba Winbind集成)、FreeRADIUS核心设置与AD联动,到华为交换机的详细配置步骤。重点解决了生产环境中常见的高可用、动态VLAN下发及深度排错问题,为企业构建集中、安全的网络准入控制体系提供了经过验证的解决方案。

weixin_29273849的博客 406

Qt 插件开发 plugin 超详细 有源码

Qt 插件化开发框架类似于前后端的微服务的场景,授权哪个微服务则前端可以使用哪个微服务,插件就行硬件插卡一样,可以被随时删除、插入和修改,所以结构很灵活,容易修改,方便软件的升级和维护;插件主要面向接口编程,无需访问.lib文件,热插拔、利于团队开发。即使在程序运行时.dll不存在,也可以正常启动,只是相应插件功能无法正常使用而已;动态库需要访问.lib文件,而且在程序运行时必须保证.lib存在,否则无法正常启动;

q610098308的专栏 6546

好书分享:Control and Estimation with MATLAB(5th Edition)pdf

基于MATLAB的控制与估计》(第5版)由八章组成,包括控制算法和设计。主要内容包括状态估计和数据平滑、RLS和卡尔曼滤波器状态估计、控制系统设计、自适应控制和PID。书中的概念已经使用MATLAB和Simulink实现。提供了可下载的MATLAB和Simulink文件。适合人群:大学生、研究生、控制类工程研究人员。需要电子版pdf,回复索取。

jixianhu的博客 1510

生物信息学名词解释 | K-mer (长度为k的短序列)

K-mer 何谓K-mer 所谓Kmer,即为一段长度为k的DNA片段,是由测序reads剪切一部分得到的。k为一个奇数,k=几,就为几mer。 比如:我的测序reads长度为100bp,我将这100bp打断成17bp的短片段,打断后的17bp段片段就叫17mer,可以获得(100-17+1)条k-mer序列。 Table1 k-mers for GTAGAGCTGT. k k-mers 1 G,T,A,G,A,G,C,T,G,T 3 GTA,TAG,AGA,GAG,AGC,GCT,CT

qq_50637636的博客 2万+

基于深度强化学习技术优化无线网络中的资源分配(一)DQN部分代码

这是一个GitHub上的开源项目,链接:https://github.com/alexis-anzaldo/Deep-Reinforcement-Learning-for-resource-allocation-in-wireless-networks该项目旨在通过深度强化学习DQL技术优化无线网络中的资源分配,特别关注小型蜂窝和超密集无线蜂窝网络中的功率控制问题,主要目标是提高DRL模型的学习效率和网络吞吐量。

m0_46292040的博客 1537

Response Instance 详解:在 ABAP OData Client Proxy 中读懂每一次响应

ABAP OData Client Proxy中的Response Instance是关键信息载体,封装了业务数据及调用上下文(如分页、delta link等)。响应实例在执行请求后自动生成,根据请求类型返回特定接口(如READ返回/IWBEP/IF_CP_RESPONSE_READ)。响应抽象与OData版本解耦,支持统一处理V2/V4服务。常见响应类型包括单实体读取、列表读取(支持分页和增量同步)、创建/更新/删除响应等。开发时可通过响应对象的安全类型方法获取数据,如get_business_data获

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 136

计算机网络基础:揭开网络世界的神秘面纱

计算机网络基础:揭开网络世界的神秘面纱,计算机网络已深度融入现代生活,这篇文章对其基础内容展开全面阐述。开篇介绍计算机网络的定义,说明其由计算机设备、网络设备和传输介质构成。接着从地域范围和拓扑结构两个维度对计算机网络进行分类,并详细讲解 OSI 和 TCP/IP 参考模型,明晰各层功能与联系。随后阐述网络通信协议的定义及常见协议,如 TCP/IP、HTTP 等。最后聚焦网络安全,涵盖定义、重要性以及防火墙、加密技术等常用安全技术。文章旨在帮助读者构建计算机网络基础知识体系,理解其在生活和工作中的应用与价值

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 【Neo4j查询优化系列】如何在查询中限制每个类别中返回结果的数量
下一篇: Neo4j图数据库高级应用系列 / 服务器扩展指南 (2) - 安装和配置
俞博士
俞博士 领域专家: 数据库技术领域 领域专家: 数据库技术领域 业界专家认证 业界专家认证
博客等级 码龄9年 2326粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值