Closed OscarCanek closed 7 years ago
object
, su nombre es la ruta completa desde el servidor hasta la fuente: serverName_dbName_schemaName_sourceName.create source
debido a que un alter source
conlleva mas validaciones por los cambios que se deben hacer al tipo creado anteriormente.El tipo base debe contener toda la lógica actual para hacer Lock y Unlock de los eventos entrantes.
P: ¿Este nuevo tipo heredará de una clase base?. De ser así, cual sería la definición de esa clase base. R: Si debe heredar sobre un tipo, inicialmente no debe tener propiedades. P: ¿Generará a un dll? R: No P: ¿Como se hará referencia/usará al nuevo tipo creado? R: Depende del contexto, lo que se necesita hacer es un generar de tipos basado en una fuente.
Con respecto al punto: Solo esta implementado para el create source debido a que un alter source conlleva mas validaciones por los cambios que se deben hacer al tipo creado anteriormente. R: Mi opinión es que puede separarse generación dinamica del tipo en contexto (fuente) basado en una metadata (sea cual fuere su origen db o arbol de ejecución) así no hay dependencia entre el comando create/alter source.
Sobre: El tipo base debe contener toda la lógica actual para hacer Lock y Unlock de los eventos entrantes. Recuerdame para que era el lock y unlock?
Un requerimiento a la generación de tipos es que las propiedades sean siempre nullables y sean solo de lectura publica y escritura privada permitiendo así la inmutabilidad.
Con respecto al punto: Solo esta implementado para el create source debido a que un alter source conlleva mas validaciones por los cambios que se deben hacer al tipo creado anteriormente. R: Mi opinión es que puede separarse generación dinamica del tipo en contexto (fuente) basado en una metadata (sea cual fuere su origen db o arbol de ejecución) así no hay dependencia entre el comando create/alter source.
Respuesta: Me refiero a como administrar los cambios, si va a ser distribuido entonces como vamos a cargar el nuevo tipo y descargar el viejo en donde se necesite
Sobre: El tipo base debe contener toda la lógica actual para hacer Lock y Unlock de los eventos entrantes. Recuerdame para que era el lock y unlock?
Respuesta: Cuando existe mas de un stream obteniendo eventos de una fuente, para llamar a dispose en el ultimo stream que tenga que descartarlo.
Me intriga como lo vamos a manejar en un ambiente distribuido.
Cada stream tendria una copia del evento.
Entonces me entra otra duda, como los objetos de las fuentes tendrán solo propiedades con tipos de datos primitivos no va a ser necesario Dispose o si?
Es correcto, no seria necesario.
Ahora se usa una interfaz para obtener el tipo de la fuente a la que se hace referencia en el from, join y with durante la compilación de la consulta.
/// <summary>
/// Source type factory interface.
/// </summary>
internal interface ISourceTypeFactory
{
/// <summary>
/// Get the type for the specify source.
/// </summary>
/// <param name="source">Source from with you will generate the type.</param>
/// <returns>Source type.</returns>
Type GetSourceType(Common.CommandObject source);
}
Actualmente se tiene la definición de la estructura de columnas de las fuentes, el siguiente paso consiste en crear un tipo a partir de esa estructura. El nombre de la fuente será el nombre del tipo y las columnas se convertirán en las propiedades del tipo, cada propiedad tendrá los métodos set y get públicos.
Pendientes a definir: