lunes, 10 de febrero de 2014

Mi nuevo ordenador para labores de procesado de datos.

Después de haberme acompañado los últimos años de carrera (y másteres) y durante mi doctorado, toca conceder la jubilación a mi pobre portátil. Con un procesador Intel® Core™ 2 Duo T6500 (2,1 Ghz), HDD 500 GB y 4 GB Ram se queda corto para utilizarlo en tareas de procesado de datos.

Hoy he recibido mi nuevo ordenador de sobremesa:

  • Procesador Intel Core i7-4770 3.4Ghz (8 núcleos)
  • Disco duro
    • Seagate Barracuda 7200.14 2TB SATA3
    • Samsung 840 Evo SSD Series 120GB SATA3
  • Memoria  DDR3 1600 PC3-12800 16GB 2x8GB CL9
  • Gráfica Gigabyte GeForce GT 630 2GB GDDR3 (compatible con CUDA)
 Una gran configuración para utilizarlo en tareas de procesado de datos: potente procesador de 8 núcleos, con disco duro SSD para poder instalar los S.Os y los programas de procesado (ganando mucha velocidad en su ejecución), HDD SATA3 de gran capacidad para el almacenaje de grandes volúmenes de datos, con 16 GB de RAM DDR3 (una gran cantidad de memoria RAM es necesaria en la ejecución de los programas de procesado para poder almacenar y acceder a los datos de forma más rápida que si se escribieran siempre en HDD). La tarjeta gráfica se puede calificar como de gama media (no es apta para gamers muy exigentes o para diseñadores gráficos que precisen de una gran potencia para el renderizado), con la característica muy importante de ser compatible con CUDA).

miércoles, 5 de febrero de 2014

Bases de datos - SQL y no SQL


Bases de datos y sistemas gestores de bases de datos

   Una base de datos (BD [ó BBDD]) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido; una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos digitales almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.
   Se puede definir una base de datos como una serie de datos organizados y relacionados entre sí, los cuales son recolectados, almacenados digitalmente y explotados por los sistemas de información de una empresa o negocio en particular.
   Existen programas denominados sistemas de administración de bases de datos, abreviado DBMS (Database management system), que proporcionan un conjunto de servicios software para administrar bases de datos, permitiendo un fácil acceso a los datos por parte de múltiples usuarios, así como posibilitar la manipulación de los datos de la BD (insertar, eliminar, editar). Es usual denominarlos también como motores de BD.

Tipos de bases de datos
   Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se esté manejando, la utilidad de las mismas, las necesidades que satisfagan, etc..  Es usual clasificarlas de acuerdo a su modelo de administración de datos.
   Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores. Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos.
   Así, podemos encontrar modelos de BD jerárquicas, transaccionales, orientadas a objetos, etc.. El que más se suele usar es el modelo relacional (RDBMS, Relational Database Management System).
 

Bases de datos relacionales y SQL

   Una Base de Datos Relacional, es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya planificadas. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre: "Modelo Relacional".
  Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales, el álgebra relacional y el cálculo relacional. El álgebra relacional permite describir la forma de realizar una consulta, en cambio, el cálculo relacional sólo indica lo que se desea devolver. El lenguaje más común para construir las consultas a bases de datos relacionales es SQL (Structured Query Language), un lenguaje estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales integradas.
  • SQL es un lenguaje estandar de consultas para bases de datos relacionales. 
  • Motores o sistema de bases de datos comunes (que en sí son los que guardan las bases y otorgan las interfaces para consultar las bases o conectarlas a otros programas) que permiten sentencias en lenguaje SQL (suelen trabajan con el lenguaje base, luego cada motor le agrega su propia funcionalidad):  MySQL, SQL Server, postgreSQL y Oracle DB.

Bases de datos noSQL 

   En informática, NoSQL es una amplia clase de sistemas de gestión de bases de datos que difieren del modelo clásico del sistema de gestión de bases de datos relacionales (RDBMS) en aspectos importantes; el más destacado que no usan SQL como el principal lenguaje de consultas.
  Típicamente las bases de datos relacionales han mostrado poca eficiencia en determinadas aplicaciones que usan los datos de forma intensiva, incluyendo el indexado de un gran número de documentos, la presentación de páginas en sitios que tienen gran tráfico, y en sitios de streaming audiovisual. Los sistemas de bases de datos NoSQL han crecido para enfrentarse a desafíos de tratamiento de datos en los que las tradicionales RDBMS plantean problemas. 
   Las implementaciones típicas de RDBMS se han afinado, o bien para una cantidad pequeña pero frecuente de lecturas y escrituras, o para un gran conjunto de transacciones que tiene pocos accesos de escritura. Por otro lado NoSQL puede servir gran cantidad de carga de lecturas y escrituras.
   Con el crecimiento de la web en tiempo real existe una necesidad de proporcionar información procesada a partir de grandes volúmenes de datos que tienen unas estructuras horizontales más o menos similares. El rendimiento y sus propiedades de tiempo real son más importantes que la coherencia, en la que las bases de datos relacionales tradicionales dedican una gran cantidad de tiempo de proceso.
   Las bases de datos NoSQL están altamente optimizadas para las operaciones recuperar y agregar, y normalmente no ofrecen mucho más que la funcionalidad de almacenar los registros (p.ej. almacenamiento clave-valor). La pérdida de flexibilidad en tiempo de ejecución, comparado con los sistemas SQL clásicos, se ve compensada por ganancias significativas en escalabilidad y rendimiento cuando se trata con ciertos modelos de datos.
   Así pues algunos gestores de estas bases de datos como pueden ser BigTable, desarrollado por Google, utiliza GQL, MongoDB utiliza JSON y Cassandra utiliza CQL.

