🥇 RedShift.

Es un contenedor de datos petabyte- en la nube. Es una base de datos relacional diseñada para escenarios OLAP y optimizada para alto performance de analysis y portes de gran escala. Minimiza significativamente el costo de los sistemas de analis de dato tradicionales pero tambien hace sencillo analizar grandes cantidades de datos muy rapidamente.

Permite realizar queries sobre estructuras de datos utilizando comandos SQL para soportar queries sobre largos conjuntos de datos. Mediante conectividad utilizando ODBC o JDBC, se integra bien con varias herramientas de carga, reporte, minado de datos y analítica. RedShift esta basado en el estandar de la industria PostgreSQL, asi que muchas aplicacione existentes funcionan con cambios mínimos.

RedShift maneja la carga requerida para instalar, operar y escalar un contenedor de datos, desde provisionar la capacidad de la infraestructura hasta automatizar las tareas administrativas que vayan apareciendo como respaldos y parches. RedShift automáticamente monitorea sus nodos y dispositivos para ayudarle a recuperarse de errores.

🍿 Clusters y Nodos.

El componente llave de RedShift es el cluster. El cluster esta compuesto de un nodo lider y otros nodos de computo. El cliente interactua con el nodo lider, y los nodos de computo son transparentes para dicha aplicación.

RedShift actualmente tiene soporte para seis tipos de nodos y cada uno tiene diferente mezcla de CPU, memoria y almacenamiento. Los seis tipos de nodos estan agrupados en dos categorias. Dense Computo (Computo Denso) y Dense Storage (Almacenamiento Denso). El nodo de computo denso soporta clusters de hasta 326 TB utilizando SSD, mientras que el nodo de almacenamiento denso soporta clusters de hasta 2 PB utilizando discos magneticos muy grandes. Cada cluster consiste de un nodo lider y uno o mas de computo.

Cada cluster contine una o mas bases de datos. Los datos del usuario son distribuidos a traves de nodos de computo. La aplicacion o cliente SQL se comunica con RedShift utilizando JDBC o ODBC mediante el nodo lider, el cual coordina la execución del query con los nodos de computo. La aplicación no interacuta con los nodos de computo.

El disco de almacenamiento para un nodo de computo es dividido en un numero de partes. El numero de partes depende del tamaño del nodo y usualmente va de 2 a 16. Todos los nodos participan de forma paralela en la execución del query, trabajando en datos que estan distribuidos lo mejor posible a traves de los diferentes slices.

Es posible incrementar el performance añadiendo mas nodos al cluster. Cuando se envia un query, RedShift distribuye y executa los queries en paralelo a traves de los nodos de computo. RedShift tambien distribuye los datos de la tabla a traves de todos los nodos en un cluster basado en una estrategia de distribución que usted especifique. Este particionamiento de datos a traves de multiples recursos le permite alcanzar grandes niveles de performance.

RedShift le permite redimensionar un cluster para añadir capacidad y computo conforme lo necesite. También es posible cambiar el tip odel nodo de un cluster y mantener el amaño total al mismo tiempo. Cuando realize una operacion de redimensionado, RedShift creará un nuevo cluster y migrará los datos del viejo al nuevo. Durante esta operación de redimensionado, la base de datos se convertira en solo lectura hasta que el proceso se complete.

🍿 Diseño de la Tabla.

Cada cluster de RedShift peude soportar una o mas bases de datos, cada base de datos contiene muchas tablas. Como los sistemas basados en SQL, se puede crear una tabla utilizando el comando CREATE TABLE. Ademas de las columnas específicacas y sus tipos, RedShift tambien soporta compresion, estrategias de distribución y sort keys (llaves de ordenamiento).

🥤 Tipos de Datos (Data Types).

RedShift soporta una larga lista de tipos de datos, incluyendo datos numeros coomo integer, decimal y double, datos de texto como char y varchar y fechas como date y datetimestamp. Adicionalmente columnas pueden ser añadidas a la tabla utilizando el comando alter table, sin embargo existen columnas que no pueden ser modificadas.

🥤 Compresion (Compression Encoding).

Una de las llaves para la optimización del performance utiliza por RedShift es la compresion. Cuando los datos se cargan en una tabla vacia, RedShift tomara una prueba de los datos y seleccionará el mejor esqumea de compresión para cada columna. De forma alternativa, es posible especificar la codificacion de compresión en cada columna como para del comando CREATE TABLE.

🥤 Estrategia de Distribución (Distribution Strategy).

Una de las decisiones primarias cuando se crea una tabla en RedShift es como distribuir los registros a través de los nodos y en partes en clusters. Se puede configurar el estilo de distribución de una tabla para dar a RedShift pistas de como los datos deben ser particionados para lograr los mejores patrones para los queries. Cuando se ejecuta un query, el optimizador pasa las filas a los nodos de compudo como se necesite para realizar cualquier join o aggregate. El objetivo de seleccionar un estilo de distribución de tabla es minimizar el impacto del paso de la redistribución al poner los datos en donde se necesiten estarm antes de realizar el query.

El estilo de la distribución de los datos que se elija para su base de datos tiene un gran impacto en el performance de los queries, la carga de datos y el mantenmiento. Al elegir la mejor estrategia de distribución, se puede balanciar la distribici´øn de los datos y mejorar significativamente el performance del sistema. Cuando se crea una tabla se puede elegir entre tres tipos de estilo EVEN, KEY y ALL.

🥤 Sort Keys.

Otra importante decision para hacer la creación de una tabla es si se van a especificar una o mas columnas para como llaves de ordenamiento. Si se utilizan, el procesador puede rapidamente saltar un largo numero de bloques durante una busqueda.

Las llaves de ordenamiento (sort keys) pueden ser compuestas (compound) o interpaginadas (interleaved). Una llave sor compuesta is mas eficiente cuando la consulta utiliza pridicaes con un prefije, qu ees un subconjunto de la llave de ordenamiento en orden. Un interleaved sort key asigna valores de peso a cada columna en la llave de ordenamiento, de tal forma que los predicados de las consultas pueden usar un subgrupo de columnas para aplicar la llave de ordenamiento en cualquier orden.

🍿 Cargando Datos.

RedShift soporta comandos SQL estandar como INSERT y UDATE para crear y modificar registros en una tabla. Para operaciones en montón, sin embargo, provee el comando COPY como una forma mas eficiente que utilizar repetidamente INSERT.

El comando COPY copia los datos en una tabla en una manera eficiente, y soporta multiples tipos de fuentes de datos. La forma mas rapida de cargar datos en RedShift es utilizando cargas de datos en grandes volumenes desde archivos planos almacenados en S3 o desde DynamoDB.

Cuando se cargan datos desde S3, el comando COPY puede leer desde multiples archivos al mismo tiempo. RedShift peude distribuir la carga de datos a los nodos y realizar el proceso de carga en paralelo. En lugar de leer un solo archivo de datos, se puede habilitar el procesamiento paralelo teniendo un cluster con multiples nodos y multiples archivos.

DEspues de cada carga de datos en grandes bloques que modifique significativamente un monto de datos, se necesitará ejecutar el comando VACUUM para reorganizar los datos y reclamar el espacio libre despues de los deletes. Es importante correr el comando ANALYZE para actualizar la tabla de estadísticas.

🍿 Consultando Datos.

RedShift permite escribir y executar comandos SQL un las tablas. Soporta comandos como SELECT para realizar consultas y unit las tablas, los analistas pueden vlverse productivos muy rapidamente utilizando RedShift o integrandolo facilmente. Para consultas complejas, puede analizar el plan de consultas para un patrón de acceso mejor optimizado. Puede monitorear el performance de un cluster y queries especificos utilizando CloudWatch y RedShift desde la consola web.

Para largos clusters soportando muchos usuarios, se puede configurar Workload Managemente (WLM) para poner en lista y priorizar consulas. WLM permite definir multiples colas y especificar un nivel de concurrencia para cada una. Por ejemplo, puede tener una cola para queries largos y concurrencia limitada, y otra para queries cortos y altos niveles de concurrencia.

🍿 Snapshots.

De forma similar con RDS, se pueden crear snapshots en puntos en el tiempo con de los clusters de RedShift. Un snapshot puede ser utilizado para restaurar una copia o crear un clon del cluster original de RedShift. Los snapshots son almacenados por RedShift de forma durable en S3.

RedShift soporta snapshots automatizados y manuales. Para los automatizados realiza una toma de snapshots periodica del cluster y manteien una copia por un periodo de tiempo configurable. Tambien es posible realizar snapshots manuales y compartirlos a traves de diferentes regiones o incluso con otras cuentas de AWS. Los snapshots manuales son retenidos hasta que explicitamente sean borrados.

🍿 Seguridad.

Asegurar los datos en clusters de RedShift es similar a asegurar otras bases de datos ejecutandose en la nube. El plan de seguridad debe incluir controles para proteger los recursos de la infraestructura, el equema de las bases de datos, los registros en la tabla y el acceso a la red. Al direccionar la seguridad en cada nivel, se puede operar un banco de datos de RedShit de forma segura.

LA primera capa viene a nivel de la infraestuctura utilizando politicas IAM que limiten las acciones que los administradores pueden realizar. Con IAM se pueden crear politicas que garantizar a los usuarios de AWS el permiso para crear manejar el ciclo de un cluster, incluyendo escalamiento y operaciones de recuperación.

A nivel de la red, los clusters de RedShift pueden ser desplegados dentro del espacio de de una dirección IP privada para restringir la conectividad global. El acceso granular puede ser tambien restringido utilizando grupos de seguridad y ACL’s a nivel de la subred.

Ademas de controlar el acceso a la infraestructura a nivel de esta, se debe proteger el acceso a nivel de las bases de datos. Cuando inicialmente se crea un cluster de RedShift, se creara una cuenta master con un password. La cuenta master puede ser utiliada para iniciar sesion en RedShift y crear mas usuarios y gripos. Cada base de datos puede asignarse permisos a esquemas, tablas y otros objetos. Estos permisos son independientes de las politicias de IAM utilizadas para el control de la infraestructura y de la configuración de cluster de RedShift.

Proteger los datos en RedShift es otro aspecto importante del diseño de la seguridad. RedShift soporta la encriptacion de los datos en transito utilizando conecciones SSL encriptadas, y tambien encriptación de los datos en rest utilizando multiples tecnicas. Para encriptar los datos en rest, RedShift integra KMS y SQS CloudHSM para el manejo de llaves de encriptación. La encriptaci´øn en rest y transito ayuda a cumplir los requerimientos de las normas de cumplimiento de HIPAA (Salud y Seguridad) y PCI DSS (Manejo de Tarjetas de Credito).

Relational Database Service (RDS). DynamoDB.
comments powered by Disqus