Utiliser XML avec MySQL 5.1 (part 3/5)

août 10, 2009
Tags: ,

(<- précédent)

Interroger un flux XML avec Xpath

L’emploi de XML ne présenterait pas beaucoup d’intérêt sans la possibilité de pouvoir interroger sa structure pour accéder à une information particulière : le langage XPath répond à cette attente et est (en partie du moins) aujourd’hui intégré à MySQL. Mais avant de voir comment utiliser XPath à travers MySQL, il est nécessaire de se pencher sur la syntaxe de ses expressions, dont la construction la plus importante est sans conteste le chemin de localisation (location path).

Le chemin de localisation

De manière similaire à la navigation au sein d’un système de fichiers, un chemin de localisation se compose d’une succession d’étapes, séparées les unes des autres par un /. La description d’un chemin peut se faire de façon absolue ou relative, auquel cas un nœud contexte est utilisé afin de déterminer à partir de quel endroit doit s’effectuer la recherche.

Chaque étape d’un chemin de localisation peut se diviser en trois parties (axe de recherche, test du nœud et ensemble de prédicats), réunies sous la forme suivante :

Axis::Node-Test[Predicate1][Predicate2]…

L’axe de recherche (Axis)

L’axe de recherche permet de spécifier dans quel sens orienter la sélection des nœuds que l’on veut récupérer par rapport au nœud courant. Ainsi, il est possible de choisir de chercher dans l’ensemble des nœuds des descendants, plutôt que de se limiter (par défaut) aux nœuds directement enfants.

Il existe une dizaine d’axes de recherche, dont les plus usités sont :

  • child, qui limite à l’exploration des nœuds éléments directement enfants du nœud contexte,
  • descendant, qui englobe, en plus des nœuds enfants, tous les éléments descendants,
  • descendant-or-self, identique à descendant avec en plus le nœud contexte inclus,
  • ancestor, qui contient tous les nœuds ancêtres,
  • ancestor-or-self, identique à ancestor avec en plus le nœud contexte,
  • following-sibling, qui fait référence aux éléments frères suivants,
  • preceding-sibling, qui fait référence aux éléments frères précédents,
  • attribute, qui se cantonne à la recherche dans les nœuds attributs.

Le test du nœud (Node-Test)

Généralement, le test repose sur le nom du nœud que l’on veut retrouver. Cependant, XPath ne se limite pas à la recherche de simples éléments, mais à tous types de nœuds. Il est donc ainsi possible de préciser le type de nœud que l’on veut atteindre grâce aux fonctions suivantes :

  • node(), qui valide tous types de nœuds,
  • text(), pour les nœuds texte,
  • comment(), pour les commentaires,
  • processing-instruction(), pour les instructions de traitements.

Les prédicats (Predicates)

Les prédicats, délimités par un « [«  et un « ]« , permettent de filtrer plus finement l’ensemble des nœuds retrouvés par le chemin de localisation, en évaluant l’expression qu’ils contiennent et en ne retenant que les nœuds qui la valident. Plusieurs prédicats peuvent se suivre, filtrant ainsi un peu plus précisément l’ensemble des nœuds à garder.

Les expressions mises en place dans les prédicats peuvent, en plus des quelques fonctions existantes et des opérateurs habituels, exploiter des ensembles de nœuds (node-sets) récupérés grâce à… des chemins de localisation !

Ainsi, il est possible d’adapter la validité d’un chemin de localisation en fonction même de tout élément de l’arborescence du flux XML.

Par exemple, si l’on considère l’expression XPath suivante :

//article[@rubrique = /site/menu/rubrique[2]]

On récupère tous les articles qui possèdent un attribut rubrique ayant la même valeur que la deuxième rubrique du menu du site.

Cet autre exemple :

//article[not( @rubrique = preceding-sibling::article/@rubrique)]

permet de ne sélectionner que les articles qui n’ont pas leur attribut rubrique égal à l’attribut rubrique d’un article précédent. En d’autres termes, on ne récupère ici que le premier article de chaque rubrique.

Quelques raccourcis

Afin de faciliter la lecture et l’écriture de requêtes XPath, il existe bien heureusement un ensemble de raccourcis pratiques:

Raccourcis Xpath

self::node() .
parent::node() ..
attribute::name @name
//descendant-or-self::node()/ //
element[position() = X] element[X]

(à suivre… utiliser XML avec MySQL 5.1 : Les fonctionnalités Xpath de MySQL 5)

