Wapeando un TeofiWrapper para POSTGRES.

visitas.

Una vez más me encuentro sentado frente a mi modesta pero especial máquina Linux para compartirles un post que se relaciona con un tema que ya les había mencionado: el consumo de fuentes de datos remotas y externas al motor de bases de datos POSTGRES.

Se debe entender por fuente de datos cualquier recurso informático que contenga datos, esto quiere decir que no solo debemos pensar en SMBD (Sistemas Manejadores de Bases de datos) , sino por el contrario servicios web, archivos de texto plano (CSV, JSON, XMLs), algunas otras no tan inmediatas a nuestra imaginación como interfaces IMAP para la consulta de correo electrónico, o cualquier plataforma que ofrezca una API respetable para interactuar con su información.

En esta ocasión el teofilismo que elaboraré hace uso de una extensión de POSTGRES llamada MULTICORN. Tal extensión nos permite utilizar una serie de wrappers escritos en el lenguaje PYTHON capaces de obtener información de múltiples fuentes de datos, todas muy comunes en el día de hoy. La idea es que a través del Wrapper mapeamos la información no necesariamente relacional de una fuente de datos remota en una relación foránea virtual en nuestra base de datos POSTGRES, permitiéndonos hacer realidad con ella cualquier capricho que nuestro intelecto y nivel de SQL se imaginase.

He probado algunos WRAPPERS de la extensión consumiendo exitosamente datos de una base de datos MYSQL e incluso de mi bandeja de entrada de correo de GMAIL con uno que actúa como cliente IMAP. Sin embargo a la hora de utilizar el que hace uso de la API de TWITTER con la idea de traumatizar un poco a mis compañeros de trabajo amantes del fashion, me encuentro con que este hace uso de la versión 1.0 de la API que actualmente está deprecada.

Lo anterior inmediatamente generó en mi la necesidad de colocar mi mano derecha en el hombro izquierdo de un personaje de Caracolí que no voy a mencionar, y de manera directa decir sin temor a fallar: Haré un TeofiWrapper!!!. El TEOFIWRAPPER elaborado permite listar los tweets de cualquier usuario de TWITTER, Esto en su momento generó una serie de intereses en conflictos para mi, ya que nunca he usado twitter; pienso que es un completo tontronismo.

Pedí respetuosamente permiso al señor de Caracolí hiciera uso de sus credenciales para obtener tokens de autenticación para mi aplicación a la API de desarrollo de twitter y finalmente las lineas de PYTHON en una sinfonía clásica de algunos minutos de duración dieron su resultado como era de esperarse. Con los tokens obtenidos no se deberían comprometer en lo más mínimo ni las credenciales ni la privacidad de mi querido amigo del pequeño Macondo que cuenta con mariposas amarillas.

Para entrar en materia instalaremos el cliente pgxn de la red de extensiones de POSTGRES desde nuestra amada y gloriosa terminal como sigue:

Instalamos la extensión MULTICORN haciendo uso del cliente de la red de extensiones y previamente el paquete con los fuentes de PYTHON para satisfacer algunas dependencias de headers.

Nota: No está de mas mencionar que se debe contar con un servidor POSTGRES 9.3 instalado al igual que el paquete que ofrece sus fuentes pues es una dependencia para el MULTICORN.

El TeofiWrapper puede generarse en un directorio llamado teotweets junto con su instalador como sigue.


Instalamos un par de paquetes de PYTHON que usa el TEOFIWRAPPER para interactuar con la API de TWITTER

Para instalar el wrapper ejecutamos desde el directorio teotweets:

Ahora es el momento para hacer uso del TEOFIWRAPPER desde POSTGRES, para ello conectado a la BD con un usuario con privilegios creamos la extensión MULTICORN en la BD ejecutando:

Se define la fuente de datos remota como se muestra:

Casi para terminar se crea la relación foránea tweets que encapsulará en una relación virtual en nuestra Base de Datos la información de los Tweets consultada por el Wrapper.

Finalmente podemos consultar los tweets de un usuario cualquiera haciendo un SELECT clásico a la relación foránea previamente definida como se muestra en la imagen:



Obviamente no podían faltar los tweets del borracho del tablón más importante del club más grande de la República Argentina:



Comentarios

Entradas más populares de este blog

Un par de cuadrados para todos

Dominós para todos. Parte I.

Crocancia de cuadrados en abundancia