Base de datos Cassandra

cassandra database 480x372 Base de datos Cassandra

Migración de grandes hacia Cassandra db

Por la red ha saltado la alarma ya que Twitter pretende migrar al sistema de base de datos Cassandra, hasta la fecha los de Twitter confiaban en la base de datos mysql con un complejo sistema de Twitter.

No es la primera compañía que migra hacia Cassandra tras la adquisición de MySQL por Oracle, un movimiento que no ha sido del agrado de prácticamente ningún desarrollador, además con estos movimientos tan sólo acrecentamos el temor de que Oracle acabe ahorcando el proyecto libre MySQL en favor de sus sistemas de bases de datos de pago.

La base de datos Cassandra fue liberada por Facebook en el año 2008, en la actualidad es usada por servicios web de alto tránsito y de alta actividad en cuanto a base de datos se refiere, nombres como Rackspace, Digg, Facebook, Cisco, etc son algunas de las compañías que ya trabajan bajo Cassandra el echo de que muchas redes sociales de gran renombre la utilicen es garantía de su funcionalidad pues bien es sabido que tanto Twitter como Facebook y Digg son las aplicaciones web que mueven un mayor volumen de registros de bases de datos.

Características destacadas de Cassandra

Cassandra DB dispone de algunas características muy interesantes entre las que destacamos:

Tolerancia a fallos

Los datos son replicados en múltiples nodos de forma que si falla uno el sistema es capaz de leer los datos desde cualquier otro nodo sin problema alguno sin ningún tipo de downtime o tiempo de espera, elevando así el tiempo de operatividad muy por encima de MySQL.

Descentralización de los datos

Todos los clusters que conforman una base de datos disponen de la misma información por lo que los datos están replicados y se encuentran en todos los puntos aportando toda la ventaja que implica la descentralización de los datos.

Modelo de datos avanzado

Cassandra dispone de lo que se denomina un Rich Data Model es decir un sistema eficiente y simple para la ejecución de consultas a la base e datos.

Elasticidad

Te permite leer y escribir simultáneamente sin interrupciones.

Requerimientos de Cassandra

Servidor Apache, 1Gb. de mínimo de memoria RAM bajo entornos virtualizados, si el hardware es dedicado debería ser superior a 4Gb. de todas formas es habitual encontrarse cluster con 16 y 32 Gb. de memoria RAM.

A nivel de CPU Cassandra trabaja de forma excelente con sistemas multi-núcleo así que a mayor número de cores, mayor rendimiento. Así pues si precisas de un gran rendimiento, no te cortes y tira por sistemas de cuatro u ocho núcleos.

Capacidad de disco, ideal 2 discos por cada cluster, en uno se almacena el llamado CommitLogDirectory o fichero de registro de activicidad (log) y en el otro los datos o DataFileDirectories.

Sistema operativo, lo mejor un sistema operativo de 64bits, a mayor estabilidad mejor rendimiento. Por supuesto, Unix o Linux, incluído Mac OSX.

Enlace: http://incubator.apache.org/cassandra/

Formato pubDate en RSS

pubdate rss 480x332 Formato pubDate en RSS

Generador de blogs automáticos

Actualmente estamos trabajando en nuestro nuevo proyecto cOOmmunicate.com, cOOmmunicate es un sistema que permite generar blogs automáticos partiendo de cualquier fuente de noticias RSS.

El objetivo de cOOmmunicate es el de mejorar el posicionamiento de producto ofreciendo a nuestros clientes un sistema de blogs automático que no precisa interacción del cliente una vez configurado, es decir el mismo consulta clasifica y actualiza el blog por si sólo. Con cOOmmunicate podrás tener un blog sobre tu empresa o sector sin tener que dedicarle nada de tiempo, un blog que recibirá cientos de visitas al día en muy poco tiempo, una visita siempre puede convertirse en un comprador en potencia.

En nuestro proyecto vamos a utilizar el fichero RSS generado en una web de un cliente nuestro, Cablematic.com un mayorista de armarios rack y todo tipo de cables que utiliza nuestro sistema de tiendas online ecOOmmerce.com, el resultado será un blog con todas las novedades que introduzca el cliente en el backoffice.

Tras esta introducción comercial sobre nuestro nuevo producto vamos a la parte más técnica y aquella a la que podéis extraer un mayor provecho ya que es en este punto del desarrollo cuando hemos detectado la necesidad de convertir las fechas entre formatos mysql y formatos de fecha en RSS, a partir de aquí y tras conseguir realizar las correspondientes fórmulas de conversión de fechas publicamos el código básico para aquellos que tengan la misma necesidad.

Manejo del formato de fecha pubDate

