首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gremlin查询语言

Gremlin是JanusGraph的查询语言,用于图中检索数据更新数据。 Gremlin是一种面向路径的语言,它能够简洁地表示复杂的图形遍历多步操作。...Gremlin是一种函数式语言,遍历运算被链接在一起形成类似路径的表达式。 例如,“Hercules,遍历他的父亲,然后他父亲的父亲,并返回祖父的名字。”...has('name', 'hercules'):过滤出顶点name为hercules的顶点。 out('father'):hercules顶点遍历出边为father的边。...out('father'):hercules的father顶点遍历出边为father的边。 name:获取hercules祖父顶点的name属性的值。 总之,这些步骤构成了类似路径的遍历查询。...可以顶点边上设置作为键值对的属性。 使用SET或LIST基数定义的属性键,必须使用addProperty向顶点添加此属性

3.5K20

一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇

Gremlin nGQL 中称之为 Vertex,Cypher 则称之为 Node。如何在图数据库中新建一个点呢?...)这里说明下,无论 Gremlin nGQL 中存在类似 IF NOT EXISTS  用法,即:如果不存在则创建,存在则直接返回。...*N]->()WHERE conditionRETURN r# nGQL 沿指定点查询指定边 N 跳GO N STEPS FROM OVER 返回指定两点路径# Gremlin...返回指定两点路径g.V().repeat(out()).until().path()# Cypher 返回指定两点路径MATCH p =(a)-[.*]->(b)WHERE conditionRETURN...p# nGQL 返回指定两点路径FIND ALL PATH FROM TO OVER *图查询语言·实操篇说了一通语法之后,是时候展示真正的技术了——来个具体一点的例子。

10.4K21
您找到你想要的搜索结果了吗?
是的
没有找到

3. JanusGraph快速开始

本节将使用Gods图作为演示示例,此图JanusGraph演示中广泛使用。该图如下图所示。这个抽象的数据模型对应图模型中的属性,这个特定的实例描述了罗马万神殿中人物地点之间的关系。...从起始点,Gremlin路径描述描述了如何通过显示的图结构来遍历图中的其他点。 通过name属性上的唯一索引,可以检索到Saturn顶点,然后可以查到它的所有属性值(即Saturn属性的键值对)。...这也可以使用循环的方式来查询,实际上Hercules是Saturnin('father') 路径上循环两次到达的点。...可以Hercules顶点去遍历他的母亲和父亲。最后可以去确定他们的类型是“god”“human”。...根据约束/过滤通过time检索Hercules的battled边比线性检索所有的边过滤(通常为O(log n),n代表边的数目)更快。

3.3K20

Gremlin 图查询概述

,这里可能会用到索引; out :从上一步结果集合中,拉出一个,即 “vid” 的 id,并把该点对应的那行数据hbase里读取出来(即该点的属性、相邻点、相邻边),返回出度节点,返回结果 edgeList1...; out :从上一步结果 edgeList1 中,拉出一个,即把第一个出度点拉出来,并把该点对应的那行数据 hbase 里读取出来(即该点的属性、相邻点、相邻边),找出出度节点,返回结果 edgeList2...; has:把 edgeList2 中的第一个节点拉出来,把该点对应的属性字段 hbase 里读取出来,并进行 name 为 jack 的过滤返回结果; 迭代执行第4步,直至 edgeList2 遍历完毕...JanusGraph 的缺陷 由上面的存储查询也可以看到,基于 Hbase的属性图有下面几个明显的缺陷: 顶点属性边存储一行中,当点的出入度越大时,属性查询耗时将会越大; 更新边某一个属性时,需要先获取整个边的数据...,修改完成后再写回,效率较低; 对边的属性过滤,将数据取回客户端,客户端进行过滤,增加了网络传输的消耗; 一言以蔽之,目前基于 NoSQL的图数据库,都可以视为只是分布式 NoSQL 上封装了一层逻辑的图

3.9K10

9. JanusGraph ConfiguredGraphFactory

在这种情况下,我们通过复制存储模板配置中的所有属性并附加相关的graphName属性来为你创建的图创建配置,然后根据该特定配置打开图。 4....由于使用模板配置创建的图形首先使用复制创建方法为该图形创建配置,这意味着: 对使用模板配置创建的特定图表的任何更新都不能保证特定图表上生效,直到: 删除相关配置:ConfiguredGraphFactory.removeConfiguration.../ graph2.properties都不包含属性graph.graphname,那么这些图将存储JanusGraphManager中,因此分别作为graph1graph2绑定在gremlin脚本执行中...如果提供此参数,则还必须提供graph.graphname属性,这个绝对存储目录将是storage.root路径加上graph.graphname路径。 以下是一些使用示例: 10....这意味着,第一次创建/打开图形后,在后续连接到服务器时,你可以通过 _traversal属性访问图形遍历引用。

1.6K20

无需Native Code的RCE——IE8中的写入原语利用

本文中,请与我一起浏览我为编写它而编写的漏洞漏洞的详细信息。 背景 IE = 8或更低的仿真级别,Internet Explorer通过该IDispatchEx机制执行DOM方法属性。...为了帮助缓解这个性能瓶颈,为DOM属性方法的子集实现了“快速路径”。这些是通过静态表中找到的函数指针调用的mshtml!_FastInvokeTable。...get方法put方法肯定会有不同的函数签名,因此对于赋值给属性传递的值会出现类型混淆。 接下来发生的事情取决于与被调用的特定属性相对应的混淆的get / put函数的签名。...之后,控制将干净地返回到脚本。这为攻击者提供了一个干净的write-what-where原语。...这是一个有效的Win32路径组件。之后,我们\..\使用路径遍历放置字符串以取消虚假路径组件((((。请注意,((((磁盘上不需要存在名为的文件夹。

1.2K40

没有本机代码的RCE:利用INTERNET EXPLORER中的写入内容

0x00 背景知识 IE=8或更低的仿真级别,Internet Explorer浏览器是通过IDispatchEx机制来执行DOM方法属性的。...为了提高性能,IE专门为DOM属性方法的子集实现了相应的“快速路径”。当然,这些都是通过位于静态表mshtml!_FastInvokeTable中的函数指针进行调用的。...我们知道,get方法put方法的函数签名肯定是不同的,因此,这里传递的、用于给属性赋值的值就会出现类型混淆。 接下来发生的事情,取决于与被调用的特定属性相对应的混淆的get/put函数的签名。...之后,控制权将返回给这个脚本。这为攻击者提供了一个write-what-where原语。...这是一个有效的Win32路径组件。之后,我们放入字符串..\,使用路径遍历来“废掉”伪路径组件((((。请注意,这里并不要求磁盘上面必须存在名为((((的文件夹。

1.2K20

属性图数据库JanusGraph初探

使用关系数据库来进行欺诈侦测不是不可行,但表形式并不适合描述数据之间的某些特定的复杂关系,而且海量数据的情况下,表之间的JOIN操作会带来大量系统性能的损耗,单次运算时间甚至以小时计,导致反欺诈策略无法实时返回结果...然而图系统的提供者还可以特定的TraversalStrategy优化策略,允许系统执行Gremlin查询时对其进行优化(例如索引查询,步骤重排序)。...一旦实现,Gremlin遍历可以图数据库(OLTP)图处理器(OLAP)上执行。然而,Gremlin语言是基于图的领域特定语言,根据点边来解释图。用户也可以创建自己的领域特定语言。...用于联机事务图的持久化技术(通常直接实时地应用程序中访问)。...索引,加快查询复杂查询 Elasticsearch Apache Solr Apache Lucene 通常,应用通过两种方法与JanusGraph交互: 1.当本地或者远程检索数据, 内嵌应用中的

3.5K50

【翻译】Gremlin-Gremlin何许人也?

Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图(property graph)的遍历或查询。...path().by("name") 步骤:1.找到gremlin节点 2.遍历查找gremlin的被管理关系 3.直到查找到的节点包含title为ceo的节点为止 4.遍历路径中的管理者姓名...这样做的好处是用户不需要学习数据库查询语言和域特定的BigData分析语言(例如Spark DSL,MapReduce等)。...命令式的Gremlin遍历告诉遍历者如何在遍历中的每一步进行。 例如,下面的命令遍历首先将遍历器放置表示Gremlin的顶点处。...“查询语言”“编程语言”之间的差异并不像我们所教导的那么大。 Gremlin统一了这种鸿沟,遍历可以用任何支持函数组合嵌套的编程语言编写(每种主要的编程语言都支持)。

2.4K30

图数据库调研

Gremlin:数据以属性图的形式存在,属性仍然表中,但是联接关系是直接以链接(比如指针)的形式存在的。查询的本质是图遍历,擅长解决求图的直径、点到点之间的路径。...各自的特点: Cypher:只能在 Neo4j 上使用,但是社区版的Neo4j 只能跑单机上,用 Gremlin SPARQL 可以很容易地某个数据库转到另外一个,但Cypher就不要想了。...Neo4j Neo4j 是目前最流行的图形数据库,支持完整的事务,属性图中,图是由顶点(Vertex),边(Edge)属性(Property)组成的,顶点边都可以设置属性,顶点也称作节点,边也称作关系...,每个节点关系都可以由一个或多个属性。...用 Gremlin 查询 Apache TinkerPop3样式属性图。Gremlin 是一种图遍历语言,其中查询是遍历节点边缘之后离散步骤构成的遍历。 用 SPARQL 查询 RDF。

6.5K30

百亿级图数据JanusGraph迁移之旅

经过分析发现慢的最主要的原因就是 JanusGraph 获取顶点属性特别慢,默认居然不是并行获取而是逐条获取。...好在 JanusGraph 最新的 0.4 版本中提供了一个 _multiPreFetch 的优化功能,能在属性过滤的时候批量并行获取所有关联顶点的属性,再在内存做属性过滤,关于这个功能的详细介绍可以看这里...并且这个功能并不是很完善,当你的过滤条件是 hasNot, 或者返回边的属性,或者语句后有 limit 操作都会使这个优化失效。...而你能做的只能是想尽办法绕开,例如:has("is_exception", neq("true")) 另一个问题就是 JanusGraph 查询的数据如何返回的问题,Gremlin 返回数据支持多种写法...最常用的就是使用 valueMap 的方式,但是这里面有两个比较大的坑,第一个是返回属性值默认是list类型,第二个是如果返回结果使用多个 valueMap 导致特别消耗内存。

2.5K50

知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)

) RPQ 超集 (增加比较路径上的顶点边) RPQ 超集 (增加复杂路径表达式) 语义 任意路径、集合 4 无重复边 5、包 2 任意路径 6、包 2 最短路径 7、包 8 最短路径 9、包 2...Gremlin 中其他语义可以被模拟出来. 7. PGQL 路径查询可通过用户定义函数实现其他语义. 8. PGQL 路径查询返回单条最短路径, 集合包语义相同. 9....查询语言方面,OrientDB 支持扩展的 SQL Gremlin 用于图上的导航式查询;OrientDB 的 MATCH 语句实现了声明式的模式匹配,这类似于 Cypher 语言查询模式。...查询语言对比 查询语句的角度出发,Gremlin 比较复杂,nGQL Cypher 比较简练,可读性角度出发,nGQL 比较类 SQL 化,比较符合大家的使用习惯。...比较了多款业内主要使用的开源数据库后,我们性能,学习成本与业务的贴合程度多个角度考虑,最终选择了性能出众,上手简单,能大幅提高业务效率的 Nebula Graph 图数据库。

1.5K10

社区版本idea查看继承关系的骚操作

下载完之后,进入idea的插件管理页面,点击红色方框设置按钮 ? 弹出如下界面: ? 就可以选择磁盘安装code iris插件了。...点击之后弹出如下框,浪尖这里只对gremlin-core模块构建。 ?...选中gremlin-core之后点击确定,不会等待多久就会完成了类继承关系图的构建,完成之后会有消息提示,完成之后code iris插件页面如下: ?...鼠标可视化界面移动,会显示各个小方框代表的包路径。也可以选择类级别的可视化: ? 默认,类级别的可视化就更密集了,根本无法阅读。点击Fit View 按钮,可以以图结构显示,更适合阅读点。 ?...3.总结 idea 查看类的继承关系,阅读源码的时候是很重要的,比如一个接口被几十次继承,每次继承均实现自己特定的功能,然后调用的时候都是使用接口,一不小心就蒙蔽了双眼。

2.6K30

2018-11-23 graph图数据库概览,经过一个星期的Demo终于看懂了这篇文章20180818图数据库概览

图存储图处理:这个是图数据库的核心,图存储负责将关系型数据集非结构化数据转成图结构进行存储,这里的存储可以为原生存储或序列化之后的非原生存储;图处理则负责数据的更新及运算。...数据导入导出:数据外界到图存储的导入导出能力,如从外界的json、csv,rdf等数据形式导入到图数据库中,或将图数据库中的数据导出来。...据neo4j的中国合作方的社区中描述,主要区别如下: 1、容量:社区版最多支持 320 亿个节点、320 亿个关系 640 亿个属性,而企业版没有这个限制; 2、并发:社区版只能部署成单实例,不能做集群...【2】OrientDB OrientDB据描述性能可以达到Neo4j的数倍,但也有测试表明遍历时磁盘空间增加,以空间换时间,遍历性能不高,但计算最短路径等性能高。...原生图存储一般都是经过专门为了存储管理图结构而优化的,遍历查询性能很高,但掐非遍历类的查询则不占优势,且为了全局搜索还会占用大量内存。

3.5K30
领券