En el proyecto en el que estoy trabajando actualmente hay una necesidad de guardar una estructura de datos considerable en el disco (editar: creo docenas de MB). Siendo un optimista, pensé que debe haber una solución estándar para tal problema; Sin embargo, hasta ahora no he encontrado una solución que satisfaga los siguientes requisitos:Versione amistoso, formato de archivo binario extensible
- .NET 2.0 de apoyo, preferentemente con una aplicación de software libre
- versión amigable (esto debe interpretarse como: lectura de una versión antigua del formato debería ser relativamente simple si los cambios en la estructura de datos subyacente son simples, digamos agregar/soltar campos)
- Posibilidad de hacer alguna forma de acceso aleatorio donde parte de los datos se puede extender después de la creación inicial, sin la necesidad para deserializar la colección creada hasta este punto en el tiempo (piense en esto como extender los resultados intermedios)
- espacio y el tiempo eficiente (XML ha sido excluido como opción dado este requisito)
Opciones considerado hasta ahora:
- XmlSerializer: fue rechazada desde la serialización XML no cumple con el requisito 3 y 4.
- SerializableAttribute: no es compatible requisitos 2 y 3.
- Protocol Buffers: fue rechazada por el veredicto de la documentación sobre Large Data Sets - ya que este comentario sugirió añadir otra capa o En la parte superior, esto requeriría una complejidad adicional que deseo haber manejado por el formato de archivo en sí.
- HDF5, EXI: no parecen tener implementaciones .NET
- SQLite/SQL Server Compact edition: la estructura de datos que nos ocupa resultaría en una estructura de tabla bastante complejo que parece demasiado peso pesado para el uso previsto
- BSON: no parece ser compatible con el requisito 3.
- Fast Infoset: solo parece haber pagado las implementaciones de .NET.
Cualquier recomendación o sugerencia es muy apreciada. Además, si crees que la información anterior no es cierta, proporciona punteros/ejemplos para demostrar que estoy equivocado.
HDF5 tiene algo de soporte .NET: http://www.hdfgroup.org/projects/hdf.net/ –
@Richard Morgan Hasta ahora solo encontré enlaces muertos en hdfgroup.org con respecto a .NET gracias. –
Visto el ejemplo provisto con hdf.net, la idea de .net es utilizar clasificaciones inseguras y personalizadas, no es divertido. –