Posts

Showing posts with the label PostgreSQL10

PostgreSQL 10'da Partitioning

Merhaba, Partitioning aslında bir tablonun belirlenen kriterler için küçük parçalara ayrılmasıdır. Parçalarına ayrılan tabloya partitioned(master) tablo denir. Partitioned tabloları oluşturan küçük tablolara da partition(child) tabloları denir. Büyük tabloları daha küçük parçalara ayırmanın bir kaç sebebi var. Sorgu performansının arttırılmasını sağlar. Bir tablonun erişilmiş satırların çoğu aslında tek bir partitionda yada küçük parçalar halinde biren fazla partition tablolarında yer alır. Partition tabloları index sütunlarına yol göstermeye, index boyutunu küçültmeye ve yoğun şekilde kullanılan indexleri memory ile fit etmeye yarar. Bulk loads ve DELETE işlemleri için partition tablolarının partitioned tablolara eklenmesi ve çıkarılmasıyla başarım sağlanabilir. ALTER TABLE DETACH PARTITION yapmak yada partitioned tabloyla bağını DROP TABLE ile koparmak bulk operasyonlar için oldukça hızlıdır. DELETE komutundan dolayı VACUUM gereksinimi ortadan kalkacaktır. PostgreSQL 10 öncesinde ku

PostgreSQL'de Parolası Encrypt Edilmemiş Kullanıcılar için Authentication Düzenlemesi

Merhaba, PostgreSQL'de authentication ayarlarını pg_hba.conf dosyası içinde yapıyoruz. Pg_hba.conf dosyasına ait detaylı bilgiye buradan ulaşabilirsiniz. Pg_hba.conf içinde authentication method olarak password kullanılmışsa bunun anlamı kullanıcı parolası network üzerinden plaintext olarak aktarıldığıdır. Eğer böyle bir durumda authentication method değiştirmek istenirse izlenecek adım; Belirli bir kullanıcı için authentication method password kullanılmış ise o kullanıcının parolasının encrypt olup olmadığından pg_authid tablosuna bakılarak emin olunmalı. Eğer kullanıcı parolası encrypt edilmemişse(pg_authid tablosunda rolpassword alanına bakılmalı) o kullanıcı için ALTER ROLE .. WITH ENCRYPTED PASSWORD 'kullanıcı_parolası'; denilmeli. Kullanıcı parolası encrypted olarak saklandığına göre pg_hba.conf dosyasında password yerine 9.6 ve öncesi için en azından md5 yazılmalı. 10 ve sonrası için md5 veya scram-sha-256 kullanılabilir. (scram-sha-256, md5'ten daha g

PostgreSQL 10 Logical Replication

Merhaba, PostgreSQL 10 ile gelen yeniliklerden biri olan Logical Replication'dan bahsetmek isterim. Logical Replication (LR), veri objelerini ve üzerlerindeki değişiklikleri, replikasyon kimliklerine göre (primary key gibi) replike eder. Yani aslında publisher veritabanından datanın snapshot’ının kopyalanmasıdır. Tüm değişiklikler tamamlandığında publisher üzerindeki değişiklikler subscriber’a real time olarak yollanır. LR ile sadece normal tablolar replike edilebilir. Materialized view, view, partition’un root tablosu yada foreign tabloları replike edilemediği göz önünde tutulmalıdır. Ayrıca şema bazlı veri aktarımı yapılamamakta. Farklı PostgreSQL versiyonları arasında LR yapılabilir. Birden fazla veritabanı üzerinden tek bir veritabanına LR yapılabilir. Farklı kullanıcı gruplarına replike olmuş datalar için yetki verilebilir. Veri objesi üzerinde yapılan her tekil değişiklik karşı tarafa aktarılır. Tek bir tablonun replikasyonu birden farklı cluster’lar üzerinde olabilir. LR i