Evitar navegación.
Principal

mysql

Generar imágenes de mapas con Google Chart

La posibilidad de generar imágenes de mapas a modo de gráficas con Google Chart es posiblemente una de las funcionalidades más interesantes que trae este genial servicio, para ello únicamnete tenemos que hacer llamadas a Google Chart API con los datos necesarios.

Documentación Google Chart API | Mapas

Gracias a esta funcionalidad por fin podemos crear de una sencilla manera gráficos que muestren estadísticas globales por países.

Para la realización de los ejemplos que vamos a ver a continuación vamos a hacer uso de esta estructura de tablas que podemos conseguir en el apartado de descargas de MySQL.

Descarga World.sql

Esta entrada es un poco larga por lo que voy a adelantar el resultado de los ejemplos para que aquellos a los que no le interesa la programación de los mismos pueda acceder rápidamente a los datos.

Distribución de la población mundial

Distribución población mundial


Densidad de la población mundial

Mapa de densidad de población mundial


Esperanza de la población mundial

Mapa de esperanza de vida de la población mundial


GNP de la población mundial

Mapa de GNP de la población mundial


Area de superficie por países

Mapa de área de superficie de los países



¿Porqué MySQL es lento con grandes tablas?

Si trabajas habitualmente con MySQL probablemente habrás escuchado que MySql no es la elección acertada para manejar tablas con mas de 1,000.000 de registros.

Pero entonces porque MySql es el motor de compañías como Google, Yahoo o Technorati, además estas compañías manejan algunos cientos de millones de registros y consiguen un gran rendimiento.

El motivo de este gran rendimiento es que estas tablas que tienen cientos de millones de registros están diseñadas y entendidas para trabajar con MySql, si diseñamos considerando lo que puede y no puede hacer el motor de base de datos probablemente consigamos un buen rendimiento, cualquier sistema de administración de Bases de Datos es distinto con respecto a los otros, lo que funciona bien y es eficaz en Oracle ó PostgreSQL no debe ser lo que mayor rendimiento ofrezca en Mysql.

Por ello para trabajar con tablas muy grandes debemos tener en cuenta tres claves: Buffers, Índices y Consultas.


Claves foráneas en un clúster MySQL

Para empezar debemos de tener claro ¿Qué es un clúster y que prestaciones ofrece? Un clúster es una unión de múltiples ordenadores que son visto externamen como un único ordenador muy potente y que puede o debe ser utiliado para los siguientes objetivos:

  1. Alto rendimiento (High Performance)
  2. Alta disponibilidad (High Availability)
  3. Equilibrio de carga (Load Balancing)
  4. Escalabilidad (Scalability)

Un clúster MySQL por lo tanto es una tecnología que nos permite optimizar el rendimiento de nuestras bases de datos con hardware no muy costoso y con unos requrimientos muy básicos de software. Un clúster MysSQL integra un servidor MySQL y un motor de almacenamiento en memoria llamado NDB clúster que permite funcionar en un conjunto de ordenadores.

Clúster MySQL

Según este esquema las tablas de la base de datos se almacenan utilizando el motor NDB y se puede acceder a los datos almacenados en el clúster a través de cualquiera de los nodos, estos nodos funcionan como espejos unos de otros lo que permite que la caída de un nodo de datos no afecte al conjunto de ordenadores.

Los principales procesos necesarios para hacer funcionar un clúster de MySQL son: MySQLD, NDBD, NDB_MGMD.

Building a High-Availability MySQL Cluster

Claves foránes en MySQL

A partir de la versión 4.0, MySQL agregó InnoDB a la lista de tipos de tablas soportadas por defecto, para aquellos que no saben demasiado sobre estas tecnologías de almacenamiento de datos decir que MyISAM es el utilizado por defecto en la mayoría de los casos pero no por ello el que más se adapte a las necesidades de nuestra aplicación.

MyISAM vs InnoDB

MySql soporta distintas tecnologías de almacenamiento de datos, entre estas destacan MyISAM e InnoDB, el primero de ellos (MyISAM) es el utilizado por defecto pero en la mayoría de los casos podremos cambiarlo cuando queramos.



Muestra gráficas con MySql

Habitualmente utilizamos la sentencia SELECT para obtener y analizar información de la base de datos.

Pero lo utilizamos ignorando posibles mejoras que nos haría más sencillo el análisis de los datos, podríamos mejorar esta sentencia creando unas sencillas gráficas que se invocarán en las sentencias SELECT.

Aquí os dejo este sencillo ejemplo:

mysql> SELECT Nombre, Valor FROM Meses;
+-----------+---------+
| Name | Value |
+-----------+---------+
| Enero | 379.385 |
| Febrero | 906.076 |
| Marzo | 392.224 |
| Abril | 242.893 |
| Mayo | 37.7936 |
| Junio | 460.288 |
| Julio | 188.06 |
| Agosto | 559.437 |
| Septiembre| 233.005 |
| Octubre | 486.714 |
| Noviembre | 734.555 |
| Diciembre | 212.632 |
+-----------+---------+
12 rows in set (0.00 sec)


MyISAM vs InnoDB

MySql soporta distintas tecnologías de almacenamiento de datos, entre estas destacan MyISAM e InnoDB, el primero de ellos (MyISAM) es el utilizado por defecto pero en la mayoría de los casos podremos cambiarlo cuando queramos.

Documentación de MySQL sobre InnoDB
Documentación de MySQL sobre MyISAM


Ventajas y desventajas de los índices (Bases de Datos)

Los índices de Mysql al igual que en la vida real los índices de los libros nos sirven para encontrar más rápido aquello que buscamos, por lo tanto y extrapolando a bases de datos podemos decir que nos sirven para agilizar las consultas a las tablas.

Ventajas

  • Una de las mayores ventajas es que cuando Mysql se encuentra un índice evitamos un "escaneo completo de la tabla" lo que hace que cuando tenemos grandes cantidades de datos en nuestras tablas, la mejora puede ser muy importante.
  • Muy relacionado con el anterior... al evitar "escaneos completos de las tablas", evitamos los siguientes problemas: Sobrecarga de CPU, sobrecarga de disco y concurrencia.
  • Con los índices evitamos que Mysql tenga que hacer lecturas secuenciales.
  • Los índices nos permiten una mayor rápidez en la ejecución de las consultas tipo SELECT lo que sea WHERE ...
  • Y por último será una ventaja para aquellos campos que no tengan datos duplicados, sin embargo si es un campo con valores que se repiten continuamente (Ej. Masculino/Femenino) no es aconsejable.

Desventajas

Pero a pesar de sus grandes ventajas no debemos abusar de ellos puesto que en determinadas situaciones no supondrá una mejora:

  • Los índices son una desventaja en aquellas tablas las que se utiliza frecuentemente operaciones de escritura (Insert, Delete, Update), esto es porque los índices se actualizan cada vez que se modifica una columna.
  • Los índices tambien suponen una desventaja en tablas demasiado pequeñas puesto que no necesitaremos ganar tiempo
    en las consultas.
  • Tampoco son muy aconsejables cuando pretendemos que la tabla sobre la que se aplica devuelva una gran cantidad de datos en cada consulta.
  • Por último hay que tener en cuenta que ocupan espacio y en determinadas ocasiones incluso más espacio que los propios datos.

Consejos para planificar una aplicación web

A menudo antes de empezar un proyecto no tenemos claro cúal es el objetivo del mismo o qué pretendemos alcanzar por eso esta pequeña lista te puede ayudar a la hora de planificar un proyecto.

Planificar una aplicación web implica pensar y definir muchas cuestiones de importancia:

1. Planificar el futuro

Puede sonar un poco duro que nos tengamos planear el futuro de algo que aún no existe pero es así, que pasa si en un futuro tuvieramos problemas de escalabilidad, y sí tuvieramos que migrar las bases de datos de MySql a Oracle, de una buena planificación depende la dificultad en un futuro de realizar cambios en la plataforma que sostiene nuestra aplicación.


BBDD o BDDS

ArrobaNunca te has preguntado el por que de las iniciales BBDD... esto es una de las bondades de las abreviaturas que son como su nombre indica una representación abreviada de una o varias palabras, con las abreviaturas se pretende hacer mas sencilla la reproducción de ciertas palabras o grupo de palabras que se repiten a menudo.

El problema de estas abreviaturas viene cuando nos topamos con plurales en ese caso nos podemos encontrar con dos variantes:
Caso 1:
Dirs., núms., noms.
Caso 2:
CC.OO, EE.UU, BBDD

Por lo tanto en el primer caso añadimos una s y en el segundo duplicamos las letras que forman la abreviatura, por poner un ejemplo más complicado (APA) quedaría AAPPAA.

Podemos entonces decir que si la abreviatura se obtuvo truncando la original, la forma normal de usarla en plural es mediante la adición de una -s al final (por ejemplo págs.) y si el truncamiento sólo dejó una letra (se llama truncamiento máximo), el plural se expresa duplicando dicha letra (BBDD).

Este es el motivo por el que se utiliza la abreviatura BBDD en vez de BDDS ó BD a no ser que quisieramos hablar de las Bases de Datos Deductivas ó de una "Base de Dato", en ese caso las abreviaturas BDDS y BD serían correctas.