Estoy por arrancar una nueva version de mi app para móviles, que tendrá varios cambios y mejoras.
Sera sobre PostgreSQL 9.5+, y se planea usar todo lo que este motor ofrece que pueda ayudar al proyecto.
La complicación
ppal es que se pueda sincronizar entre múltiples clientes (posiblemente desconectados) a 1 servidor, pero en tiempo real o muy cerca a ello (si la app está conectada) y que el "espejo" el cliente sea fiel luego de cada sync. (
esto es dificil)
La complicación
secundaria es que se pueda usar los datos para integrarlos con N sistemas de forma transparente (
esto es facil).
Ahora bien, he estado pensando en hacer open source el modelo de la BD y las utilerías básicas (scripts de mantenimiento, despliegue en hosting, etc) (osea, el back-end de bd; permitiendo tener sus propios front-ends "propietarios" o no a gusto), pero me pregunto si a alguien le interesa hacer parte del proyecto; ya que igual sin ayuda pues no tiene mucha gracia.
La BD esta enfocado a pequeños negocios y ya tengo un modelo masomenos estable. La estructura en si es muy simple, asi que se presta para hacer consultas, vistas y procedimientos enfocados en velocidad. Si todo sale bien, se pueden derivar varios mini-programas de esto (como por ejemplo, un catálogo, una tienda virtual, etc).
----
Hay 2 aspectos que pueden resultar muy atractivos y es el resolver como sincronizar clientes quizás-desconectados (para ello hay que tener si o si una copia local de la BD, que seria sqlite (no Firebird por razón de que me debe funcionar en iOS)).
Llevo mucho rato dandole vuelta a como hacer esto en *tiempo real* y creo que tengo la idea, pero me gustaría tener con quien hablar en detalle del tema.
Como efecto colateral, la forma de solucionar el sync causa que sea factible crear integraciones mucho mas fáciles a sistemas externos a la app. Este ha sido uno de mis fuertes y por ello lo quiere llevar al siguiente nivel.
Esto se hace mediante crear un Log. Es popularmente conocido como el diseño Event sourcing:
http://www.martinfowler.com/eaaDev/EventSourcing.html
Se podría decir que el propósito es resolver estas dos incógnitas, y el que la BD sea de tipo "Punto de venta" es solo una forma de aterrizar el problema (y también, es parte de lo que tengo que hacer).
Estos puntos por si solo justifica la colaboración entre las partes, así todo lo demás se ignore.
Que implicaría hacer parte de esto? Básicamente, sacar un par de horas semanales al tema.
Que opinan?