ExtSQL: Extended Usage Statistics for SQL

ExtSQL es una serie de modificaciones y parches realizados sobre MySQL y PostgresSQL que permiten realizar monitorizaciones e informes sobre el estado de la base de datos, del servidor, la actividad de los usuarios. Las consultas se realizan mediante queries SQL, las cuales quieren que se añadan al estándar SQL. Actualmente, la mayor parte del trabajo se ha realizado en MySQL, ya que están a la espera de la respuesta de la comunidad de PostgreSQL.

Por ejemplo, para saber el número de selects e inserts realizados por todos los usuarios desde que el servidor arrancó, sería así:

SHOW STATISTICS Com_select, Com_insert, Questions FROM user;

Dando el siguiente resultado:

+----------+-------------+------------+------------+
| user     | Com_select  | Com_insert | Questions  |
+----------+-------------+------------+------------+
| bandala  | 8302675     | 95973      | 23153940   |
| sandymao | 1702812     | 6205       | 3829023    |
| ponnetli | 24909       | 4784       | 95646      |

ExtSQL

Vía / VivaLinux

Gracias David por el aviso

Eventum: gestor de tareas desarrollado por MySQL

Eventum es un sistema para la gestión de tareas y seguimiento de errores que ha desarrollado MySQL y que ellos mismos utilizan.
eventum.png
Posee las típicas características de aplicaciones parecidas como dotProject: creación de proyectos, tareas, administración, envío de emails, etc…
Eventum

xmpphp: libería Jabber para PHP

xmpphp es una librería que permite realizar acciones sobre el protocolo XMPP, en el cual está basado Jabber o GTalk.

Un ejemplo sencillo para mandar mensajes sería el siguiente:

<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someguy@someserver.net', 'This is a test message!');
$conn->disconnect();
?>

Una clase que nos puede ayudar mucho en algunas tareas como en el envio de alertas o avisos.

xmpphp

Gracias David por el aviso

Time picker en jQuery

Curioso script en jQuery que permite transformar una caja de texto en un seleccionador de tiempo. Pinchando sobre ella nos saldrán las horas que podemos elegir, y al movernos sobre las horas, aparecerán los minutos y así con el resto de los datos.

timepicker.png

Su utilización es muy fácil, tan solo habrá que ejecutar lo siguiente:

$(function(){
$('#test-1').timepickr();
});

A parte se puede configurar indicando que horas, minutos, segundos y etiquetas (am/pm) se pueden elegir, los formatos o incluso que datos mostrar o no.

jquery.timepickr.js

Vía / WebAppers

Borrar queries lentas en MySQL5.1

MySQL 5.1 añade la posibilidad de programar eventos, pudiendo así ejecutar tareas de forma automática. Una de las tareas más comunes es la de eliminar consultas lentas que aún no han acabado de ejecutarse.
Esta tarea se puede realizar mediante un prodecimiento almacenado que realiza un PROCESS LIST y que comprueba las sentencias con más de 200s (configurable) que están en estado executing o las que está en Spleep.
Purge process list from slow queries/idle connections
Vía / The Data Charmer

__autoload en PHP5

En PHP5 existe una funcionalidad muy interesante a la hora de crear una aplicación o un framework. Se trata del método __autoload que nos permite ejecutar código cuando se intenta instanciar a una clase que aún no ha sido definida aún.

Esto nos permitiría hacer un include del fichero de la clase cuando se vaya a ejecutar, así nos ahorramos muchos includes al principio de cada script.

function __autoload($class_name) {
require_once $class_name . '.php';
}
// El código anterior deberá ir en la clase y cuando vayamos a instanciarlo, como a continuación, se ejecutará
$obj  = new MyClass1();
$obj2 = new MyClass2();

El código se puede mejorar para que coja el código de distintas partes o librerías.

__autoload

Propel: ORM para PHP

Propel es un ORM para PHP que facilita la labor de desarrollo de aplicaciones web, gracias a la capa que transforma el tratamiento de la BD mediante objetos, con la que se puede recuperar, insertar y modificar datos.

No es necesario preocuparse por las conexiones de la BD y escribir SQL. Tampoco es necesario escapar datos o realizar casting. Tan solo es necesario definir la base de datos en formato XML u obtener la definición desde una base de datos ya existente.

Propel

Artículos sobre BD

Buena recopilación de artículos sobre bases de datos, en inglés, pero interesantes:

10 Useful articles about Database design

Revision Engine: engine para MySQL con control de cambios

Revision Engine es un motor para MySQL que permite llevar el control de cambios en los datos de las tablas. Cuando se necesita llevar un registro de las modificaciones realizadas por los inserts y updates, normalmente se realiza mediante programación. Este engine permite que esa tarea sea ajena al programador y que se realice automáticamente por la base de datos.

Existen tres formas de realizar el control de versiones:

  • Uso de dos tablas: una para los datos actuales y otra para el histórico. Las consultas son rápidas pero los updates lentos, ya que hay que quitar de una tabla y ponerla en otra.
  • Usando una tabla en la que se guardan los datos actuales y los históricos, la escritura es más rápida que la anterior, pero la lectura es más lenta porque hay que buscar en un volumen de datos mayor.
  • Usando tablas internas para guardar los cambios realizados en las columnas, no a nivel de la fila completa. Este caso aún no está disponible y lo realizarán en versiones posteriores.

Revision Engine

Vía / The Data Charmer