Commentaires fermés sur Utiliser XML avec MySQL 5.1 (part 3/5)

Bruxelles mène son enquête sur le rachat de Sun par Oracle

août 5, 2009
Tags: , ,

Après l’annonce du rachat de Sun pour 7,4 milliards de dollars formulée par Oracle au mois d’avril dernier, les autorités antitrust continuent d’analyser les détails de cette acquisition. Ainsi, le 29 juin dernier, aux Etats-Unis, le Département de la Justice s’est penché sur le dossier afin de déterminer si cet accord ne porte pas préjudice à la concurrence sur le marché nord-américain. Les autorités ont ainsi fait remarquer certains aspects flous concernant les licences de droit de la technologie Java créée par Sun et installée sur 800 millions d’ordinateurs à travers le monde.

De son côté la Commission Européenne a récemment été invitée à donner son approbation sur cette acquisition. Les autorités européennes bénéficient d’une période de 25 jours pour donner leur feu vert à cette initiative. Dans le cas contraire, elle pourra demander une enquête plus approfondie de 90 jours.

Bjorn Schotte, fondateur de la société Mayflower GmbH, annonce en effet avoir reçu un email de Vera Pozzato, commissaire à Bruxelles, lui demandant de lui retourner plusieurs informations de contact de sociétés travaillant sur MySQL et d’autres produits Open Source et pouvant apporter leur assistance dans cette enquête.

Par la suite, la Commission devrait leur retourner un questionnaire afin de déterminer de manière plus concrète les éventuels enjeux de cette fusion ou les cas problématiques de monopole.

A suivre…

http://www.neteco.com/292038-bruxelles-antitrust-enquete-rachat-sun-oracle.html

Commentaires fermés sur Bruxelles mène son enquête sur le rachat de Sun par Oracle

Benchmark MySQL 5.4

août 3, 2009

Dimitri KRAVTCHUK nous démontre, avec une batterie de tests, les évolutions en matière de performance apportées par MySQL 5.4:

  • Huge performance improvement on InnoDB engine!
  • MySQL 5.4.0 /Perf Version seems to be the most performant InnoDB implementation for the moment! (only except on the Read-Only workload @8cores where InnoDB plugin-1.0.3 is leading!)
  • MySQL is outperforming PostgreSQL on my tests now!
  • Regarding scalability, get a look at 8 vs 16 cores graphs, and you’ll see it’s the big step forward – no performance degradation on 16 cores is a very positive sign! and there is only 3 months distance between tests!
  • LOCK_open needs a fix ASAP! 🙂
  • Analyzing my test results, it’s too early to say InnoDB is scaling up to 16 cores, but the test results on 16 cores are already outperforming 8 cores, and I’m absolutely sure now – very quickly it’ll perform even better! so see you soon! :-))

http://dimitrik.free.fr/db_STRESS_MySQL_540_and_others_Apr2009.html

3

Rasmus Lerdorf (créateur de PHP) quitte Yahoo! ?

juillet 29, 2009

L’éditeur de logiciels Microsoft et le groupe Internet Yahoo! ont annoncé, mercredi 29 juillet, un accord de partenariat destiné à mieux concurrencer Google dans la recherche sur Internet, prévoyant de marier la technologie Microsoft à la force de vente publicitaire de Yahoo! (suite: lemonde.fr)

Un effet collatéral de ce rapprochement est le possible départ de Rasmus Lerdorf de Yahoo!:

http://twitter.com/rasmus/status/2908526145

http://blog.magicaltux.net/2009/07/29/yahoo-going-closer-to-microsoft-rasmus-reaction/

1

Utiliser XML avec MySQL 5.1 (part 2/5)

juillet 29, 2009
Tags: ,

(<- précédent)

Insérer du XML dans MySQL

Un fichier XML, n’est finalement qu’un fichier contenant du texte et insérer du texte dans un SGBDR, est loin d’être la chose la plus difficile. Une simple requête INSERT fait l’affaire. Cela nous donne quelque chose comme ceci :

INSERT INTO ma_table (champ_texte) VALUES (‘<?xml version= »1.0″?>…’)

Cela dit, si le flux XML est important, cette façon de faire n’est guère pratique. En fait, la méthode la plus simple est d’utiliser la fonction MySQL: LOAD_FILE().

