首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gremlin中的olap和oltp查询

gremlin中的olap和oltp查询
EN

Stack Overflow用户
提问于 2016-10-07 06:11:07
回答 1查看 1.1K关注 0票数 4

在格里姆林

  1. S= graph.traversal()
  2. G=graph.traversal(计算机())

我知道第一个是OLTP,第二个是OLAP。我知道OLAP和OLTP在定义级别上的区别,我对此有以下查询:

你是如何

  1. 以上查询在工作上有差异吗?
  2. 我是否可以使用第二个,在我的应用程序中使用'g‘来获得结果(我知道这个’g‘一个给出的结果比第一个更快)?
  3. OLAP和OLTP的区别?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-07 10:59:32

从用户的角度来看,在结果方面,OLAP和OLTP之间没有真正的区别。Gremlin语句对于TraversalSource的配置与使用withComputer()和其他设置时显示的一样。

不同之处在于如何在幕后执行遍历。基于OLAP的遍历用于处理“整个图”(即所有顶点/边,可能不止一次)。其中,基于OLTP的遍历用于处理较小的数据体,通常从一个或少数几个顶点开始,然后从那里遍历。当您考虑规模为“数十亿边”的图时,很容易理解为什么需要像OLAP这样的高效机制来处理这些图。

你真的不应该把OLTP和OLAP看作是“更快”和“更慢”。也许最好像在文档中描述的那样去想一想

  • OLTP:实时、有限的数据访问、随机数据访问、顺序处理、查询。
  • OLAP:长时间运行,整个数据集被访问,顺序数据访问,并行处理,批处理

只要应用程序知道该遍历的需求,就没有理由不能在应用程序中使用OLAP遍历。如果您有一些SLA,其中规定REST请求必须在0.5秒内完成,并且决定使用OLAP遍历来获得答案,那么无疑会破坏SLA。假设您在Spark上执行OLAP遍历作业,那么只需10-15秒就可以组织起来运行您的作业。

我不知道如何提供OLAP和OLTP的示例,只是稍微多谈一下用例,所以应该清楚什么时候使用其中一个而不是另一个。无论如何,让我们假设你有一个有100亿个边的图。您可能希望您的OLTP遍历始终以某种形式的索引查找开始--比如显示用户朋友的平均年龄的遍历:

代码语言:javascript
复制
g.V().has('username','stephenm').out('knows').values('age').mean()

但是,如果我想知道数据库中每个用户的平均年龄怎么办?在这种情况下,我没有任何索引可以用来查找一个“小的起始点集”--我必须处理我的图中所有的数百万/数十亿个顶点。这是OLAP的完美用例:

代码语言:javascript
复制
g.V().hasLabel('user').values('age').mean()

OLAP对于理解图形的增长和维护图形也是很好的。有着数以十亿计的边缘和较高的数据摄取率,不知道你的图表正在不适当地增长就是死刑。使用OLAP获取图表中所有数据的全局统计信息是很好的:

代码语言:javascript
复制
g.E().label().groupCount()
g.V().label().groupCount()

在上面的例子中,您将得到一个边缘/顶点标签分布。如果您知道图形是如何增长的,这可以很好地指示您的数据摄入过程是否正常工作。在十亿个边图上,尝试执行哪怕一条遍历都需要“永远”,如果它完全没有出错的话。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39910552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档