News MYSQL

le 21/08/2008 à 22:45
MySQL 6.0.6 publié
MySQL 6.0.6, avec la dernière version de Falcon et Maria, mais sans la table FEDERATED, est disponible au téléchargement. MySQL 6.0 est la version de développement actuelle, et intègre les dernières nouveautés, comme le moteur de sauvegarde.

MySQL 6.0.6 apporte pas moins de 6 changements incompatibles

avec les versions prédécentes :
- La variable mysql.online_backup est renommée drivers
- La méthode de préparation des commandes a été modifiée
- CHECK TABLE ... FOR UPGRADE a été modifié
- Des droits ont été modifié pour utiliser des commandes d'administration
- Certaines collations voient leurs tris changer (le chinois, notamment)
- La normalisation des dossiers est plus stricte

- MySQL 6.0 téléchargement
- MySQL 6.0.6 news
- Maria storage engine
Tout d'abord, un rappel : on peut générer des requêtes SQL dans MySQL, et les exécuter, un peu comme le fait eval() en PHP.

Voici un exemple qui vous montre une requête SQL dynamique. 
mysql> set @sql = "select 'bonjour';";
Query OK, 0 rows affected (1.27 sec)

mysql> PREPARE insertStmt FROM @sql;
Query OK, 0 rows affected (0.92 sec)

Statement prepared

mysql> EXECUTE insertStmt;
+---------+
| bonjour |
+---------+
| bonjour |
+---------+
1 row in set (0.00 sec)

Notez bien que cette fonctionnalité peut être dévastatrice en cas d'injection SQL. Les performances ne sont pas exceptionnelles (la compilation SQL peut être assez lente), mais sera sûrement indolore pour une utilisation interactive.

La variable @sql peut être constituée de n'importe quelle source : ici c'est une chaîne littérale, mais cela peut être le contenu d'une table, une liste de table, ou autre résultat d'expression.

C'est à cela que se livre le tutoriel de SiteCrafting : comment faire pour analyser systématiquement une base de données, et repérer toutes les occurrences d'une chaîne ? Dans toutes les tables d'une base, et toutes les colonnes de chaque table.

La solution se base sur le rappel ci-dessus : information_schema donne la liste des colonnes d'une base qui peut être une chaîne, et une procédure stockée se charge de produire les commandes SQL pour chercher et remplacer dans chaque cas.

- Finding the Needle in your MySQL Haystack
- SQL Syntax for Prepared Statements
Il n'y pas pas grand moyen pour connaître le type que MySQL va utiliser pour représenter le résultat d'une expression. Baron Schwartz en a trouvé un : créer une table, et noter le type qui a été attribué par MySQL à la colonne qui contiendra le résultat prévu.
Ce n'est pas très élégant, mais ça marche.

- How to emulate the TYPEOF() function in MySQL
MySQL est composé de deux niveaux : le moteur SQL, qui gère les requêtes, et le moteur de stockage, qui assure la persistance des données.
MyISAM et InnoDB sont les moteurs les plus connus, mais il y en a bien d'autres, généralistes ou spécialisés.

Peter Zaitsev fait le point sur tous ces moteurs, leur utilité et leur degré de maturité. Vous retrouverez Maria, Falcon, InnoDB, MyISAM, PBXT, Solidb, memory, federated, blackhole et archive. Il y a aussi des comparatifs de performances.

- The wonderful world of Storage engines
le 11/08/2008 à 21:13
Supprimer les vieux doublons
J'ai été approché par un ami qui souhaitait ajouter une contrainte UNIQUE sur des données, et supprimer les doublons dans une table, en conservant uniquement les valeurs récentes. Il avait essayer plusieurs approches avec ALTER TABLE, mais avait rencontré des problèmes avec les anciennes valeurs.

Pour l'aider, je me suis basé sur ses premières pistes, puis j'ai pensé que je pourrais publier toutes les solutions ici.

Au passage, un rappel : ALTER TABLE dispose d'une clause ORDER BY qui permet de classer les données, et IGNORE qui permet de traiter les erreurs de conversions de tables en les ignorant (c'est à dire, en supprimant les lignes qui sont associées).

- Adding a Unique Constraint on a Table with Duplicate Data
- ALTER TABLE
Il est fréquent d'avoir à stocker des données hiérarchisées comme une liste de catégories dans une base de données. Malheureusement, les bases de données relationnelles comme MySQL ne proposent pas de fonctions spécifiques pour ce type de structure. Je vous propose d'examiner, à travers un exemple, les différentes solutions qui sont disponibles.

- Sooka Blog
le 09/08/2008 à 21:04
MySQL 5.0.67 publié
MySQL 5.0.67, la dernière version du système de basede données Open Source, a été publiée. Cette édition communauté est disponible en format source et binaire, pour de nombreuses plate-forme sur le site de téléchargement.

MySQL 5.0 est la version GA actuelle de MySQL, et cela  faisait un an que la version communauté n'avait pas été publiée officiellement. Il y a donc un effet de rattrapage dans

cette version, avec plusieurs changement de sécurité et de fonctionnalités. 

MySQL 5.1 devrait sortir en version GA prochainement, et ne s'encombre pas du modèle communauté/professionnel de la 5.0.

Drizzle a été lancé sous forme de fork de MySQL.

- le plugin_dir qui gère la source des fonctions utilisateurs a été rapporté de MySQL 5.1 pour améliorer la sécurité.
- Le moteur FEDERATED est désactivé par défaut.
- NDB_LE_MemoryUsage.page_size_kb a été renommé
- CHECK TABLE ,,, FOR UPGRADE et REPAIR TABLE ont changé leur gestion des fichiers .frm incompatibles.
- Les tables MyISAM utilisant les clauses DATA DIRECTORY et INDEX DIRECTORY avait une faille de sécurité.
- Trois failles dans yaSSL ont été découvertes
- ALTER VIEW conservait les droits initiaux de son créateur.
- Les tables fédérées pouvaient crasher le serveur client en renvoyant moins de colonnes de demandé.
- On pouvait crasher MySQL en lui faisant produire un message d'erreur très grand.
- le mode ONLY_FULL_GROUP_BY ne rejetait pas les bonnes requêtes SQL
- Un patch de MySQL 5.0.50 a été annulé, pour cause de nouveaux problèmes
- Plusieurs fonctions qui conservent le type ne le faisaient pas : LEAST, GREATEST, COALESCE, IFNULL, IF.
- Il était possible de faire lire deux fois le même fichier de configuration au démarrage
- AUTO_INCREMENT et NDB avait un bug
- Replication : lorsque le maître crashait durant une transaction d'UPDATE, cela bloquait le serveur.
- Les fonctions de dates comme FRAC_SECOND ont changé de nom.
- Le serveur ne signale plus la suppression des espaces surnuméraires.
- Le log de réplication pouvait être corrompu par des problèmes de réseau.

- MySQL 5.0
- Téléchargement MySQL 5.0
- MySQL 5.0.67
- Drizzle
Inforworld remet les prix des meilleures applications Open Source pour 2008. Les applications sont réparties en huit catégories : applications d'entreprise, plate-forme, collaboration, développement, productivité, réseau, sécurité, stockage.

MySQL gagne le prix de la meilleure base de données, tandis que PHP est représenté par une impressionnante liste d'applications : SugarCRM, WordPress, phpMyAdmin, MediaWiki, dotProject et Magento.

Il y a aussi la catégorie sécurité qui propose plusieurs outils très intéressants pour les tests et la détection d'intrusion... à tester !

- InfoWorld announces our 2008 Best of Open Source Awards
le 05/08/2008 à 22:19
Drizzle : MySQL au régime
Monty Widenius et Brian Aker lancent actuellement un projet baptisé 'Drizzle' (bruine, en anglais) : c'est un fork (le troisième?) de MySQL, qui a pour but de réduire les fonctionnalités proposées par la base à un jeu d'instructions réduit, et d'impliquer la communauté dans le processus de développement.

Le projet, disponible d'ici 3 ou 4 mois, entend se passer des fonctionnalités encombrantes (comme les index full text ou géographiques), se concentrer sur les bugs critiques et pratiquer une refactorisation du code. Les fonctionnalités seront extraites du coeur et reviendront comme des interfaces modulaires. Avec un coeur allégé, plus moderne et plus rapide, il deviendra plus facile de comparer l'évolution du serveur MySQL sur différentes plate-formes, et appliquer des corrections.

Le plus importants, dans ce projet, est le retour de la communauté dans le coeur du développement : nombre de contributions ont été oubliées dans les années précédentes, et Drizzle demandera les contributions de chacun. La direction de Sun voit d'un bon oeil le lancement de ce projet, qui a été rendue possible par l'acquisition de MySQL par Sun. Il semble que les techniciens reprennent l'initiative et la possession du code, face aux objectifs commerciaux.

Un développement à suivre, dans les projets mois.

- Drizzle, I welcome thee
- More Drizzle thoughts
- What if
- Drizzle, Clouds, What if ?
- Drizzle, sur Launchpad
LoadingChargement en cours