El pubDate es una etiqueta de los archivos de sindicación de contenidos RSS, en esta etiqueta se coloca la fecha del artículo o post y posee un formato un tanto especial :

Sat, 09 Jan 2010 00:00:00 +0100

ó

Sat, 09 Jan 2010 00:00:00 GMT

Es decir:

Día de la semana coma número de día dentro del mes nombre del mes con tres letras año con cuatro números hora dos puntos minutos dos puntos segundos y GMT.

El problema o dificultad reside en como generar y manipular dicha fecha en PHP pues no existe un comando directo, si bien esto es una tarea más bien fácil os dejamos un apunte para aquellos que estén atascados con las conversiones de fecha en mysql, veamos un ejemplo:

Disponemos de una fecha en formato “date” de Mysql ej: 2010-01-01 y necesitamos convertirla a formato RSS para generar un rss de novedades de producto.

Para conseguir esto es suficiente con el siguiente par de líneas de código:

$mysqlDateStr = strtotime($mysqlDate);
$pubdate = date(‘D, d M Y H:i:s O’,$mysqlDateStr);

Este conversión la realizamos en dos pasos, primero convertimos en string el formato de mysql date para luego aplicarle el formato deseado, que no es otro que el formato pubDate de los RSS mediante el comando date de php.

En cambio si lo que tenemos en el origen es una fecha en formato TimeStamp deberemos utilizar el siguiente código:

$year = substr($timestampDate, 0, 4);
$month = substr($timestampDate, 4, 2);
$day = substr($timestampDate, 6, 2);
$hour = substr($timestampDate, 8, 2);
$min = substr($timestampDate, 10, 2);
$sec = substr($timestampDate, 12, 2);
$pubdate = date(‘D, d M Y H:i:s O’, mktime($hour, $min, $sec, $month, $day, $year));

En este código lo que hacemos es extraer cada parte del string en formato timestamp de mysql y lo convertimos en una variable aislada para finalmente formar una cadena de texto string con el comando de php date.

Ahora vamos a tratar el mismo problema a la inversa, es decir vamos a convertir una fecha en formato pubDate a un formato mysql:

$mysqlDate = date(‘Y-m-d H:i:s’,strtotime($pubDate);

Con este pequeño apunte ahora nos será más fácil y rápido convertir estas fechas.

Aplicación web PHP para backup de mysql

aplicacion web de copias de bases de datos 480x319 Aplicación web PHP para backup de mysql

Sypex Dumper es una aplicación web de código abierto escrita en lenguaje PHP para establecer completos sistemas de copia de seguridad de bases de datos MySQL. Funciona en capa web y por tanto es multisistema.

Esta aplicación web está construída con PHP y posee una potente interface Ajax. Gracias a los sistemas que incorpora permite no tener que preocuparse de timeouts ni limites de archivos tan típicos como el max upload limit del PHP, unos problemas que vienen siendo muy habituales entre los webmasters a la hora de mover bases de datos por la red.

El código se encuentra muy optimizado y es más de 5 veces más rápido en exportar una base de datos que otros métodos hasta ahora más tradicionales como phpMyAdmin, MySQL Front, Heidi o incluso los conocidos scripts mysql dumper.

Enlace: http://sypex.net/en/products/dumper/about/

Optimizar bases de datos Mysql

optimizar bases de datos mysql 387x479 Optimizar bases de datos Mysql

Hoy que los servidores virtuales y servidores privados están muy de moda vamos a aprender que es lo que debemos realizar para optimizar el motor de bases de datos Mysql.

Con dos sencillos comandos en la terminal de tu servidor web podrás obtener un sabio consejo para optimizar el rendimiento de tus bases de datos Mysql. Estos comandos te descargan un script en perl y con el siguiente lo ejecutas.

wget mysqltuner.pl
perl mysqltuner.pl

Deberás de proporcionar al script la información que te solicita, esta es usuario de administración de mysql y la correspondiente clave, a partir de hay en unos segundos te mostrará los sabios consejos para que tu servidor funcione algo más ligero.

Enlace: http://blog.mysqltuner.com/download/

Quiero que me indexen por esto

archivo robots txt 480x333 Quiero que me indexen por esto

¿Cómo decirle a un buscador lo que quieres que indexen y lo que no?

Podrías escribirlo en la home… bromas a parte el archivo robots.txt es un archivo que se coloca en la raíz del servidor y sirve para que los bots y spiders que pupulan por la red lo lean y se atengan a él.

Estos bots son entre otros los mismos buscadores como la todopoderosa Google con su GoogleBot, otros muchos bots son de origen desconocido y algunos se pueden comportar de forma especialmente violenta provocando por ejemplo una saturación en tu servidor y dejándolo  sin servicio.

Los bots buenos respetan las indicaciones que se le indiquen a través del fichero “robots.txt”, un fichero donde le dices, index este archivo o este directorio porque aquí vas a encontrar contenido, en cambio en este directorio no hay contenido y no pierdas el tiempo ni me hagas derrochar ancho de banda ni recursos de mis servidor para nada.

Dada esta teoría de una forma un tanto brusca pero pienso yo que bastante clara vamos a mostraros el contenido de diferentes ficheros robots.txt para diferentes gestoresd de contenidos, de forma que tan sólo tengas que copiar y pegar:

Fichero robots.txt de Wordpress

User-agent: *
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /trackback
Disallow: /tag
Disallow: /author
Disallow: /wget/
Disallow: /httpd/
Disallow: /cgi-bin
Disallow: /images/</pre>
Disallow: /search
Disallow: /feed
Disallow: /feed/
Disallow: /trackback/
Disallow: /rss
Disallow: /comments/feed
Disallow: /feed/$
Disallow: /*/feed/$
Disallow: /*/feed/rss/$
Disallow: /*/trackback/$

User-agent: *Disallow: /wp-adminDisallow: /wp-includesDisallow: /wp-content/pluginsDisallow: /wp-content/cacheDisallow: /wp-content/themesDisallow: /trackbackDisallow: /tagDisallow: /authorDisallow: /wget/Disallow: /httpd/Disallow: /cgi-binDisallow: /images/</pre>Disallow: /searchDisallow: /feedDisallow: /feed/Disallow: /trackback/Disallow: /rssDisallow: /comments/feedDisallow: /feed/$Disallow: /*/feed/$Disallow: /*/feed/rss/$Disallow: /*/trackback/$

Fichero robots.txt para Magento

User-agent: *

Disallow: /wp-admin

Disallow: /wp-includes

Disallow: /wp-content/plugins

Disallow: /wp-content/cache

Disallow: /wp-content/themes

Disallow: /trackback

Disallow: /tag

Disallow: /author

Disallow: /wget/

Disallow: /httpd/

Disallow: /cgi-bin

Disallow: /images/</pre>

Disallow: /search

Disallow: /feed

Disallow: /feed/

Disallow: /trackback/

Disallow: /rss

Disallow: /comments/feed

Disallow: /feed/$

Disallow: /*/feed/$

Disallow: /*/feed/rss/$

Disallow: /*/trackback/$

Fichero robots.txt para Drupal

User-agent: *

# Directorios

Disallow: /database/

Disallow: /includes/

Disallow: /misc/

Disallow: /modules/

Disallow: /sites/

Disallow: /themes/

Disallow: /scripts/

Disallow: /updates/

Disallow: /profiles/

# Rutas (con permalinks activos)

Disallow: /admin/

Disallow: /aggregator/

Disallow: /comment/reply/

Disallow: /contact/

Disallow: /logout/

Disallow: /node/add/

Disallow: /search/

Disallow: /user/register/

Disallow: /contact

Disallow: /logout

Disallow: /user/register

Disallow: /user/password

Disallow: /user/login

Disallow: /user/password/

Disallow: /print/

Disallow: /forward/

# Ficheros

Disallow: /xmlrpc.php

Disallow: /cron.php

Disallow: /update.php

Disallow: /install.php

Disallow: /INSTALL.txt

Disallow: /INSTALL.mysql.txt

Disallow: /INSTALL.pgsql.txt

Disallow: /CHANGELOG.txt

Disallow: /MAINTAINERS.txt

Disallow: /LICENSE.txt

Disallow: /UPGRADE.txt

# Block user tracker pages

Allow: /project/track

Disallow: /*/track$

Disallow: /*/track?page=

Si no estás utilizando permalinks:

Disallow: /?q=admin/

Disallow: /?q=aggregator/

Disallow: /?q=comment/reply/

Disallow: /?q=contact/

Disallow: /?q=logout/

Disallow: /?q=node/add/

Disallow: /?q=search/

Disallow: /?q=user/password/

Disallow: /?q=user/register/

Disallow: /?q=user/login/

Disallow: /user/login/

Fichero robots,txt para Joomla

User-agent: *
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/
Disallow: /editor/
Disallow: /help/
Disallow: /includes/
Disallow: /language/
Disallow: /mambots/
Disallow: /media/
Disallow: /modules/
Disallow: /templates/
Disallow: /installation/
Disallow: /libraries/
Disallow: /tmp/
Disallow: /xmlrpc/
Disallow: /admin
Disallow: /administrator
Disallow:/admin/
Disallow: /admin.html
Disallow:/admin.php
Página 1 de 41234