Cette fonction prend en argument un fichier et renvoie son contenu sous la forme d’une chaîne de caractères. A noter que vous devez avoir le droit FILE pour exécuter cette commande, et que le fichier doit se trouver sur la machine hôte (en local):

Insérer un fichier XML dans MySQL

mysql> CREATE DATABASE IF NOT EXISTS xml;
mysql> USE xml;
mysql> CREATE TABLE rss (
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
type CHAR(30) NOT NULL,
flux_rss TEXT )
ENGINE=MyISAM;
mysql> INSERT INTO xml.rss VALUES (NULL, ‘cinema’, LOAD_FILE(‘./cinema.xml’));

Arrêtons nous quelques instants sur la commande LOAD XML qui est apparue avec la version 6 de MySQL (MySQL 6.0.3). Cette commande permet d’importer simplement le contenu d’un fichier XML dans une table. Elle a une syntaxe assez proche de la commande LOAD DATA que vous connaissez peut-être, et qui elle aussi facilite le travail lorsque le besoin d’importer des données d’un fichier texte se fait sentir. L’exemple suivant nous montre un exemple d’utilisation de LOAD XML:

Utilisation de la commande LOAD XML de MySQL 6

mysql6> USE xml;
mysql6> CREATE TABLE consultant (
id_consultant TINYINT UNSIGNED NOT NULL PRIMARY KEY,
nom CHAR(40),
prenom CHAR(40)
)ENGINE=MyISAM;
mysql6> LOAD XML LOCAL INFILE ‘consultant .xml’
INTO TABLE consultant
ROWS IDENTIFIED BY ‘<consultant>’;
mysql6> SELECT * FROM consultant;
+—————+——–+—————–+
| id_consultant | nom | prenom |
+—————+——–+—————–+
| 1 | Dasini | Olivier |
| 2 | Allard | Fabien |
| 3 | Pascal | Borghino |
| 4 | Arnaud | Gadal |
+—————+——–+—————–+

(à suivre… utiliser XML avec MySQL 5.1 : Interroger un flux XML avec Xpath)


Commentaires fermés sur Utiliser XML avec MySQL 5.1 (part 2/5)

SQL Server et MySQL : stars des utilisateurs européens

juillet 27, 2009
Selon la dernière étude d’Evans Data, les développeurs européens auraient abondemment utilisé SQL Server et MySQL. Les deux bases se retrouvent placées dans un mouchoir de poche, alrs qu’Oracle se classe troisième. Plus surprenant, DB2 est devancé par PostGreSQL.

Les développeurs de la zone EMEA ont presque autant utilisé SQL Server que MySQL cette année, révèle le dernier baromètre bi-annuel « EMEA Development Survey 2009 »  d’Evans Data.
Sur 400 développeurs sondés pour l’occasion – qui avaient la possibilité de sélectionner plusieurs base de données -, 48,3% ont cité Microsoft SQL Server comme la base qu’ils ont la plus utilisée dans l’année. MySQL, le fleuron de l’Open Source, a quant à elle récupéré 45,6% des votes.

Troisième du classement, Oracle qui a occupé 25,7% des développeurs EMEA. Mais Evans rappelle que le sondage a été mené alors que le géant du secteur – également n°1 du marché avec plus de 40% de parts de marché – ne s’était pas encore porté acquéreur de Sun, propriétaire de MySQL. Cette concentration pourrait bien changer la donne, semble dire Data Evans, tant l’incertitude de MySQL dans le giron d’Oracle  plane encore dans la communauté Open Source.

evansjpg
Plus surprenant, la position de DB2, la base de données d’IBM qui n’a été sélectionnée que par 7,3% des cas. Derrière PostGreSQL, base de données Open Source qui du coup, s’est accaparé la troisième place des base de données les plus utilisées cette année (avec 12,5% des votes). PostGreSQL, est pressentie comme une alternative à MySQL, si toutefois cette dernière devait revoir son modèle Open Source, pour un modèle alors plus commercial et moins ouvert.

Sur 533 sélections effectuées par le panel de 400 développeurs EMEA, 215 ont ainsi votés pour des bases de données Open Source (où on retrouve MySQL, Ingres, PostgreSQL et Firebird), tandis que 287 pour des bases dits propriétaires

http://www.lemagit.fr/article/microsoft-mysql-sgbd-open-source/3825/1/sql-server-mysql-stars-des-utilisateurs-europeens/

Commentaires fermés sur SQL Server et MySQL : stars des utilisateurs européens

