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.

Añadir/fusionar un writeBatch a otro writeBatch.

Tengo un trabajo que actualmente escribe en un writeBatch de forma secuencial.
Quiero dividirlo en varios hilos, ya que escribir en un writeBatch no es seguro para hilos; pensé que cada hilo tendría su propio writeBatch, y al final, todos los lotes se fusionarían en uno para mantener la escritura atómica.

No encontré una API para eso. ¿Existe alguna? ¿Hay alguna otra forma alternativa que pueda tomar?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en concurrencia y rocksdb, puedo sugerir que hay algunas alternativas que puedes tomar con respecto a tu caso de uso.

    En primer lugar, puedes utilizar la API de Actualizaciones Atómicas, la cual permite que múltiples hilos actualicen una instancia de rocksdb de forma concurrente sin conflictos. Esto se puede lograr a través de la llamada a la API DB::Write(), la cual escribe múltiples actualizaciones de forma atómica y con una única escritura secuencial en el registro de transacciones pendientes (WAL, por sus siglas en inglés).

    En segundo lugar, puedes utilizar la API de Transacciones Optimistas, la cual permite que múltiples hilos modifiquen una instancia de rocksdb de forma concurrente bajo la suposición optimista de que no habrá conflictos. Esto se puede lograr a través de la llamada a la API DB::BeginTransaction(), la cual inicia una transacción, y luego múltiples hilos pueden escribir en ella, y finalmente la transacción puede ser confirmada a través de la llamada a la API DB::Commit(). Si se detectan conflictos durante la confirmación, se retornará un error.

    Por último, si la atomicidad es crítica para tu caso de uso, puedes utilizar la funcionalidad de commit en dos fases de rocksdb, la cual permite que las transacciones se ejecuten de forma atómica en múltiples instancias de rocksdb. Esto requerirá configurar un sistema distribuido para coordinar los commits en dos fases entre las instancias, pero proporciona garantías sólidas sobre la atomicidad.

    En resumen, aunque no existe una API directa para escribir en múltiples lotes de escritura de forma atómica en rocksdb, hay múltiples alternativas que puedes utilizar dependiendo de tus requisitos de atomicidad y concurrencia.

Comments are closed.