gpt4 book ai didi

titan - gremlin 中的 olap 和 oltp 查询

转载 作者:行者123 更新时间:2023-12-03 23:40:51 24 4
gpt4 key购买 nike

在小 Sprite 中,

  • s = graph.traversal()
  • g = graph.traversal(computer())

  • 我知道第一个用于 OLTP,第二个用于 OLAP。我知道定义级别的 OLAP 和 OLTP 之间的区别。我对此有以下疑问:

    如何
  • 上述查询在工作上有何不同?
  • 我可以使用第二个吗,使用'g'
    在我的应用程序中查询以获得结果(我知道这个“g”一个
    给出比第一个更快的结果)?
  • OLAP 和 OLTP 的区别举例?

  • 提前致谢。

    最佳答案

    从用户的角度来看,就结果而言,OLAP 和 OLTP 之间没有真正的区别。 Gremlin 语句与您在使用 TraversalSource 和其他设置时显示的 withComputer() 配置相同。

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

    您真的不应该将 OLTP 与 OLAP 视为“更快”与“更慢”。最好按照 documentation 中的描述来考虑它:

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

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

    我不确定如何提供 OLAP 和 OLTP 的示例,除了多谈一点用例,所以应该清楚何时使用一个而不是另一个。无论如何,让我们假设您有一个有 100 亿条边的图。你会希望你的 OLTP 遍历总是以某种形式的索引查找开始——比如显示用户“stephenm”的 friend 的平均年龄的遍历:
    g.V().has('username','stephenm').out('knows').values('age').mean()

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

    OLAP 也非常适合了解图形的增长和维护图形。拥有数十亿条边和高数据摄取率,不知道您的图增长不当就是死刑。使用 OLAP 来抓取图中所有数据的全局统计数据是很好的:
    g.E().label().groupCount()
    g.V().label().groupCount()

    在上面的例子中,你得到了一个边/顶点标签分布。如果您知道图表的增长方式,这可以很好地指示您的数据摄取过程是否正常工作。在 10 亿条边图上,如果它完全没有错误地完成,那么即使尝试执行其中一个遍历也将花费“永远”。

    关于titan - gremlin 中的 olap 和 oltp 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39910552/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com