jueves, 6 de julio de 2017

Tuneando el control de concurrencia optimista.

Supongamos que tenemos una entidad en nuestro sistema llamada "Cliente" que se compone de los atributos [Nombre - Apellido -  EsVIP]. Si modelamos esto en un sistema de persistencia con concurrencia optimista nos quedaría así:

Nombre    - varchar(50)
Apellido   - varchar(50)
EsVIP      - bit
stamp       - rowvewsion

donde stamp es un valor que siempre cambia cuando la entidad ha sufrido algún cambio en persistencia.

Como aquí hablamos de concurrencia no me voy a meter en el tema del estancamiento de datos. Para eso les remito a la esta entrada. La gestión del estancamiento de datos no debe basarse en el campo stamp.

Los pasos que vamos a seguir serán los siguientes:
  1. Rehidratamos la entidad desde persistencia.
  2. Le aplicamos los cambios respetando las reglas e invariantes del dominio.
  3. Intentamos persistir la entidad aplicando el control de persistencia.

viernes, 24 de febrero de 2017

Paralelización con RxJava

Para los que no lo sepan: Rx es monohilo por defecto. 

Un entorno multihilo rompe un stream secuencial inmutable; puesto que deja de ser secuencial.

Aun así, todavía hay posibilidad (y potencial) de ejecutar procesos en paralelo.