Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nota:
Cassandra no reemplaza la base de datos relacional. La base de datos relacional también
es útil para datos de escala media y también puede manejar Big Data, pero si los usuarios
quieren escalabilidad, alta disponibilidad, un sistema tolerante a fallas y tienen big data,
puede optar por Cassandra. Depende de los requisitos del usuario y del modelo de datos.
Así que elige sabiamente.
Tipos de replicación:
Una base de datos replicada, todos los cambios realizados a los datos deben ser aplicados en las
múltiples copias, todas las copias tienen que ser idénticas. Tradicionalmente existen dos tipos de
técnicas de replicación, síncrona (eager) y asíncrona (lazy).
En una replicación síncrona, todos los cambios son enviados a todas las copias nada más
realizarse. Por otra parte, la replicación asíncrona, maneja la propagación de los datos con un
breve retraso desde la realización del cambio. Otra característica que diferencia los tipos de
replicación es quién puede realizar los cambios, será maestro-esclavo cuando los cambios tienen
lugar primero en la copia primaria o maestro y después son transmitidos a las segundas copias o
esclavos.
Maestro
Esclavo
Esclavo
Maestro Maestro
Para garantizar la consistencia mutua en una base de datos distribuida, la transacción se procesa
en la base de datos primaria, se registra en el log y se propaga a los secundarios. Un protocolo de
control de atomicidad se encarga de asegurarla, o se ejecuta la transacción en todos los niveles o
en ninguno. Los protocolos más conocidos son 2PC (Two phase commit) y 3PC (Three phase
commit)[22].
Estrategias de particionamiento
Existen dos maneras principales de hacer la segmentación de tablas:
1. Particionamiento manual, hecho y diseñada por el usuario.
2. Particionamiento por motor de base de datos. Diseñada por el usuario, hecha por el motor de base
de datos.
Particionamiento manual
1. Es el usuario quien crea varias tablas físicas para guardar la información de la tabla original:
Se pueden crear tablas haciendo una partición horizontal o por registros (Una tabla para cada
subconjunto de registros como la contabilidad del 2017, otra tabla para la contabilidad de 2018,
etc.). Esto presupone que no habrá muchas consultas que hagan uso de más de una «partición» ya
que en esa situación se tendrían que hacer uniones de tablas.
2. Vertical, es decir, algunos campos en algunas tablas, todas con el mismo número de registros, y
regularmente con la misma llave primaria (DatosGenerales, Domicilios, etc.) Rompe con reglas de
normalización, pero hace eficiente el mantenimiento y consulta. Implementable en cualquier motor
de base de datos. Migrable fácilmente. Si bien este tipo de segmentación (creando varias tablas para
cada «partición») no cumple con las formas normales (http://dbadixit.com/formas-normales/), si
puede hacer, bajo ciertas circunstancias, la consulta y actualización más eficientes. Como ventaja
podemos mencionar que es implementable en cualquier motor de base de datos y su migración es
muy sencilla.
En esta sección se presenta una descripción de los términos utilizados en el mundo de los clusters.
El concepto clustering se refiere a una técnica que permite combinar múltiples sistemas para que
trabajen en paralelo y se comporten como un recurso informático unificado para: servir a un grupo
de tareas, proporcionar tolerancia a fallos y tener disponibilidad continua. Por ejemplo, en el caso
de usuarios de Internet, el clustering proporciona bases de datos, correo electrónico, ficheros u
otros servicios de sistema sin interrupciones. Si se presentara una falla dentro de una red de
servidores de un cluster, ésta se corregiría inmediatamente sin que los usuarios lo notaran. Dentro
de esta técnica existen una serie de conceptos fundamentales que se describen a continuación.
Comencemos por explicar el concepto de paralelismo, que consiste en el procesamiento de una
serie de instrucciones de un programa, que son ejecutadas por múltiples procesadores que
trabajan de manera independiente. El paralelismo puede manejarse en dos niveles: paralelismo
del hardware y el software. El primero depende básicamente de la tecnología de cómputo
disponible, mientras el segundo se refiere a la habilidad del usuario para encontrar áreas bien
definidas del problema por resolver, de tal forma que éste pueda ser dividido en partes
autónomas que serán distribuidas entre los nodos del cluster, obteniendo un sistema de alto
rendimiento computacional. Por otro lado está el concepto de multiprocesamiento, una
característica del sistema operativo que controla el hardware. El software asegura la interacción
entre los procesadores a nivel de carga y descarga de datos, además de realizar el despacho de
trabajos en forma múltiple, independiente y simultánea. Otro concepto fundamental es la
programación de hebras (programming threads). Una hebra (thread) es una secuencia de
instrucciones ejecutables que pueden correr independientemente, compartiendo recursos
computacionales con otras hebras. En un programa hay la posibilidad de ejecutar varias hebras
simultáneamente. Cuando esto ocurre todas las hebras activas pueden competir y compartir los
recursos del sistema. Por lo tanto, el usuario ha recurrido a la programación multi-hebras
(multithread) que trae como consecuencia la concurrencia entre procesos y tiene una gran
importancia en el cómputo paralelo (para obtener una descripción más detallada, ver E. Cuadros
2001).