Entonces, ¿implemento una BD SQL o noSQL?

   Una BD noSQL normalmente no sustituye a la base de datos "clásica" SQL, sino que surgen por otra necesidad (normalmente una necesidad de rendimiento extremo). Si se utilizan una BD noSQL, SQL o se intentar combinar ambas es una decisión marcada por los tipos y modelos de datos, la arquitectura del sistema y los requerimientos de la tarea que se desea cumplir.
   Recomiendo leer unos cuantos enlaces donde se resumen las ventajas e inconvenientes de cada tipo de base de datos y se realiza una comparativa entre ellas:
   El mejor resumen que he leido, es el que realiza Jorge Escobar en el blog Jungleg.com:  

The main point I’m trying to make is the following — use the right data solution to your problem. SQL, NoSQL or both. Don’t be fixated on the technology, but on what you need to accomplish.


http://es.wikipedia.org/wiki/Base_de_datos
http://www.maestrosdelweb.com/editorial/%C2%BFque-son-las-bases-de-datos/
http://es.kioskea.net/contents/66-introduccion-bases-de-datos




lunes, 3 de febrero de 2014

Introducción al Big Data - Conociendo a Hadoop

   Hadoop está en todos lados y se ha convertido en sinónimo de Big Data, tanto que se ha convertido en un estándar de facto, tanto que todos los productos con cabida en el mundo Big Data son compatibles.
 
Cursos y documentación
   Tras la búsqueda de información sobre como iniciarse en el mundo del Big Data y Hadoop, recomiendo los siguientes enlaces y libros:
 
>> http://bigdatauniversity.com: Pagina web que recoge múltiples recursos, tutoriales y cursos relacionados con el mundo del big data. 
 
   He realizado el curso online gratuito titulado "Hadoop Fundamentals I - v2", pensado para usuarios que se inician en Hadoop. Me ha parecido muy claro y conciso para iniciarse y comprender los aspectos básicos de HDFS y Mapreduce, así como en las tecnologías/lenguajes de programación de alto nivel (abstracción de Mapreduce) Pig, Hive y Jaql. 
   Está estructurado en 6 lecciones, cada una con diversos vídeos (se incluye la transcripción de los vídeos en PDF), incluyendo prácticas de laboratorio en algunas lecciones utilizando el software IBM InfoSphere BigInsights como distribución de Hadoop (se incluyen imágenes de VMware  con un sistema linux con el software ya instalado y configurado). Al final del curso existe un test de conocimientos, mandándote un certificado a través de mail si lo apruebas. 

 >> Libro:  Hadoop: The definitive guide (3rd edition), es uno de los libros más recomendados, donde se explica con gran lujo de detalles y de una manera muy práctica el sistema Hadoop y a buena parte del ecosistema que se ha formado a su alrededor.



Diversas distribuciones
   Hadoop consiste en una familia de productos y tecnologías de fuente abierta supervisada por la Apache Software Foundation o ASF.  La librería de software de fuente abierta de Apache Hadoop también se puede solicitar a ASF en apache.org. Los usuarios que deseen un paquete más preparado para las compañías pueden recurrir a algunos fabricantes que ya ofrecen distribuciones de Hadoop que incluyen herramientas administrativas, mantenimiento y asistencia técnica adicionales. Algunos fabricantes ofrecen sus propias implementaciones de MapReduce que no están basadas en Hadoop.

domingo, 2 de febrero de 2014

¿Me puedo definir como un "Data scientist"?

En enero, después de tres años de mucho esfuerzo y trabajo, ¡por fin conseguí acabar mi doctorado! La principal motivación que me llevó a realizarlo no fué para dar comienzo a una carrera investigadora, sino a dar un paso más hacia la meta de poder definirme como un científico de datos.

Data science y Big data.

Desde hace unos años, se habla sobre un nuevo perfil profesional ampliamente demandado y con gran futuro: el data scientist. El auge de este perfil profesional viene auspiciado por la revolución del big data.
Recomiendo leer estas entradas de un blog que me han parecido muy buenas a la hora de describir y analizar la ciencia de los datos (Data Science), el papel de un científico de datos (Data Scientist) y el procesado de grandes cantidades de datos (Big Data):

 

 Data scientist