Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PostgreSQL 9.5
Nouveautés et Améliorations
Cycle de Vie
Sortie de PostgreSQL 9.5 en janvier 2016
1 version majeure par an
entre 3 et 6 versions mineures par an : act...
Les grandes
lignes
UPSERT
Row Level Security
Big Data
UPSERT
# CREATE TABLE test (x INTEGER PRIMARY KEY);
# INSERT INTO test VALUES (1);
# INSERT INTO test VALUES (1);
ERROR: d...
UPSERT
# INSERT INTO test VALUES (2);
# INSERT INTO test VALUES (2)
ON CONFLICT (x) DO UPDATE SET x = 3;
INSERT 0 1
# INSE...
Row Level Security
Nouvelles règles d’accès pour SELECT, INSERT, UPDATE, DELETE
Permissions basées sur le contenu des lign...
Row Level Security
SELECT * FROM ventes;
id | product | user_magasin | ventes
-----+-------------+----------------------|-...
Row Level Security
CREATE POLICY p ON ventes
FOR ALL
TO PUBLIC
USING (user_magasin = CURRENT_USER );
Row Level Security
SET SESSION AUTHORIZATION Lille;
SELECT * FROM ventes;
id | product | user_magasin | ventes
-----+-----...
Row Level Security
SET SESSION AUTHORIZATION rennes;
id | product | user_magasin | ventes
-----+-------------+------------...
Row Level Security
CREATE POLICY p_region ON ventes
USING ( user_magasin IN
( WITH RECURSIVE t AS
( SELECT id FROM magasin...
Big Data / Index Brin
Index très petit pour tables volumineuses
Stocke les valeurs min/max values pour une “tranche” de do...
Big Data / Index Brin
CREATE TABLE exemple AS SELECT generate_series(1,100000000) AS id;
CREATE INDEX btree_index ON exemp...
Big Data / OLAP
GROUPING SETS, CUBE and ROLLUP
TABLESAMPLE
Mais
aussi….
SQL MED / Foreign Data Wrappers
Encore plus d’opérateurs JSON
Réplication
Optimisations
Skip Locked
checkpoin...
SQL-MED
IMPORT FOREIGN SCHEMA
Foreign Table Inheritance
Join Push Down
JSON
jsonb_set() : remplacement / ajout de données dans un document
# SELECT '{"nom": "Damien", "age": "37"}'::jsonb - ‘ag...
Optimisations
VACUUM Parallèle
Tris sur texte plus rapides
Lock scalability
Empreinte mémoire réduite
Index Scan Only sur ...
Réplication / Hot Standby
pg_rewind = possibilité de FAIL BACK après un FAIL OVER
Avant la version 9.5, lorsque l’on bascu...
Réplication / Hot Standby
Skipped Unlocked
# SELECT * FROM a FOR UPDATE NOWAIT;
ERROR: could not obtain lock on row in relation "a"
# SELECT * FROM ...
Gestion de journaux (WAL / XLOG)
Paramètre checkpoint_segments supprimé !
Remplacé par des limites sur le dossier pg_xlog ...
Mais aussi….
ALTER TABLE ... SET LOGGED / UNLOGGED
recovery_target_action = promote / pause / shutdown
ALTER SYSTEM RESET
...
En avant vers la version 9.6
Parallélisme !
Actuellement : 1 requête = 1 coeur
Avec 9.6 : “Dispatcher” un scan sequentiel ...
En avant vers la version 9.6
Des avancées vers la réplication logique
Syntaxe de Partitionnement
Sharding ( FDW join pushd...
Sources
https://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.5
https://www.youtube.com/watch?v=qluVWI1UKiM
https:...
Suivre l’actualité PostgreSQL
www.postgresql.fr
planet.postgresql.org
Prochain RDV à Toulouse ?
http://www.meetup.com/fr-FR/PostgreSQL-User-Group-Toulouse/
Upcoming SlideShare
Loading in …5
×

Nouveautés de PostgreSQL 9.5

757 views

Published on

Le 23 février chez Digital Place à Toulouse s'est tenu le preùier Meetup PostgreSQL Toulousain avec un tour d’horizon des nouveautés de PostgreSQL 9.5

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Nouveautés de PostgreSQL 9.5

  1. 1. PostgreSQL 9.5 Nouveautés et Améliorations
  2. 2. Cycle de Vie Sortie de PostgreSQL 9.5 en janvier 2016 1 version majeure par an entre 3 et 6 versions mineures par an : actuellement 9.5.1 Chaque version majeure est supportée 5 ans
  3. 3. Les grandes lignes UPSERT Row Level Security Big Data
  4. 4. UPSERT # CREATE TABLE test (x INTEGER PRIMARY KEY); # INSERT INTO test VALUES (1); # INSERT INTO test VALUES (1); ERROR: duplicate key value violates unique constraint "test_pkey" # INSERT INTO test VALUES (1) ON CONFLICT DO NOTHING; INSERT 0 0
  5. 5. UPSERT # INSERT INTO test VALUES (2); # INSERT INTO test VALUES (2) ON CONFLICT (x) DO UPDATE SET x = 3; INSERT 0 1 # INSERT INTO test VALUES (2) ON CONFLICT (x) DO UPDATE SET status = ’conflict’;
  6. 6. Row Level Security Nouvelles règles d’accès pour SELECT, INSERT, UPDATE, DELETE Permissions basées sur le contenu des lignes existantes Même si l’application a une faille de séurité, les données sensibles restent invisibles
  7. 7. Row Level Security SELECT * FROM ventes; id | product | user_magasin | ventes -----+-------------+----------------------|----------- 1 | foo | lille | 100 2 | bar | rennes | 30 3 | foo | rennes | 5
  8. 8. Row Level Security CREATE POLICY p ON ventes FOR ALL TO PUBLIC USING (user_magasin = CURRENT_USER );
  9. 9. Row Level Security SET SESSION AUTHORIZATION Lille; SELECT * FROM ventes; id | product | user_magasin | ventes -----+-------------+----------------------|----------- 1 | foo | lille | 100
  10. 10. Row Level Security SET SESSION AUTHORIZATION rennes; id | product | user_magasin | ventes -----+-------------+----------------------|----------- 2 | bar | rennes | 30 3 | foo | rennes | 5
  11. 11. Row Level Security CREATE POLICY p_region ON ventes USING ( user_magasin IN ( WITH RECURSIVE t AS ( SELECT id FROM magasins WHERE id_magasin = CURRENT_USER UNION ALL SELECT id FROM magasins m INNER JOIN t ON t.region=m.region ) SELECT id FROM t ) )
  12. 12. Big Data / Index Brin Index très petit pour tables volumineuses Stocke les valeurs min/max values pour une “tranche” de données (128 pages) Permet de “sauter” des sections entières de la table Idéal pour les données inséré chronologiquement Simple à mettre à jour Moins rapide qu’un index classique mais beaucoup plus petit
  13. 13. Big Data / Index Brin CREATE TABLE exemple AS SELECT generate_series(1,100000000) AS id; CREATE INDEX btree_index ON exemple(id); CREATE INDEX brin_index ON exemple USING brin(id); relname | pg_size_pretty ---------------------+---------------- brin_exemple | 3457 MB btree_index | 2142 MB brin_index | 104 kB
  14. 14. Big Data / OLAP GROUPING SETS, CUBE and ROLLUP TABLESAMPLE
  15. 15. Mais aussi…. SQL MED / Foreign Data Wrappers Encore plus d’opérateurs JSON Réplication Optimisations Skip Locked checkpoint_segments
  16. 16. SQL-MED IMPORT FOREIGN SCHEMA Foreign Table Inheritance Join Push Down
  17. 17. JSON jsonb_set() : remplacement / ajout de données dans un document # SELECT '{"nom": "Damien", "age": "37"}'::jsonb - ‘age’; {"name": "Damien"} SELECT '{"nom": "Damien",}'::jsonb || '{"age": "37"}'::jsonb; {"name": "Damien", "age": “37” } json_pretty : affiche un document de manière plus lisible
  18. 18. Optimisations VACUUM Parallèle Tris sur texte plus rapides Lock scalability Empreinte mémoire réduite Index Scan Only sur les Index GIST
  19. 19. Réplication / Hot Standby pg_rewind = possibilité de FAIL BACK après un FAIL OVER Avant la version 9.5, lorsque l’on basculait d’un noeud A vers un noeud B Il fallait systématique reconstruire le noeud A
  20. 20. Réplication / Hot Standby
  21. 21. Skipped Unlocked # SELECT * FROM a FOR UPDATE NOWAIT; ERROR: could not obtain lock on row in relation "a" # SELECT * FROM a FOR UPDATE SKIP LOCKED; a | b | c ----+----+---- 2 | 2 | 2 3 | 3 | 3
  22. 22. Gestion de journaux (WAL / XLOG) Paramètre checkpoint_segments supprimé ! Remplacé par des limites sur le dossier pg_xlog : min_wal_size (default 80MB) max_wal_size (default 1GB) L’agencement des checkpoints est géré automatiquement à partir ces 2 valeurs...
  23. 23. Mais aussi…. ALTER TABLE ... SET LOGGED / UNLOGGED recovery_target_action = promote / pause / shutdown ALTER SYSTEM RESET cluster_name pg_stat_ssl pg_stat_statements améliorée : min_time, max_time, mean_time, stddev_time
  24. 24. En avant vers la version 9.6 Parallélisme ! Actuellement : 1 requête = 1 coeur Avec 9.6 : “Dispatcher” un scan sequentiel sur plusieurs coeurs
  25. 25. En avant vers la version 9.6 Des avancées vers la réplication logique Syntaxe de Partitionnement Sharding ( FDW join pushdown , FDW DML pushdown ) …. Première beta en juin ?
  26. 26. Sources https://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.5 https://www.youtube.com/watch?v=qluVWI1UKiM https://momjian.us/main/writings/pgsql/features.pdf
  27. 27. Suivre l’actualité PostgreSQL www.postgresql.fr planet.postgresql.org
  28. 28. Prochain RDV à Toulouse ? http://www.meetup.com/fr-FR/PostgreSQL-User-Group-Toulouse/

×