| 221 | | données à utiliser les Clés Étrangères pour représenter les relations entre les tables. Avec MySQL, seul InnoDB supporte |
|---|
| 222 | | les clés étrangères. Un problème avec de leur implémentation est qu'elle est limitée et ignorera silencieusement |
|---|
| 223 | | plusieurs syntaxes standard. Par exemple, lors de la création d'une table, même avec la prochaine version 5.1 de MySQL |
|---|
| 224 | | "la clause CHECK est analysée mais ignorée par tous les moteurs de stockages". À l'origine de PostgreSQL, la philosophie |
|---|
| 225 | | de conception à été de produire des erreurs ou des avertissements dans les situations similaires où une opération est |
|---|
| 226 | | ambiguë ou non supportée. |
|---|
| 227 | | |
|---|
| 228 | | Transactional DDL |
|---|
| 229 | | |
|---|
| 230 | | In PostgreSQL, when you are inside a transaction almost any operation can be undone. There are some irreversible operations (like creating or destroying a database or tablespace), but normal table modifications can be backed out by issuing a ROLLBACK via its Write-Ahead Log design. That supports backing out even large changes to DDL like table creation. |
|---|
| 231 | | |
|---|
| 232 | | MySQL doesn't support any sort of rollback when using MyISAM. With InnoDB, the server has an implicit commit that occurs even if the normal auto-commit behavior is turned off. This means that any single table alteration or similar change is immediately committed. |
|---|
| 233 | | |
|---|
| 234 | | Experienced PostgreSQL DBA's know to take advantage of its features here to protect themselves when doing complicated work like schema upgrades. If you put all such changes into a transaction block, you can make sure they all apply atomically or not at all. This drastically lowers the possibility that the database will be corrupted by a typo or other such error in the schema change, which is particularly important when you're modifying multiple related tables where a mistake might destroy the relational key. There is no way to similar way to safely adjust multiple schema sections with MySQL. |
|---|
| 235 | | |
|---|
| 236 | | See Transactional DDL in PostgreSQL: A Competitive Analysis for detailed examples demonstrating these differences. |
|---|
| 237 | | Speed |
|---|
| 238 | | Default configuration |
|---|
| | 223 | données à utiliser les Clés Étrangères pour représenter les relations entre les tables. Avec MySQL, seul InnoDB |
|---|
| | 224 | supporte les clés étrangères. Un problème avec de leur implémentation est qu'elle est limitée et ignorera |
|---|
| | 225 | silencieusement plusieurs syntaxes standard. Par exemple, lors de la création d'une table, même avec la prochaine |
|---|
| | 226 | version 5.1 de MySQL "la clause CHECK est analysée mais ignorée par tous les moteurs de stockages". La philosophie de |
|---|
| | 227 | conception à la base de PostgreSQL est de produire des erreurs ou des avertissements dans les situations similaires où |
|---|
| | 228 | une opération est ambiguë ou non supportée. |
|---|
| | 229 | |
|---|
| | 230 | // Transactional DDL |
|---|
| | 231 | DDL Transactionnel |
|---|
| | 232 | |
|---|
| | 233 | // In PostgreSQL, when you are inside a transaction almost any operation can be undone. There are some irreversible |
|---|
| | 234 | // operations (like creating or destroying a database or tablespace), but normal table modifications can be backed out |
|---|
| | 235 | // by issuing a ROLLBACK via its Write-Ahead Log design. That supports backing out even large changes to DDL like table |
|---|
| | 236 | // creation. |
|---|
| | 237 | Avec PostgreSQL, lorsque vous êtes à l'interieur d'une transaction presque toute opération peut être annulée. Il existe |
|---|
| | 238 | quelque opérations irréversibles (comme créer ou détruire une base ou un talbespace), mais les modifications classiques |
|---|
| | 239 | de table peuvent être défaites en executant un ROLLBACK grâce aux mécanismes de Write-Ahead Log. Celà s'applique |
|---|
| | 240 | aussi aux importantes modifications du DDL comme la création de tables. |
|---|
| | 241 | |
|---|
| | 242 | // MySQL doesn't support any sort of rollback when using MyISAM. With InnoDB, the server has an implicit commit that |
|---|
| | 243 | // occurs even if the normal auto-commit behavior is turned off. This means that any single table alteration or similar |
|---|
| | 244 | // change is immediately committed. |
|---|
| | 245 | MySQL ne supporte aucun type d'annulation en utilisant MyISAM. Avec InnoDB, le serveur déclenche une validation |
|---|
| | 246 | implicite même si le comportement normal d'auto-commit est désactivé. Celà signifie qu'une unique modification de |
|---|
| | 247 | table ou changement similaire est immediatement validé. |
|---|
| | 248 | |
|---|
| | 249 | // Experienced PostgreSQL DBA's know to take advantage of its features here to protect themselves when doing complicated |
|---|
| | 250 | // work like schema upgrades. If you put all such changes into a transaction block, you can make sure they all apply |
|---|
| | 251 | // atomically or not at all. This drastically lowers the possibility that the database will be corrupted by a typo or |
|---|
| | 252 | // other such error in the schema change, which is particularly important when you're modifying multiple related tables |
|---|
| | 253 | // where a mistake might destroy the relational key. There is no way to similar way to safely adjust multiple schema |
|---|
| | 254 | // sections with MySQL. |
|---|
| | 255 | Les DBA PostgreSQL expérimenté savent tirer parti de ces fonctionnalités pour s'assurer lors de travaux compliqués |
|---|
| | 256 | comme la mise à jour d'un schema. Si vous placez tous ces changements dans une transaction, vous pouvez être certain |
|---|
| | 257 | qu'elles seront toutes appliquées de façon atomique ou pas du tout. Cela abaisse drastiquement la possibilité de |
|---|
| | 258 | corruption de la base de données par une erreur de frappe ou tout autre erreur de ce genre dans les modifications du |
|---|
| | 259 | schéma, ce qui est particulièrement important lorsque vous modifiez plusieurs tables en relations où une erreur peut |
|---|
| | 260 | détruire la clé relationnelle. Il n'existe aucune méthode similaire pour ajuster sûrement plusieurs sections d'un |
|---|
| | 261 | schéma avec MySQL. |
|---|
| | 262 | |
|---|
| | 263 | // See Transactional DDL in PostgreSQL: A Competitive Analysis for detailed examples demonstrating these differences. |
|---|
| | 264 | Voir "Transactional DDL in PostgreSQL: A Competitive Analysis" pour des exemples détaillés démontrant ces différences. |
|---|
| | 265 | |
|---|
| | 266 | // Speed |
|---|
| | 267 | Rapidité |
|---|
| | 268 | |
|---|
| | 269 | // Default configuration |
|---|
| | 270 | Configuration par défaut |
|---|
| | 271 | |
|---|