News MYSQL

le 13/05/2008 à 23:24
MySQL et les vues matérialisées
Les vues matérialisées sont des vues SQL, qui sont stockées physiquement par la base. Les vues actuelles sont des vues dynamiques, c'est à dire qu'elles se basent sur une exécution de la requête sous-jacente à chaque utilisation. Si les données des tables ne changent pas trop souvent, avoir un système de cache donne une belle accélération.

Les vues matérialisées sont disponibles chez Oracle et DB2. Pour MySQL, rien de standard, mais il doit être possible de s'en sortir avec des tables en mémoire, et le programmateur d'événements.

- MySQL and Materialized Views
- Indexed Views Basics in SQL Server 2000
Outre ces mécanismes [NDJ : indexation et caches], la technologie SSD pourrait bien à lavenir changer la donne.

Les SSD, littéralement Solid-State Drives (ou Disk par abus de langage), ne sont pas des disques mais des unités de stockage constituées de mémoire flash (persistante).

Au vu des benchmarks les concernant, il ya fort à parier que les SSD seront de plus en plus dactualité dans les mois qui viennent.

- Les SSD (Solid-State Drive) : une technologie d'avenir pour nos SGBD ?
- Final Mtron SSD, MySQL, MFT Benchmarks and more!
- Common Performance Mistakes: Disk
Lorsque MySQL envisageait d'avoir des procédures stockées, la rumeur circulait que PHP pourrait être le langage adopté. Ce ne fut pas le cas, mais l'idée de pouvoir utiliser n'importe quel langage de programmation comme procédure stockée est restée. Résultat : c'est fait.

Il existe un plug-in MySQL udfng qui accepte du code en C, Java, LegacyUDF (vieilles UDF), Perl et XML-RPC. Eric Herman et Antony Curtis cherchent d'ailleurs les prochaines plates-formes à ajouter. PHP ! PHP !

- ProjectPage External Language Stored Procedures
- External Language Stored Procedures slides from Users Conference 2008
- External Language Stored Procedures slides from Users Conference 2008 (PDF)
le 11/05/2008 à 23:05
Myriades de proxy pour MySQL
Brian Aker a cessé de compter le nombre de proxy pour MySQL qu'il a repéré : il y a SQL Relay, qui remonte à quelques années, MySQL Proxy, de Jan Kneschke. En fait, il y en a encore 4 autres différents. Lequel est le meilleur, se demande Brian ?

- Proxy, Proxy, on the Wall, who is the fairest of them all...
- MySQL Proxy site
- SQLrelay
- SpockProxy
Vous pensiez peut-être que la conception était la seule mission que MySQL Workbench pouvait remplir, et c'est certainement le coeur de son travail. Mais une des raisons qui font que j'utilise un assistant de modélisation aussi souvent n'est pas dans ses capacités à produire des liens logiques, mais pour ce qu'il peut faire pour moi dans le cadre des évolutions de versions.

MySQL Workbench contient un grand nombre de contrôle de changements que vous n'aviez peut-être pas repéré à première vue, alors laissez moi vous montrer comment il peut gérer les altérations de votre modèle de données.

- MySQL Workbench for Database Change Management
- MySQL Workbench site
Blob streaming est une fonctionnalité du moteur MySQL PBXT de primebase qui va révolutionner l'utilisation des blob : désormais, le contenu des blobs est stocké directement dans le système de fichiers, et la lecture de ces blob se fait directement vers le client, sans passer par le moteur MySQL, ni le moteur de table. Au lieu de lire le blob dans le fichier de données, le charger en mémoire, puis l'envoyer à PHP, qui lui-même, alloue la mémoire pour le stocker temporairement, puis l'envoie au navigateur, c'est un raccourci qui est utilisé : le contenu est géré dans la table (ses metadonnées), mais stocké sur le système de fichiers, et accessible directement. Au passage, le stockage d'images en base de données devient raisonnable en termes de performances.

PrimeBase a 2 projets Google cette année : une extension PHP et le support dans phpMyAdmin. Espérons que cela arrive rapidement !

- Media Blob Streaming getting a Google boost
- Media Blob Streaming
- BLOB Streaming Support for phpMyAdmin
- Streaming Enabled MySQL Driver for PHP
- PrimeBase
le 08/05/2008 à 22:52
Réplication retardée
Lorsque la réplication retarde de 3 secondes, cela a un impact sur la cohérence d'un serveur Web. Mais alors, quel est le fou qui veut pouvoir configurer 30 minutes de retard sur une réplication ?

En fait, la réplication permet de protéger un serveur contre les crash : si le serveur maître plante, l'esclave dispose déjà des commandes nécessaires pour proposer une sauvegarde de secours, jusqu'au moment du crash. Mais si c'est une erreur d'administration, où la commande DROP TABLE n'est pas munie d'une condition WHERE, alors votre bévue sera immédiatement répercutée sur l'esclave et donc, la sauvegarde. La réplication protège contre les crash, mais pas contre les bourdes.

La réplication retardée, de 30 minutes par défaut, peut vous aider dans ce genre de situations.

- Time delayed replication
- MySQL: Time Delayed Replication
le 06/05/2008 à 21:13
Programmation créative avec MySQL
Guiseppe Maxia publie sa conférence de CommunityOne, consacrée à la programmation créative en MySQL. C'est un ensemble de trucs et d'utilisation de différentes tables et technologies de MySQL, très habiles.

Il y a par exemple les doubles insertions : il suffit de faire un moteur blackhole, et d'ajouter un trigger qui réalise les insertions dans deux autres tables. Il y a aussi les tables fédérées ou les vues.

La conférence fait aussi une liste sans concession des limitations de certaines technologies actuelles. J'aurai aimé le voir en conférence, car Guiseppe a une expérience SQL incroyable.

- Creative programming with MySQL
L'un des problèmes particuliers du partitionnement, notamment lorsque les partitions sont séparées sur plusieurs serveurs, est d'identifier un système pour pouvoir répartir ses tables. Parmi les solutions, il y a le mysql proxy, qui se révèle capable d'orienter les requêtes vers les bons serveurs, voire les bons shards.
C'est sur cette base que se sont lancé les auteurs du projet HSCALE : un script LUA du proxy MySQL permet d'envoyer les bonnes requêtes vers les bonnes partitions, et bientôt, les bons serveurs.

- HSCALE - Transparent MySQL Partitioning
- Benchmark MySQL Proxy and HSCALE
- Introduction à HSCALE
- site MySQL Proxy
- HiveDB
MySQL Online Backup est un projet de sauvegarde en fonctionnement d'un serveur MySQL. Il s'agit d'un client MySQL, qui exporte les données sans bloquer l'ensemble des autres clients, ou d'imposer un temps d'arrêt au serveur. Le MySQL Online Backup exporte aussi les données statistiques de la table (celles de SHOW TABLE STATUS), pour pouvoir y accéder indépendamment dans la sauvegarde.

Des pilotes spécifiques sont prévus pour toutes les tables, et pour le moment, c'est un pilote bloquant qui est disponible : ce sont donc principalement les structures (tables, bases, vues, procédures, etc) qui sont sauvées, et pas les données. Cela arrivera avec les versions 6.0.6 de MySQL et ultérieur.

En attendant, on peut utiliser de nouvelles commandes SQL en ligne, et cela va changer la vie à beaucoup de monde :

BACKUP DATABASE sakila TO 'sakila-backup.sql';
SELECT * FROM mysql.online_backup WHERE backup_id = 2;
RESTORE FROM 'sakila-backup.sql';

- MySQL Online Backup source
- MySQL Online Backup
LoadingChargement en cours