Archive for juin, 2009

30
juin

Oracle et Sun sous la loupe de la justice américaine

   Posted by: freshdaz    in Divers

Le Département de la Justice américaine a décidé de poursuivre ses investigations sur l’acquisition de Sun Microsystems (Java, OpenOffice,MySQL) par Oracle.

Oracle attendait le feu vert du Département de Justice pour mettre définitivement la main sur Sun Microsystems. L’opération tourne autour de 7,4 milliards de dollars. Problème, le Département a décidé d’approfondir cette acquisition par le géant des bases de données et du progiciel. La question est de savoir si Oracle-Sun va-t-il mettre à mal la sacro-sainte concurrence sur le sol américain.

L’os d’Oracle avec le Département de la justice vient des licences autour de Java. Le langage est à la fois un langage de programmation et une plateforme de développement. Oracle éditant ces propres plateformes de développement, le Département de la Justice a peur de voir la concurrence se réduire à un duopole Oracle(Java) – Microsoft (.Net).

L’autre problème vient des projets OpenSource de Sun et de l’attitude très propriétaires d’Oracle. Sun Microsystems possède ou participe à de nombreux projets OpenSource tel que la suite bureautique OpenOffice.org (basé sur une version de Sun StarOffice), la base de données MySQL, le système d’exploitation OpenSolaris, le Java OpenJDK ou la plateforme de développement Eclipse. Le passage sous Oracle fait craindre la disparition de certains projets, remplacé par des solutions propriétaires. L’annonce de la fermeture de Virtual Iron, uns société spécialisé dans la virtualisation acquis par Oracle un mois de cela, n’a fait qu’exacerber les craintes, en particulier sur MySQL.

http://www.echosdunet.net/dossiers/dossier_3709_oracle+sun+sous+loupe+justice+americaine.html

Tags: , ,

(<- précédent)

Limitations et restrictions

Certaines commandes MySQL ne sont pas permises dans un événement.

Verrouiller une table est interdit: LOCK TABLES, UNLOCK TABLES.

Il n’est malheureusement pas possible de charger des données avec la commande LOAD DATA INFILE.

Les requêtes préparées (PREPARED STATEMENT) ne peuvent être créées dans un événement.

La récursivité.

Un événement ne peut être créé, modifié ou supprimé par un déclencheur, une procédure stockée ou un autre événement.

De plus, on ne peut pas créer, modifier ou supprimer un déclencheur ou une procédure stockée dans un événement.

La suppression d’une base de données (DROP DATABASE) entraine la suppression de tous les objets qu’elle contient, donc les évènements aussi.

Un événement désactivé (DISABLE, DISABLE ON SLAVE) est supprimé en cas d’arrêt du serveur.

Le DEFINER doit avoir les droits nécessaires pour l’exécution de l’évènement, cet utilisateur doit bien entendu exister. S’il est supprimé, renommé ou si ses privilèges ne sont plus adaptés, l’exécution de l’évènement échoue.

mysql> DROP USER daz@localhost;
Query OK, 0 rows affected (0.00 sec)


En éditant le journal des erreurs:

080527 23:09:05 [Note] Event Scheduler: [daz@localhost].[_event.second_event] started in thread 46.
080527 23:09:05 [ERROR] Event Scheduler: [daz@localhost].[_event.second_event] execution failed, failed to authenticate the user.
080527 23:09:05 [ERROR] Event Scheduler: [daz@localhost][_event.second_event] There is no ‘daz’@'localhost’ registered
080527 23:09:05 [Note] Event Scheduler: [daz@localhost].[_event.second_event] event execution failed.

Conclusion

Comme vous avez pu le constater tout au long de cet article, le programmateur d’évènements est bien plus qu’un simple gadget, un véritable outil qui s’ajoute à la palette de l’administrateur de base de données MySQL.

Malgré certaines limitations, comme l’impossibilité de lancer des commandes systèmes ou des scripts externes, ce planificateur facilitera la vie du DBA en lui donnant la possibilité d’automatiser certaines tâches de maintenance.



(Début de l’article)

Tags: , ,

(<- précédent)

Appel d’une procédure stockée

Il est possible d’appeler des procédures stockées dans un événement.

mysql> CREATE EVENT `_event`.`appel_ps`
ON SCHEDULE AT CURRENT_TIMESTAMP
DO
/*Appel de la procédure stockée*/
CALL pro_stock.insert_profil(‘Olivier’, ‘DASINI’, ‘Orange’);

Archivage périodique des données

Beaucoup d’entreprises sont obligées de conserver d’énormes volumes de données historiques sur leurs serveurs de bases de données. Un moyen de réduire l’espace occupé est d’utiliser le moteur de stockage ARCHIVE. Ce moteur de table, compresse automatiquement les données qui n’occupent alors plus que 30% de leur taille originale.

mysql> CREATE TABLE _event.archive_event (
moment timestamp,
fois tinyint unsigned,
action char(50)
) ENGINE = ARCHIVE;
mysql> DELIMITER €€
mysql> CREATE EVENT _event.archive_base
ON SCHEDULE EVERY 1 DAY
DO
BEGIN
/*Insertion des données à archiver*/
INSERT INTO _event.archive_event
SELECT moment, fois, action
FROM _event.insert_event
WHERE moment < SUBDATE(now(), INTERVAL 1 DAY);
/*Suppressions des données archivées dans la table originale*/
DELETE FROM _event.insert_event WHERE moment < SUBDATE(now(), INTERVAL 1 DAY);
END €€
mysql> DELIMITER ;



(à suivre… event scheduler: Limitations et restrictions)

Tags: , ,

18
juin

Forum PHP 2009 – Appel à conférenciers !

   Posted by: freshdaz    in Conférence, MySQL, PHP

Le Forum PHP 2009 accueillera comme partenaire aux cotés de l’AFUP (Association Française des Utilisateurs PHP) l’association LeMug.fr (MySQL User Group).

Cet événement va se dérouler les 12 et 13 novembre 2009 à la cité des sciences à Paris.
Les appels à conférenciers et les pré-inscriptions sont ouvertes jusqu’à la fin du mois de juin.

Si vous désirez vous y rendre, vous pouvez vous inscrire.

Pour toutes les informations http://afup.org/pages/forumphp2009/

P.S. Je peux déjà vous annoncer (enfin on va faire durer un peu le suspense)  la présence d’une immense (M)ySQL star… ;)

(<- précédent)


Quelques exemples d’évènements

Insertions de données dans une table, toutes les 30 secondes

mysql> SELECT * FROM _event.insert_event ;
mysql> DELIMITER €€
mysql> CREATE EVENT `_event`.`second_event`
ON SCHEDULE EVERY 30 SECOND
DO
BEGIN
/*selectionne la val maximale de la colonne fois. Si elle vaut NULL alors retourne la valeur 0 dans la variable @fois*/
SELECT if(max(fois),max(fois)+1,1) INTO @fois FROM _event.insert_event;
/*Insertion des données dans la table*/
INSERT INTO _event.insert_event (moment, fois, action) VALUES (now(), @fois, concat(‘Execution ‘, @fois,  » de l’event »));
END €€
mysql> DELIMITER ;

Créer une vue matérialisée

Le concept de vue matérialisée n’est pas implémenté dans MySQL. Une vue matérialisée est un « snapshot ». Ce type de vue permet de stocker le résultat d’une requête, contrairement aux vues classiques qui elles, ne stockent que la définition de la requête. Les vues matérialisées ne réexecutent donc pas la requête à chaque interrogation. Par contre la gestion de la fraîcheur des données est à la charge de la vue.

mysql> DELIMITER €€
mysql> CREATE EVENT `_event`.`vue_materialisee`
ON SCHEDULE EVERY 10 SECOND
STARTS ’2008-03-11 16:32:34′
ON COMPLETION NOT PRESERVE ENABLE
DO
BEGIN
/*Effacement de la table _event.City_fra */
TRUNCATE TABLE _event.City_fra;
/*Remplassiage de la table _event.City_fra à partir de la table _event.City*/
INSERT INTO _event.City_fra
SELECT * FROM _event.City WHERE CountryCode=’FRA’
ORDER BY name;
END €€
mysql> DELIMITER ;

A noter que les commandes TRUNCATE et INSERT ne sont pas atomiques. Il est donc possible qu’une interrogation sur la table _event.City_fra ne renvoie pas de résultat.

(à suivre… event scheduler: Appel d’une procédure stockée)

Tags: , ,