PostgreSQL 10’un Yenilikleri
PostgreSQL Nedir?
İlişkisel veritabanı sistemi
En yaygın kullanılan veritabanı sunucularından biri
Kökleri 1986’ya dayanıyor, 30+ yıldır geliştiriliyor
Son yıllarda artan bir büyüme eğrisi içinde
Sahibi bir şirket yok, yönetimi topluluk tarafından yapılıyor
Sürümlendirme Sistemi
PostgreSQL 10 öncesi:
Majör sürüm: 9.4, 9.5, 9.6
Minör sürüm: 9.4.17, 9.5.12, 9.6.8
PostgreSQL 10 sonrası:
Majör sürüm: 10, 11, 12
Minör sürüm: 10.3, 11.2, 12.1
Logical Replikasyon
Publisher/subscriber yapısı
Dosya sistemindeki dosyaların farkı yerine veritabanı/tablo değişimlerinin farkının aktarılması
Farklı PostgreSQL majör sürümleri arasında replikasyon yapılabilmesi
Tüm sunucu yerine belirli bir veritabanı ya da tablonun replikasyonunun yapılabilmesi
Çok sayıda veritabanını tek bir veritabanı sunucusunda birleştirme
Bir veritabanı sunucusunun belirli veritabanlarını farklı sunuculara dağıtabilme
Daha Kolay Partitioning (Bölümlendirme)
Eskiden inheritance ile yapılabiliyordu
Artık CREATE TABLE sorgusunda tanımlayarak yapılabiliyor:
CREATE TABLE measurement (
city_id int not null,
logdate date not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (logdate);
CREATE TABLE measurement_y2006m02 PARTITION OF measurement
FOR VALUES FROM ('2006-02-01') TO ('2006-03-01');
PostgreSQL 11’de daha da gelişmesi planlanıyor.
Öntanımlılarda Değişiklikler
postgresql.conf
wal_level → replica
max_wal_senders → 10
max_replication_slots → 10
pg_hba.conf → replikasyon tanımı
pg_basebackup → -X stream
Veritabanı Bağlantılarına Ek Özellikler
Birden fazla PostgreSQL sunucu belirtilebiliyor:
host=pg1,pg2,pg3 user=kullanici password=parola
"Yazabilen" bir PostgreSQL sunucu seçilebiliyor:
host=pg1,pg2,pg3 target_session_attrs=read-write user=kullanici password=parola
.pgpass yerine başka bir dosya belirtilebiliyor:
host=pg1 passfile=/etc/pgparola
Hash İndekslerinde Yeni Özellikler
Göçmeye dayanıklı
Replikasyon destekliyor
Daha az kilitleniyor
Daha hızlı çalışıyor
Dizin İsim Değişiklikleri
pg_xlog dizini → pg_wal
pg_clog dizini → pg_xact
Fonksiyon İsim Değişiklikleri
pg_current_xlog_flush_location → pg_current_wal_flush_lsn
pg_current_xlog_insert_location → pg_current_wal_insert_lsn
pg_current_xlog_location → pg_current_wal_lsn
pg_is_xlog_replay_paused → pg_is_wal_replay_paused
pg_last_xlog_receive_location → pg_last_wal_receive_lsn
pg_last_xlog_replay_location → pg_last_wal_replay_lsn
pg_switch_xlog → pg_switch_wal
pg_xlog_location_diff → pg_wal_lsn_diff
pg_xlog_replay_pause → pg_wal_replay_pause
pg_xlog_replay_resume → pg_wal_replay_resume
pg_xlogfile_name → pg_walfile_name
pg_xlogfile_name_offset → pg_walfile_name_offset
Komut ve Parametre Değişiklikleri
pg_basebackup: --xlog-method → --wal-method
initdb + pg_basebackup: --xlog-dir → --wal-dir
pg_xlogdump → pg_waldump
pg_resetxlog → pg_resetwal
pg_receivexlog → pg_receivewal
View Değişiklikleri
pg_stat_replication
write_location → write_lsn
sent_location → sent_lsn
flush_location → flush_lsn
replay_location → replay_lsn
pg_create_logical_replication_slot: wal_position → lsn
pg_create_physical_replication_slot: wal_position → lsn
pg_logical_slot_get_changes: location → lsn
pg_logical_slot_peek_changes: location → lsn
Diğer
Senkron replikasyonda quorum desteği
Parola doğrulamasında SCRAM-SHA-256 desteği
Sorguların daha iyi paralelleştirilmesi
Tüm metinde aramada JSON desteği
file_fdw’a dış program çalıştırma desteği
Birden fazla kolonun birleşiminden istatistik toplayabilme
Darboğaz analizi daha kolay: 69 olan wait event sayısı artık 184.
XMLTABLE ile XML işleme desteği
Daha fazlası ve detayı: PostgreSQL 10 sürüm notları