postgresql 9.2

16

Click here to load reader

Upload: eq-soft-consultoria-y-soporte-eirl

Post on 04-Jul-2015

1.516 views

Category:

Education


0 download

DESCRIPTION

Presentación de lo nuevo en PostgreSQL 9.2

TRANSCRIPT

Page 1: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Ernesto Quiñones AzcárateErnesto Quiñones AzcárateRegional Press ContactRegional Press Contact

[email protected]@postgresql.org

PostgreSQL 9.2 1/16

Page 2: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Fecha de lanzamiento: 10 Sep. 2012Fecha de lanzamiento: 10 Sep. 2012

El proyecto PostgreSQL esta El proyecto PostgreSQL esta acostumbrandonos a publicar un acostumbrandonos a publicar un

release mayor cada año :)release mayor cada año :)

Y las mejoras como siempre son Y las mejoras como siempre son sustanciales.sustanciales.

PostgreSQL 9.2 2/16

Page 3: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Y los últimos cambios Y los últimos cambios son......son......

PostgreSQL 9.2 3/16

Page 4: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

¿Bases de datos muy grandes?¿Bases de datos muy grandes?

●Soporte comprobado de hasta 64 cores.Soporte comprobado de hasta 64 cores.

Esto es muy importante porque PostgreSQL usa 1 core por conexión, mediciones extraoficiales indican que PostgreSQL administra eficientemente un nivel de concurrencia de 4 a 6 veces la cantidad de cores que se le asignan.

PostgreSQL 9.2 4/16

Page 5: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

¿Bases de datos muy grandes?¿Bases de datos muy grandes?

●Index-only ScanIndex-only ScanEsto significa....al leer data de tuplas que son parte de un indice se realiza un “index scan”, el problema es que cuando se obtiene un set de datos en una lectura se puede haber modificado datos y los indices apuntan a datos modificados o inexistentes, solo se puede comprobar el resultado accediendo a los datos y comprobandolos.Si se considera que la tabla no será áltamente manipulada, activar esta nueva funcionalidad nos permite acceder al menos 5 veces más rápido a los datos ya que no se accede a la corroboración de los datos en si.

PostgreSQL 9.2 5/16

Page 6: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

¿Bases de datos muy grandes?¿Bases de datos muy grandes?

●Mejoras en:Mejoras en:● Administración de bloqueos.Administración de bloqueos.

● Se ha llegado a 350,000 lecturas por segundo.Se ha llegado a 350,000 lecturas por segundo.● Procesos de escritura más eficientes.Procesos de escritura más eficientes.

● Probado hasta 14,000 grabaciones por segundo.Probado hasta 14,000 grabaciones por segundo.

PostgreSQL 9.2 6/16

Page 7: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

¿Necesidad de Redundancia y Escalabilidad?¿Necesidad de Redundancia y Escalabilidad?

●9.0 Replicación Asíncrona●9.1 Replicación Síncrona

..... y ahora Replicación en Cascada

PostgreSQL 9.2 7/16

Page 8: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

¿Necesidad de Redundancia y Escalabilidad?¿Necesidad de Redundancia y Escalabilidad?

OjO:●Es asíncrono●Funciona al estilo de la replicación implementada en la versión 9.0 copiando los archivos de WAL

PostgreSQL 9.2 8/16

Page 9: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Nuevos tipos de datos!!!!Nuevos tipos de datos!!!!

Range Types:

Representan rangos de valores, se puede usar con números enteros (normales y big), numéricos, horas y fechas, pero podemos crear los nuestros propios usando “create type”.

CREATE TABLE reservation (room int, during tsrange);INSERT INTO reservation VALUES (1108, '[2010-01-01 14:30, 2010-01-01 15:30)');

PostgreSQL 9.2 9/16

Page 10: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Nuevos tipos de datos!!!!Nuevos tipos de datos!!!!

Range Types:@> contains range

int4range(2,4) @> int4range(2,3) <--true

@> contains element '[2011-01-01,2011-03-01)'::tsrange @> '2011-01-10'::timestamp <--true

<@ range is contained by int4range(2,4) <@ int4range(1,7) <--true

<@ element is contained by 42 <@ int4range(1,7) <--false

PostgreSQL 9.2 10/16

Page 11: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Nuevos tipos de datos!!!!Nuevos tipos de datos!!!!

JSON:

Ahora PostgreSQL almacena tipos de datos JSON, estos datos son validados para ser aceptados y luego son almacenados como texto.

Tenemos 2 funciones de apoyo:

● array_to_json(anyarray [, pretty_bool]) ● row_to_json(record [, pretty_bool])

PostgreSQL 9.2 11/16

Page 12: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Y con el soporte de Json viene PL/V8

Una nueva extensión para programar funciones Una nueva extensión para programar funciones en javascript.en javascript.CREATE OR REPLACE FUNCTION plv8_test(keys text[], vals text[]) RETURNStext 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 plv8_test(ARRAY['name', 'age'], ARRAY['Tom', '29']);

PostgreSQL 9.2 12/16

Page 13: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

PL/Coffee

PostgreSQL 9.2 13/16

CREATE OR REPLACE FUNCTION simple_search_inventory(param_search json) RETURNS json AS$$o = JSON.parse(param_search);/** Take a json search request and output a json dataset **/rs = plv8.execute("SELECT prod_code, prod_name FROM inventory WHERE prod_name ILIKE $1 LIMIT $2 OFFSET($3 - 1)*$2", [o.prod_name_search, o.num_per_page, o.page_num]);return JSON.stringify(rs);$$ LANGUAGE plv8 VOLATILE;

CREATE OR REPLACE FUNCTION simple_search_inventory(param_search json) RETURNS json AS$$o = JSON.parse(param_search)## Take a json search request and output a json dataset rs = plv8.execute("SELECT prod_code, prod_name FROM inventory WHERE prod_name ILIKE $1 LIMIT $2 OFFSET ($3 - 1)*$2", [o.prod_name_search, o.num_per_page, o.page_num])return JSON.stringify(rs)$$ LANGUAGE plcoffee VOLATILE;

Page 14: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Una nueva herramienta para los DBAs

pg_stat_statement para descubrir cuantas veces pg_stat_statement para descubrir cuantas veces un query ha sido ejecutado:un query ha sido ejecutado:=#SELECT * FROM words WHERE word= 'foo'; word ­­­­­­    (0 ligne)

=# SELECT * FROM words WHERE word= 'bar'; word ­­­­­­ Bar

=#select * from pg_stat_statements where query like '%words where%';­[ RECORD 1 ]­­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­userid              | 10dbid                | 16384query               | SELECT * FROM words WHERE word= ?;calls               | 2total_time          | 142.314

PostgreSQL 9.2 14/16

Page 15: PostgreSQL 9.2

PostgreSQL 9.2PostgreSQL 9.2

Todo esto y muchas más:

http://www.postgresql.org/docs/9.2/static/release­9­2.html

PostgreSQL 9.2 15/16

Page 16: PostgreSQL 9.2

Los invitamos a probar esta nueva Los invitamos a probar esta nueva versión......GRACIAS!!!!!versión......GRACIAS!!!!!

Ernesto Quiñones AzcárateErnesto Quiñones AzcárateRegional Press ContactRegional Press Contact

[email protected]@postgresql.org

PostgreSQL 9.2 16/16