tinkerpop mysql_tinkerpop的理解

news/2025/3/22 0:24:53

tinkerpop的理解

太观 tinkerpop3

1. tinkerpop的模块理解

1.1 giraph-gremlin

1.2 gremlin-core定义图模型结构,OLTP和OLAP。

1.3 gremlin-groovy

1.4 gremlin-benchmarkJMH是新的microbenchmark(微基准测试)框架(2013年首次发布)。与其他众多框架相比它的特色优势在于,它是由Oracle实现JIT的相同人员开发的。特别是我想提一下Aleksey Shipilev和他优秀的博客文章。JMH可能与最新的Oracle JRE同步,其结果可信度很高。

1.5 tinkergraph-gremlin是一个tinkerpop基于内存的实现。

1.6 spark-gremlin是一个tinkerpop基于spark的OLAP实现。

2. tinkerpop我的理解首先要定义图的结构。如何定义图的结构呢?如果你是做一个产品的话,直接定义几个类就完事,这些类是跟你的具体实现高度耦合的。但是如果定义为一个标准,那么你只需要相关接口,而我所有的操作只争对接口进行编程即可,这有有几个好处:首先,这个接口可以成为图数据领域的标准。其次,接口跟具体的业务分离。

定义图结构之后干嘛呢?也就是图结构如何被人使用?

无非是具备数据库的功能,能增删改查。如果仅仅只是这些功能的话,图结构的优势就没有发挥出来。它能很清晰的描述对象之间的关系,这点比关系型数据库更具有表达力。那还有没有其他功能呢?有,那就是计算。

既然有数据库的功能,那么她必须具备持久层。你可以用关系型数据库来存储这个点、边和属性,也可以用nosql数据库来存,甚至你可以存在内存中。titan就是用cassandra来做的,tinkergraph是直接用内存。而我们使用ignite来做。还没看到过用关系型数据库来做的。

被用来增删改查,如何向用户提供?mysql有sql语言及针对java的jdbc驱动。cassandra有cql或hector。那么图数据也要定义一种图数据语言了。庆幸的是,tinkerpop团队已经采用了gremlin这个图数据语言,并被多个流行的图数据库支持。慢慢的gremlin很可能就成为标准了。

如何来使用图数据库语言呢?比如mysql就有sqladmin这样的命令行交互方式。tinkerpop其实也有,他采用groovy这用交互式的动态语言来进行操作,并能通过交互界面来执行类似g.V().count()这样的图数据语言。

可不可以通过其他方式来执行这些图数据语言呢?可以的,tinkerpop为java开发者提供了gremlin-driver,让你可以通过程序的方式来与图数据库进行交流。tinkerpop还提供gremlin-server,能部署rest服务,你可以通过http协议来与其交互。

2.1 谈谈gremlin-core这是tinkerpop的核心。他要定义以下内容:

2.1.1 OLTP定义图结构。

实现图系统的OLTP,只需要实现org.apache.tinkerpop.gremlin.structure包下的所有接口。其接口如下:

Edge、Element、Property、Transation、Vertex、VertexProperty.

支持数据的导入导出。其导入导出的数据格式主要支持三种:xml,json,Gryo

针对可导入导出的通用格式,做了一层抽象,即org.apache.tinkerpop.gremlin.structure.io包下的所有接口。这些接口包括:AbstractIoRegistry、GraphMigrator、GraphReader、GraphWriter、Io、IoRegistry、Mapper、Storage。每一种数据格式的支持,都需要实现这些接口。而xml,json,Gryo这三种数据格式都是基于这些接口的实现。

xml : org.apache.tinkerpop.gremlin.structure.io.graphml.*

json : org.apache.tinkerpop.gremlin.structure.io.graphson.*

Gryo : org.apache.tinkerpop.gremlin.structure.io.gryo.*

三个特殊功能的图实现WrappedGraph、StarGraph、EmptyGraph。

StarGraph:用于轻量化中间结果,在数据导入导出时使用,spark-gremlin中也RDD中也有用到。

EmptyGraph:

WrappedGraph:


https://dhexx.cn/news/show-547770.html

相关文章

sql server jar包_失眠架构师带你学java核心技术:包+文档注释+类设计技巧,学吗?...

包Java允许使用包(package)将类组织起来。借助于包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理。标准的Java类库分布在多个包中,包括java.lang、java.util、java.net等等。标准的Java包具有一个层次结构。如同硬盘的目录嵌套一样…

7-5 正整数A+B (15分)

题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。 输入格式: 输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数&#xff0c…

jquery启用控件_5个新的启用触摸功能的jQuery插件2014

jquery启用控件如果我们能在移动设备上浏览内容总是很不错的,这就是为什么我们向您提供我们希望尝试的5种新的启用触摸的jQuery插件列表的原因。 它们易于使用,完全响应并支持触摸。 去看一下。 请享用! 1. OWL轮播 启用触摸功能的jQuery插…

mysql 代码中文乱码_mysql 中文乱码 完全版解决方法

mysql 中文乱码 完全版解决办法mysql是一小型数据库,各方面都讲究轻量级的实现。关于编码问题也是如此,只要搞清楚几个关键概念,便能轻轻松松的解决这个问题。在网上以搜索相关的主题是各种解法汇集,但是都没能清楚的说明解决问题…

最新增值税商品税目编码表_大家好!我叫增值税!这是我的最新最全税率表!...

最新增值税税率表征收率预征率,精信代账今天给大家更新知识了!- 01 -最新增值税税率表记住口诀,增值税新税率一点也不难记!一、13%纳税人销售货物、修理修配劳务、有形动产租赁服务或者进口货物。看似比较散乱,但是从记…

7-6 输出GPLT (20分)

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完&am…

5个新的启用触摸功能的jQuery插件2014

如果我们能够在移动设备上浏览内容总是很高兴,这就是为什么我们向您提供您想尝试的5个新的启用触摸功能的jQuery插件2014的原因 。 它们易于使用,完全响应并支持触摸。 去看一下。 请享用! 1. OWL轮播 启用触摸功能的jQuery插件,可…

CPU cache

2019独角兽企业重金招聘Python工程师标准>>> 回写与直写 2009-02-20 08:41:16 分类: 服务器与存储 对于cache的算法。 大方面有两种,Write-Through(通写)和Write-Back(回写). Write-Through,也就是说OS发送的处理data的请求&…

python中如何隐藏箭头_python – 禁用matplotlib的默认箭头键绑定

使用matplotlib的mpl_connect功能,可以将事件绑定到函数调用.但是,左右箭头键默认绑定在图的历史记录中“后退”和“前进”.我想禁用此默认绑定.例如:import matplotlib.pyplot as pltdef on_key_press(event):if event.key "left":print("Left!&qu…

mongodb 生产_mongodb副本集生产环境下部署案例,推荐一个主两个从三台机器

Linux中部署Mongodb副本集提示:以下操作步骤较多,请耐心阅读。关于理论部分请参考上篇浅谈mongodb副本集。1、 准备192.168.102.110 master192.168.102.111 slave1192.168.102.112 slave2以下操作以常用的1主2从3台机器为例2、 操作以master为例&#xf…