Open Source : le marché français dépasse les 1,5 milliard d’euros

juillet 21, 2009

Présentée lors des Rencontres mondiales du logiciel libre, qui se tenait du 7 au 11 juillet à Nantes, une étude de Pierre Audoin Consultants décrit un marché français du logiciel libre en forte croissance, même si celle-ci tend à ralentir. Selon le cabinet, ce segment pourrait dépasser les 3 milliards d’euros en 2012.

Selon Pierre Audoin Consultants (PAC), le marché de l’Open Source en France pèsera 1,5 milliard d’euros en 2009. Si la croissance ralentit significativement (elle passe de 51,1 % à 38,8 % en un an), elle reste confortable. Le poids grandissant de ce marché expliquant d’ailleurs ce ralentissement, qui devrait se confirmer selon PAC dans les années qui viennent. En 2012, le cabinet d’études prévoit que cette croissance descendra à 20 %, le marché dépassant alors les 3 milliards d’euros annuels (services, abonnements aux offres de support et développements spécifiques).

pac oss1

« Les investissements autour de Linux vont se tasser, ne serait-ce qu’en raison de la généralisation de la virtualisation qui aboutit à l’achat d’un moins grand nombre de serveurs, commente Matthieu Poujol, le directeur des technologies de PAC. Mais on assiste avec la crise à un retour en grâce des développements spécifiques. Avec la SOA – et face à des PGI vus comme trop onéreux -, ce choix redevient intéressant ». Et le retournement profite aux logiciels libres, qui apportent les briques de base dans ce type de projets.

Ministères « pro-Open Source » : une forme de rééquilibrage

Selon PAC, 41 % des 509 DSI sondés en février 2009 utilisent du logiciel libre. Les technologies les plus déployées concernent sans surprise la bureautique et les bases de données (voir ci-dessous, statistique parmi les DSI employant l’Open Source). « Sur le premier segment, quand un grand compte n’est pas trop lié par contrat à Microsoft, c’est un gisement d’économies assez facilement exploitable », commente Matthieu Poujol. Ce dernier note une extension des projets de migration vers OpenOffice. Tout en observant une forme de rééquilibrage dans l’administration centrale qui avait été en pointe sur ces sujets voici quelques années.  « Microsoft a déployé un intense lobbying sur ce terrain. Les ministères qui défendaient le plus ardemment le logiciel libre adoptent aujourd’hui une position plus équilibrée ».

pac oss2

http://www.lemagit.fr/article/bureautique-mysql-oracle-developpement-sgbd-etude-support-openoffice-open-source-ingres/3802/1/open-source-marche-francais-depasse-les-milliard-euros/

Commentaires fermés sur Open Source : le marché français dépasse les 1,5 milliard d’euros

Utiliser XML avec MySQL 5.1 (part 1/5)

juillet 17, 2009
Tags: ,

MySQL avec son modèle relationnel et XML avec son approche hiérarchique ont en commun la vocation d’organiser et de structurer des ensembles de données.

En regardant de plus près, ces technologies peuvent offrir des solutions complémentaires :

  • MySQL s’adapte à merveille à la gestion de systèmes d’informations éventuellement lourds et complexes,

  • XML a su devenir un langage universel permettant aux applications de communiquer et d’échanger des informations.

Leur complémentarité apparaît alors évidente : XML rend possible l’exploitation et le partage des informations contenues dans MySQL par des applications distantes.

Générer du XML avec les programmes clients mysql et mysqldump

La version de MySQL utilisée pour cette article est la 5.1.22.

Générer du XML avec MySQL est très simple. La première possibilité est d’utiliser le client texte mysql avec l’option xml ou X. Un fois connecté au serveur MySQL, les résultats des commandes sont sortis sous format XML comme ont peut le voir :

Générer du XML en mode console

shell> mysql -u daz -p –xml
mysql> SHOW SCHEMAS ; /*Liste de tous les schémas (databases)*/
<?xml version= »1.0″?>
<resultset statement= »show schemas » xmlns:xsi= »http://www.w3.org/2001/
XMLSchema-instance »>
<row>
<field name= »Database »>information_schema</field>
</row>
<row>
<field name= »Database »>world</field>
</row>
<row>
<field name= »Database »>xml</field>
</row>
</resultset>

mysql> USE xml /*connexion au schéma qui se nomme xml */
Database changed

