postgresql...postgres => postgresql licence postgresql droit de utiliser, copier, modifier,...
TRANSCRIPT
POSTGRESQLPOSTGRESQLTOUR D'HORIZON DES FONCTIONNALITÉS,TOUR D'HORIZON DES FONCTIONNALITÉS,
NOUVEAUTÉS DE LA VERSION 10NOUVEAUTÉS DE LA VERSION 10
AUTEURAUTEURAdrien NayratConsultant PostgreSQL chez
email : [email protected] : @Adrien_nayratblog :
Licence : Creative Common BY-NC-SAExtraits de formations Dalibo
Dalibo
https://blog.anayrat.info/
AU MENUAU MENUHistoireIdées reçues sur PostgreSQLFonctionnalitésNouveautés de la version 10Futur
HISTOIREHISTOIRE1985 : Michael Stonebraker recode Ingrespost « ingres » => postingres => postgrespostgres => PostgreSQLLicence PostgreSQL
Droit de utiliser, copier, modifier, distribuer sans coût delicence
PRINCIPES FONDATEURSPRINCIPES FONDATEURSSécurité des données (ACID)Respect des normes (ISO SQL)FonctionnalitésPerformancesExtensibilitéSimplicité du code
1996 : v1.0 -> première version publiée2003 : v7.4 -> première version réellement stable2005 : v8.0 -> arrivée sur Windows2008 : v8.3 -> performance et fonctionnalités2010 : v9.0 -> réplication intégrée2016 : v9.6 -> parallélisation2017 : v10 -> réplication logique
PROGRESSION DU CODEPROGRESSION DU CODE
VERSIONSVERSIONSVersions obsolètes : 9.2 et antérieuresVersions actuelles : de 9.3 à 10Version en cours de développement : 11
NUMÉROTATIONNUMÉROTATIONAvant la version 10
X.Y : version majeure (8.4, 9.6)X.Y.Z : version mineure (9.6.4)
Après la version 10X : version majeure (10, 11)X.Y : version mineure (10.1)
AU MENUAU MENUHistoireIdées reçues sur PostgreSQLFonctionnalitésNouveautés de la version 10Futur
QUELQUES IDÉES REÇUESQUELQUES IDÉES REÇUESLentLourd à installerapt install postgresql-10
CompliquéOpensource == Pas de support
AU MENUAU MENUHistoireIdées reçues sur PostgreSQLFonctionnalitésNouveautés de la version 10Futur
FONCTIONNALITÉSFONCTIONNALITÉSACID / MVCCSQLPerformancesRéplicationSauvegarde/RestaurationSécuritéExtensibilité
ACID / MVCCACID / MVCCAtomicité (Atomic)Cohérence (Consistent)Isolation (Isolated)Durabilité (Durable)MultiVersion Concurrency Control
Garantit ACIDGestion de la concurrence
SQLSQLOpérations DML courantes :
SELECTINSERTUPDATEDELETE
SQLSQLOpérations DDL :
CREATE/ALTER/DROP/...DDL respecte ACID : transactionnel, durable...
SQLSQLCTE (2009) :
factoriser des sous-requêtesaméliorer la lisibilité d'une requête
WITH resultat AS ( /* requête complexe */ ) SELECT * FROM resultat WHERE nb < 5;
SQLSQLCTE RECURSIVE:
WITH RECURSIVE suite AS ( SELECT 1 AS valeur UNION ALL SELECT valeur + 1 FROM suite WHERE valeur < 10 ) SELECT * FROM suite;
SQLSQLVue matérialiséesContraintes différablesClause LATERALAnalyse de données :
Fonctions de fenêtrageFonctions OLAP GROUPING SETS, CUBE, ROLLUP ...
SQLSQLTypes
Standards SQL : int, ARRAY, varchar, timestamp, interval...Spécifiques à PostgreSQL : réseau, géométrie, JSONB...Utilisateurs : enum, composite...
Validation des donnéesOpérateurs spécifiquesIndexable!
SQLSQLFull Text Search
Recherche plein texteRequêtes "google like"IndexableUn seul language : SQL
SQLSQLForeign Data Wrapper
Norme SQL/MED 2008Accès à des données distantes
PostgresOracleTwitter...
Il existe une pléthore de FDW
PERFORMANCESPERFORMANCESMéthodes d'accès
6 types d'index (7 avec les bloom filter)B-TreeGINHashGiSTSP-GISTBRINBloomExtensible depuis la 9.6!
Index Only Scan
PERFORMANCESPERFORMANCESAlgorithmes de jointure
Nested Loop (boucle imbriquée)Hash Join (hachage de la table interne)Merge Join (tri-fusion)Parallélisation possible (Depuis 9.6)
PERFORMANCESPERFORMANCESParallélisation (9.6+)
SeqscanAggregatsJointureIndex Scan...
RÉPLICATIONRÉPLICATIONPhysique
Réplique les modifications de blocsToute l'instanceAsynchrone / synchroneMulti-secondaireCascadeSecondaire en lecture seule
RÉPLICATIONRÉPLICATIONLogique
Décodage logique des journaux de transactionPossiblité de sélectionner les tablesAsynchrone / synchroneMulti-secondaireCascadeSecondaire accepte les écrituresDepuis la 10 (infrastructure depuis la 9.4)
SAUVEGARDE/RESTAURATIONSAUVEGARDE/RESTAURATIONPhysique
A chaudIntégralité de l'instancePermet le Point In Time Recovery
SAUVEGARDE/RESTAURATIONSAUVEGARDE/RESTAURATIONLogique
A chaudFlexibleParallélisableDump cohérent malgré les modifications durant lasauvegarde
SÉCURITÉSÉCURITÉDroits sur les objetsDroits de connexionRow Level SecuritySSL
EXTENSIBILITÉEXTENSIBILITÉExtensions
PostgisIndexFull Text SearchTypes
AU MENUAU MENUHistoireIdées reçues sur PostgreSQLFonctionnalitésNouveautés de la version 10Futur
NOUVEAUTÉS DE LA VERSION 10NOUVEAUTÉS DE LA VERSION 10Changements importantsPartitionnementRéplication logiquePerformancesSécurité
CHANGEMENTS IMPORTANTSCHANGEMENTS IMPORTANTSxlog => walNumérotation de version
PARTITIONNEMENTPARTITIONNEMENTGestion native
PeformancesAdministration facilitée
Partitionnement par :ListesIntervalles
RÉPLICATION LOGIQUERÉPLICATION LOGIQUEInfrastructure en 9.4Choix des tables à répliquerPUBLICATION / SUBSCRIPTION
PEFORMANCESPEFORMANCESGains importants sur les fonctions de hashageOptimisation des trisOptimisations aggrégatsParallélisme étendu à d'autres noeudsStatistiques multicolonnespostgres_fdw : Join et aggregate pushdown
SÉCURITÉSÉCURITÉAuthentification SCRAM-SHA-256Rôles d'administration
FUTUR V11?FUTUR V11?Partitionnement par hashage (commité)Parallel Hash Join (commité)Parallel Append (commité)Mise à jour clé partitionnement (commité)Infrastructure JIT (WIP)JSON (Norme SQL 2016) (WIP)tris parallélisés (WIP)Partition pruning (WIP)Statistiques étendues ... étendues (WIP)Covering Btree (WIP)
QUESTIONS?QUESTIONS?