Development

Componentes del SQL Server 2005 – Parte IV

Replicación 

 

La replicación permite copiar y distribuir datos y objetos de las bases de datos, de una base de datos o servidor a otro, y luego opcionalmente sincronizar entre las bases de datos para asegurar consistencia.

 

Perfeccionamientos de Replicación

Perfeccionamiento

Descripción

Seguridad

El modelo de replicación de seguridad ha sido actualizado para permitir más control sobre las cuentas, bajo las cuales se ejecuta la replicación.

Administración

La interface de replicación de usuario ha sido mejorada e incluye un nuevo Replication Monitor.

Disponibilidad

Cambios en los esquemas pueden realizarse en  tablas publicadas.

Programabilidad

Un nuevo modelo de administración de programación, Replication Management Objects (RMO), permite incluir lógicas de trabajo dentro de los procesos de sincronización.

Replicación Transaccional

La Replicación Transaccional ahora puede ser iniciada desde un backup

Replicación Heterogénea

Los datos pueden ser publicados desde una base de datos Oracle a una base de datos SQL Server usando replicación transaccional o instantánea.

Replicación Peer-to-peer

Los datos pueden ser replicados entre múltiples peer servers. Datos a todos los servidores pueden ser actualizados y todos los servidores reciben los cambios hechos a los otros servidores.

Replicación HTTP

 

 

Para simplificar las replicaciones a través de un firewall o para usuarios moviles, ha sido introducida la replicación sobre HTTP o HTTPS. Esto transmite datos en formato XML entre un suscriptor y el IIS, y usa formato binario sobre TCP/IP entre IIS y el publicador.

 

 

Cuando usamos Microsoft Windows Server™ 2003, SQL Server 2005 responde de manera innata a los requerimientos HTTP sin la ayuda de software Web Server como IIS. Esto hace más fácil implementar Web Services basados en una base de datos SQL Server.

 

Administrar HTTP endpoints

 

Para habilitar que los requerimientos HTTP sean manejados innatamente por SQL Server, se debe crear uno o mas HTTP endpoints usando los documentos CREATE ENDPOINT. El documento CREATE ENDPOINT es usado para:

ü  Registrar una URL con http.sys,  así los requerimientos a esa URL son redireccionados al  SQL Server.

ü  Especificar los puertos TCP en los cuales los requerimientos van a ser aceptados.

ü  Especificar un mecanismo de autenticación para el endpoint. Se puede autenticar un cliente usando métodos de autenticación básicos, integrados o resumidos. La autenticación anónima ha sido borrada.

ü  Setear el estado inicial (stopped o started) del endpoint. Por defecto, los endpoint son creados en un estado stopped. Para iniciar un endpoint luego de que este ha sido creado, se debe usar el documento ALTER ENDPOINT para cambiar al estado a started.

ü  Especificar las limitaciones del protocolo de Internet (IP) para controlar el acceso al  endpoint.

ü  Crear uno o más métodos Web que los usuarios puedan llamar a través del endpoint. Métodos Web pueden ser procesos almacenados o funciones user-defined.

ü  Una vez que un endpoint HTTP fue creado, se puede dar, revocar o negar permisos de conexión para controlar el acceso al endpoint.  

Service Broker

 

Service Broker habilita la creación de colas para comunicación de transacciones basadas en mensajes (message-based), para que sean confiables entre los servicios de software. Esto hace a SQL Server 2005 una mejor plataforma para soluciones basada en Servicios  (service-based).

 

Service Broker

 

Mejora

Descripción

Coordinación y orden de Mensajes

Service Broker asegura que los mensajes sean recibidos en el orden correcto y sean enviados solo una vez. Utiliza un único identificador para rastrear mensajes que pertenecen a la misma conversación, haciendo mas fácil implementar operaciones distribuidas, asincrónicas y de largo proceso.

Disponibilidad desincronizada

Service Broker usa colas para enviar mensajes asincrónicos; los mensajes pueden ser enviados a un servicio incluso cuando este no esta disponible.

Flexibilidad de Trabajo

El conjunto que desincroniza la comunicación  message-based hace posible para los sistemas que puedan distribuir sus procesos de trabajo de forma continua.

Mensajes de Bloqueo Relacionados

Cuando hay en cola muchos mensajes relacionados con la misma tarea, Service Broker asegura que los mensajes sean procesados como una unidad bloqueando todos los mensajes relacionados cuando el primero de la cola es leído.

Programa de activación automática de Servicio

Service Broker puede activar automáticamente una instancia de un servicio de programa cuando un mensaje llega a su cola.  Mientras aumenta el volumen de los mensajes recibidos, Service Broker puede activar más de una instancia de servicio de programa hasta llegar un número máximo configurado, y desactivarlos cuando el trabajo disminuye.

 

Integración de Base de Datos

Service Broker esta totalmente integrado con el motor de base de datos SQL Server, dando soporte para procesamiento de mensaje transaccional y simplificando así la administración.  Por ejemplo, las colas de Service Broker están implementadas como tablas de base de datos, y por lo tanto se les  puede hacer back up durante el proceso normal de back up de la base de datos.

Development

Componentes del SQL Server 2005 – Parte III

Relational Database Engine .NET CLR
 
El Lenguaje Común de Tiempos de Ejecución de .NET (CLR) provee un ambiente de administración para código escrito en lenguaje .NET como Visual C# o Visual Basic .NET
 
Relational Database Engine NET CLR
 
 

El motor de la base de datos SQL Server 2005 tiene alojado el .NET CLR,

haciendo posible desarrollar objetos de base de datos usando códigos escritos en un lenguaje de programación .NET.

La habilidad de desarrollar objetos de base de datos en código .NET

provee varias ventajas, incluyendo un modelo de administración de

seguridad (funcionalidad que no esta disponible o es difícil de implementar

en Transact-SQL) y es una mejor elección para realizar desarrollos.

Se pueden desarrollar las siguientes clases de objetos de base de datos

en código administrado:

ü  Procesos Almacenados (Store Procedures)

ü  Tipos de datos User-defined

ü  Funciones User-defined

ü  Triggers

ü  Agregar funciones User-defined

Definir objetos de base de datos con código administrado

 

La unidad de despliegue de aplicaciones para .NET Framework es la Assembly. Una Assembly es un archivo DLL o EXE compilado que contiene clase de definiciones y código.

Se puede importar una assembly a una base de datos usando el documento CREATE ASSEMBLY, y use mejoras para el CREATE PROCEDURE, CREATE TRIGGER, CREATE FUNCTION, CREATE AGGREGATE, y el documento  CREATE TYPE para implementar un objeto de base de datos usando el código dentro del assembly.

Los desarrolladores pueden crear objetos de base de datos en el entorno de Visual Studio .NET y desplegarlos directamente en la base de datos.

Reporting Services

 

Reporting Services permite la creación de informes de datos de SQL Server.

Los informes pueden ser diseñados usando Visual Studio .NET–based Report Designer y pueden ser accedidos usando un IIS Web site.

 

Reporting Services

Nota Importante:

Reporting Services está disponible para descargar en forma directa separada para SQL Server 2000.

Caracteristicas Reporting Services

Característica

Descripción

Report authoring

Se puede utilizar Report Designer en  Business Intelligence Development Studio para crear un informe.

Report management

Se utiliza para administrar la seguridad del informe, generación y distribución del informe según la agenda, y de esta forma administrar la historia del informe.

Report execution

Los reportes son ejecutados en forma conjunta, aprovechando procesos de consultas paralelas para mejoras en la performance. Los reportes son compilados mientras .NET los ensambla.

Report access

 

 

 

Los usuarios pueden acceder a los reportes por un IIS Web Site especial, donde puede exportar los reportes en los formatos más comunes como HTML y PDF.  También los reportes pueden ser enviados a los usuarios vía e-mail a través de una suscripción.

Development

Componentes del SQL Server 2005 – Parte II

SQL Server Integration Services

 

SQL Server Integration Services (antes Data Transformation Services) proporciona una solución comprensiva para la transferencia y transformación de datos entre fuentes de datos diversas.

SSIS mejoras con respecto a versiones anteriores:

Característica /Mejora

Descripción

SSIS arquitectura

La arquitectura de SSIS se ha reajustado para separar flujo de paquete de control de flujo de datos. Dos motores se han introducido para manejar estos aspectos de la transformación de los datos: el SSIS Run-time engine y el SSIS Data-Flow engine.

SSIS Designer

El SSIS Designer es parte del Business Intelligence Development Studio, permitiendo convertir los proyectos SSIS mientras que está desconectado del servidor. Usted puede también convertir soluciones SSIS usando SQL Server Management Studio.

Transformaciones

 

SSIS provee las siguientes transformaciones:

ü  Partición de condiciones (Conditional Split )

ü  Multicast

ü  Union-All and Merge

ü  Sort

ü  Fuzzy Grouping

ü  Lookup y Fuzzy Lookup

ü  Percentage Sampling and Row Sampling

ü  Copy/Map, Data Conversion, and Derived Column

ü  Aggregacion (Aggregation)

ü  Data Mining Model Training, Data Mining Query,

ü  Partition Processing, and Dimension Processing

ü  Pivot and UnPivot

 

 

Notification Services proporciona un Framework para el desarrollo de aplicaciones basadas en subscripciones a través de las cuales se notifica a los usuarios acerca de eventos.

 

notification services

 

Nota Importante:

Notification Services 2.0 está disponible en forma separada para SQL Server 2000. SQL Server 2005 Notification Services incluye un número  de mejoras sobre Notification Services 2.0.

 

Características de Notification Services

Característica

Descripción

Subscription Management Objects

Una API para construir la administración de suscripción de aplicaciones a través de la cual los  usuarios pueden suscribirse a eventos.

Event APIs

Existen cuatro maneras para incorporar la información del evento en el sistema.

Full-Text Search

Búsqueda Full-Text permite indexar rápida y flexiblemente consultas keyword-based de datos.

Perfeccionamientos de Búsqueda Full-text

Perfeccionamiento

Descripción

Servidores enlazados

Se pueden ejecutar consultas full-text contra servidores enlazados.

Columnas Múltiples

Ya no esta limitado el uso de  una o todas las columnas en una tabla, ahora se puede especificar que columnas se quieren colocar en el argumento column_list.

Especificar LocaleID

Se puede ejecutar consultas full-text usando un idioma diferente del idioma por defecto.

Backup y Restauración

Los catálogos Full-text ahora pueden ser backapeados y restaurados con o sin los datos de la base de datos.

Attach y Detach

Los catálogos Full-text están incluidos en las operaciones de attach y detach.

Datos XML

Full-text indexes pueden ser creados en datos XML.

Performance

La Performance de index populares fue mejorada.

Development

Componentes del SQL Server 2005 -Parte I

Componentes SQLSertver2005

SQL Server 2005 se compone de:

Componente

Descripción

Motor de Base de datos Relacional

El motor de  base de datos relacional de SQL Server  es el corazón de SQL Server 2005 y proporciona un ambiente de alto rendimiento, escalable, seguro para almacenar y recuperar datos de modificación relacional o formato Extensible Markup Language (XML)

Analysis Services

Proporciona la base de una solución Business Intelligence para soporte de Aplicaciones Online Analytical Processing (OLAP)  y Data Miining.

SQL Server Integration Services (SSIS)

Un motor que se utiliza para: Importar, Exportar datos y transformaciones de datos mientras que se transfieren.

Notification Services

Un Framework para las soluciones en las cuales se envían a los suscriptores las notificaciones cuando ocurren los acontecimientos específicos. Las notificaciones se pueden generar eficientemente y enviar a dispositivos múltiples de diferentes tipos.

