
Cypher
文章平均质量分 67
俞博士
专注图数据库、图深度学习和行业应用的技术直男。
e: joshua.yu@neo4j.com
展开
-
Neo4j 5的自治图数据库集群
本文介绍新近发布的Neo4j 版本5的自治集群(Autonomous Cluster)特性,以实际例子介绍其如何支持快速部署、可扩展、自容错等重要要求。原创 2022-11-25 07:55:59 · 1130 阅读 · 1 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.6 - 图生成 小世界模型
1、概述WS小世界模型(Watts - Strogatz model)是一种随机图生成模型,其生成的图具有小世界属性,包括较短的平均节点间距离和高集聚系数。该模型由Duncan J. Watts(邓肯 J. 沃茨)和Steven Strogatz(斯蒂文·史楚盖兹)在1998年两人联合发表于《自然》的论文中提出 。Watts在其广受欢迎的科学读物《六度》中使用b来阐述该模型,这之后,该模型也被称为(沃茨)b模型。WS图拥有以下特征:可以生成局部集聚(local clustering)和三元闭合,原创 2022-02-16 15:41:34 · 905 阅读 · 0 评论 -
Neo4j的事务管理和锁行为
原文链接:https://neo4j.com/docs/java-reference/current/transaction-management/1.概述为了充分维护数据完整性并确保良好的事务行为,Neo4j 支持 ACID的四大属性:原子性,如果事务的任何部分失败,数据库状态保持不变。 一致性,任何事务都会使数据库处于一致状态。 隔离性,在一个事务期间,修改过的数据不能被其他操作访问。 持久性,DBMS 始终可以恢复已提交事务的结果。具体来说:访问图、索引或模式的所有数据..翻译 2021-08-18 13:26:53 · 3758 阅读 · 0 评论 -
Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC(6.7):将属性值转换成节点
1. 定义 “分类”过程实现属性值到节点的转换。针对数据库中所有节点的指定属性,对每个唯一属性值建立新类别节点、并创建新关系连接节点到这些类别节点。2. 过程调用接口 过程接口 // 对节点进行分类 CALL apoc.refactor.categorize( sourceKey, type, outgoing, label, targetKey, ...原创 2021-06-23 09:18:28 · 340 阅读 · 0 评论 -
Neo4j Fabric 快速入门
作者:Soham Dhodapkar(Neo4j助理销售工程师)前言Fabric 是 Neo4j 4.0 中引入的新功能,是一种在多个数据库中存储和检索数据的方法。 此功能可以使用单个 Cypher 查询轻松查询同一 数据库实例中的多个库/图,或多个 数据库实例中的数据。从实用的角度来看,Fabric 提供了以下基础功能和工具:数据联邦(Data Federation):能够访问分布式数据源中、彼此不相连的图中的数据。 数据分片(Data Sharding):能够访问分布式数据..翻译 2021-06-22 14:05:14 · 881 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC - apoc.periodic.iterate()过程在4.0版本中的重大变化
作者:维韦克 萨兰(Vivek Saran)适用版本:Neo4j 4.0 / 4.1标签:APOC在Neo4j 3.5中,可以在一个事务中获取实体(节点、关系、路径)并安全地在另一个事务中重用。然而在4.0中,这些实体将拥有返回它们的事务的引用。对于任何创建新事务的APOC调用中,这会带来问题,例如apoc.periodic.iterate(以及另外2个)。 从驱动查询(driving)声明中提出的任何实体都必须在任务查询(action)声明中重新绑定。这意味着我们基本上需要..翻译 2021-05-18 22:03:57 · 1116 阅读 · 1 评论 -
Cypher技巧:如何使用连接提示(Join Hints) 避免进行代价高昂的遍历
作者: 安德鲁·鲍曼(Andrew Bowman)使用Cypher匹配模式时,要评估的可能路径数通常与查询执行时间相关。当路径中有一个超节点(一个具有大量关系的节点,其类型包含在您的MATCH模式中),或者仅仅是足够多个具有许多关系的节点时,可能的路径数量会爆炸,从而降低查询速度。 通过超节点进行这样的遍历可能会很昂贵。有时,当遍历某些类型的模式时,您可能会从建模中知道,如果可能的话,应该在特定方向上遍历两种特定类型的节点之间的关系,而不是相反,以获得最佳性能,通常是这种情况 ...翻译 2021-05-04 20:09:18 · 558 阅读 · 0 评论 -
Neo4j 版本4 新特性介绍 - 多数据库
1. 目标在本指南中,我们将逐步介绍如何在Neo4j 4企业版DBMS中管理多个数据库。本文原文链接:https://neo4j.com/developer/manage-multiple-databases/2. 先决条件请下载并安装Neo4j(4.0或更高版本)企业版。 阅读有关图数据库的部分会有所帮助。3. 概述在Neo4j(v4.0 +)中,我们可以同时创建和使用多个活动数据库。 这适用于独立部署和因果群集部署,并允许我们在一个Neo4j数据库安装中维护多个单独的图。..翻译 2021-04-07 09:55:54 · 2996 阅读 · 1 评论 -
Neo4j Cypher查询语言技巧汇编 - List Comprehension
关于List Comprehension的在线文档,请参考:https://neo4j.com/docs/cypher-manual/current/syntax/lists/Neo4j的Cypher查询语言中提供了List(列表)类型的支持,可以处理和存储集合数据。本文介绍List类型的常用语法,以及List Comprehension的使用技巧。(注:关于List Comprehension实在没有想到什么贴切的翻译,又或者是本人认知有限、不知道已经有了相关翻译。有好的建议请一定联系我!)...原创 2021-04-05 21:08:29 · 1273 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(6.4) - 合并节点和关系
1.合并节点1.1定义 根据指定规则合并数组中的节点及其属性、并删除被合并的节点。1.2过程调用接口 过程接口 // 合并节点 CALL apoc.refactor.mergeNodes( nodes [node1, node2, …], { configurations } ) YIELD node 参数名 类型...原创 2021-04-05 20:34:55 · 2187 阅读 · 0 评论 -
Neo4j 版本4 新特性介绍 - Cypher [1] CALL 子查询
Neo4j版本4中添加了很多重要的改进和新特性。我们会在接下来几个月中陆续介绍这些新特性。先从Cypher开始。关于CALL的完整使用方法请参见:https://neo4j.com/docs/cypher-manual/current/clauses/call-subquery/。1. 介绍Cypher版本4中增加的CALL命令允许执行子查询,即其他查询内部的查询。 子查询允许组合查询,这在使用UNION或聚合时特别有用。子查询为每个传入的输入行评估并执行,并且该子查询可以产生任意数量...原创 2021-03-23 11:58:12 · 2821 阅读 · 0 评论 -
NeoDash:无代码快速创建Neo4j仪表板的工具
NeoDash:无代码快速创建Neo4j仪表板的工具作者:尼尔斯·德·琼(Niels de Jong)/ Neo4j构架师原文链接:https://nielsdejong.nl/neo4j%20projects/2020/11/16/neodash.html1、背景在Neo4j工作时,我需要经常构建使用图数据的前端应用程序。 很幸运,有大量的工具可以简化Neo4j前端开发人员的工作, GrandStack 和 Neode 就是非常的好的例子。 但是,在许多情况下,我需要一种快..原创 2021-03-09 15:41:18 · 1309 阅读 · 0 评论 -
GRAND Stack - 快速开发Neo4j数据库应用的全栈框架
注:本文稿基于Will Lyon在2019年10月的NODES 2019上发表的演讲整理修改后发表。 1、GRAND是什么?GRANDstack是一个开发基于Neo4j图数据库应用的全栈框架,它基于GraphQL、React、Apollo和Neo4j Database 构建数据库应用程序。GraphQL是API层;React是一个JavaScript UI库,用于在Web、移动以及VR中创建用户界面;Apollo是一套工具和服务,它使在客户端和服务器上使用GraphQL更加容易...原创 2020-12-09 18:22:54 · 718 阅读 · 0 评论 -
Neo4j BI Connector - 像访问关系数据库那样执行图查询
本文英文原文链接:https://neo4j.com/blog/getting-started-with-the-neo4j-bi-connector/?ref=bi-connectorNeo4j BI Connector十来年前,Neo4j推出了世界上第一个原生图数据库,自此定义一个全新的企业软件类别。从那时起,Neo4j一直在努力帮助客户实现其数据之间的联结(connection)的价值。随着超大规模计算、社交网络、移动和物联网设备的出现,在全球范围中、利用这些联结数据的需求每天都在增加。...原创 2020-11-16 08:51:54 · 849 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.4) - 导出数据到Cypher脚本文件
APOC提供一系列过程实现将数据库中的数据导出到可执行的Cypher脚本文件。这些过程支持不同的导出逻辑:导出所有数据 导出查询结果 导出特定标签节点和关系类型 导出一个graph对象 仅导出索引和限制(index和constraint) 将数据库中的内容导出到Cypher文件,可以用于数据迁移、集成和转换等目的。1、导出所有节点、关系和属性CALL apoc.export.cypher.all( file, {configuration}) ...原创 2020-11-11 13:32:16 · 853 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.3) 导入JDBC数据源的数据
1、概述APOC提供的JDBC相关过程支持从任何可以通过JDBC访问的数据源中提取数据、并加载到Neo4j中。通过JDBC驱动执行查询得到的结果,以记录流的方式返回(如果JDBC数据源支持流模式)。APOC也支持对远端数据库的更新操作。JDBC相关过程如下: 过程名 调用接口 说明 apoc.load.driver apoc.load.driver(driverClassName)原创 2020-11-02 15:05:29 · 923 阅读 · 3 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.4) - 自定义Cypher函数和过程
1、定义APOC提供相关过程来创建用户自定义的函数和过程。这些函数和过程实际上是参数化的Cypher语言查询,类似宏(Macro)的概念。相关过程如下:apoc.custom.asFunction(),创建用户自定义函数; apoc.custom.asProcedure(),创建用户自定义过程。用户自定义函数和过程可以通过CALL dbms.functions和CALL dbms.procedures查看,所有自定义函数和过程自动被加上custom为前缀,例如custom.MyProcedure原创 2020-06-07 20:32:01 · 1002 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.3) - 后台执行查询submit
1、定义对于复杂的更新数据库的Cypher查询,可以使用APOC的submit()过程异步执行该查询。APOC还提供下面的过程管理异步/后台执行的任务:apoc.periodic.list():列出所有正在后台执行的任务 apoc.periodic.cancel(taskName):终止后台任务管理正在运行的查询是Neo4j企业版才有的功能。因为APOC可以同时运行在Neo4j社区版和企业版上,使用上述APOC异步执行过程使得社区版同样拥有部分管理后台查询的能力。2、过程概述apoc.p原创 2020-06-07 20:24:16 · 801 阅读 · 1 评论 -
Neo4j高级应用技术专题系列 - APOC存储过程库-【3】优化数据库写入性能
很多人提到Neo4j的数据库更新太慢。希望这篇文章能够给大家一个思路,一种方法和一些经验。全文下载链接:PDF文件原创 2018-01-17 11:20:09 · 1762 阅读 · 2 评论 -
展示联结数据的内在之美:全新的Neo4j Bloom可视化工具
四天前,5月2日,在旧金山的Neo4j GraphTour,Neo4j公司的首席执行官Emil Eifrem宣布Neo4j图数据库平台新增一款全新产品:Neo4j Bloom。Neo4j Bloom是一款突破性的图数据可视化产品,它允许图数据库新手和专家能够与同行、管理人员和其他业务人员沟通和分享他们的工作 - 不管他们的技术背景如何。其示例性的无代码搜索,到故事板设计使其成为非技术项目参与者共享...原创 2018-05-06 08:47:01 · 7555 阅读 · 0 评论 -
Neo4j Cypher 图数据库查询语言快速参考 - 【1】 基本语法
Cypher是面向图数据库的、表达能力强大的查询语言。就像掌握关系数据库必须学习SQL一样,如果要充分发掘Neo4j图数据库在数据分析方面的巨大潜力,必须要对Cypher有完整和深入的了解。本系列旨在以简洁明了的方式介绍Cypher查询语言,结合实例和经验总结,帮助读者快速掌握该语言的特点、语法和用法,并开发出高效、简洁、专业的查询。Neo4j Cypher 图数据库查询语言快速参考 - ...原创 2018-07-18 19:12:57 · 2180 阅读 · 0 评论 -
Neo4j Cypher 图数据库查询语言快速参考 - 【2】 创建和删除节点、关系和属性
Cypher是面向图数据库的、表达能力强大的查询语言。就像掌握关系数据库必须学习SQL一样,如果要充分发掘Neo4j图数据库在数据分析方面的巨大潜力,必须要对Cypher有完整和深入的了解。本系列旨在以简洁明了的方式介绍Cypher查询语言,结合实例和经验总结,帮助读者快速掌握该语言的特点、语法和用法,并开发出高效、简洁、专业的查询。Neo4j Cypher 图数据库查询语言快速参考 - ...原创 2018-08-12 21:16:25 · 1091 阅读 · 0 评论 -
Neo4j Cypher 图数据库查询语言快速参考 - 【3】 索引和限制
Cypher是面向图数据库的、表达能力强大的查询语言。就像掌握关系数据库必须学习SQL一样,如果要充分发掘Neo4j图数据库在数据分析方面的巨大潜力,必须要对Cypher有完整和深入的了解。本系列旨在以简洁明了的方式介绍Cypher查询语言,结合实例和经验总结,帮助读者快速掌握该语言的特点、语法和用法,并开发出高效、简洁、专业的查询。Neo4j Cypher 图数据库查询语言快速参考 - ...原创 2018-08-12 21:18:26 · 1262 阅读 · 0 评论 -
Neo4j图数据库微课堂系列第三讲:如何使用Cypher语言查询数据(2)?
好消息!为了帮助更多关注图数据库技术和应用的相关人员对Neo4j图数据库平台有全面、完整和深入的理解和学习,我们和ITPUB合作在将来推出一系列的在线微课堂,内容覆盖图数据库应用开规划、设计、开发、维护的全生命周期。11月1日晚8点将是本系列的第三讲:如何使用Cypher语言查询数据?(请在微信中打开图片,扫描二维码加入微信群)。这次课堂将首次采用远程视频会议平台ZOOM,访问需要安装客户端,...原创 2018-12-04 09:13:50 · 504 阅读 · 0 评论 -
【Neo4j查询优化系列】使用Cypher在当前数据库中生成创建索引和限制的命令
如果想要生成创建索引和限制的Cypher命令,只需运行下面的查询:// 生成创建索引的语句CALL db.indexes() YIELD descriptionRETURN 'CREATE ’ + description返回结果:“CREATE INDEX ON :Movie(title)”“CREATE INDEX ON :Person(name)”// 生成创建限制...原创 2019-03-05 14:33:42 · 878 阅读 · 0 评论 -
【Neo4j查询优化系列】如何在查询中限制每个类别中返回结果的数量
Cypher提供了LIMIT谓词来限制返回的结果数量。例如,我们用Neo4j自带的电影-演员示例数据库为例,以下查询返回前三个演员-电影关系:MATCH (m:Movie)<-[:ACTED_IN]-(p:Person)RETURN p, m ORDER BY p LIMIT 3结果如下: 如果我们需要只返回每个演员出演过的前三部电影,那查询应该怎么写?最简单的方法是使用c...原创 2019-03-05 22:26:54 · 4427 阅读 · 3 评论 -
【Neo4j查询优化系列】在ORDER BY中使用节点属性索引提高排序性能
在neo4j 3.5版本中,增加了对ORDER BY的优化,可以通过本地数据库索引(Native Index)提高排序效率。对于有百万或更多节点的集合,排序性能提高会很显著。在查询中,若要利用这一特性,具体方法如下:1、为节点属性定义本地索引: CREATE INDEX ON :LABEL(Property)属性值的类型可以是任何基本类型,但是Point类型除外。2、在Cypher...原创 2019-02-26 20:42:50 · 2410 阅读 · 0 评论 -
【Neo4j查询优化系列】如何快速统计节点的关系数
在图数据库中我们经常需要统计节点上的关系数目。一种常见的查询写法是这样的:MATCH (n:Person {name:‘Keanu Reeves’})-[]-() RETURN count(*);上面的查询会返回代表基诺-李维斯的节点(节点标签为Person)上所有关系的总数,包括进入的和流出的关系。如果用PROFILE来看一下查询的执行步骤和成本,结果如下:我们看到在统计节点拥有...原创 2019-03-04 09:48:09 · 12105 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.2) - 可配置的路径扩展过程
1. 定义 可配置的路径扩展过程提供完整的配置参数来控制遍历过程。2.过程调用接口 过程接口 CALL apoc.path.expandConfig( startNode <id>Node/list, { minLevel, max...原创 2019-06-13 21:28:43 · 1441 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.3) - 搜索子图
1.定义 搜素子图的过程使用与路径扩展类似的方法从指定节点出发、沿着特定关系类型遍历,并返回能够到达的所有节点和关系。 APOC提供两种搜素子图的过程: - subgraphNodes():仅返回可以到达的节点; - subgraphAll():返回节点和关系。 与路径扩展过程expand和exp...原创 2019-06-18 21:15:27 · 2693 阅读 · 5 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (1) - 概述
随着Neo4j图数据库学习和应用不断普及、特别是对复杂图操作的需求越来越多样化,Neo4j的服务器端扩展包越来越多地被提及和使用。从2019年6月起,将连载Neo4j迄今为止发布的最重要的两个扩展包APOC和ALGO中主要过程的用途、用法和样例,供大家学习和讨论。相关内容计划在明年初成书出版,欢迎提出问题和意见!1.1 背景 Neo4j图数据库扩展是基于Ne...原创 2019-06-02 22:27:59 · 1159 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 (3.1) - 基本路径扩展过程
1、概述路径扩展过程(Path Expanding)是从指定的一个或一组起始节点开始,根据过滤规则沿着特定关系依次访问其他相连节点的过程。该过程迭代执行,直到没有更多相连节点或者预设的结束条件满足时终止。路径扩展可以看作是图的遍历(Graph Traversal)的一种实现方式。2、应用在Cypher中也可以实现图的遍历。APOC的路径扩展过程除了调用方法不一样以外,还具有下面的优势:1...原创 2019-06-09 12:37:55 · 1313 阅读 · 0 评论 -
Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.2) - 循环执行 commit
2.按照条件循环执行 - commit2.1 定义 commit()过程包含两个子操作:1) 第一个是查询操作,返回指定数量的、符合条件的数据库对象; 2) 第二个是更新操作,对第一个查询中返回的每个对象进行相应的更新操作。第二个操作通常在不同的事务中执行。 上面的两个步骤重复执行,直到第一个查询操作返回空的结果集合。...原创 2019-06-26 09:36:42 · 1338 阅读 · 0 评论 -
Neo4j的免费在线培训教程
对于新的产品和技术,相关资料和介绍也相对处于起步阶段。特别是系统化的、面向不同需要的使用者的教程更加难得。其实Neo4j的资料除了书籍、网站,还有相当丰富的在线教程,供使用者自我学习。使用方法如下。在安装了Neo4j后,打开浏览器访问Neo4j浏览器,然后在输入Cypher查询的文本框内输入命令::play 就可以启动相应的在线教程。下面是一些推荐的主题,难度从简单到复杂。-原创 2018-01-08 09:49:56 · 1546 阅读 · 0 评论