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.

¿Hay una capa de persistencia para los contenedores de listas/colas?

¿Existe algún tipo de capa de persistencia que se pueda utilizar para un contenedor de lista/cola regularmente modificado que almacene cadenas de texto?


Los datos en la lista son solo cadenas de texto, nada complicado. Sin embargo, podría ser útil almacenar una clave o un hash con cada cadena para referencias específicas, por lo que pensé en envolver cada cadena en una estructura con un campo adicional para la clave.

La persistencia debe guardarse en cada modificación, más o menos, ya que podrían producirse apagones espontáneos.


Investigué Boost::Serialisation y parece fácil de usar, pero me parece que tendría que escribir la cola completa cada vez que se modifique para cerrar el archivo y estar seguro ante apagones, ya que no veo una opción de registro allí.

Vi SQLite, pero podría ser demasiado complejo ya que no necesito relaciones ni consultas sofisticadas.

Y no quiero reinventar la rueda haciendo todo manualmente en algunos archivos.

¿Existe algo disponible que valga la pena investigar?

Tengo poca experiencia con C++ y un sistema operativo subyacente, por lo que desconozco lo que está disponible y lo que es adecuado. Y no he encontrado nada mejor.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en C++, Linux, contenedores y persistencia, hay algunas opciones disponibles que pueden adaptarse a tus necesidades para una capa de persistencia que almacene una lista/cola de contenedores de cadenas que se modifican regularmente.

    Una opción a considerar es utilizar un sistema de base de datos embebida como Berkeley DB, que es una tienda de clave y valor ligera que permite una persistencia rápida y sencilla de datos. Te permitiría almacenar las cadenas en la cola, junto con una clave o hash para la referencia, y automáticamente guardaría los datos en el disco después de cada modificación.

    Otra opción es utilizar un archivo mapeado en memoria, que te permitiría escribir datos en un archivo como si estuvieran directamente en memoria, evitando la necesidad de manipular manualmente las operaciones de lectura y escritura de archivos. Con los archivos mapeados en memoria, los datos se persistirían automáticamente en el disco tan pronto como se escriban.

    En general, aunque opciones como Boost::Serialization y SQLite están disponibles y podrían funcionar, pueden resultar innecesariamente complejas para tus necesidades. Considera explorar opciones sencillas y ligeras como Berkeley DB y archivos mapeados en memoria como posibles soluciones para tus necesidades de persistencia.

Comments are closed.