Hablando de API’s (Parte 2)

Standard

Hola de nuevo, ¿cómo están?

Vamos a retomar el tema de las API’s. Como quedamos la entrega anterior, vamos a empezar a desarrollar una API REST, esto para que nos quede un poco más claro todo este tema. Desarrollaremos nuestra API sobre el tema medico, con la cual podremos ofrecer a un profesional de la salud un servicio donde pueda registrar a sus pacientes, llevar a cabo una consulta y que pueda agendar dichas consultas. Esto con el fin de que pueda tener un registro de sus pacientes con información básica; así como también un historial por cada paciente de los hallazgos en sus consultas y los temas que se trataron en ella. Como ya les había mencionado, para el desarrollo de nuestra API utilizaremos Ruby on Rails en su versión 5. Sin mas que decir, empecemos nuestro desarrollo.

Lo primero que haremos sera crear un nuevo proyecto en Rails, especificando que utilizaremos una base de datos mysql, al cual yo nombrare como healthcareapi

rails new healthcareapi -d mysql --api

Continue reading

Hablemos de API’s (Parte 1)

Standard

Hola que tal, espero se encuentren muy bien! Hace algún tiempo que no escribía en el blog, espero que este tema sea de su interés y que lo disfruten.

En esta ocasión, abordaremos un tema de moda desde hace algún tiempo, en el cual he tenido la oportunidad de involucrarme desde hace algunos proyectos: Las API’s

Las API (Application Programming Interface, por sus siglas en ingles), son interfaces que nos permiten interactuar con un sistema de una manera mas practica y escalable, sin necesariamente saber que sucede detrás. Desde métodos para realizar acciones de un CRUD, hasta solo mandar una cantidad mínima de datos y que la API nos resuelva todo un proceso que seria extremadamente complejo o tardaríamos una eternidad en completar por nuestra cuenta. Nos permiten encapsular y separar los componentes de un sistema para poder compartirlos con otros usuarios (personas o sistemas). Si lo ponemos en términos mas simples, una API son una serie de acuerdos y requisitos de como una aplicación se comunicara con otra. Continue reading

Matriz de Competencias del Programador

Standard

Esta publicación es el resultado de la experiencia como programador y de la lectura de varios libros, no tanto de una tecnología o plataforma en concreto, si no más bien de conceptos, patrones y buenas prácticas.

En particular decidí escribir al respecto por un par de blogs y un libro que fueron seminales para esta idea:
– La discusión por la cuál nació la idea de este post, aquí se referencia la matriz, y a aparte hay una discusión muy interesante a favor y en contra de estos puntos.
– La matriz de la cual me tomé la libertad de traducir y agregar mis comentarios.
– 97 cosas que todo programador debería saber. A través de historias y anécdotas de programadores experimentados, van ilustrando algunos de los puntos considerados en esta matriz.
Cabe mencionar que más que volvernos expertos en herramientas, yo valoro los atributos como que este fuerte en los conceptos necesarios para ser programadores exitosos, ya que debido a la experiencia, las herramientas, frameworks, etc., pueden variar, pero las buenas bases y prácticas aceleran la adopción de nuevas tecnologías y mejora el desempeño de los equipos.
Gran parte de estos puntos los estamos utilizando activamente en Hunabsys, para definir que buscamos en nuestros equipos de desarrollo, en qué los vamos a entrenar y como base para seleccionar algún nuevo integrante.

Continue reading

MySQL Stored Procedures: A Basic Overview

Standard

Over the last days, i’ve dealing with the challenge of develop some database functions whose need to process some million rows to analyze the whole dataset. As a basic tool, a store procedure may save you several time and a lot of effort.

What is a stored procedure?

A stored procedure is a procedure (like a subprogram in a regular computing language) that is stored (in the database). Correctly speaking, MySQL supports “routines” and there are two kinds of routines: stored procedures which you call, or functions whose return values you use in other SQL statements the same way that you use pre-installed MySQL functions like pi() or now(). I’ll use the word “stored procedures” more frequently than “routines” because it’s what we’ve used in the past, and what people expect us to use.

How is a stored procedure composed?

A stored procedure has a name, a parameter list, and an SQL statement, which can contain many more SQL statements. There is new syntax for local variables, error handling, loop control, and IF conditions. Here is an example of a statement that creates a stored procedure. Continue reading

Foreign Tables en PostgreSQL (postgresql_fwd)

