Entradas etiquetadas ‘ip

En estos días Google ha comenzado a activar el soporte del protocolo IPv6 para YouTube lo que hace ver que la interminable migración de IPv4 a IPv6 está cada vez más cerca.

YouTube comienza a usar IPv6 [ENG]

La principal diferencia es que IPv4 puede llegar a albergar 232 direcciones de red diferentes y no es suficiente para que cada persona del planeta disponga de su propia dirección y mucho menos para que cada aparato electórnico pueda llegar a tener direcciones diferentes, en cambio IPv6 admite 2128, es decir con IPv6 tendríamos direcciones ip de sobra para cada persona y aparato de la tierra.

Lo cierto es que Internet duplica su tamaño cada año desde 1988.
Con el actual sistema IPv4 serian teóricamente posibles unos 4 billones de direcciones IP (232 direcciones), la previsión de población mundial para el 2.050 es de 9 mil millones de personas.

IPv6 es una solución por lo tanto a las limitaciones de IPv4:

  • Escasez de direcciones Ip.
  • Limita el crecimiento de Internet.
  • Provoca que los usuarios use NAT.
  • Hoy día el ruteo es ineficiente.
  • IPv4 no fue diseñado para ser seguro.

IPv6 tendrá otros beneficios, como la posibilidad de configuración automática de las redes, lo que reducira enormemente el coste de su mantenimiento.

Será posible establecer niveles de seguridad a nivel IP (permitiendo autentificación de las transmisiones entre equipos, asegurando la integridad y privacidad de las conexiones).

IPv6 – Wikipedia
Ipv4 – Wikipedia

Función IsNumeric para MySQL

18 de diciembre de 2008

en: Sin categoría

Es un problema poco habitual ya que no siempre se pretende filtrar datos numéricos en las consultas de MySQL, pongamos que necesitamos probar en una consulta que los datos de un determinado campo son numéricos.

Buscando he encontrado dos posibles maneras de hacerlo con MySQL:

  • WHERE CONVERT(micampo, SIGNED INTEGER) IS NOT NULL
  • WHERE micampo REGEXP (‘[0-9]‘)

¿Cuál es la mejor maneras?

Tras probarlo definitivamente es mejor con expresiones regulares (la segunda opción) pero con una pequeña modificación para que nos coja cualquier número entero.

WHERE micampo REGEXP '^[0-9]+$'

Es un problema poco habitual ya que no siempre se trabaja con coordenadas geográficas en las aplicaciones web, pero en estos últimos años con la irrupción de Google Maps y servicios similares es muy habitual encontrarnos con Mashup que giran en torno a mapas.

Antes de comenzar a desarrollar y solucionar el problema veamos sus posibles funciones dentro de las aplicaciones web:

  • Encontrar localizaciones cercanas a un punto dado
  • Red Social: encontrar amigos cercanos a ti
  • Mapas sociales: encontrar puntos de interes cercanos
  • Páginas Amarillas: encontrar servicios cercanos a un punto dado

Distancia entre dos puntos

En la superficie de la Tierra no nos movemos por un plano recto por lo que en todos los cálculos de distancia debemos tener en cuenta el arco que describe el recorrido entre dos puntos, es pura trigonometria.

Para entender la solución al problema es muy importante entender la formula Haversine, es una ecuación muy importante para la navegación en la que podemos obtener la distancia entre dos puntos geográficos (longitud y latitud) dados.

En este tipo de cálculos omitimos el hecho de que la Tierra no es perfectamente redonda lo que haría aún más complejo el cálculo, en principio este hecho no nos debe afectar y con la solución dada nos será más que suficiente.

Distancia entre dos puntos geográficos con MySql

Aquí tenemos la solución para calcular la distancia entre dos puntos con MySql:

Habitualmente cuando trabajamos con mapas en nuestra aplicación web utilizamos dos campos en la base de datos para almacenar la geolocalización de un punto, estos dos datos son la latitud (su línea de base es el Ecuador) y la longitud (su línea de base es el Meridiano de Greenwich).

Cogemos dos puntos aleatorios, por ejemplo Catedral de Málaga y Plaza de Colón de Madrid.

Catedral Málaga Plaza de Colón
latitud 36.720139 40.425797
longitud -4.419422 -3.690462



Radio de la Tierra: 6378 km.

SELECT (acos(sin(radians(36.720139)) * sin(radians(40.425797)) + 
cos(radians(36.720139)) * cos(radians(40.425797)) *
cos(radians(-4.419422) - radians(-3.690462))) * 6378) as
distanciaMalagaMadrid;
+-----------------------+
| distanciaMalagaMadrid |
+-----------------------+
|       417.34812304175 |
+-----------------------+

El resultado es de 417,348 Kilómetros.

Veamos la soluciónd e una manera más limpia:

PUNTO 1 PUNTO 2
latitud LATITUD_1 LATITUD_2
longitud LONGITUD_1 LONGITUD_2


SELECT (acos(sin(radians(LATITUD_1)) * sin(radians(LATITUD_2)) + 
cos(radians(LATITUD_1)) * cos(radians(LATITUD_2)) *
cos(radians(LONGITUD_1) - radians(LONGITUD_2))) * 6378) as
distanciaPunto1Punto2;

MyISAM vs InnoDB

12 de noviembre de 2007

en: Sin categoría

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

PHP y MySql una estrecha relación

27 de diciembre de 2006

en: Programacion

La estrecha relación entre PHP y MySql es algo que conocemos hace años.

Ultimamente se esuchan muchas opiniones acerca de los nuevos objetos mejorados de MySql hablamos de (mysqli) y (PDO):

¿Que es mysqli?

La extensión mysqli permite acceder a la funcionalidad proveida por MySQL 4.1 y superior. Más información acerca del servidor de base de datos MySQL puede ser encontrada en http://www.mysql.com/

Más información

Uno de los pasos más importantes a la hora de optmizar nuestras consultas de MySql es identificar cuáles son las que están causando problemas.

¿Cómo podemos detectar cuáles son las consultas más lentas?

MySql puede praticamente responder cualquier pregunta que le estes haciendo sobre las bases de datos unicamente debemos saber preguntar de la manera correcta…