Archive pour la catégorie 'MySQL'

“Les index MySQL” : la série dont vous êtes le héros

Thursday 5 June 2008

Un titre sans doute bien étrange pour certains et qui rappelera des souvenirs à d’autres, surtout à ceux qui ont déjà parcouru un de ces livres “dont vous êtes le héros“…

Afin que les choses soient claires pour tout le monde, je vous propose en fait de participer à la conception du sommaire de la future série d’articles sur les index qui sera publiée prochainement sur dbnewz.

L’indexation est en effet un thème auquel il faut absolument s’intéresser, tout d’abord pour éviter des catastrophes et bien sûr pour optimiser les performances !

(more…)

MySQL Cluster fait bande à part

Wednesday 28 May 2008

Kaj Arno annonce qu’à partir de la version 5.1.25 de MySQL Server, les binaires de MySQL Cluster ne feront plus parti du package. Pas de panique, c’est en fait une nouvelle branche qui est créee, le MySQL Cluster fera donc l’objet d’un package séparé (les versions sont pour l’instant identiques mais l’espace dédié est déjà crée).

A l’origine de cette division, des rythmes de développement différents entre MySQL Server et MySQL Cluster, mais aussi des retours de la part des utilisateurs du cluster indiquant que ces derniers sont davantage concernés par les derniers développements du MySQL Cluster plutôt que par ceux du MySQL Server. Cette séparation devrait donc permettre aux nouvelles versions de MySQL Cluster d’être publiées plus rapidement.

Jeremy Cole apporte son grain de sel à cette annonce et souligne que cette séparation dans les packages peut également être percue comme un “aveu” que le système actuel permettant à MySQL d’accueillir des moteurs “plugable” ne tient peut-être pas toutes ses promesses… Ce que reconnaît à demi-mot Stewart Smith (MySQL software engineer sur le cluster) dans les commentaires : l’opération n’est apparemment pas simple, les moteurs de stockage (NDB compris) effectuant selon lui plus de tâches qu’ils ne devraient.

High Performance MySQL 2nd edition, pour bientôt… ou pas.

Thursday 22 May 2008

Deux mauvaises nouvelles de la part de O’reilly ce mois-ci :

- J’attendais mon édition de High Performance MySQL 2nd edition pour la semaine prochaine, le 1er juin d’après le mail récapitulatif de précommande reçu fin avril, mais c’est la date du 1er juillet qui apparaît désormais sur la fiche d’Amazon France… Le .com indique en revanche la date du 19 juin, un peu flou tout ça.
Ceux qui comme moi sont impatients de découvrir cette seconde édition (l’ancienne datait de 2004 et était déjà excellente) devront donc patienter encore un peu.
D’ici là libre à vous de la précommander ou d’attendre mon verdict… qui ne pèsera sans doute pas grand chose face à la qualité des auteurs présents : les experts du fameux “mysqlperformance blog” (Baron Schwartz, Peter Zaitsev, Vadim Tkachenko), mais aussi Jeremy Zawodny (de la précédente édition), Arjen Lentz… Du beau linge !

- La véritable mauvaise nouvelle est ailleurs, il s’agit bien sûr de la fermeture de la filiale française d’O'Reilly survenue au début du mois, un évènement pas si hors-sujet sur un blog comme celui-ci : qui n’a jamais eu entre les mains un de leurs ouvrages ?
En dépit de la qualité reconnue de ces derniers, la maison mère a fini par couper les subventions : les faits sont relatés sur immateriel.fr (billet du 9 mai), un blog tenu par l’ancienne équipe semble-t-il. Souhaitons leur tout le succès qu’ils méritent dans leurs prochaines aventures.

Choisir l’implémentation de ses index : “B-TREE” ou “HASH”, quelles différences ?

Monday 19 May 2008

Préambule technique à une série de futurs articles, je ne vous en dis pas plus, l’épisode du jour a pour point de départ un moteur de stockage MySQL avec à la clé la possibilité, ou pas, de définir l’implémentation de ses index : B-TREE ou HASH.

Ce choix n’est en effet pas toujours disponible, c’est même plutôt rare puisque seul le moteur de stockage MEMORY vous permet depuis la version 4.1 de MySQL, d’effectuer ce choix. Nous ne parlerons pas ici du MySQL Cluster et de son moteur NDB qui sera abordé spécifiquement dans un autre épisode.

Pourquoi alors se soucier de ce type d’implémentation si seul le moteur MEMORY offre la possibilité de choisir ?
- MyISAM et InnoDB pourraient à l’avenir proposer ce choix.
- Afin de comprendre plus finement comment fonctionnent les index que vous utilisez tous les jours, se pencher sur la façon dont ils sont implémentés permet de mieux appréhender certains résultats.

(more…)

Les SSD (Solid-State Drive) : une technologie d’avenir pour nos SGBD ?

Tuesday 13 May 2008

Modifier une petite ligne dans le fichier de configuration de son SGBD et obtenir les performances souhaitées, c’est possible… si vous êtes chanceux. La performance globale d’un SGBD repose en effet sur un ensemble de briques, logicielles ou matérielles, qui une fois empilées correctement forment un ensemble cohérent (et performant) : la seule étape du fichier de configuration ne suffit pas.

Dans un de ses récents billets, Matt Yonkovit a déclenché une série de réflexions intéressantes à propos de l’impact des performances des disques durs sur l’ensemble du SGBD.

Selon lui, les problèmes de performance au sein d’un SGBD sont la plupart du temps relatifs aux disques durs et notamment au nombre d’I/O (Entrées/Sorties) qu’ils sont capables de traiter par seconde (IOPS).

Comparés aux processeurs actuels capables de prendre plusieurs milliards de décisions par seconde (Ghz) et aux mémoires vives dont les temps d’accès se mesurent en nanosecondes, le temps d’accès d’un disque dur se compte encore en millisecondes… Difficile de lutter contre des éléments purement électroniques quand on est constitué d’éléments mécaniques en mouvement (têtes de lecture, plateaux…).

(more…)

La MySQL UC 2008 comme si vous y étiez

Sunday 4 May 2008

Bonjour à tous, premier post sur dbnewz, c’est donc l’occasion de me présenter.
En quelques mots, je suis d’abord un passionné d’internet. J’ai la chance de travailler dans le domaine qui me passionne depuis 2000. D’abord ingénieur développement puis rédacteur/auteur et à nouveau ingénieur développement, c’est dans la peau d’un “ingénieur bases de données” que j’ai assisté à la dernière MySQL Conference. Pour la petite histoire, c’est lors d’un “MySQL Quizz Show” pas avare en soda et pop-corn, que le père de dbnewz aka “pébé” m’a proposé de participer à ce blog. Vous savez tout, ou presque : la rubrique “à propos” a également été mis à jour.

Les présentations étant faites, retour au sujet de ce premier billet : la récente MySQL Conference. Si vous n’avez pas eu la chance d’y assister (elle se tenait du 14 au 18 avril dernier à Santa Clara), surtout ne ratez pas les présentations (pdf, ppt..) des différents conférenciers désormais disponibles sur le web. Certes ces slides ne compenseront pas l’aspect humain qui fait le charme d’une telle conférence (nouveaux contacts, retrouvailles…) mais techniquement au moins, vous serez servis.
Au menu des dizaines de présentations et de retours d’expérience sur l’état de l’art de MySQL. Les thèmes abordés sont nombreux : la réplication, les moteurs de demain (PBXT, Maria), la gestion de la montée en charge, la haute disponibilité, la technologie cluster, le benchmarking mais aussi des “best practices” sur les stratégies de backup, de sécurité…
Certaines présentations sont également disponibles en vidéos ce qui permet de se rapprocher encore davantage de ce qui se passait à Santa Clara, et de donner envie à ceux qui ne l’ont pas encore prévu de s’inscrire pour l’année prochaine ?

Les liens :
Outre le site officiel qui recense les présentations disponibles par ordre alphabétique, rendez-vous également sur le wiki de la conférence pour y trouver un découpage par journées ainsi que certaines vidéos et de nombreuses photos.

Souvenirs d’une très bonne soirée…

Thursday 1 May 2008

En regardant le blog de Colin, je ne peux m’empecher de penser à ces très bons moments passés à Heidelberg…
Voilà la photo:
Meeting of the minds...

Mardi 15/04/08 - Les Keynotes

Tuesday 15 April 2008

3 keynotes ce matin:

  • State of MySQL MÃ¥rten Mickos (MySQL), Rich Green (Sun Microsystems, Inc)
  • Open Source: The Heart of the Network Economy Jonathan Schwartz (Sun Microsystems)
  • A Head in the Cloud - The Power of Infrastructure as a Service Werner Vogels (Amazon.com)