mysql> SHOW TABLES ; /*Liste de toutes les tables du schéma xml*/
<?xml version= »1.0″?>
<resultset statement= »SHOW TABLES » xmlns:xsi= »http://www.w3.org/2001/
XMLSchema-instance »>
<row>
<field name= »Tables_in_xml »>rss</field>
</row>
</resultset>

L’exemple suivant nous montre que le résultat d’une requête peut être redirigé vers un fichier. On peut par exemple créer le fichier ville_fra.xml avec le contenu de la table city du schéma world ou plus généralement avec le résultat d’une requête.

Création d’un fichier XML avec le client texte mysql
shell>mysql -X -e » SELECT * FROM world.city WHERE countrycode = ‘fra’; » –default-character-set=utf8 > /xml_file/city_fra.xml

shell> more city_fra.xml
<?xml version= »1.0″?>
<resultset statement= »SELECT * FROM world.city WHERE countrycode = ‘fra' » xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »>
<row>
<field name= »ID »>2974</field>
<field name= »Name »>Paris</field>
<field name= »CountryCode »>FRA</field>
<field name= »District »>Île-de-France</field>
<field name= »Population »>2125246</field>
</row>
<row>
<field name= »ID »>2975</field>
<field name= »Name »>Marseille</field>
<field name= »CountryCode »>FRA</field>
<field name= »District »>Provence-Alpes-Côte</field>
<field name= »Population »>798430</field>
</row>
<row>
<field name= »ID »>2976</field>
<field name= »Name »>Lyon</field>
</row>
</resultset>

L’autre façon d’exporter du SQL dans un fichier au format XML est d’utiliser le client texte qui permet de faire des sauvegardes (dump) mysqldump. Il devient alors possible d’obtenir un backup , structures et données, au format XML du schéma world:

Générer une sauvegarde au format XML
shell> mysqldump -u daz -p –xml –default-character-set=utf8 world > sauvegarde.xml
<?xml version= »1.0″?>
<mysqldump xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »>
<database name= »world »>
<table_structure name= »city »>
<field Field= »ID » Type= »int(11) » Null= »NO » Key= »PRI » Extra= »auto_increment » />
</table_structure>
<table_data name= »city »>
<row>
<field name= »ID »>1</field>
</field>
</row>
</table_data>
</database>
</mysqldump>

(à suivre… utiliser XML avec MySQL 5.1 : Insérer du XML dans MySQL)

2

Rachat de Sun par Oracle, la communauté réagit sur PHP TV

juillet 3, 2009
Tags: , , ,

PHP TV est une WEB TV française consacrée à la technologie PHP et à sa communauté. Le projet est à l’initiative de la société OpenStates, qui est le principal sponsor, suivi de l’association AFUP et de plusieurs sociétés qui font confiance à l’équipe et au concept.

Interview d’Olivier DASINI, co-fondateur du MySQL User Group Francophone (LeMUG.fr)


MySQL / Oracle – PHP TV
envoyé par phptv. – Les derniers test hi-tech en vidéo.
Informations complémentaires: http://dasini.net/blog/2009/04/21/oracle-achete-sun-donc-mysql/
Commentaires fermés sur Rachat de Sun par Oracle, la communauté réagit sur PHP TV

Performances en hausse pour PHP 5.3

juillet 2, 2009
Tags:
La nouvelle version de PHP apporte de nouvelles fonctionnalités, des performances en hausse et un support natif de MySQL.

PHP 5.3.0 vient de faire son apparition sur les serveurs du projet. Ce langage interprété est très populaire dans le monde du développement web, un domaine où il est massivement utilisé.

Au  menu:

  • Des performances en hausse
  • Le support des espaces de noms (namespaces)
  • Un pilote natif pour MySQL, qui utilisera bien mieux la mémoire que libmysql.
  • Plusieurs extensions sont fournies en standard :
    1. ext/phar permet de rassembler les fichiers d’une application au sein d’un unique document phar (PHP Archive).
    2. ext/intl est une extension d’internationalisation.
    3. ext/fileinfo donne des informations sur les fichiers.
    4. ext/enchant propose une interface unique à destination des bibliothèques de correction d’orthographe.
    5. ext/sqlite3 permet au langage de supporter les bases de données SQLite 3.


http://www.silicon.fr/fr/news/2009/07/01/performances_en_hausse_pour_php_5_3

Commentaires fermés sur Performances en hausse pour PHP 5.3