miércoles, 6 de junio de 2012

NHiBERNATE Y REPLICACION SQL

NHiBERNATE
Nhibernate, Motor de persistencia
Puesto a que este mundo es muy cambiante debemos estar al tanto de las diferentes tipos de tecnologías que vienen saliendo al campo informático. Herramientas que van a facilitar la vida de cualquier programados, analista de base de datos, administrador de red, en fin en este campo tan variado y complicado que es la informática. Con este trabajo daremos a conocer una de las tantas tecnologías nuevas en las que el campo de programación va avanzando y mejorando para lograr hacer la vida de dichos más fácil.

NHibernate es la conversión de Hibernate de lenguaje Java a C# para su integración en la plataforma .NET. Al igual que muchas otras herramientas libres para esta plataforma, NHibernate también funciona en Mono.
Al usar NHibernate para el acceso a datos el desarrollador se asegura de que su aplicación es agnóstica en cuanto al motor de base de datos a utilizar en producción, pues NHibernate soporta los más habituales en el mercado: MySQL, PostgreSQL, Oracle, MS SQL Server, etc. Sólo se necesita cambiar una línea en el fichero de configuración para que podamos utilizar una base de datos distinta.

Qué es un motor de persistencia?
Los motores de persistencia, que en el mundo de la programación no es más que un componente de software (una capa de programación), también conocido como “capa de datos”, “capa de persistencia” o “correspondencia O/R (“OR mapping”)”, son los que permiten establecer una capa intermedia entre el sistema orientado a objetos y la base de datos relacionales donde se almacenarán toda la información del mismo.
Esta solución brinda las mejores ventajas de ambos modelos:

·       Por una parte, se puede programar con orientación a objetos, aprovechando las ventajas de flexibilidad, mantenimiento y reusabilidad.
·       Por otra parte, el poder usar una base de datos relacional, aprovechándose de su madurez, la estandarización y las herramientas relacionales que hay para ella.

En la actualidad existen distintos tipos de motores de persistencia. Entre los de código abierto se pueden destacar: Hibernate, Castor, Torque, OJB y Cayenne. Entre los comerciales, se pueden nombrar: TopLink, Cocobase y FastObjects. En los últimos años se ha creado una especificación llamada JDO, para estandarizar la forma de programar en Java con esos motores de persistencia. Ejemplos de motores de persistencia que cumplen el estándar JDO son Kodo, JDO Genie, LiDo, Exadel JDO, IntelliBO, JRelay JDO (todos ellos comerciales), Speedo JDO, TJDO y XORM (de código abierto).

NHibernate
En .NET los datos se representan en objetos. Sin embargo, las bases de datos habituales (como Oracle, SQL Server) guardan sus datos en forma relacional. Evidentemente existe una brecha entre estos dos mundos ("objetos-relacional") que, de alguna manera, debe completarse. 
Los frameworks que se encargan de adaptar el mundo de objetos al relacionan son conocidos como ORM (Object-RelationalMapping). Existen varios ORM en el mercado. 
NHibernate se encarga, justamente, de relacionar clases con tablas. A forma muy simple, una tabla se mapea contra una clase, y cada columna contra un atributo de dicha clase. 
De esta forma, NHibernate se encargará de ocultar la complejidad del acceso a datos, exponiendo solamente objetos. Idealmente, en una aplicación con NHibernate, no es necesario generar querys SQL para interactuar con los datos (de hecho, la aplicación no tiene contacto directo con la base de datos).
para continuar leyendo pueden ver el archivo de slideshare a continuacion








 SQL Server : replicación


La replicación es un conjunto de tecnologías para copiar y distribuir datos y objetos de bases de datos de una base de datos a otra y, a continuación, sincronizar las diferentes bases de datos para mantener la coherencia. Mediante la replicación, podrá distribuir los datos a diferentes ubicaciones y usuarios remotos o móviles a través de redes de área local y extensa, conexiones de acceso telefónico, conexiones inalámbricas e Internet.

