Tengo una variedad de estructuras de datos ricas (principalmente árboles) que me gustaría conservar en el disco, lo que significa que no solo quiero escribirlas en el disco, sino que quiero una garantía de que los datos se han escrito completamente y sobrevivirán a un poder -abajo.¿Cómo se persisten los datos en el disco desde .NET?
Otros parecen diseñar formas de codificar estructuras de datos ricas en tablas de bases de datos planas como tablas de búsqueda de nodos primarios a secundarios. Esto facilita la ejecución de consultas SQL con los datos, pero no lo necesito: solo quiero guardar y cargar mis árboles.
La solución obvia es almacenar todo como un blob en la base de datos: una sola entrada que quizás contenga una cadena larga. ¿Es eso un abuso de la base de datos o una práctica recomendada? Otra solución podría ser usar una base de datos XML? ¿Hay alguna alternativa a las bases de datos que debería considerar?
Por último, estoy haciendo esto desde F # por lo que una solución llave en mano para los datos de la persistencia de .NET sería ideal ...
EDIT: Tenga en cuenta que al formatear (por ejemplo, la serialización) es irrelevante como pueda Convertir trivialmente entre formatos con F #. Se trata de obtener un reconocimiento de que se ha completado una escritura hasta el almacén no volátil (es decir, el disco) y que ninguna parte de los datos escritos se mantiene en un almacén volátil (por ejemplo, un caché de RAM) para que Puedo continuar a salvo en ese conocimiento (por ejemplo, eliminando la versión anterior de los datos del disco).
Re "solución llave en mano" - algunas (no todas) construcciones F # pueden estar fuera de la ventana * típica * que muchas capas de persistencia esperan ¿Sería aceptable usar una capa de clase DTO (justo antes de la serialización) si simplifica las cosas? Además, sospecho que es posible que desee ver los aspectos de * serialización * y * ACID * por separado. –
Si (mirando su comentario a Reed) el aspecto de serialización no es un problema, entonces tal vez cualquier base de datos * de ACID *. –
@Marc: "Base de datos de documentos ACID". Fantástico, gracias! –