IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

Performances comparatives PostGreSQL vs SQL Server


Sujet :

Décisions SGBD

  1. #241
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Postgres se défait, tout en continuant de les supporter, de cet partie obsolète du standard avec le type text.
    https://www.postgresql.org/docs/12/d...character.html

    L'encodage SQL_ASCII est très proche du ASCII_FULL non?
    https://www.postgresql.org/docs/12/multibyte.html

  2. #242
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par MaximeCh Voir le message
    Postgres se défait, tout en continuant de les supporter, de cet partie obsolète du standard avec le type text.
    https://www.postgresql.org/docs/12/d...character.html
    Le type text n'existe pas dans la norme SQL…. mais comme le dit la doc de PG, beaucoup de SGBDR avaient un type "text" (notamment Sybase ASE/ASA et SQL Server...). C'est aujourd'hui et depuis la version 2005 de SQL Server, tout à fait obsolète.

    L'encodage SQL_ASCII est très proche du ASCII_FULL non?
    https://www.postgresql.org/docs/12/multibyte.html
    À priori non, car les normes de jeu de caractères les plus proches de cela, visées par le § 4.2.4 de la norme SQL seraient :
    "

    SQL_CHARACTER specifies the name of a character repertoire that consists of the 88 <SQL
    language character>s as specified in Subclause 5.1, ‘‘<SQL terminal character>’’. It consists
    of the 52 uppercase and lowercase simple latin characters, 10 digits, and 26 <SQL special charcaters>…

    […]

    LATIN1 specifies the name of a character repertoire that consists of the 191 graphic characters
    defined in ISO 8859-1.

    […]

    "

    J'ai pas vu d'encodage avec seulement 128 codes de caractères…

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #243
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Ce que je voulais dire c'est que la partie national n'a plus vraiment lieu d'être, et varchar est plus fastidieux que text.
    La plupart des gens postgres que j'ai lu, Tom Lane, Andres Freund, Dimitri Fontaine, Adrien Nayrat... n'utilisent plus que deux types : char(n) pour du fixe, et text pour le reste.

  4. #244
    Membre émérite
    Inscrit en
    Janvier 2006
    Messages
    721
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 721
    Points : 2 716
    Points
    2 716
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    NCHAR et CHAR sont des synonymes de NATIONAL CHARACTER et CHARACTER, de même que NVARCHAR et VARCHAR sont des synonymes de NATIONAL CHARACTER VARYING et CHARACTER VARYING. Tous les SGBDR à ma connaissance les acceptent !
    Oui mais NVARCHAR n'est pas dans la norme, c'est juste que tous les SGBD ont choisi ce nom.

    Citation Envoyé par SQLpro Voir le message
    La définition des jeux de caractères est libre dans les limites suivantes (extrait de la norme SQL Foundation § 4.2.4) :
    OK en effet c'est mieux comme ça (le message précédent laissait l'impression que c'est la norme qui imposait que CHAR soit en ASCII par défaut): le choix de CHAR en 8 bits et NCHAR en 16 bits est un choix de SQL Server, pas de la norme.

    Citation Envoyé par SQLpro Voir le message
    - ISO8BIT (or ASCII_FULL) specifies the name of a character repertoire that consists of all 255 characters, each consisting of exactly 8 bits, as specified in ISO 4873 and ISO 8859-1,
    OK, dans ce cas c'est juste le nom ASCII_FULL qui est inapproprié parce que ASCII (en dehors de la norme SQL), c'est un encodage sur 7 bits. En fait ISO8BIT est plus proche de ISO-8859-1.

    Citation Envoyé par SQLpro Voir le message
    — UTF16 and ISO10646 specify the name of a character repertoire that consists of every character represented by The Unicode Standard Version 2.0 and by ISO/IEC 10646 UTF-16, where each character is encoded using the UTF-16 encoding, occupying either 1 (one) or 2 octets.
    Là j'avoue être un peu surpris parce que normalement UTF-16, ce ne sont pas 1 ou 2 octets mais 1 ou deux seizets, ou groupes de 16 bits. Soit plutôt 2 ou 4 octets.
    Quant à ISO 10646, c'est la bijection entre un caractère et un nombre, indépendamment de la représentation de ces nombres en mémoire (ces représentations étant les fameux UTF-n ou UCS-n)

    Sérieux, il fumait quoi l'auteur de la norme SQL quand il a rédigé la section 4.2.4?

    Citation Envoyé par SQLpro Voir le message
    SQL Server est strictement conforme à l'ISO8BIT
    Mais est-elle strictement limitée à ISO8BIT (donc à ISO-8859-1) ou à Windows-1252 (qui contient quelques caractères en plus)? Ou alors ASCII_FULL signifie qu'on supporte les 256 valeurs mais que ce qui est au delà des 7 bits est considéré uniquement comme un octet sans signification? Le fait que j'ai pu écrire un é (sur 1 caractère) et plus tard j'ai essayé avec € (qui n'est pas dans ISO-8859-1 mais qui est dans Windows-1252) me laisse penser que c'est plutôt Windows-1252...

  5. #245
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par MaximeCh Voir le message
    Ce que je voulais dire c'est que la partie national n'a plus vraiment lieu d'être, et varchar est plus fastidieux que text.
    La plupart des gens postgres que j'ai lu, Tom Lane, Andres Freund, Dimitri Fontaine, Adrien Nayrat... n'utilisent plus que deux types : char(n) pour du fixe, et text pour le reste.
    C'est stupide d'utiliser le type texte en lieu et place d'un varchar correctement dimensionné. En effet dans certains algorithmes il faut aligner les chaines de caractères en les taillants de même longueur. Sans précision d'une longueur maximale, l'algorithme est plus couteux.
    Pour information SQL Server dans ce cas avec du VARCHAR(n) prend n/2 avec une zone de débordement histoire de ne pas avoir une empreinte mémoire trop importante !

    +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #246
    Membre émérite
    Inscrit en
    Janvier 2006
    Messages
    721
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 721
    Points : 2 716
    Points
    2 716
    Par défaut
    Citation Envoyé par MaximeCh Voir le message
    Ce que je voulais dire c'est que la partie national n'a plus vraiment lieu d'être, et varchar est plus fastidieux que text.
    Puisque tu cites la doc de PostgreSQL dans le message précédent, j'attire votre attention à tous les deux sur la remarque placée en vert au milieu: PostgreSQL a fait le choix de tout miser sur le type TEXT et ne supporte les autres que pour être compatible avec la norme.
    Je crois même me souvenir d'avoir lu ailleurs dans la doc, mais je ne me souviens pas où, qu'ils recommandaient de ne jamais utiliser VARCHAR ou CHAR et que si vous avez vraiment une contrainte de taille pour une colonne donnée, d'utiliser un DOMAIN à la place.
    Bien sûr ils précisent bien que c'est vrai pour une base PostgreSQL et pas ailleurs.

    Je reconnais que ce n'est peut-être pas le choix que j'aurais fait. Par contre j'en tiens compte quand je conçois un schéma pour Postgres.

    Citation Envoyé par SQLpro Voir le message
    C'est stupide d'utiliser le type texte en lieu et place d'un varchar correctement dimensionné. En effet dans certains algorithmes il faut aligner les chaines de caractères en les taillants de même longueur. Sans précision d'une longueur maximale, l'algorithme est plus couteux.
    Sans préciser quels (types d')algorithmes, on peut conclure n'importe quoi. Et puis Postgres a peut-être implémenté ces algorithmes d'une façon différente où, au contraire une contrainte de longueur peut être un inconvénient.

  7. #247
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Citation Envoyé par esperanto Voir le message
    Je crois même me souvenir d'avoir lu ailleurs dans la doc, mais je ne me souviens pas où, qu'ils recommandaient de ne jamais utiliser VARCHAR ou CHAR et que si vous avez vraiment une contrainte de taille pour une colonne donnée, d'utiliser un DOMAIN à la place.
    C'est ici Don't Do This
    J'avoue que certains points m'ont laissé "sans mot".
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  8. #248
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Citation Envoyé par alassanediakite Voir le message
    C'est ici Don't Do This
    J'avoue que certains points m'ont laissé "sans mot".
    Lesquels?

  9. #249
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    BETWEEN, NOT IN et SERIAL.
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  10. #250
    Membre habitué
    Avatar de RenardSpatial
    Homme Profil pro
    Ingénieur, Auteur
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur, Auteur

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 125
    Points
    125
    Billets dans le blog
    2
    Par défaut
    J'ai eu la même réaction en les lisant, mais en fait :

    - BETWEEN c'est en fait très logique quand on a l'explication, et probablement valable avec d'autres SGBD (à vérifier)
    - NOT IN c'est en fait le titre qui est trompeur, c'est NOT IN (select …) qui est à éviter (et là encore avec l'explication ça me choque moins)
    - SERIAL me surprends plus, même avec les explications (planquées dans le lien). Mais «*The new syntax conforms to the SQL standard.*».

  11. #251
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Dans la série comparaisons entre PostGreSQL et SQL Server, le premier d'une longue série d'articles :
    https://sqlpro.developpez.com/tutori...ndes-pour-dba/
    PostGreSQL vs Microsoft SQL Server - Partie 1 : performances des commandes pour le DBA
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Performances temps d'insertions sql server
    Par KRis dans le forum Bases de données
    Réponses: 5
    Dernier message: 24/04/2008, 19h17
  2. Migration de PostGreSQL vers SQL Server
    Par Jidoche dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/08/2007, 18h37
  3. Migration PostGreSql vers SQL Server
    Par ZeMomoDesBois dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 09/11/2006, 07h43
  4. Outil pour comparer des bases SQL Server 2000
    Par plutonium719 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/08/2006, 07h54
  5. Postgresql vs SQL Server
    Par tanys dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/01/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo