Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Software-update: PostgreSQL 10

PostgreSQL is een open source relational database management system, dat op diverse besturingssystemen kan worden gedraaid. Hierdoor is het breed inzetbaar in verschillende omgevingen. De ontwikkelaars hebben enkele dagen geleden versie 10 van deze database uitgebracht. Er is onder andere hard gewerkt aan het verbeteren van de mogelijkheden om data op te delen en via verschillende nodes aan te bieden. De bijbehorende aankondiging van PostgreSQL ziet er als volgt uit:

PostgreSQL 10 Released

The PostgreSQL Global Development Group today announced the release of PostgreSQL 10, the latest version of the world's most advanced open source database.

A critical feature of modern workloads is the ability to distribute data across many nodes for faster access, management, and analysis, which is also known as a "divide and conquer" strategy. The PostgreSQL 10 release includes significant enhancements to effectively implement the divide and conquer strategy, including native logical replication, declarative table partitioning, and improved query parallelism.

"Our developer community focused on building features that would take advantage of modern infrastructure setups for distributing workloads," said Magnus Hagander, a core team member of the PostgreSQL Global Development Group. "Features such as logical replication and improved query parallelism represent years of work and demonstrate the continued dedication of the community to ensuring Postgres leadership as technology demands evolve."

This release also marks the change of the versioning scheme for PostgreSQL to a "x.y" format. This means the next minor release of PostgreSQL will be 10.1 and the next major release will be 11.

Logical Replication - A publish/subscribe framework for distributing data
Logical replication extends the current replication features of PostgreSQL with the ability to send modifications on a per-database and per-table level to different PostgreSQL databases. Users can now fine-tune the data replicated to various database clusters and will have the ability to perform zero-downtime upgrades to future major PostgreSQL versions.

"We have been heavily using PostgreSQL since 9.3 and are very excited about version 10 since it brings basis for long-awaited partitioning and built-in logical replication. It will allow us to use PostgreSQL in even more services," said Vladimir Borodin, DBA Team Lead at Yandex.

Declarative Table Partitioning - Convenience in dividing your data
Table partitioning has existed for years in PostgreSQL but required a user to maintain a nontrivial set of rules and triggers for the partitioning to work. PostgreSQL 10 introduces a table partitioning syntax that lets users easily create and maintain range and list partitioned tables. The addition of the partitioning syntax is the first step in a series of planned features to provide a robust partitioning framework within PostgreSQL.

Improved Query Parallelism - Quickly conquer your analysis
PostgreSQL 10 provides better support for parallelized queries by allowing more parts of the query execution process to be parallelized. Improvements include additional types of data scans that are parallelized as well as optimizations when the data is recombined, such as pre-sorting. These enhancements allow results to be returned more quickly.

Quorum Commit for Synchronous Replication - Distribute data with confidence
PostgreSQL 10 introduces quorum commit for synchronous replication, which allows for flexibility in how a primary database receives acknowledgement that changes were successfully written to remote replicas. An administrator can now specify that if any number of replicas has acknowledged that a change to the database has been made, then the data can be considered safely written.

"Quorum commit for synchronous replication in PostgreSQL 10 gives more options to extend our ability to promote database infrastructure with nearly zero downtime from the application perspective. This allows us to continuously deploy and update our database infrastructure without incurring long maintenance windows," said Curt Micol, Staff Infrastructure Engineer at Simple Finance.

SCRAM-SHA-256 authentication - Secure your data access
The Salted Challenge Response Authentication Mechanism (SCRAM) defined in RFC5802 defines a protocol to improve upon the secure storage and transmission of passwords by providing a framework for strong password negotiation. PostgreSQL 10 introduces the SCRAM-SHA-256 authentication method, defined in RFC7677, to provide better security than the existing MD5-based password authentication method.
Versienummer 10
Releasestatus Final
Besturingssystemen Windows 7, Linux, BSD, macOS, Solaris, UNIX, Windows Server 2008, Windows Server 2012, Windows 8, Windows 10
Website PostgreSQL
Download http://www.postgresql.org/downloads
Licentietype Voorwaarden (GNU/BSD/etc.)

Reacties (11)