Reporting Services

Se utiliza para extraer datos desde SQL Server y generar reportes.

Service Broker

Un mecanismo confiable de Queuing, y Comunicación Transaccional  basada en mensajes entre los servicios de software.

.NET common language runtime(CLR)

Incluido dentro del SQL Server, permitiendo poner soluciones de base de datos en ejecución usando el código manejado escrito en  lenguage .NET  por ejemplo Microsoft Visual C#® .NET o Microsoft Visual Basic® .NET.

Native HTTP Support

 

Permite a programas de cliente conectarse con HTTP endpoints dentro de SQL Server sin requerir Internet Information Services (IIS).

 

Replicación

 

Un sistema de tecnologías para el copiado de datos y distribución de base de datos a partir de una base de datos o de un servidor a otro,  sincronizando la información entre las bases de datos para asegurar consistencia.

 

Full-text search

 

Permite la indexación rápida y flexible basada en keyword queries de texto sobre datos almacenados en una base de datos en SQL Server.

El Motor de Base de Datos

El motor de base de datos es el componente principal de SQL Server. Proporciona almacenaje de datos, recuperación, y servicios de modificación que pueden escalar desde soluciones personales hasta el nivel empresa

 

Mejoras al Motor de Base de Datos con respecto a versiones anteriores

 

SQL Server 2005 incluye un número de mejoras significativas al motor de base de datos, según lo descrito en la tabla siguiente.

 

Característica / Mejora

Descripción

Partitioning

Las tablas y los índices se pueden repartir a través de grupos múltiples de archivo. Esto puede mejorar el funcionamiento y la capacidad de mantenimiento.

DDL triggers y event notifications

DDL triggers pueden ser utilizados para ejecutar stored procedures mientras DDL statements (por ejemplo CREATE) se ejecutan. Event notifications pueden ser utilizados para disparar eventos para el servicio Service Broker cuando se modifica la base de datos.

New data types

Un número de nuevos tipos de datos se han incluido en esta versión, por ejemplo xml y un máximo modificable para los tipos de datos nvarchar, varchar, y varbinary types.

Multiple Active Result Sets (MARS)

MARS permite que los clientes tengan más de una petición por conexión.

Transact-SQL

Transact-SQL ahora incluye palabras claves estructuradas de dirección de excepción (por ejemplo, TRY y CATCH), soporte para expresiones comunes de tabla, y nuevas funciones de graduación y operadores relacionales. Los DDL statements se han mejorado.

Seguridad

Una nueva arquitectura de seguridad proporciona la protección mejorada de base de datos a través de reglas y permisos. 

XML

 

El soporte para XML ha sido mejorado notablemente, siendo más flexible.

 

The .NET Framework

 

El .NET Framework CLR es integrado en el motor de SQL Server, haciendo posible construir  soluciones de base de datos con código administrado.

 

Replicación

 

La funcionalidad de replicación ha sido mejorada para hacer mas sencilla la configuración y proveer soporte de replicación transaccional para peer-to-peer, replicación sobre HTTP, y considerables mejoras para replicación heterogénea.

 

Mantenimiento de base de datos

 

 

Las tareas de mantenimiento fueron mejoradas, con online restore y

online index operations.

 

 

Analysis Services

Analysis Services otorga un gran alcance a la plataforma Business Intelligence para SQL Server, permitiendo poner en ejecución OLAP Data Warehouses y usar técnicas de Data Mining para analizar datos de negocio y tomar decisiones apropiadas.

 

Mejoras en Analysis Services con respecto a versiones anteriores

Característica / Mejora

Descripción

Interfaz de usuario

Las soluciones Analysis Services son más fáciles de crear con el nuevo Business Intelligence Development Studio.

Analysis Services Engine

Usted puede ahora instalar múltiples instancias de Analysis Services en una sola computadora.

Cubos

 

 

 

 

 

Los cubos se pueden ahora basar en las tablas múltiples de hecho,  por ejemplo en Key Performance Indicators (KPI) y Business Intelligence las mejoras favorecen la toma de decisión, y el soporte para los procedimientos almacenados, ampliando la funcionalidad de los cubos.

 

 

Development

Novedades C# 3.0

Una de las primeras novedades con que se encuentra cualquier programador de C# que empieza a asimilar las nuevas características de C# 3.0 es la palabra reservada contextual  var. Hablamos de palabra reservada contextual porque el lexema var (al igual que el resto de los términos incorporados al lenguaje en la versión 3.0) actúa o no como palabra clave en dependencia del contexto en que aparece. En el caso de var, éste es reconocido por el compilador como palabra clave únicamente cuando es el lexema que da inicio a una sentencia del lenguaje; en caso contrario, es tratado como un identificador común y corriente. Esto hace posible mantener la compatibilidad hacia atrás, y que sigan compilando correctamente programas escritos para versiones anteriores que utilicen var como nombre de variable o tipo:

static void Main(string[] args)

{

    int var = 4;

    Console.WriteLine(var);           

}

Cuando aparece al principio de una sentencia, var indica al compilador que está en presencia de una declaración de variable local con tipo implícito; esto es, una declaración de una variable local cuyo tipo no se especifica explícitamente por parte del programador, sino que se deja al compilador la tarea de inferirlo (deducirlo) en base al tipo de la expresión con la que la variable se inicializa. La inferencia de tipos es un recurso que se utilizó por primera vez en C# en la versión 2.0 y que en la versión 3.0 gana muchos enteros como mecanismo que hace posible una codificación más compacta y funcional.

A continuación se muestran algunos ejemplos sencillos de declaraciones de variables locales con tipo implícito:

var year = 2007; // el tipo de ‘year’ es int

var greeting = "IACYM Lince!"// el tipo de ‘greeting’ es string

var radio = 3.5;

var area = Math.PI * radio * radio;

// el tipo de ‘radio’ y ‘area’ es double

var today = new DateTime(2007, 12, 1);

// el tipo de ‘today’ es DateTime

Los siguientes son ejemplos de usos erróneos de var:

// usos erróneos de var

var a;        // la inicialización es obligatoria

var b = null; // imposible inferir el tipo de ‘b’

var c1 = 3,

    c2 = 5;  // no se admiten declaraciones múltiples

var d = ;    // un inicializador de array no es permitido

             // (para esto el lenguaje ofrece otra vía, los inicializadores de arrays y colecciones)

La palabra clave contextual var puede utilizarse también en otras construcciones del lenguaje, como el bucle foreach o la sentencia using:

var a = new int[]{} ;

using (var f = new StreamWriter("DATA.txt"))// el tipo de ‘f’ es StreamWriter

{

      foreach (var n in a)  // el tipo de ‘n’ es int

      f.WriteLine(n);

}

La semántica de ‘var’

Algunos programadores con experiencia de trabajo con lenguajes dinámicos o con débil control de tipos (como Javascript o Visual Basic 6) piensan, al ver por primera vez esta característica de C# 3.0, que están en presencia de algo que les es familiar: la posibilidad de declarar una variable cuyo tipo podrá variar en tiempo de ejecución según el libre albedrío del programador. Nada más lejos de la realidad: C# ha sido desde sus inicios un lenguaje con fuerte control de tipos, y esta característica no viene para nada a romper con esa tradición. La palabra clave contextual var es simple y sencillamente un recurso que nos libera de la necesidad de indicar explícitamente el tipo de una variable inicializada, haciendo que el compilador lo infiera automáticamente a partir del tipo de la expresión que se le asigna. A lo largo de todo el ámbito de utilización de la variable, el compilador verificará que el uso de ésta es consistente con el tipo que le ha asignado en el momento de la declaración.

La conveniencia de no abusar de ‘var’

