PostgreSQL 9.x: une nouvelle ère!



Documents pareils
NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Sommaire. Origine du projet Équipe principale, contributeurs et sponsors Principes fondateurs Fonctionnalités Versions La communauté Outils tiers

Ora2Pg Performances. (C) 2013 Gilles Darold

SQL Historique

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Présentation du projet

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Cours Bases de données 2ème année IUT

Réplication logique avec PostgreSQL 9.4

Haute disponibilité avec PostgreSQL

La replication dans PostgreSQL

PostgreSQL. Formations. SQL avancé Calendrier... 18

Django et PostgreSQL sous la charge

Cassandra et Spark pour gérer la musique On-line

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

FORMATION PostgreSQL Réplication / Haute Disponibilité

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Auto-évaluation Oracle: cours de base

Bases de données documentaires et distribuées Cours NFE04

Cassandra chez Chronopost pour traiter en temps réel 1,5 milliard d événements par an

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

CREATION WEB DYNAMIQUE

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

Notes de cours : bases de données distribuées et repliquées

Cartographie des solutions BigData

TP Contraintes - Triggers

Bases de Données relationnelles et leurs systèmes de Gestion

Encryptions, compression et partitionnement des données

Bases de données documentaires et distribuées Cours NFE04

Optimisation de MySQL

Retour d'expérience migration Oracle vers PostgreSQL. Vincent Moreau Adeo Services

OpenPaaS Le réseau social d'entreprise

Bases de données documentaires et distribuées Cours NFE04

Langage SQL : créer et interroger une base

Quels choix de base de données pour vos projets Big Data?

NoSQL : hype ou innovation? Grégory Ogonowski / Recherches Octobre 2011

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Les bases de données

PostgreSQL. Formations. Calendrier... 14

Bases de données relationnelles

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

I4 : Bases de Données

PostgreSQL. Formations. Catalogue Calendrier... 8

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Cours 8 Not Only SQL

Le stockage local de données en HTML5

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

PHP 5. La base de données MySql. A. Belaïd 1

Sybase Adaptive Server Enterprise 15

Présentation Windows Azure Hadoop Big Data - BI

Le Langage SQL version Oracle

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Tests de performance du matériel

Mysql. Les requêtes préparées Prepared statements

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Groupe de Discussion Big Data Aperçu des technologies et applications. Stéphane MOUTON

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Le NoSQL - Cassandra

Présentation du module Base de données spatio-temporelles

Le langage SQL (première partie) c Olivier Caron

Création et Gestion des tables

Hibernate vs. le Cloud Computing

COMPTE-RENDU PGDAY PARIS. Journée du 21 avril Oxalide 2015 COMPTE-RENDU pgday

TP Bases de données réparties

RAPID Prenez le contrôle sur vos données

Historisation des données

Exercices sur SQL server 2000

Big Data. Les problématiques liées au stockage des données et aux capacités de calcul

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Cours Bases de données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Qui est Sybase ianywhere?

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Bases de données et sites WEB

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

NoSQL. Etat de l art et benchmark

Tungsten: une implémentation du futur clustering de PostgreSQL

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Pratique et administration des systèmes

Bases de Données NoSQL

Un peu de culture : Bases N osql L 1

Les bases de données relationnelles

Présentation Alfresco

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

Acquisition des données - Big Data. Dario VEGA Senior Sales Consultant

4D v11 SQL BREAKING THE LIMITS * Les nouveautés

Les BASES de DONNEES dans WampServer

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Transcription:

PostgreSQL 9.x: une nouvelle ère! Jean-Paul Argudo Dalibo L Expertise PostgreSQL Paris, France http://www.solutionslinux.fr/

Agenda 1 À propos 2 PostgreSQL et NoSQL hstore JSON PL/v8 3 Avant PostgreSQL 9.0 4 Version 9.0 et suivantes Version 9.0 Version 9.1 Version 9.2 5 Récents usecases 6 Conclusion

À propos... de moi Fondateur du site PostgreSQL.fr (février 2004) Co-fondateur et secrétaire de PostgreSQLFr (février 2005) Co-fondateur et trésorier de PostgreSQL Europe (depuis 2008) Gérant de Dalibo SARL

