es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una manera de ejecutar una consulta de Gremlin de texto con PartitionStrategy?

Estoy buscando una implementación para ejecutar una consulta de texto como: “g.V().limit(1).toList()” mientras se utiliza la estrategia de partición en Apache TinkerPop.

Estoy intentando construir una interfaz REST para ejecutar consultas solo en particiones seleccionadas del grafo. Sé cómo ejecutar una consulta en bruto utilizando el cliente, pero busco una implementación en la que pueda crear un gráfico multiinquilino (https://tinkerpop.apache.org/docs/current/reference/#partitionstrategy) y consultar solo los inquilinos seleccionados utilizando una consulta de texto en bruto en lugar de una GLV. Puedo consultar solo particiones seleccionadas usando pythongremlin, pero no encontré una implementación de referencia para ejecutar una consulta de texto en un inquilino.
Aquí está la implementación de consulta de inquilino

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() <---- consulta solo en la partición

Aquí se muestra cómo ejecuto una consulta en bruto en todo el grafo, pero busco una implementación para ejecutar consultas basadas en texto solo en particiones seleccionadas.

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() <-- se ejecuta en todo el grafo.
print(results)
client.close()

¿Alguna sugerencia? ¡Gracias de antemano!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para ejecutar una consulta basada en texto en solo particiones seleccionadas usando la PatitionStrategy en Apache TinkerPop, puede usar la siguiente implementación:

    1. Cree una conexión al servidor remoto usando DriverRemoteConnection.
    2. Inicialice un objeto Gremlin Traversal usando traversal() y pasando el objeto connection.

    3. Cree un objeto PartitionStrategy con la clave de partición deseada y las particiones de lectura / escritura.

    4. Aplique la estrategia de partición al objeto de recorrido usando withStrategies.

    5. Ejecute la consulta basada en texto deseada en el gráfico particionado usando el objeto de recorrido particionado.

    Aquí hay una implementación de ejemplo:

    from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
    from gremlin_python.process.traversal import Traversal, PartitionStrategy
    
    # Cree una conexión al servidor remoto
    connection = DriverRemoteConnection('ws://megamind-ws:8182/gremlin', 'g')
    
    # Inicialice un objeto de recorrido
    g = Traversal().withRemote(connection)
    
    # Cree una estrategia de partición
    partition = PartitionStrategy(partition_key="partition_key",
                                  write_partition="tenant_a",
                                  read_partitions=["tenant_a"])
    
    # Aplique la estrategia de partición al objeto de recorrido
    partitioned_g = g.withStrategies(partition)
    
    # Ejecute la consulta basada en texto deseada en el gráfico particionado
    x = partitioned_g.V().limit(1).toList()
    
    # Cierre la conexión
    connection.close()
    

    Esta implementación devuelve solo los objetos Vertex en la partición tenant_a. Puede modificar la consulta para satisfacer sus necesidades específicas.

Comments are closed.