Wijzig sortering
Net een paar weken geleden over op 9.6 en 10 is er alweer. Hopen dat in-place migratie ook mogelijk is tussen major versies.

De verbeteringen mbt table partitioning klinken in ieder geval erg goed. Binnenkort maar eens mee experimenteren.

Geweldige database in ieder geval, ben er inmiddels 5 jaar geleden op overgestapt van MySQL en geen seconde spijt van gehad.
Geweldige database in ieder geval, ben er inmiddels 5 jaar geleden op overgestapt van MySQL en geen seconde spijt van gehad.
Ik ben wel benieuwd naar wat ervaring over het verschil in de praktijk. Wat was de reden van de overstap en wat bevalt het meest?
Consistentie. Het niet hoeven kiezen van een database engine. Het niet voor elke kolom apart een character set hoeven opgeven.

Het kunnen deferren van foreign key constraints wat in MySQL niet mogelijk is.

Het in een transactie kunnen aanpassen van databasestructuur waarbij een rollback de structuur terugzet. In MySQL betekent een DROP TABLE in een transactie nog steeds dat de tabel voorgoed verdwenen is.

Striktheid. Als je in MySQL een VARCHAR van 50 karakters hebt en je stopt er 60 karakters in, dan zal MySQL de eerste 50 afknippen en de rest weggooien. Silent data loss. PostgreSQL geeft in dat geval een foutmelding dat je iets probeert te doen wat niet kan.

De upserts in PostgreSQL 9.5 zijn veel flexibeler dan de ON DUPLICATE KEY structuur in MySQL - PostgreSQL staat je toe om conflicten in elke omstandigheid af te vangen en op een aparte manier te behandelen.

Het is eigenlijk bij alles wat ik tegenkom dat je heel erg het gevoel hebt dat er bij PostgreSQL eerst goed nagedacht wordt over de beste manierom een feature te implementeren terwijl er bij MySQL zo veel mogelijk features in gegooid worden maar niet netjes uitgewerkt zijn.

En daarnaast was het bij het toevoegen van GIS-data in de database prettig dat alles al met PostgreSQL werkte - PostGIS is wel de de-facto standaard op dat gebied.
Thanks! Erg nuttig om eens praktijkervaring te horen in plaats van vergelijkende tabellen met features.
https://www.postgresql.or...10.html#idm46046834255504
E.1.2. Migration to Version 10

A dump/restore using pg_dumpall, or use of pg_upgrade, is required for those wishing to migrate data from any previous release.

[Reactie gewijzigd door elmuerte op 17 oktober 2017 23:07]

Dat zegt niet zo veel ;-) Ik heb altijd pg_upgrade gebruikt. De standaard optie daarbij is om de data te kopiŰren zodat je na afloop van het proces een werkende oude en een werkende nieuwe versie hebt, maar het kan ook met hardlinks. Hierbij delen de oude en de nieuwe versie de datafiles, maar kun je daarna dus de oude versie niet meer gebruiken. Uit de documentatie van pg_upgrade:
-k
--link

use hard links instead of copying files to the new cluster
Dat is toch wel prettig bij een grote database.

[Reactie gewijzigd door MadEgg op 18 oktober 2017 09:53]

Net een paar weken geleden over op 9.6 en 10 is er alweer. Hopen dat in-place migratie ook mogelijk is tussen major versies.
pg_upgrade regelt dit voor jou.
De verbeteringen mbt table partitioning klinken in ieder geval erg goed. Binnenkort maar eens mee experimenteren.
Experimenteren is goed! Maar in de praktijk (mijn praktijk/ervaring) is dat je het zelden nodig hebt. Of krijgen jouw applicaties echt tientallen miljoenen records per dag te verwerken? Dat is maar bij weinig applicaties het geval en dus zul je partitionering ook maar weinig nodig hebben.

Overigens ben ik wel blij dat het er nu eindelijk in zit!
Eerder honderduizenden records per dag. Stuk of 15 miljoen records die regelmatig vernieuwd worden. Het moet eigenlijk uitgeschaald gaan worden dus partitioning kan daar zeker bij helpen. Maar het zal eers wel bij experimenteren blijven inderdaad.