À propos... de ma société Dalibo, Expertise PostgreSQL en France depuis 2005 Plus de 250 clients, des dotcoms aux très grosses sociétés, dont des institutions publiques (ministères, etc) 3 métiers principaux: conseil formation support Quelques clients

Introduction PostgreSQL et NoSQL? Avant la 9 Version 9 et suivantes Récents cas d utilisation Conclusion

NoSQL Not-Only-SQL ou No-SQL? ACID-less Big Data? Cassandra, BigTable, MongoDB, CouchDB et d autres

hstore clé/valeur: c est vieux chez PostgreSQL Release 8.2 Release Date: 2006-12-05 [...] Contrib Changes [...] * Add hstore module (Oleg, Teodor)

hstore hstore: installation montest=# create extension hstore; CREATE EXTENSION montest=# select a=>b, b=>1, c=>null ::hstore @> a=>b as resultat_test; resultat_test --------------- t (1 row)

hstore hstore est complet plus de 10 opérateurs plus de 20 fonctions indexable avec GiST et GIN CREATE INDEX hidx_gist ON matable USING GIST (h); CREATE INDEX hidx_gin ON matable USING GIN (h);

hstore Exemples avec hstore (1/5) Ajouter une clé, ou mettre à jour une clé existante avec une nouvelle valeur: UPDATE tab SET h = h hstore( c, 3 ); Supprimer une clé: UPDATE tab SET h = delete(h, k1 );

hstore Exemples avec hstore (2/5) Convertir un type record en un hstore: CREATE TABLE test (col1 integer, col2 text, col3 text); INSERT INTO test VALUES (123, foo, bar ); SELECT hstore(t) FROM test AS t; hstore --------------------------------------------- "col1"=>"123", "col2"=>"foo", "col3"=>"bar" (1 row)

hstore Exemples avec hstore (3/5) Convertir un type hstore en un type record prédéfini: CREATE TABLE test (col1 integer, col2 text, col3 text); SELECT * FROM populate_record(null::test, "col1"=>"456", "col2"=>"zzz" ); col1 col2 col3 ------+------+------ 456 zzz (1 row)

