【问题标题】:Is there a way to execute text gremlin query with PartitionStrategy有没有办法使用 PartitionStrategy 执行文本 gremlin 查询
【发布时间】:2022-01-04 20:40:56
【问题描述】:

我正在寻找一种在 Apache TinkerPop 中使用 PatitionStrategy 时运行文本查询 ex: "g.V().limit(1).toList()" 的实现。

我正在尝试构建一个 REST 接口来仅对选定的图形分区运行查询。我知道如何使用客户端运行原始查询,但我正在寻找一种实现,我可以创建一个多租户图 (https://tinkerpop.apache.org/docs/current/reference/#partitionstrategy) 并使用原始文本查询而不是 GLV 仅查询选定的租户。我只能使用 pythongremlin 查询选定的分区,但是我找不到在租户上运行文本查询的参考实现。 这里是租户查询实现

connection = DriverRemoteConnection('ws://megamind-ws:8182/gremlin', 'g')
g = traversal().withRemote(connection)
partition = PartitionStrategy(partition_key="partition_key",
                          write_partition="tenant_a",
                          read_partitions=["tenant_a"])
partitioned_g = g.withStrategies(partition)
x = partitioned_g.V.limit(1).next() <---- query on partition only 

这是我在整个图形上执行原始查询的方式,但我正在寻找实现以仅在选定的分区上运行基于文本的查询。

from gremlin_python.driver import client

client = client.Client('ws://megamind-ws:8182/gremlin', 'g')


results = client.submitAsync("g.V().limit(1).toList()").result().one() <-- runs on entire graph.
print(results)
client.close()

有什么建议吗? TIA

【问题讨论】:

    标签: tinkerpop gremlinpython


    【解决方案1】:

    这取决于后端存储如何处理文本模式查询,但对于查询本身,本质上您只需要使用 Groovy/Java 样式公式即可。这将适用于 GremlinServer 和 Amazon Neptune。对于其他后端,您需要确保支持此语法。所以在 Python 中你会使用类似的东西:

    client.submit('
      g.withStrategies(new PartitionStrategy(partitionKey: "_partition", 
                                             writePartition: "b", 
                                             readPartitions: ["b"])).V().count()')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      相关资源
      最近更新 更多