Tiempo para RDBMS de-brainwashing. :)
Uno de los mayores puntos del diseño sin esquema de couchdb está dirigido directamente a evitar la necesidad de migraciones. La representación JSON de los objetos hace que sea fácil simplemente escribir sus objetos.
Por ejemplo, dado que tiene una aplicación web de tipo blog con publicaciones y todo lo que la gente almacena en un blog. Tus documentos postales tienen campos como autor, título, creado en, etc. Ahora vienes y piensas: "Debería rastrear en qué fase está la luna cuando publique mis publicaciones ...", puedes comenzar a agregar moon_phase como un atributo para nuevas publicaciones.
Si quieres estar completo, regresa y agrega moon_phase a publicaciones antiguas, pero eso no es estrictamente necesario.
En sus puntos de vista, puede acceder a moon_phase como un atributo. Y será nulo o provocará una excepción o algo. (No es un experto en JS, creo que nulo es la respuesta correcta)
Lo que pasa es que realmente no importa. Si tiene ganas de cambiar algo, simplemente cámbielo. Aunque asegúrate de que tus puntos de vista entiendan ese cambio. Que en mi experiencia realmente no requiere mucho.
Además, si usted es realmente paranoico, es posible almacenar un atributo de versión/tipo, como en:
{
_id: "foo-post",
_rev: "23490AD",
type: "post",
typevers: 0,
moon_phase: "full"
}
Espero que ayude.
Parece que activecouch está ahora en GitHub - http://github.com/arunthampi/activecouch/tree/master – Evan