Mostrando las entradas con la etiqueta code. Mostrar todas las entradas
Mostrando las entradas con la etiqueta code. Mostrar todas las entradas

miércoles, 25 de septiembre de 2019

Conectando Google BigQuery desde MuleSoft

Este articulo explicará los pasos y las configuraciones a seguir para conectarnos a Google BigQuery desde MuleSoft, usando el conector de Base de Datos.

BigQuery es un almacén de datos en la nube, altamente escalable y rentable, con un motor de BI en memoria y machine learning integrado.

Mulesoft es un framework de mensajería ESB (Enterprise Service Bus) escalable y distribuible que puede manejar interacciones con servicios y aplicaciones que usan distintas tecnologías de transporte y mensajería.


CONFIGURAR UNA CUENTA DE GOOGLE

Lo primero que haremos es configurar una cuenta de Google para poder usar BigQuery, entramos a la siguiente liga http://console.cloud.google.com y accedemos con nuestra cuenta de Google.


En el menú de la parte izquierda seleccionaremos las opciones IAM y administración -> Cuentas de servicio y crearemos un proyecto pulsando el enlace CREAR.

Ingresamos el nombre del proyecto: BigQuery, y pulsamos el botón CREAR.
                                


Crearemos una cuenta de servicio pulsando el botón + CREAR CUENTA DE SERVICIO.

Ingresaremos el nombre: mulesoft, y pulsaremos el botón CREAR.

Nos solicitará los permisos/rol que le otorgaremos a esta cuenta, seleccionaremos Administrador de BigQuery y pulsaremos el botón CONTINUAR.

El siguiente paso es la creación de la clave privada, seleccionamos JSON y pulsamos el botón CREAR.

Crearemos una carpeta (Mulesoft_Bigquery) de preferencia en el escritorio, para guardar el archivo de clave y demás archivos que usaremos posteriormente.

El archivo de clave contendrá los campos: project_id y client_email, entre otros, los cuales usaremos más adelante para configurar la conexión.

Ahora en el menú principal seleccionaremos la opción BigQuery.

En la parte izquierda seleccionamos nuestro Id de proyecto (bigquery-253315) y pulsamos el botón CREAR CONJUNTO DE DATOS.

Ingresamos el ID: usuarios, y pulsamos el botón Crear conjunto de datos.

En la parte izquierda de la pantalla expandimos bigquery-253315 -> usuarios, y pulsamos el botón CREAR TABLA.

Ingresamos el nombre de la tabla: usuarios, y agregamos los campos como se muestran en la imagen: id, nombre, apellido_paterno, apellido_materno, edad y genero. Pulsamos el botón Crear tabla.

Con el Editor de Consultas podremos ejecutar select * from usuarios.usuarios para validar la existencia de la tabla, donde usuarios.usuarios hace referencia a Conjunto de Datos.Tabla

Si queremos agregar información a la tabla usando insert into usuarios.usuarios values ("1", 'Luis Alberto', 'Juarez', 'Juanico', 33, 'masculino') nos aparecerá el error: Billing has not been enabled for this Project.