hstore Exemples avec hstore (4/5) Modifier une enregistrement existant en utilisant les valeurs provenant d un hstore: CREATE TABLE test (col1 integer, col2 text, col3 text); INSERT INTO test VALUES (123, foo, bar ); SELECT (r).* FROM (SELECT t #= "col3"=>"baz" AS r FROM test t) s; col1 col2 col3 ------+------+------ 123 foo baz (1 row)

hstore Exemples avec hstore (5/5) Statistiques en ligne: SELECT key, count(*) FROM (SELECT (each(h)).key FROM testhstore) AS stat GROUP BY key ORDER BY count DESC, key; key count -----------+------- line 883 node 202 title 190 org 189 [...]

JSON JSON 1/2 type de données natif (validation des données... ) avant: text inclus dans PostgreSQL 9.2

JSON JSON 2/2 select ( {"a":123} )::json; -[ RECORD 1 ]--- json {"a":123} select array_to_json(array( select z from (select i, i*2 as j from generate_series(1,4) i) as z)); array_to_json ----------------------------------------------------------- [{"i":1,"j":2},{"i":2,"j":4},{"i":3,"j":6},{"i":4,"j":8}] (1 row) $ select *, row_to_json(r) from t as r; i t a row_to_json ---+---+---------+----------------------------- 1 a {1,2,3} {"i":1,"t":"a","a":[1,2,3]} 2 b {2,3,4} {"i":2,"t":"b","a":[2,3,4]} (2 rows)

PL/v8 PL/v8 1/3 basé sur le V8 Engine de Google procs. stocks. rapides en Javascript création d attributs d index ad-hoc sur des données JSON inclus dans PostgreSQL 9.2

PL/v8 PL/v8 2/3 CREATE TYPE rec AS (i integer, t text); CREATE FUNCTION set_of_records() RETURNS SETOF rec AS $$ // plv8.return_next() stores records in an internal tuplestore, // and return all of them at the end of function. plv8.return_next( { "i": 1, "t": "a" } ); plv8.return_next( { "i": 2, "t": "b" } ); // You can also return records with an array of JSON. return [ { "i": 3, "t": "c" }, { "i": 4, "t": "d" } ]; $$ LANGUAGE plv8; SELECT * FROM set_of_records(); i t ---+--- 1 a 2 b 3 c 4 d (4 rows)

PL/v8 PL/v8 3/3 PL/v8 et JSON en action dans PostgreSQL: CREATE FUNCTION to_jsontext(keys text[], vals text[]) RETURNS text AS $$ var o = {}; for (var i = 0; i < keys.length; i++) o[keys[i]] = vals[i]; return JSON.stringify(o); $$ LANGUAGE plv8 IMMUTABLE STRICT; SELECT to_jsontext(array[ age, sex ], ARRAY[ 21, female ]); to_jsontext ----------------------------- {"age":"21","sex":"female"} (1 row)

PostgreSQL 8.4: Backend version stable et éprouvée archivage et Point In Time Recovery Warm Standby maître en lecture/écriture esclave fermé replication par rejeu des journaux de transaction

PostgreSQL 8.4: Performances et Internationalisation amélioration de GIN restauration en parallèle collation par base de données

PostgreSQL 8.4: Divers statistiques sur les fonctions trigger sur TRUNCATE Window Functions et CTE et bien d autres choses encore!

Version 9.0 PostgreSQL 9.0: Backend Hot Standby: ouverture de l esclave aux lectures seules Streaming Replication: réplication en quasi temps réel Amélioration sur Vacuum Full

Version 9.0 PostgreSQL 9.0: Performances version Windows 64 bits jointures inutiles supprimées (ORMs) IS NOT NULL peut utiliser les index

Version 9.0 PostgreSQL 9.0: Divers améliorations importantes sur les langages procéduraux configuration par couple utilisateur / base de données sortie XML, JSON et YAML pour EXPLAIN authentification via RADIUS La liste complète des améliorations sur la page wiki du projet: http://wiki.postgresql.org/wiki/what s_new_in_postgresql_9.0

Version 9.1 PostgreSQL 9.1: Backend Streaming Replication désormais synchrone UNLOGGED table Extension

Version 9.1 PostgreSQL 9.1: Performances Indexation KNN (K-Nearest-Neighbor) amélioration des performances en écriture (Synchronous writes) amélioration sur les performances des tables partitionnées

Version 9.1 PostgreSQL 9.1: Divers SE-Postgres PGXN SQL/MED et Foreign Data Wrappers auto-tunning des wal_buffers option ENCODING sur COPY TO/FROM La liste complète des améliorations sur la page wiki du projet: http://wiki.postgresql.org/wiki/what s_new_in_postgresql_9.1

Version 9.2 PostgreSQL 9.2: Backend Index-only scans (select count(*)... ) Cascading Replication fonctions de monitoring intégrées

Version 9.2 PostgreSQL 9.2: Performances scalabilité pour systèmes multi-processeurs amélioration des tris en mémoire SP-GiST (Space GiST)

Version 9.2 PostgreSQL 9.2: Divers type de données RANGE type de données JSON (array-to-json, row-to-json, etc) réduction de la consommation de ressources (électricité..) La liste complète des améliorations sur la page wiki du projet: http://wiki.postgresql.org/wiki/what s_new_in_postgresql_9.2

Le moteur d Orange Indexation de documents pour le moteur de recherche 5 milliards de tuples répartis sur 160 machines qui abritent 800 serveurs PostgreSQL volumétrie totale de 24 téra-octets répartition géographique Cas d utilisation complet sur: http://www.postgresql.fr/temoignages:moteur_orange

Le Bon Coin Site de vente de particulier à particulier. Un seul serveur abrite tout. DL980 160 coeurs 1 téra-octet de RAM baie 3PAR V800 192 disques (dont 32 SSD et 160 fiber-channel) 400 giga-octets de cache Cas d utilisation complet sur: http://www.postgresql.fr/temoignages:le_bon_coin

La CNAF Migration de Bull RFM sous Gecos 8 vers PostgreSQL sous Red-Hat Linux 168 bases PostgreSQL volume global de 4 To de données. plus d un milliard de requêtes SQL par jour Cas d utilisation complet sur: http://www.boursier.com/actions/actualites/news/bull- modernise-les-applications-coeur-de-metier-de-la-cnaf- 401344.html

Conclusion PostgreSQL est prêt pour NoSQL... avec la garantie d ACID pour vos données! un projet très actif des fonctionalités inédites des utilisateurs sérieux