Una cosa que continuamente he encontrado muy confusa sobre el uso de una base de datos de objetos como db4o es cómo se supone que debe manejar migraciones complejas que normalmente serían manejadas por SQL/PL-SQL.Manejo de mantenimiento de datos en bases de datos de objetos como db4o
Por ejemplo, imagina que tienes una tabla en una base de datos relacional llamada my_users. Originalmente tenía una columna llamada "full_name", ahora que su software está en V2, desea eliminar esta columna, dividir los nombres completos en un espacio en blanco y poner la primera parte en una columna llamada "first_name" y la segunda en una columna llamado last_name. En SQL simplemente rellenaría las columnas "first_name" y "second_name" y luego eliminaría la columna original llamada "full_name".
¿Cómo puedo hacer esto en algo como db4o? ¿Escribo un programa Java que los guiones busquen todos los objetos de User.class, estableciendo full_name en null mientras configuran first_name y last_name? Cuando hago mi próxima confirmación svn, no habrá field/bean-property correspondiente a full_name, ¿esto sería un problema? Parece que para usarlo en una aplicación de producción donde cambie mi "esquema" me gustaría escribir un script para migrar datos de la versión x a la versión x + 1 y luego en la versión x + 2 realmente eliminar las propiedades que estoy tratando de Deshágase de la versión x + 1 ya que no puedo escribir una secuencia de comandos Java para modificar las propiedades que ya no forman parte de mi tipo.
Parece que parte del problema es que un RDBMS resuelve a qué objeto se refiere basado en un simple nombre de cadena basado en mayúsculas y minúsculas, en un lenguaje como el de Java es más complicado que esto, no puede hacer referencia a propiedad si el getter/setter/field no es un miembro de la clase cargada en el tiempo de ejecución por lo que esencialmente necesita tener 2 versiones de su código en el mismo script (hmm, los cargadores de clases personalizados suenan como un dolor), tenga la nueva versión de su la clase almacenada pertenece a otro paquete (suena desordenado), o usa la estrategia de la versión x + 1 x + 2 que mencioné (requiere mucha más planificación). Quizás haya alguna solución obvia que nunca obtuve de los documentos db4o.
¿Alguna idea? Espero que esto tenga algo de sentido.