Para solucionar este problema entramos a la URL que nos indica el mensaje de error (https://console.cloud.google.com/billing) y pulsamos el botón Añadir cuenta de facturación.

Ingresamos los datos de facturación que se solicitan (nombre, dirección, tarjeta de débito/crédito, etc.) y pulsamos el botón de Iniciar prueba gratuita.

De vuelta en el Editor de Consultas, pulsamos el botón ACTUALIZAR que se encuentra en la parte superior derecha de la pantalla, con esto ya podremos ejecutar el insert.







DESCARGAR JDBC DRIVERS DE GOOGLE BIGQUERY

Entramos a la URL: 
https://cloud.google.com/bigquery/providers/simba-drivers/ y pulsamos el link JDBC 4.2-compatible. Guardamos el archivo en nuestra carpeta Mulesoft_Bigquery.

Descomprimimos el archivo SimbaJDBCDriverforGoogleBigQuery42_1.2.1.1001.zip y el contenido será similar a como se muestra a continuación.


CREAR FLUJO EN ANYPOINTSTUDIO

Abrimos AnypointStudio y creamos un nuevo proyecto con el nombre BigQuery.

Arrastramos nuestro archivo de clave bigquery-253315-79479f43a3c4.json a nuestro proyecto Mule en la carpeta src/main/resources. Seleccionamos la opción Copy files y pulsamos el botón OK.


Ahora necesitaremos la ubicación local de este archivo en nuestro proyecto. Para esto pulsaremos el botón derecho sobre el archivo json y elegiremos la opción Properties. Copiaremos la ubicación ya que la necesitaremos más adelante, debe ser algo similar a:
C:\Users\Luis\AnypointStudio\workspace\bigquery\src\main\resources\bigquery-253315-79479f43a3c4.json



Agregaremos el archivo de clave al path pulsando el botón derecho sobre el archivo y seleccionando la opción Build Path -> Add to Build Path.

Ahora debemos ejecutar los mismos pasos para todos los archivos jar contenidos en la carpeta que descomprimimos SimbaJDBCDriverforGoogleBigQuery42_1.2.1.1001, seleccionamos y arrastramos todos los archivos jar a la carpeta src/main/resources, eligiendo la opción Copy files.

Agregamos esos archivos jar la Build Path pulsando el botón derecho y seleccionando del menú las opciones Built Path -> Add to Build Path.

Veremos que los archivos jar se mueven a la carpeta llamada Referenced Libraries.

Ahora construiremos un flujo que se conectará a BigQuery y consulte los registros de la tabla usuarios. Para esto arrastraremos un conector HTTP a nuestra área de trabajo y pulsamos el símbolo + (Add) frente al campo Connector Configuration para agregar la configuración de nuestro HTTP Listener, dejamos los valores por default (Host: All Interfaces [0.0.0.0] y Port: 8081). Este conector será la interfaz expuesta/servicio que consumiremos más adelante.

Seleccionamos el conector HTTP y configuramos los campos Path: /read, Allowed Methods: GET

Abrimos el archivo mule-app.properties y agregamos las propiedades: project_id, client_email, pvt_key_path y driver_class_name= com.simba.googlebigquery.jdbc42.Driver

Recordemos que los valores de project_id y client_email los obtendremos de nuestro archivo clave json.
El valor para pvt_key_path es la ubicación del archivo clave que obtuvimos anteriormente (C:/Users/Luis/AnypointStudio/workspace/bigquery/src/main/resources/bigquery-253315-79479f43a3c4.json)

Nota: Debemos cambiar las diagonales invertidas “\” por diagonales hacia adelante “/”.

Ahora agregamos un conector de Base de Datos y pulsamos el símbolo + (Add) frente al campo Connector configuration. Seleccionamos Generic Database Configuration y pulsamos el botón OK.


En el campo URL colocaremos la siguiente cadena:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;OAuthType=0;ProjectId=${project_id};OAuthServiceAcctEmail=${client_email};OAuthPvtKeyPath=${pvt_key_path};

En el campo Driver Class Name colocaremos el texto: ${driver_class_name}

Donde:


  OAuthType=0, indica que el driver usara autenticación service-based.
  ProjectId=${project_id}, se llenará con el valor de la propiedad project_id definida en el archivo de propiedades.
 OAuthServiceAcctEmail=${client_email}, se llenará con el valor de la propiedad client_email definida en el archivo de propiedades.
 OAuthPvtKeyPath=${pvt_key_path}, se llenará con el valor de la propiedad pvt_key_path definida en el archivo de propiedades.

Pulsamos el botón Test Connection para probar la conexión hacia BigQuery, nos mostrara un mensaje de éxito. Pulsamos los botones OK para cerrar estos mensajes.

Dentro de la configuración del conector de Base de Datos seleccionaremos Operation: Select, Type: Dynamic y Dynamic query: select * from usuarios.usuarios

Al final de nuestro flujo colocaremos un Transform Message, para transformar el resultado de la Base de Datos de Java a json.


%dw 1.0
%output application/json
---
payload


Pulsamos el botón derecho dentro del área de trabajo y seleccionamos la opción Run project bigquery.

Validamos que en la consola se muestre el mensaje de despliegue correcto.


Desde Postman probaremos el servicio enviando una petición GET: http://localhost:8081/read
Veremos que la respuesta es el contenido de la tabla usuarios.

De igual forma podríamos implementar las operaciones de Insert, Update o Delete sobre la tabla.



CONCLUSIÓN

Como pudimos observar, la configuración de la conexión hacia Google BigQuery es relativamente sencilla usando el conector a Base de Datos que proporciona Mulesoft junto con el driver JDBC propio de BigQuery. Con esto podemos crear nuestra propia API y exponer las funcionalidades específicas que necesitemos realizar sobre la Base de Datos.

miércoles, 26 de abril de 2017

Oracle Code Toronto 18/04/2017


Hola, mi nombre es Luis Alberto Juárez Juanico y les quiero compartir mi experiencia en el Oracle Code de Toronto.

Este evento se llevó a cabo en el hotel The Westin Harbour Castle, un excelente lugar con una espectacular vista al lago.





Desde que llegamos al registro (mi amigo Jonathan Chavero y yo), se sentía un ambiente de emoción por ver lo que se mostraría en las presentaciones. La gente en recepción fue muy amable, de hecho, le persona que nos recibió nos preguntó de dónde éramos y le dijimos de México, quedo sorprendido y de hecho cada vez que lo veíamos en la entrada a las salas o en los pasillos él les decía a otras personas "Hey ellos son de México" lo cual nos daba oportunidad de iniciar conversación con más personas.

El día inicio con la sesión The Modern JavaScript Server Stack donde Pratik Patel nos platicó sobre como el uso de JavaScript en los servidores se ha incrementado y que Node.js se ha hecho cada vez más popular para desarrollar, desde pequeñas tiendas hasta grandes corporaciones.

“Por su naturaleza asíncrona, JavaScript proporciona la capacidad de escalar dramáticamente, también brinda la habilidad de manejar las aplicaciones del lado del servidor”


Enseguida toco el turno a Deepak Patil con la presentación Harnessing the Power of Cloud to Develop Next Gen Killer Apps


Su opinión fue que este es el mejor momento para ser Desarrollador, ya que existen miles de herramientas que nos facilitan las tareas.


También mencionó como la oferta de Oracle Cloud se ha ido incrementando con el tiempo.


El anuncio del día fue que Oracle adquirió a Wercker, una compañía de IT que ha desarrollado un sistema de integración y despliegue continuo que facilita a los desarrolladores de software la publicación de su código.











El Code Lounge se abrió a las 10:45am en donde pudimos ver demostraciones en vivo, por ejemplo Pac-Man on a String, en donde las puntuaciones se enviaban a un servicio en Oracle Cloud.






También pudimos ver como imprimían en 3D un Duke usando Oracle Developer Cloud Service.



A las 11:30am entramos a la sesión Move Your Castle to the Cloud presentada por Blaine Carter, amante del Open Source. Nos platicó como hace unos años era impensable conectar cosas a internet (IoT), pero ahora prácticamente todo está conectado (refrigeradores, estufas, luces de la casa, etc.), nos mostró sistemas que el mismo ha construido y colocado en su casa.


Desde el primer momento que vi la agenda, la presentación que me llamo la atención sin duda fue la de Introduction to Chatbots for Developers por Frank Nimphius.






Explicaba que en el futuro los usuarios no requerirán descargar e instalar ninguna aplicación y que internet se convertirá en la “computadora”, solo bastará con tener un navegador web para poder interactuar.






Un chatbot es un programa diseñado para asistir a usuarios reales mediante una interfaz conversacional sin necesidad de instalar ningún software adicional.


Los chatbots usan un sistema con una guía de dialogo para “comunicarse” con los usuarios reales mediante un canal de conversación.


La siguiente sesión a la que entramos fue Deploying Cloud-Native Applications: VMs, Containers, or Functions por Shaun Smith, en la cual vimos las opciones para desplegar una aplicación y algunos ejemplos:





Una Aplicación Cloud nativa debe involucrar 12 factores, estos factores son lo que hacen a los Containers ser la mejor opción para desplegar Aplicaciones:





Para finalizar el día a las 6:00pm hubo una pequeña fiesta de despedida, en donde pude platicar un poco con Bob Rhubart e intercambiar algunos puntos de vista sobre las presentaciones.




Como conclusión de este evento y platicando con algunas personas que asistieron a las presentaciones concordamos en que el uso de Oracle Cloud estaba estigmatizado como una herramienta solo de administración, el hecho de que como desarrollador también se tiene una gran gama de herramientas y opciones para considerar fueron de mucho interés.


Las presentaciones las pueden encontrar en: https://developer.oracle.com/code/toronto


Los videos de las conferencias de San Francisco:
https://www.youtube.com/playlist?list=PLTwx5YGQHdjkEgJFEojkkhgprli4Vv0Ng


Los videos de las conferencias de Washington DC:
https://www.youtube.com/playlist?list=PLTwx5YGQHdjkOSDycyUw4zMrrYFvt2Eng




Oracle Autonomous Database Gratis

Recientemente Oracle anuncio la disponibilidad de su Autonomous Database gratis de por vida, por lo cual me di a la tarea de ver si realm...