El tipo de replicación que se elige para una aplicación depende de muchos factores, como el entorno físico de la replicación, el tipo y la cantidad de datos que se desean replicar y si los datos se actualizan en el suscriptor. El entorno físico incluye el número y la ubicación de los equipos que participan en la replicación, y si estos equipos son clientes (estaciones de trabajo, equipos portátiles o dispositivos de mano) o servidores.



1. Replicación transaccional.
Por lo general, la replicación de transacciones se usa en escenarios de servidor a servidor, que requieren un rendimiento alto, donde se incluye: la mejora de la escalabilidad y disponibilidad; el almacenamiento datos y generación de informes; la integración de datos desde múltiples sitios; la integración de datos heterogéneos y la descarga de procesamiento por lotes.

¿Cómo funciona la replicación transaccional?
La replicación transaccional se implementa con el Agente de instantáneas, el Agente de registro del LOG y el Agente de distribución de SQL Server. El Agente de instantáneas prepara archivos de instantáneas que contienen esquemas y datos de las tablas y objetos de base de datos publicados, almacena los archivos en la carpeta de instantáneas y registra los trabajos de sincronización en la base de datos de distribución del distribuidor.

El Agente de registro del LOG supervisa el registro de transacciones de cada base de datos configurada para la replicación transaccional y copia las transacciones marcadas para ser replicadas desde el registro de transacciones a la base de datos de distribución, que actúa como una cola de almacenamiento y reenvío confiable. El Agente de distribución copia los archivos de instantáneas iníciales de la carpeta de instantáneas y las transacciones almacenadas en las tablas de la base de datos de distribución a los suscriptores.

Los cambios incrementales realizados en el publicador se transfieren a los suscriptores de acuerdo con la programación del Agente de distribución, que se puede ejecutar continuamente para que la latencia sea mínima o a intervalos programados. Puesto que los datos deben cambiarse en el publicador (cuando se utiliza la replicación transaccional sin las opciones de actualización inmediata ni de actualización en cola), se evita que se produzcan conflictos de actualización. Al final, todos los suscriptores disponen de los mismos valores que el publicador. Si se utilizan las opciones de actualización inmediata o de actualización en cola con la replicación transaccional, las actualizaciones pueden realizarse en el suscriptor y, con la actualización en cola, pueden producirse conflictos.

En la siguiente ilustración se muestran los principales componentes de la replicación transaccional.



2. Replicación de mezcla.
La replicación de mezcla se ha diseñado principalmente para aplicaciones móviles que presentan posibles conflictos de datos. Los escenarios comunes incluyen: intercambio de datos con usuarios móviles; aplicaciones de puntos de venta (POS) para el consumidor e integración de datos desde varias ubicaciones.
La replicación de mezcla, como la replicación transaccional, normalmente se inicia con una instantánea de los objetos y datos de una base de datos de publicaciones. Los cambios de datos y las modificaciones de esquema posteriores que se lleven a cabo en el publicador y en los suscriptores se controlan mediante desencadenadores. El suscriptor se sincroniza con el publicador cuando están conectados a la red e intercambian todas las filas que han cambiado entre el publicador y el suscriptor desde la última vez que se produjo la sincronización.

La replicación de mezcla se suele utilizar en entornos de servidor a cliente. La replicación de mezcla es adecuada en las siguientes situaciones:
Varios suscriptores actualizan los mismos datos en diferentes ocasiones y propagan los cambios al publicador y a otros suscriptores.

Los suscriptores necesitan recibir datos, realizar cambios sin conexión y sincronizar más adelante los cambios con el publicador y otros suscriptores.

Cada suscriptor requiere una partición de datos diferente.

Se pueden producir conflictos y, cuando ocurren, debe poder detectarlos y resolverlos.

La aplicación requiere el cambio de datos neto en lugar de acceso a los estados intermedios de los datos. Por ejemplo, si una fila cambia cinco veces en el suscriptor antes de que éste se sincronice con el publicador, la fila cambiará solo una vez en el publicador para reflejar el cambio de datos neto (es decir, el quinto valor).

En el siguiente diagrama se muestran los componentes que se utilizan en la replicación de mezcla.



para leer todo el documento completo puedes verlo en slideshare.






La configuracion y mayor explicacion del proyecto dejamos el siguiente video.



Gracias por leer la nota

No hay comentarios: