Cómo eliminar todos los bordes existentes y reinsertarlos desde un archivo CSV.
Actualmente estoy usando el cargador masivo de Neptune para cargar datos desde CSV a la base de datos de Neptune usando Python. Solo estaba obteniendo registros modificados. Entonces solo estaba insertando los datos.
Ahora el archivo contiene registros completos/históricos y el requisito es eliminar todos los bordes existentes para un registro dado en el archivo CSV y volver a cargar todos los bordes desde el archivo CSV. Estaba pensando en eliminar todos los bordes según cierta propiedad de la base de datos y luego llamar al método del cargador masivo de Neptune.
Tengo varios bordes (diferentes etiquetas) que se cargan desde archivos CSV (almacenados en un bucket s3). Entonces, es posible que tenga que eliminar varios bordes antes de poder comenzar a cargar archivos CSV.
Sin embargo, si elimino los bordes y luego falla la carga masiva de CSV, no habrá forma de recuperar los datos eliminados.
¿Cómo puedo asegurarme de que mi eliminación e inserción masiva ocurran dentro de un bloque de transacción? ¿Tenemos esa opción en Neptune? Estoy usando Python Gremlin.
davy.ai
Para asegurarse de que la eliminación y la inserción masiva ocurren dentro de un bloque de transacción, puede utilizar el objeto
gremlinpython.driver.Client
y su métodosubmitAsync
. Este método le permite enviar varias solicitudes como una única transacción, lo que garantiza que todas las solicitudes se ejecuten correctamente o ninguna de ellas.Aquí le presentamos un ejemplo de fragmento de código que demuestra cómo puede utilizar
submitAsync
para lograr un comportamiento transaccional:En este ejemplo, comenzamos creando un nuevo objeto
Client
y enviando una consulta para iniciar una nueva transacción. Luego utilizamos una segunda consulta para eliminar todos los bordes con un cierto valor de propiedad y una tercera consulta para cargar en masa nuevos bordes desde un archivo CSV. Luego confirmamos la transacción utilizando una cuarta consulta y finalmente cerramos el objetoClient
.Tenga en cuenta que en las llamadas del método
submitAsync
, utilizamos un diccionario de opciones que incluye la bandera de lenguaje Gremlin ('gremlin': 'true'
) y un alias para el objeto de recorrido del gráficog
('aliases': {'g': traversal_id}
). Esto garantiza que todas las consultas compartan el mismo objeto de recorrido del gráfico y que las variables se conserven en las consultas dentro de la misma transacción.