Actualmente ejecutamos una solución de comercio electrónico para una empresa de ocio y viajes. Cada vez que tenemos un lanzamiento, debemos bajar el sitio de comercio electrónico a medida que actualizamos el esquema de la base de datos y el código de acceso a los datos. Estamos utilizando un ORM personalizado, donde cada entidad de datos es responsable de sus propias operaciones CRUD. Esto se logra al generar dinámicamente el SQL en función de los atributos en la entidad de datos.cómo minimizar el tiempo de inactividad de la aplicación al actualizar la base de datos y la aplicación ORM
Por ejemplo, la entidad de datos para una dirección sería ...
[tableName="address"]
public class address : dataEntity
{
[column="address1"]
public string address1;
[column="city"]
public string city;
}
Por lo tanto, si añadimos una nueva columna a la base de datos, hay que actualizar el esquema de la base de datos y también actualizar los datos entidad.
Como puede esperar, los empresarios no están muy contentos con esta interrupción ya que afecta su flujo de caja. Las personas de operaciones no están contentas, ya que tienen que lidiar con un tiempo de alta presión cuando la base de datos y las aplicaciones se actualizan. Los programadores están molestos porque constantemente están metidos en problemas por el sistema heredado que heredaron.
¿Alguna de ustedes personas inteligentes tiene alguna sugerencia?
Estoy totalmente en desacuerdo con esto. –
la solución tal como está no es diferente de la suya, solo digo ejecutar los cambios DB con un poco más de tiempo antes de ejecutar en la aplicación. Por cierto, yo trabajo con los centros de llamadas 911, no podemos tener tiempo de inactividad en absoluto. Dividimos nuestro par tolerante a errores, actualizamos el DB, actualizamos las aplicaciones y luego fallamos el sistema en ejecución en el sistema actualizado.Si tenemos que deshacer nuestras aplicaciones, es mucho más fácil volver a la aplicación anterior, manteniendo el nuevo esquema de DB en su lugar. Claro, los ORM están haciendo esto cada vez más difícil, pero eso es más un problema de implementación con el que tenemos que lidiar. – gbjbaanb
Como cualquier otra cosa, use la herramienta adecuada para el trabajo correcto ... Para 'Ejemplo' ... Los productos pesados de lectura pueden usar características de caché de primer y segundo nivel que se ofrecen en la mayoría de los ORM y evitar realizar llamadas a bases de datos que nunca producen nuevas respuestas . Por otro lado, las aplicaciones de escritura pesada pueden encontrar que tiene más sentido descargar las escrituras (especialmente las más complejas) a la base de datos. – JoeGeeky