EventSourcingDB 1.3.0 introduce una nueva API v2 que cambia fundamentalmente la forma en que la base de datos se comunica con los clientes, informando los resultados de las solicitudes directamente en el cuerpo de la respuesta en lugar de depender de los códigos de estado HTTP. Este cambio, combinado con más de sesenta correcciones de errores, tiene como objetivo proporcionar una experiencia más estable y rápida para los desarrolladores que construyen sobre arquitecturas basadas en eventos.
La API v2 y el manejo de errores
La API v2 trata una solicitud como 'aceptada' solo después de que pasa la autenticación, la validación de esquema y los límites de recursos. Una vez aceptada, el servidor devuelve el resultado en el cuerpo, permitiendo que los clientes lean códigos de error específicos en lugar de interpretar códigos de estado HTTP genéricos.
Cada código de error sirve como un enlace directo a una página de documentación que explica la causa y la corrección necesaria. Además, la API v2 introduce precondiciones recursivas, como `isSubjectPristine` e `isSubjectPopulated`, que pueden aplicarse a un sujeto y a todos sus hijos en una estructura de árbol.
“Las escrituras y las consultas EventQL son considerablemente más rápidas, la lectura también es más rápida, cada solicitud está limitada en el tiempo y se incluyeron más de sesenta correcciones.”
— EventSourcingDB 1.3.0 is Available
Optimizaciones de rendimiento y estabilidad
La versión 1.3.0 optimiza el almacenamiento subyacente y el motor de consultas, haciendo que la escritura sea más rápida tanto para clientes individuales como concurrentes. También mejora el rendimiento de las consultas EventQL, específicamente para operaciones que agrupan, ordenan o unen múltiples fuentes.
Para garantizar la estabilidad del sistema, la actualización introduce límites de recursos estrictos en cada solicitud, respuesta y conexión inactiva. Las consultas EventQL ahora están limitadas por la profundidad de anidamiento y el uso de memoria para evitar que una sola consulta desborde la pila o agote la memoria del sistema.
Preparación para producción y migración
Las nuevas funciones enfocadas en producción incluyen un limitador de tasa por defecto que escala con el tamaño de la máquina y un punto de conexión de salud compatible con OpenMetrics. Una nueva bandera `--require-event-schemas` permite a los administradores rechazar cualquier escritura o restauración de eventos que no tengan un esquema registrado.
Actualizar a 1.3.0 requiere una parada completa del servidor porque la nueva versión bloquea el directorio de datos, lo que hace imposible una actualización progresiva. Los usuarios también deben actualizar sus SDK de cliente antes de la actualización, ya que la versión 1.3.0 utiliza una nueva versión de hash de evento que los SDK antiguos marcarán como datos manipulados.
