Your SlideShare is downloading. ×
9.1 Grand Tour
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

9.1 Grand Tour

2,740
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,740
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 9.1 Tour Grand Josh Berkus Postgres Open September 2011
  • 2. Home Replication Tools Synchronous Replication Per-Column CollationsOtherFeatures SE-Postgres wCTEsExtensions SSI K-Nearest Neighbor SQL/MED Unlogged Tables
  • 3. Asynchronous Replication
  • 4. Asynchronous Replication
  • 5. Synchronous Replication
  • 6. Synchronous Replication
  • 7. Synchronous Replicationstandby Paris:primary_conninfo = host=john port=5432 user=replication application_name=parismaster London:synchronous_commit = onsynchronous_standby_names = paris,madrid,berlin
  • 8. Synchronous Replicationpostgres=# select application_name as appname, state,sync_state, sync_priority as prty, replay_locationfrom pg_stat_replication; appname | state | sync_state | prty | replay_loc---------+-----------+------------+------+------------ paris | STREAMING | SYNC | 1 | 0/29154EB8 madrid | STREAMING | POTENTIAL | 2 | 0/291452F0 berlin | STREAMING | POTENTIAL | 3 | 0/29154EB8
  • 9. Transaction Control# set synchronous_commit = on;# begin;# update user_balance# set balance = balance - 300# where user = 14301;# update user_balance# set balance = balance + 300# where user = 13221;# commit;
  • 10. Transaction Control# set synchronous_commit = local;# insert into user_messages# values ( 14301, 13221,# hello a/s/l? ); Po stg re sO nly !
  • 11. New Replication Tools● pg_stat_replication view ● shows all replicas and their statuses● pg_basebackup ● single-command cloning over port 5432● re-mastering ● promote a replica to be the new master● new functions ● pg_last_xact_replay_timestamp() ● pg_xlog_replay_pause()
  • 12. Per-Column CollationsID english 日本語787 error エラー12 unique ユニークな456 index インデックス333 documentation ドキュメンテーション217 open source オープンソース2134 penguin ペンギン
  • 13. Per-Column Collations$ create table collated_polish (some_texttext collate "pl_PL.utf8");$ copy collated_polish from /tmp/polish;$ select * from collated_polish order bysome_text;some_text-----------alfacarcomalamaódkamama
  • 14. Land ofSurrealQueries
  • 15. Writable CTEsWITH deleted_posts AS ( DELETE FROM posts WHERE created < now() - 6 months::INTERVAL RETURNING *)SELECT user_id, count(*) FROMdeleted_posts group BY 1;
  • 16. Po stg Writable CTEs re sO nlyWITH deleted_posts AS ( ! DELETE FROM posts WHERE created < now() - 6 months::INTERVAL RETURNING *),deleted_per_user as ( SELECT user_id, count(*) FROM deleted_posts GROUP BY 1)UPDATE countsSET posts_count = posts_count - d.countFROM deleted_per_user dWHERE d.user_id = counts.user_id;
  • 17. Serialized Snapshot Isolation ● Allows true serialization of concurrent transactions ● No more explicit locking! ● No more deadlocks! ● As long as each transaction works, all will work.Po Including limited predicate locking. ● stg res On ly!
  • 18. See SSI Th eTupdate othello alkset pieces = !white where update othello setpieces = black; pieces = black where pieces = white; commit;commit;ERROR: could notserialize access due toread/writedependenciesamongtransactions
  • 19. Unlogged TablesCREATE UNLOGGED TABLEcleaned_log_importAS SELECT hit_time, pageFROM raw_hits, hit_watermarkWHERE hit_time > last_watermark AND is_valid(page);
  • 20. Po stg SE-Postgres re sO nly !● Now a contrib module! ● uses “hooks” enabled at build time● Integrates with SE-Linux ● SE-Linux “security labels” become object permissions ● covers all database object permissions● row-level access control not implemented yet
  • 21. SE-Postgres
  • 22. SE-Postgres
  • 23. K-Nearest Neighbor
  • 24. Po K-Nearest Neighbor s 1 stg re st!SELECT *, position <-> $my_current_location as distanceFROM gelateriasORDER BY position <-> $my_current_locationLIMIT 3;
  • 25. SQL-MEDFDR FDRFDR
  • 26. SQL-MEDCREATE FOREIGN TABLE raw_hits( hit_time TIMESTAMP, page TEXT )SERVER file_fdwOPTIONS (format csv, delimiter;, filename /var/log/hits.log);
  • 27. See SQL-MED the talk !SELECT page, count(*)FROM raw_hitsWHERE hit_time > 2011-04-16 16:00:00 AND hit_time <= 2011-04-16 17:00:00GROUP BY page;
  • 28. Extensions
  • 29. Po stg Extensions re sO nlyCREATE EXTENSION IF NOT EXISTS citext !WITH SCHEMA ext;dxSchema | Name | Version | Description-------+--------+----------+------------ext | citext | 9.1devel | case- insensitive character string type
  • 30. ExtensionsALTER EXTENSION citext UPDATE TO 9.2;DROP EXTENSION citext;
  • 31. Extensions
  • 32. Other Features● PL/Python overhaul● Valid-on-creation Foreign Keys● Extensible ENUMs● Triggers on Views● New Trigram implementation● Reduced NUMERIC size● ALTER TYPE without rewrite● pg_dump directory format
  • 33. 9.1 Sessions at pgOpen● Unlogged Tables: Friday 9:45● Accelerating Local Search with PostgreSQL 9.1: Friday 9:45● PostgreSQL at the Center of Your Dataverse: Friday 10:10● True Serializable Transactions Are Here: Friday 11:00
  • 34. Contact● Josh Berkus: josh@pgexperts.com ● blog: blogs.ittoolbox.com/database/soup● PostgreSQL: www.postgresql.org ● pgexperts: www.pgexperts.com● Upcoming Events ● PostgreSQL Europe ● Denver pgDay This talk is copyright 2011 Josh Berkus and is licensed under the creative commons attribution license. Special thanks for materials to: Hubert Lubaczewski (wCTE, collation examples), Andrew Dunstan (file_FDW)