MogileFS, sistema de ficheros distribuido a través de la red

MogileFS es un sistema de ficheros distribuido que funciona en activo-activo o dicho de otra forma, es un RAID a través de la red. Algunas de sus características:

  • No requiere de ningún parche en kernel ni módulos especiales ya que funciona completamente a nivel de aplicación.

  • No hay ningún SPOF(single point of failure) ya que todos los elementos que forman MogileFS pueden estar distribuidos en múltiples máquinas.

  • Se pueden especificar clases de ficheros. Las clases definirán cuantas réplicas pueden llegar a tener. Por ejemplo, un fichero de log poco importante puede ser suficiente con dos réplicas, pero los datos bancarios de la empresa necesita 10 réplicas. Dependiendo de la clase, MogileFS hará automáticamente las réplicas que sea necesario.

  • No importa el sistema de …

[Lea más]
Introducción al mundo noSQL

NoSQL es la nueva palabra de moda. Una solución pensada para el almacenamiento de gran cantidad de datos para su posterior uso. Esto ya nos suena, una base de datos, pero realmente, ¿cual es la diferencia?

NoSQL es un término usado en informática para agrupar una serie de almacenes de datos no relacionales que no proporcionan garantías ACID. Normalmente no tienen esquemas fijos de tablas ni sentencias "join".Wikipedia

La diferencia ya es clara, no es una base de datos como las que conocemos actualmente, es bastante más peculiar y tira por tierra bastantes de los conceptos y formas de trabajar a los que estamos acostumbrados. Y aunque el termino en si sea nuevo, la teoría tiene sus años, bastantes más que las bases de datos relacionales, pero ahora vuelve con fuerza para salvarnos la vida en algunos casos concretos, evitando problemas de escalabilidad o …

[Lea más]
Entendiendo y utilizando la Query Cache

La Query Cache nos permite almacenar el resultado de las query SELECT en una cache, de forma que si se piden los mismos datos repetidamente, únicamente tendrá que ejecutarlo una vez, devolviendo el resto de veces el resultado desde la memoria. Esto, como os podeis imaginar, mejora en gran medida el rendimiento de nuestro servidor. Pero hay que tener una serie detalles en cuenta al hacer uso de esta cache :)

  • Para mantener la consistencia en los resultados guarda una relación de las tablas a las cuales afectan la query, de forma que si una de esas tablas se ve modificada, la Query Cache se invalida.
  • La query se guarda tal y como la hemos escrito, esto es, para la Cache no sería lo mismo "SELECT Nom,Ap from t where id=2" que "SELECT nom,ap from T where id=2".
  • No se guardará el resultado de la query a no ser que esta no sera determinista. Por lo tanto, funciones como NOW(), CURRENT_DATE(), …
[Lea más]
Cursos certificados Java y MySQL

CALENDARIO DE CURSOS MAYO-JULIO 2010 – ZARAGOZA Warp Networks como partner oficial de Sun Microsystems, imparte formación certificada MySQL y JAVA. También puede proveer a los interesados de vouchers para certificaciones Sun. Los cursos se imparten de forma presencial en Zaragoza. Apúntate ahora, las plazas son limitadas! FORMACIÓN JAVA: Desarrollo de Aplicaciones Java EE (FJ-310-EE5): [...]

Google Analytics Concepts, The Movie

Just in case anyone is interested, the video of my Google Analytics Concepts talk has been uploaded to the ASPgems vimeo channel.

Google Analytics Concepts

I have just given a talk about Google Analytics Concepts. I have explained basic concepts that anyone interested in maximizing Google Analytics usage must know. I have talked about generic web analytics concepts like metrics, keywords, marketing campaings, segmentation, etc. I have also reviewed specific Google Analytics concepts, such as which cookies are used, how to install the tracking code, how to integrate Google Analytics with AdWords, etc.

La desastrosa atención al cliente de Oracle y Prometric

Si no me equivoco desde junio del año pasado Sun Microsystems ha pasado sus certificaciones de MySQL de PearsonVUE a Prometric. Justo antes de ese cambió aprobé la certificación de MySQL DBA. Y ahí comienza el infierno, como siempre protagonizada por los departamentos de atención al cliente.

Me cree una cuenta en Prometric para poder seguir con mi formación (MySQL Cluster) y me extrañé un poco al ver que no recibía ningún correo. Pero no me preocupé mucho, ya que podía entrar con mi cuenta y comprobar que funcionaba correctamente. Envié un correo a Prometric comentando que mi certificación estaba en el limbo, necesitaba que la moviesen a Prometric para poder hacer MySQL Cluster (MySQL DBA es un requisito). Pasaron los días y no recibí nada. Finalmente, después de días de espera, me dio por mirar los logs de mi servidor de correo y veo:

NOQUEUE: reject: RCPT from promailer.prometric.com[208.76.122.11]: 
450 4.7.1 …
[Lea más]
Replicación multi-master y síncrona con Galera


Rocky prefiere la replicación en Access

La replicación de bases de datos síncronas siempre ha dado algún que otro quebradero de cabeza ya que no es tan facil de implementar como en un principio se puede pensar. Una de las técnicas más usadas para lograrlo es el conocido commit en dos fases. En este modo un nodo llamado el coordinador envía un mensaje con una consulta a un commit. Los participantes, en función de si pueden o no aplicar la transacción, mandan una respuesta de fallo o acierto al coordinador. Si alguno manda fallo, la transacción se cancela (rollback) pero si todos dan su visto bueno esta se aplica globalmente (commit).

Esto a simple vista ya nos muestra un problema de base, la gran cantidad de bloqueos que se tienen que aplicar a las tablas y/o filas mientras se hacen las comprobaciones, degradando en gran medida el …

[Lea más]
Just passed Google Analytics Individual Qualification certification

I recently passed the Google Analytics Individual Qualification test.

If you are interested in become a more knowledgeable Google Analytics user you should have a look at Conversion University, a set of online presentations that you can watch free of charge, or come to the talk I will be giving next week about Google Analytics concepts (in Spanish).

Consejos para mejorar el rendimiento de MySQL (Parte I)

Acepto comentarios, puedo estar equivocado :)

  • El tipo datetime ocupa 8 bytes y no es timezone-aware. Timestamp ocupa la mitad (4 bytes) y es timezone-aware. Usa timestamp.
  • El tipo varchar es más lento que char, pero generalmente ocupa menos espacio. Antes de definir la columna piensa que datos se van a guardar. Si son de tamaño fijo (o muy muy similares) usa char (por ejemplo para un md5).
  • Si tu charset es UTF-8, es posible que el string ocupe hasta el tripe de espacio. Usa UTF-8 solamente donde sea necesario.
  • Si en un campo varchar o char vas a guardar siempre los mismos strings, usa enum.
  • Si no necesitas decimales exactos, usa tipos de coma flotante (float o double). El tipo decimal no lo calcula la CPU (no puede), lo hace MySQL, lo cual es muchisimo más lento.
  • Todas las columnas deben ser NOT NULL. Procesar un NULL consume CPU y memoria. Si quieres que los campos se …
[Lea más]