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 |
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.
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.
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.
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.
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.
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.
Artículos sobre BD
Buena recopilación de artículos sobre bases de datos, en inglés, pero interesantes:
- 10 errores comunes a la hora de diseñar la base de datos
- Definir modelos entidad-relación
- Fundamentos sobre diseño y modelos de bases de datos
- Crear tablas y relaciones con SQL
- Normalización y estructura de las tablas
- Cómo usar PHP y SQL para crear tablas y relaciones
- Operaciones con tablas y bases de datos con PHP
- Caso práctico de diseño de bases de datos, normalización, histórico y logs de eventos
- Diseño de una base de datos relacional
- Correcta aproximación en la definición de relaciones entre tablas
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.
Vía / The Data Charmer