Standard
Hola a todos, recientemente nos encontramos con una situación donde tuvimos la necesidad, donde por orden, se propuso usar diferentes Bases de Datos en PostgreSQL para organizar por estrategia a los diferentes tipos de problemas que se estaban atendiendo.
Supongamos que queremos hacer un análisis de marcas de autos, y queremos dividir un volumen de datos considerable para su extracción y análisis por tipo de datos. Y al final necesitamos poder consultarlos todos dentro de una base de datos integradora.
Para resolver este tipo de problemas nos ayudó la extensión postgres_fdw de PostgreSQL.
Supongamos que tenemos los siguientes objetos:
  • marcas_db. DB Integradora.
  • marca_mercedes_db. DB Mercedes Benz. (pudiera ser más marcas: BMW, Audi, etc.)
    Esta Base de Datos puede tener varias tablas, como ejemplo vamos a crear el mapeo de una tabla.

    • atributos_auto. Tabla de atributos del auto con dos atributos: id y name.

Continue reading

Realizar y restaurar el backup de una base de datos PostgreSQL usando terminal

Standard

PostgreSQL logo

Qué tal. En el post de hoy veremos cómo realizar un dumpbackup de una (o varias) bases de datos PostgreSQL y restaurarlo de manera práctica, utilizando terminal.

De la documentación de PostgreSQL en su versión 9.5:

“La idea detrás del método dump es generar un archivo con comandos SQL que, al ser usado como feed back en el servidor, recreará la base de datos en el mismo estado en el que estaba en el momento del dump. PostgreSQL provee el programa pg_dump para este propósito.”

Continue reading

To Embed or reference? (Parte II)

Standard

Hola todos.

En esta ocasión les traigo la segunda (y espero que la última) parte de mi post anterior. Por si no lo recuerdan pueden consultarlo en el siguiente enlace:

To embed or reference? (Parte I)

Les recomiendo que si les interesa lo que escribo, y se disponen a leer esta publicación, primero le den un vistazo a la anterior para que tengan idea de lo que estoy hablando (escribiendo). Continue reading

To embed or reference? (Parte I)

Standard

Hola de nuevo.

Este es mi segundo post, y es algo especial ya que el 2 es uno de mis números favoritos (Es el único primo par). Al contrario de mi publicación anterior en esta no se trataran aspectos prácticos, sino que será puramente informativa.
He elegido hablar sobre un tema que me resulta particularmente interesante: “Los patrones de diseño en Mongodb”. Es claro que para abarcar todo lo relacionado con esta área un post no es suficiente, por lo que solo trataremos aspectos básicos (introductorios). Espero en un futuro (cuando haya adquirido más experiencia en el tema) poder continuar escribiendo sobre esto.
Cuando desarrollamos una aplicación, una de las primeras tareas que tenemos que llevar a cabo, es el diseño del modelo de datos. Al trabajar con bases de datos relacionales, el proceso de diseño del modelo de datos se formaliza con la “normalización”.

Continue reading

Realm (parte 2)

Standard

Hola a todos, buenas tardes.

Después de algunos contratiempos, estamos de regreso para terminar el seguimiento de Realm. Hoy nos enfocaremos en darle funcionalidad a una pequeña aplicación de captura de algunos datos en Android (les adelanto que voy iniciando en el desarrollo con Android, por si ven algún horror en mi codificación, tengan piedad xD). Continue reading

Evaluación de PostgreSQL y HP Vertica

Standard

Los Sistemas Gestores de Base de Datos (SGBD), permiten almacenar y manipular datos, evitando que los usuarios se preocupen por detalles de implementación (e.g. directorio de datos, mecanismos de consulta, estructura para almacenar los datos en disco). En el mercado existen diferentes propuestas de sistemas gestores (e.g. basados en grafos, basados en relaciones matemáticas, basadas en objetos). Cada una de las propuestas de los gestores poseen distintos enfoques. En esta ocasión, les comparto una evaluación de dos sistemas gestores, realizada en Hunabsys R&D. Nuestro objetivo es determinar el gestor con mejor desempeño, basados en el tiempo de cómputo que le toma al gestor resolver una consulta.

¿Qué y por qué?

En este trabajo evaluamos dos gestores: PostgreSQL y HP Vertica. Elegimos PostgreSQL porque contamos con experiencia utilizando este gestor. Además, incluimos al gestor HP Vertica, una herramienta de consulta que está siendo reconocida por su desempeño para manejar grandes volúmenes de datos. Una característica en común de PostgreSQL y HP Vertica es su (asombrosa) capacidad para extender la funcionalidad del gestor a través de Funciones Definidas por el Usuario (UDFs por sus siglas en Inglés, diría el buen Palomino). Otra característica que comparten estas herramientas es que involucran al Sr. Dr. M. Stonebraker ¡Tipazo, Genio y Premio Turing!. Continue reading