par
devlop78 » 18 déc. 2010, 03:31
Atomicity (atomicité), Consistency (cohérence), Isolation, Durability (durabilité).
Les axes principaux du NoSQL: haute disponibilité et partitionnement des données, au détriment de la consistance.
Effectivement pas conseillé pour les bases tres sensibles qui se doivent d'avoir que des données valides , mais restons au niveau de la majeur partie des appli web ...
Je serais curieux de voir combien de sites web plus ou moins gros ( hors transaction bancaire ) utilisent les transactions pour leurs requêtes ....
C'est justement cette limite que j'ai du mal à cerner .. quand peut-on utiliser du Nosql ou des DDB standard relationnel , et quand est-il déconseillé d'utiliser des bases nosql ou des moteurs ne supportant pas les transactions ....
Je trouve ce point assez flou ..
On pourrait se poser la même question concernant les bases de données objet. Je ne connais pas suffisamment les SGBD(x) pour dire lequel utiliser dans quelle situation. Je ne connaissais pas NoSQL, personnellement. Concernant l'utilisations des transations, ce n'est pas la seule fonctionnalités des SGBDR, ni le seul critère de l'ACID, loin de là. La transaction assure, en gros, entièrement l'atomicité et l'isolation, mais n'est qu'un composant de la cohérence. Concernant la durabilité, il s'agit pour moi d'un critère commun à tout système de gestion de données, contrairement aux variables, sessions, etc.
Revenons sur les transactions ... la majeure partie des applications web développées par les gens n'utilisent même pas le relationnel des SGBDR, ni les transactions, et ce ne sont pas des références en matière d'ACID. Il est vrai qu'entre la vérification de présence d'un utilisateur dans une table, et l'insertion de cet utilisateur si inexistant, le risque que le même utilisateur soit rajouté entre ces deux requêtes SQL est si proche de 0 qu'il est fort possible qu'un développeur qui ne le prévoit pas n'aura jamais ce problème. Ce n'est pourtant pas une raison. Il en est de même pour la modification (update) de deux tables différentes : après débogage, quels sont les risques que le deuxième update échoue alors que le premier a réussi ? Très proche de 0 aussi. Et pourtant, dans la théorie, ce risque existe, et ferait perdre toute cohérence à la base de données, sans parler des conséquences. Et concernant la cohérence, il faut noter aussi toutes les contraintes que proposent les bons SGBDR, comme les contraintes d'unicité, les contraintes de validation, voire les assertions et les triggers. Ainsi, l'ajout d'un utilisateur peut se permettre de se passer d'une vérification au préalable grâce à cette contrainte, bien que la gestion de l'erreur retourné par le SGBDR en sera plus compliqué : la cohérence sera, elle, assurée.
Bref, NoSQL, je ne connais pas. Mais je doute que si il a été inventé en 2009, ce n'est pas parce que ses inventeurs s'ennuyaient, mais bien pour répondre à des problématiques auxquels ni MySQL, ni PostgreSQL, ni Oracle (pour ne citer qu'eux) ne répondaient. Personnellement, je me destine à des applications de gestion ou de même type, et les SGBDR sont pour moi le meilleur outil à cela. Peut-être qu'une vision plus concrète de NoSQL, que la simple description que j'ai pu voir sur Wikipedia, pourrait nous montrer l'avantage dans certaines situations, et surtout lesquelles, de ce SGBD. Et il est tout à fait possible qu'il soit complémentaire, tout comme (parait-il, mais je n'ai pas encore assez de recul), PostgreSQL est un SGBDR et SGBDO à la fois. On peut imaginer qu'ils ne s'agissent pas de concurrence de type, mais bien de spécificités, fonctionnalités, comportement ... un peu comme un langage objet peut être aussi procédural, mais surtout peut être évenementiel ou non : on peut rarement mettre un seul nom à un système.
J'attends la suite pour en savoir plus :p
[quote="stopher"]Atomicity (atomicité), Consistency (cohérence), Isolation, Durability (durabilité).
Les axes principaux du NoSQL: haute disponibilité et partitionnement des données, au détriment de la consistance.
Effectivement pas conseillé pour les bases tres sensibles qui se doivent d'avoir que des données valides , mais restons au niveau de la majeur partie des appli web ...
Je serais curieux de voir combien de sites web plus ou moins gros ( hors transaction bancaire ) utilisent les transactions pour leurs requêtes ....
C'est justement cette limite que j'ai du mal à cerner .. quand peut-on utiliser du Nosql ou des DDB standard relationnel , et quand est-il déconseillé d'utiliser des bases nosql ou des moteurs ne supportant pas les transactions ....
Je trouve ce point assez flou ..[/quote]
On pourrait se poser la même question concernant les bases de données objet. Je ne connais pas suffisamment les SGBD(x) pour dire lequel utiliser dans quelle situation. Je ne connaissais pas NoSQL, personnellement. Concernant l'utilisations des transations, ce n'est pas la seule fonctionnalités des SGBDR, ni le seul critère de l'ACID, loin de là. La transaction assure, en gros, entièrement l'atomicité et l'isolation, mais n'est qu'un composant de la cohérence. Concernant la durabilité, il s'agit pour moi d'un critère commun à tout système de gestion de données, contrairement aux variables, sessions, etc.
Revenons sur les transactions ... la majeure partie des applications web développées par les gens n'utilisent même pas le relationnel des SGBDR, ni les transactions, et ce ne sont pas des références en matière d'ACID. Il est vrai qu'entre la vérification de présence d'un utilisateur dans une table, et l'insertion de cet utilisateur si inexistant, le risque que le même utilisateur soit rajouté entre ces deux requêtes SQL est si proche de 0 qu'il est fort possible qu'un développeur qui ne le prévoit pas n'aura jamais ce problème. Ce n'est pourtant pas une raison. Il en est de même pour la modification (update) de deux tables différentes : après débogage, quels sont les risques que le deuxième update échoue alors que le premier a réussi ? Très proche de 0 aussi. Et pourtant, dans la théorie, ce risque existe, et ferait perdre toute cohérence à la base de données, sans parler des conséquences. Et concernant la cohérence, il faut noter aussi toutes les contraintes que proposent les bons SGBDR, comme les contraintes d'unicité, les contraintes de validation, voire les assertions et les triggers. Ainsi, l'ajout d'un utilisateur peut se permettre de se passer d'une vérification au préalable grâce à cette contrainte, bien que la gestion de l'erreur retourné par le SGBDR en sera plus compliqué : la cohérence sera, elle, assurée.
Bref, NoSQL, je ne connais pas. Mais je doute que si il a été inventé en 2009, ce n'est pas parce que ses inventeurs s'ennuyaient, mais bien pour répondre à des problématiques auxquels ni MySQL, ni PostgreSQL, ni Oracle (pour ne citer qu'eux) ne répondaient. Personnellement, je me destine à des applications de gestion ou de même type, et les SGBDR sont pour moi le meilleur outil à cela. Peut-être qu'une vision plus concrète de NoSQL, que la simple description que j'ai pu voir sur Wikipedia, pourrait nous montrer l'avantage dans certaines situations, et surtout lesquelles, de ce SGBD. Et il est tout à fait possible qu'il soit complémentaire, tout comme (parait-il, mais je n'ai pas encore assez de recul), PostgreSQL est un SGBDR et SGBDO à la fois. On peut imaginer qu'ils ne s'agissent pas de concurrence de type, mais bien de spécificités, fonctionnalités, comportement ... un peu comme un langage objet peut être aussi procédural, mais surtout peut être évenementiel ou non : on peut rarement mettre un seul nom à un système.
J'attends la suite pour en savoir plus :p