Desde que se propuso originalmente esta característica en las presentaciones preliminares de C# 3.0, muchos comenzaron a alertar acerca del posible efecto nocivo sobre la legibilidad del código fuente que podría provocar el uso indiscriminado de var. Esto es en principio cierto: el uso de var en un fragmento de código requiere de un esfuerzo por parte de quien lo lee por primera vez para determinar el tipo de la variable, algo que no ocurriría si dicho tipo se indicara explícitamente.

Mi recomendación personal es utilizar var única y exclusivamente en las siguientes situaciones:

• En los casos en que el tipo de la variable es evidente; por ejemplo, si la expresión que se va a asignar a la variable es una llamada a un constructor, en el que queda reflejado claramente el tipo:

var hoy = new DateTime(2007, 12, 1);

 Cuando el valor que se asigna a la variable es una consulta integrada en el lenguaje. En general, el tipo de las consultas integradas es IEnumerable, donde T es el tipo de los elementos de la secuencia de salida, que generalmente se deduce fácilmente de la estructura de la consulta. Por ejemplo, si tenemos la siguiente clase:

public class Revista

{

     public string Nombre { get; set; }

     public string Idioma { get; set; }

     public DateTime Desde { get; set; }
}

y un array de objetos de ese tipo:

var misSuscripciones = new Revista[]

            {

                new Revista {

                    Nombre = "dotNetManía",

                    Idioma = "es",

                    Desde = new DateTime(2005, 11, 01)

                },

                new Revista {

                    Nombre = "MSDN Magazine",

                    Idioma = "en",

                    Desde = new DateTime(2004, 01, 01)

                },

                new Revista {

                    Nombre = "PC World",

                    Idioma = "es",

                    Desde = new DateTime(2007, 04, 01)

                }

            };

entonces la sentencia:

var suscripcionesEnEspañol =  from s in misSuscripciones

               where s.Idioma == "es" orderby s.Desde

               select s;

representa una consulta que producirá como resultado, al ser recorrida, una secuencia con los objetos de la clase Revista que pertenecen al array y cumplen la condición especificada. El tipo de la variable suscripcionesEnEspañol es IEnumerable.

La necesidad de disponer de ‘var’

Si las posibilidades que ofrece la utilización de var se limitaran exclusivamente a lo descrito hasta ahora, habría que aceptar que la declaración de variables con tipo implícito es simplemente un mecanismo de comodidad o conveniencia sin el que se podría vivir perfectamente. Aunque ya de por sí eso legitimaría la inclusión de esta característica en C# 3.0, lo cierto es que la existencia de un recurso como var en esta nueva versión del lenguaje es simplemente imprescindible.

La necesidad de disponer de declaraciones con tipo implícito tiene relación con el funcionamiento de las consultas integradas: hay casos en los que el tipo de los elementos de la secuencia resultante es generado “al vuelo” por el compilador, sin que el programador tenga acceso al nombre de ese tipo en el código fuente. Es lo que en C# 3.0 se conoce como tipos anónimos. Supongamos que nuestra consulta integrada tiene la siguiente forma:

var suscripcionesEnEspañol_2 = from s in misSuscripciones

               where s.Idioma == "es"orderby s.Desde

               select new { s.Nombre, s.Desde };

Aquí estamos solicitando solamente los nombres y fechas de suscripción de las publicaciones, y no los objetos Revista completos; es lo que técnicamente se conoce como una proyección. El resultado de esta consulta es IEnumerable, donde X es el nombre de un tipo que sintetiza automáticamente el compilador de C# con la siguiente estructura:

public class Revista_2 {

        public Revista_2(

        string nombre, DateTime desde)

        {

            this.nombre = nombre;

            this.desde = desde;

        }       

        public string Nombre

        {

            get { return nombre; }

        }

        private string nombre;

        public DateTime Desde

        {

            get { return desde; }

        }

        private DateTime desde;
}

Como el nombre de este tipo no está disponible al programador en el código fuente, es simplemente imprescindible que exista un mecanismo como var para que podamos asignar nuestra consulta a una variable.

Continuara…. Guiño

Jonnathan
http://masjovenesmj.blogspot.com/