En pg_upgrade regelt de upgrade inderdaad, maar ik vroeg me af of de hardlink-methode van pg_upgrade ook tussen major versies werkt - dat zou dus betekenen dat het opslagformaat op schijf niet aangepast is. Of gradueel aangepast wordt als nieuwe data wordt geschreven.
Eerder honderduizenden records per dag.
Dus een 200 miljoen records per jaar? EÚn partitie per jaar zou dan nog zinvol kunnen zijn, maar kleiner zou ik niet zo snel doen. En wanneer je per record 1kB data hebt, wat in mijn wereld vrij veel is, dan heb je het over een 190GB per jaar. Wat ik niet veel vind en dus ook geen reden zou vinden voor partitionering.
Stuk of 15 miljoen records die regelmatig vernieuwd worden.
Het ligt eraan welke records het zijn of partitionering dan zinvol is. Heb je al met de fillfactor gespeeld om zo HOT-updates te kunnen gebruiken? Zie pg_stat_user_tables wat daar het resultaat van is.
En pg_upgrade regelt de upgrade inderdaad, maar ik vroeg me af of de hardlink-methode van pg_upgrade ook tussen major versies werkt - dat zou dus betekenen dat het opslagformaat op schijf niet aangepast is. Of gradueel aangepast wordt als nieuwe data wordt geschreven.
pg_upgrade gebruik je toch uitsluitend voor major upgrades? Volgens mij (en de handleiding) kun je via een hardlink van 9.6 naar 10 migreren, ik kom geen beperkingen tegen. Maar ik zou het altijd eerst testen en uiteraard een backup bij de hand houden.
Dus een 200 miljoen records per jaar? EÚn partitie per jaar zou dan nog zinvol kunnen zijn, maar kleiner zou ik niet zo snel doen. En wanneer je per record 1kB data hebt, wat in mijn wereld vrij veel is, dan heb je het over een 190GB per jaar. Wat ik niet veel vind en dus ook geen reden zou vinden voor partitionering.
Het is wel iets meer dan dat. Het zijn HTML-pagina's met metadata. Dus eerder in de orde van 10 tot 100 KiB per record.
Het ligt eraan welke records het zijn of partitionering dan zinvol is. Heb je al met de fillfactor gespeeld om zo HOT-updates te kunnen gebruiken? Zie pg_stat_user_tables wat daar het resultaat van is.
HOT-updates lukken alleen als alleen niet-ge´ndexeerde velden worden bijgewerkt, toch? Dat zit er hier helaas niet in - er zitten aardig wat indexen op om de query's snel te houden, waaronder een fikse pg_trgm GIN-index op de HTML zelf. Elke update leidt dus ook tot herindexeren.
pg_upgrade gebruik je toch uitsluitend voor major upgrades? Volgens mij (en de handleiding) kun je via een hardlink van 9.6 naar 10 migreren, ik kom geen beperkingen tegen. Maar ik zou het altijd eerst testen en uiteraard een backup bij de hand houden.
Backups ten overvloede, natuurlijk ;) Maar het migratieproces zonder hard links duurt enkele uren, het migratieproces met hard links kost ongeveer 10 minuten.

Als je 9.5 en 9.6 als major-versies rekent, dan alleen voor major upgrades ;) Voor de upgrade van 9.4-9.5 en 9.5-9.6 heb ik de pg_upgrade met hard link gebruikt. Maar ik meen dat die functie niet werkte van 8.x naar 9 (mede omdat die ook pas later toegevoegd is natuurlijk).
Correct, HOT werkt alleen wanneer de data die wordt geŘpdatet, niet is ge´ndexeerd.

Dan pg_upgrade:
pg_upgrade supports upgrades from 8.3.X and later to the current major release of PostgreSQL, including snapshot and alpha releases.
Afkomstig uit de handeiding van 9.0

Maar goed, ik mag hopen dat je geen 8.x meer gebruikt.

Op dit item kan niet meer gereageerd worden.


Call of Duty: Black Ops 4 HTC U12+ dual sim LG W7 Google Pixel 3 XL OnePlus 6 Battlefield V Samsung Galaxy S9 Dual Sim Google Pixel 3

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank en Intermediair de Persgroep Online Services B.V. © 1998 - 2018 Hosting door True

*