C’est la 1er fois que j’assiste à une présentation de Mr Schwartz et je dois dire que j’ai bien apprécié… C’est officiellement parti… :) les sessions commencent!

MySQL UC 2008

Monday 14 April 2008

ET C’EST PARTI pour l’édition 2008 de la MySQL UC. Quel plaisir de retrouver les membres de la communauté! Le premier jour est consacré aux tutoriaux. J’ai choisi de suivre:

  • Building Scalable & High Performance Datamarts with MySQL
  • SQL Antipatterns

Nous allons parler de Datamarts toute la matinée, pour l’instant nous en sommes à la partie technique… j’attends la partie consacrée à MySQL. :)

Some thoughts on Agile Data Development

Tuesday 11 December 2007

Many things in the current IT world are based around hard facts, solid experience and studied techniques. Unfortunately this tends not to be the case when it comes to application developers making database decisions. This is not a criticism of application developers per se, their expertise lies in the app technology, but more a problem with development process and a misunderstanding of the role of the database as the underpinnings of data oriented (as opposed to object oriented) application architecture.The general process of modern agile application development proceeds along fairly set lines of iterative feature based and hopefully test driven development. This approach of getting something working with a suite of tests around it which enable rapid refactoring and rapid development run counter to most Big Design Up Front (BDUF) methodologies, most notably the much maligned waterfall model and the general approach taken to most database driven methods. To truly be an agile database developer in this brave new development world implies a level of clairvoyance beyond most of us, and requires an understanding of future application direction and projected data growth which is beyond that which can be expected of application developers and their product managers. To ignore this difference in requirements of the agile developer and the data modeller/DBA will invariably lead to scalability and performance issues as the project moves forward through its multiple iterations.

We are not saying here that the focus and philosophy of the agile development team and that of the database designer/administrator are incompatible, more that there is a difference in the needs and aims of the two groups and that this difference needs to be recognised as such. This is not always the case in the necessary drive to shift development paradigms. The larger the project, the more apparent this becomes. Changing code is not the same as changing data. A database at the core of a complex multi tier application will usually be supporting many different access paths, from the OLTP requirements of a running user driven application to the reporting requirements of management and maintenance as well as a suite of custom administration interfaces, data feeds in and out as well as the requirements for failover and disaster recovery, and refactoring, recoding and changing requirements is not as simple as that of single parts of the overall codebase.

While there are database methodologies to support agile development, generally the current processes have database design/deployment/administration as worrying separate, and the realms of all the pieces of getting a product from the back of a restaurant napkin to global server deployment need to incorporate the whole iterative development process. We should not be in the position of giving the DBAs the code to deploy when the iterative cycle ends. This is simply unacceptable from an architecture and process point of view. What we have here is a series of failures in using the best people for the job.

As mentioned above, application developers are not generally the best people to be structuring and modelling the data. Data structures, no matter how well abstracted, are fundamentally tied to the underlying technology. Sensible design and architectural decisions can only happen if the data specialists are incorporated into the agile development teams themselves. We can, and need, separate database administration teams, but also, these teams must be part of, or have significant input into the development process, else all roads lead to project misery, to poor use of software/hardware and the continuation of the ignorance loop, as mistakes in data structure and design are rarely fed back up to the original designers. Adding features to code and refactoring as we go works for code, it rarely works in practice for data. It is not so much the new features that is the problem, it the short-termism which the process unconsciously encourages which lies at the heart of the problem. Large data volumes require a degree of foward planning that is often lacking from our short Sprint focused design decisions.

Ignoring data modelling disasters, most projects start off with a fairly well understood and structurally sensible data structure (bear with me here) for the first few iterations of the system. These first set of requirements generally have the data model supporting them happily. The issues only usually really arise as the codebase and feature list grows, along with the growing datasets. Data structures that support smaller volumes of data do not necessarily scale linearly and a lack of understanding of the changing nature of the system will cause problems for the future of the application due to information not flowing back from the DBAs about the current state of the system, as well as the new demands being placed on it from the continuous feature development of the agile processes. Changing requirements are all part of the agile world, and are part of the power of this type of development, and additional features pose less of a problem than feature modifications, but the focus of short iterative steps can easily lead to a loss of focus on the greater need of the ability of the database and the datamodel itself to support the changing application.

In conclusion, for our agile data development processes to succeed, we need to use the skills where they are best suited. Database abstraction layers need to be tested by the database specialists, not in isolation, but within the application context itself, and any fundamental design decisions should be made by the people who understand the systems involved, at all levels.