PostgreSQL – Gelişmiş Açık Kaynak Kodlu Veritabanı

PostgreSQL – Gelişmiş Açık Kaynak Kodlu Veritabanı

PostgreSQL

PostgreSQL, tüm dünyada popüler olan açık kaynak kodlu, platform bağımsız gelişmiş bir nesne ilişkisel veritabanı yönetim sistemidir. Yüksek performanslı, kararlı ve güvenilirdir. Modern kurumsal veritabanı kabiliyet ve özelliklerine sahiptir. PostgreSQL’in, 1977 yılında başlayan 20 yılı akademik, son 20 yılı endüstride geçen 40 yıllık bir geçmişi olan en eski açık kaynak kodlu yazılımlardan biridir.

PostgreSQL, tüm dünyada kamuda önemli devlet hizmetleri sunan uygulama sistemlerinde (CERN, NASA, Fransa, İngiltere, G.Kore, vb.) finans ve telekom sektörlerinde iş kritik uygulamalarda, dünyada önde gelen üreticilerin ürünlerinde (Apple, Microsoft, IBM, Amazon, vb.), araştırma merkezleri ve üniversitelerde, küçük ölçekli projelerden çok büyük ölçekli kurumsal altyapılarda güvenle kullanılmaktadır.

PostgreSQL, önde gelen ticari veritabanı ürünleri ile rekabet edecek kurumsal veritabanı özelliklerinin yanı sıra günümüz dijital dönüşüm projeleri ve teknolojileri ile uyumlu, dizi şeklindeki veri tipleri, paralel sorgular, JSON
veri tipini desteklemesi ve üzerinde sorgu çalıştırabilmesi gibi birçok yeni ve yenilikçi özelliğe sahiptir.

PostgreSQL, veritabanı ve sistem yöneticileri, yazılım mimarları ve geliştiricileri için çekici gelen yenilikçi birçok özellik sunar. PostgreSQL’in öğrenmesi, kurulumu, konfigürasyonu, yönetimi, izlemesi ve bakımı kolaydır. PostgreSQL ekosisteminde birçok yönetim, izleme açık kaynaklı ve ticari araç vardır. PostgreSQL’in çok aktif ve güçlü geliştirici komünitesi vardır. Her yıl bir majör sürümü yayınlanır.

PostgreSQL’in özellikleri ve kabiliyetleri, mevcut ticari veritabanları ile rekabet edebilecek yenilikçi özelliklere sahiptir. Lisans ücreti olmaması sayesinde size üretici bağımsızlığı sağlar ve ekonomiktir. Kurumsal veritabanı özelliklerine lisans ücreti ödemeden sahip olabilirsiniz. PostgreSQL’i istediğiniz kadar sunucuya kurabilir ve dağıtımını yapabilirsiniz.

Öğrenmesi ve kurması kolaydır. Güncel, detaylı, herkese açık ve erişimi kolay yaygın dokümantasyonu vardır. Yönetimi, yedeklemesi, bakımı ve izlemesi kolaydır. Hata mesajları ve log sistemi açık ve anlaşılırdır. PostgreSQL veritabanı yönetim ve izleme görevleri otomatize edilebilir ve ticari veritabanlarına göre yönetim işleri daha az zaman alır. Planlı bakımlarda düşük kesinti süreleri sağlar. Hata yapmaya engel olan güvenli bir yapısı vardır.

PostgreSQL’in çok gelişmiş bir sorgu planlayıcısı vardır. Geliştirici dostudur. Farklı yazılım geliştirme platform ve dillerini destekler ve uyumlu çalışır. Geliştiricilerin işini kolaylaştıran çok geniş bir eklenti havuzu vardır. Tüm modern programlama dilleri için sürücülere sahiptir. Coğrafi veri yapılarını ve yeni NoSQL yarı yapısal ve yapısal olmayan veri türlerini (JSON, JSONB, XML, vb.) destekler.

Aktif bir topluluk tarafından desteklenmektedir. Tüm dünyadan geliştiricisi bulunan ve çekirdek geliştiricilerin yer aldığı topluluk soru ve sorunlara hızlı geri dönüşlerle çözüm sağlar. Hemen her yıl ticari ürünleri kıskandıran yenilikçi ve güncel özellikler içeren yeni sürümü yayınlanır. DB-Ranking listesinde en popüler veritabanları listesinde ilk 4 içindedir.

PostgreSQL’in lisansında hiçbir kısıtlama yoktur. Bu yazılımı ve belgelerini herhangi bir amaç için, ücretsiz ve yazılı bir anlaşma olmaksızın kullanma, kopyalama, değiştirme ve dağıtma izni verilir.

PostgreSQL dünya da özel ve kamu sektörlerinde iş kritik sistemlerde ve ürünlerde tercih edilen bir veritabanıdır. Örneğin; CERN (Avrupa Nükleer Araştırma Merkezi) 400 TB’tan büyük verisini yönetmek için PostgreSQL’e güveniyor. Bankacılık sektöründe Goldman Sachs ve Morgan Stanley gibi büyük bankalar veri yönetim altyapısı için PostgreSQL’i tercih ediyor.

Türkiye, Güney Kore, İngiltere, Fransa, Hindistan, ABD, Yeni Zelanda, İsrail, Estonya, Norveç ve birçok ülke e-Devlet uygulamalarında PostgreSQL’i kullanıyor.

Global ürün ve hizmet sağlayıcısı Microsoft, Skype, Instagram, Apple, Amazon, Fujitsu, McAfee, Checkpoint, Vmware, Cisco gibi birçok firma ürün ve hizmetlerinde yine PostgreSQL’i kullanıyor. PostgreSQL’den türetilmiş birçok ticari veri yönetim ürünü ve açık kaynaklı proje bulunmaktadır.

En popülerlerinden bazıları şunlardır;
• IBM – Netezza
• Teradata – Aster Data, Hadapt
• Amazon – Redshift
• HP – Vertica
• FUJITSU – Enterprise Postgres
• EnterpriseDB – Postgres Advanced Server
• Google Cloud SQL for PostgreSQL
• Citus Data – Citus
• Greenplum – Greenplum Database
• Brytlyt – Brytlyt GPU Database
• Postgres Professional – Postgres Pro Enterprise
• Postgres-XL (the XL stands for eXtensible Lattice)
• PipelineDB – PipelineDB
• TimescaleDB

PostgreSQL kurumsal veritabanı yönetimi sistemlerinden beklenen standartlara uyumluluk, yüksek erişilebilirlik, yüksek hacimli veri ve işlemler karşısında sağlamlık ve güvenilirlik, yüksek performans, güvenlik, genişleyebilirlik, ölçeklenebilirlik, kolay yönetim ve bakım, hızlı sorun giderme, planlı bakımlarda düşük kesinti süreleri gibi tüm özelliklere sahiptir.

Her yıl çıkan majör sürümleri ile birçok gelişmiş yeni ve yenilikçi özelliği de bünyesine katmaya devam etmektedir.

PostgreSQL’in Önemli Özellikleri

• Tablespaces
• Triggers
• Functions
• Views(Materialized/Updatable)
• Transactions, Nested Transactions (via savepoints)
• Constraint enforcement: check constraints, unique constraints, foreign keys, primary keys
• Extension system: hstore, pg_stat_statements,pg_trgm…
• Temporary tables
• Unlogged tables
• Foreign Data Wrappers (RDBMS, NoSQL, File): MongoDB, Hadoop, Redis , MySQL, Oracle, Delimited Files, vb
• GIS, NoSQL, Graph
• ACID (Atomicity, Consistency, Isolation, Durability)
• MVCC (Multi Version Concurrency Control)
• WAL (Write-Ahead Logging)
• PITR (Point-in-Time Recovery), active / passive standbys
• High Availability
• Replication: Asynchronous/Synchronous, Physical/Logical, Cascaded
• Procedural languages
• Native Partitioning, Inheritance
• Sophisticated query planner/cost based optimizer
• Multi-platform
• Advanced Indexing: GiST, SP-Gist, KNN Gist, GIN, BRIN, Bloom filters
• Parallelization of read queries

Yüksek Erişilebilirlik ve Kümeleme

Yüksek erişilebilir (High Available) mimariye sahiptir. Sunduğu servis kalitesi ile plansız kesinti ve arıza sürelerini minimuma indirir. Yük dengeleme ve yüksek erişilebilirlik için warm standby/hot standby/streaming ve logical (versiyon 10 ve sonrası) replikasyonu destekler.

PostgreSQL, yük dengeleme ve kümeleme yapıları ile veritabanı sunucuları arasındaki iş yüklerinin dengelenmesini sağlar. Sunucuların herhangi birinde aşırı yüklenme önlenirken, kaynak kullanımı optimize edilir, verimlilik en üst düzeye çıkar ve yanıt süreleri en aza iner.

PostgreSQL’de Multi-Master Replikasyonu ile birden çok sunucu master statüsüne sahip olabilirken, farklı lokasyonlarda dağıtık işyükünü yönetimini, yük dengeleme, kümelemeyi destekler. MultiMaster Replikasyonu dinamik veri toplanması için veri yönetimi tasarımı kolaylığı sağlar.

Logical Replikasyon, veritabanı veya tablo başına yapılandırılabilir. Tablo replikasyonu ile farklı yerlerden
herhangi bir işlemi sorunsuz bir şekilde bir lokasyonda birleştirmek mümkündür.

Native Asenkron Çoğaltma (Native Asynchronous Replication), Tam/Artırımlı Yedekleme (Full/Incremental Backup) ve kurtarma modları, veri yeniden senkronizasyon mekanizmalarının kolaylığı gibi özellikler ile PostgreSQL, Disaster Recovery Center (DRC) hazırlığının tam özellik setini destekleyerek, daha fazla maliyet / araç eklemeden veritabanınızın herhangi bir felaketten kurtarılmasını sağlar.

Yüksek Performans

ANSI C programlama dilinde yazılmıştır ve kendisini kanıtlamış yüksek performansı vardır. PostgreSQL, yüksek veri okuma-yazma iş yüklerini istikrarlı ve sağlam şekilde yaparken, veri bütünlüğünü ve güvenliğini korur. Günümüzün ağır ve yüksek hacimli işlem ve sorgu yüklerinde ticari veritabanlarına göre daha düşük kaynakla yüksek performas sunar.

PostgreSQL’de tablo ve satır seviyelerinde kilitleme (table/row level locking) yapabilirsiniz. Daha fazla kilitlemeyi/engellemeyi önleyen daha granüler kilitler kullanabilir, bu şekilde eşzamanlılık artar ve engelleme süresi azalır.

PostgreSQL birçok farklı tip indeksleme yöntemi sunar; B-tree, Hash, GiST (Generalized Search Tree), SP-GiST,GIN (generalized inverted index) ve BRIN. PostgreSQL, kısmi, biricik ve çok sütunlu indeksleri destekler. Ayrıca ifadeler ve operatör sınıfları üzerinde de indekslemeyi destekler.

PostgreSQL, performansı artırmak ve analiz etmek için çeşitli komutlar sağlar. EXPLAIN komutu, bir SQL ifadesinin yürütme planını gösterir. ANALYZE komutu, tablo ve sütunlardaki istatistikleri toplamak için kullanılır. VACUUM komutu, kullanılmayan sabit disk alanını geri kazanmak amacıyla kullanılır. CLUSTER komutu, verileri sabit diskte fiziksel olarak düzenlemek için kullanılır. Tüm bu komutlar veritabanı iş yüküne göre yapılandırılabilir. Tablo kalıtımı (table inheritance) ve kısıtlama çıkarma (constraint exclusion) özelliklerine sahiptir. Tablo kalıtımı ile aynı yapıya sahip tablolar kolayca oluşturulur. Bu tablolar, belirli bir ölçüt temelinde veri alt kümelerini depolamak için kullanılabilir ve belirli senaryolarda bilginin çok hızlı bir şekilde alınması sağlanır.

Ölçeklenebilirlik

PostgreSQL ölçeklenebilir yapıya sahiptir. Basit tek sunuculu küçük uygulamalardan, yüksek işlem kapasitesi gereken çok sunuculu, çok büyük hacimli veri yoğun iş kritik uygulamaların hepsine çözüm sunma kabiliyeti vardır. Küçük başlayıp, istenilen ölçeğe kolayca çıkarılabilir. Senkron ve asenkron streaming replikasyon özelliğine sahiptir.
Dikey ölçeklemeye (scale up) göre çok daha uygun maliyetli olan, yatay ölçekleme (scale out) ile maliyeti azaltılır.

PostgreSQL, büyük tabloların bölümlenmesini (table partitioning) destekler. Büyük tabloların bölümlenmesi veritabanının performansını artırır. PostgreSQL tablespaces yapısını destekler.

PostgreSQL’in günümüzün devasa hızda veri büyümesi ve büyüklüğü yönetim ihtiyaçlarına karşı PostgreSQL Natif Bölümleme (Native Partitioning) özelliği vardır.

Veriler, farklı kısıtlamalara göre bölümlere ayrılabilir ve toplu sonuçlar için sorgulanabilir. İsteğe bağlı bölüm (On-demand partition), daha önce yapılandırılmış olan tüm kuralları değiştirmeden, tek bir sorgu çalıştırarak kolayca eklenebilir.

Güvenlik

PostgreSQL’de güvenlik, yalnızca bir özellik değildir, temel yapılarından biridir. Her minör ve majör sürümü yeni güvenlik özellikleri ve güncellemeleri ile gelir. Kimlik doğrulama, yetkilendirme, denetim, veri güvenliği, veri şifreleme, satır (row) seviyesinde güvenlik gibi birçok güvenlik yapısı vardır. Trust, Password, LDAP, GSSAPI, SSPI, Kerberos, kimlik tabanlı (ident-based), RADIUS, sertifika, PAM, SCRAM(versiyon 11’le birlikte) kimlik doğrulaması gibi çeşitli kimlik doğrulama yöntemlerini destekler.

PostgreSQL, veritabanı nesne erişimini veritabanı, tablo, görünüm(view), fonksiyon, sıra ve sütun dâhil olmak üzere çeşitli düzeylerde kontrol edebilir ve kullanıcılara yetkilendirebilir. Bu PostgreSQL’in veritabanı nesneleri üzerinde çok farklı seviyelerde yetkilendirme kontrolüne sahip olmasını sağlar.

Verileri şifrelemek için donanım şifreleme yöntemlerini, pgcrypto uzantısını veya uygulama arayüzü (API) kullanabilir. PostgreSQL ile veri seviyesinde şifreleme için AES, 3DES gibi farklı şifreleme algoritmaları kullanabilirsiniz.

PostgreSQL istemci sunucu iletişiminde SSL kullanır. Tam PKI altyapısında 3. parti anahtar depolarını kullanabilme özelliğine sahiptir. PostgreSQL’in en katı güvenlik standartlarına (PCI Data Security Standard) tam uyumluluk için altyapısı vardır.

Güvenlik Katmanları

Host Tabanlı Yetkilendirme
SSL Bağlantı
Doğrulama Yöntemleri
Disk Şifreleme
Alan Şifreleme
Kullanıcı / Grup Yetkilendirme
Satır/Sütun Yetkilendirme

Gelişmiş Özellikler

Türkçe dâhil 20’den fazla dile yerelleştirilmiştir.

Tam metin aramasını destekler. Diğer veritabanları gibi tetikleyici ve fonksiyon yapılarına sahiptir.

Veritabanı motoru paralel işleme (paralel sorgu, paralel veri tarama, vb.) yapabilir. PostgreSQL belirli türde sorguları birden çok çekirdek ve işlemciye dağıtabilir. Paralel işlemin gelişmiş gücü ile mevcut kaynakların maksimize edilmesi sırasında sorgu yürütme süresi düşer.

Hot-backup, Point-in-Time Recovery (PITR) özelliklerine sahiptir.

Çoklu Sürüm Eşzamanlılık Kontrolü (MVCC) kullanarak veri tutarlılığını korur. Bir veritabanı sorgulanırken, her işlem, bir süre önce olduğu gibi, verilerin bir anlık görüntüsünü (bir veritabanı sürümü) görür. İşlemlerin tutarsız verileri görüntülemesini engeller ve eşzamanlı işlemlerde işlem yalıtımı sağlar. Okuyucular yazarları, yazarlar okuyucuları engellemez.

PostgreSQL, sistem çökmesi veya arıza durumunda kurtarma sağlayan, gerçekleşmeden önce her ekleme/güncelleme/silme işleminin kaydını yapan, (Oracle REDO kayıtlarına benzer) bir Write Ahead Logging (WAL) mekanizmasına sahiptir.

Çok zengin SQL yapılarını destekler. İlişkilendirilmiş ve ilgisiz alt sorguları destekler. Ortak tablo ifadesini (CTE), window fonksiyonlarını ve özyinelemeli sorguları destekler. PostgreSQL’e her sürümde yeni SQL özellikleri eklenmektedir.

PostgreSQL kolayca genişletilebilecek şekilde tasarlanmıştır. Veritabanına yüklenen uzantılar, yerleşik özellikler gibi çalışır. İlk kurulumla gelen eklentileri contrib dizini altında görebilirsiniz. İhtiyaç duyabileceğiniz eklentileri, PostgreSQL komünite sayfasındaki eklenti kataloğunda arayabilirsiniz.(https://www.postgresql.org/download/products/6-postgresql-extensions)

Veri ambarı olarak konfigüre edebilir ve yüksek hacimli veri yönetimi için kullanabilirsiniz.

PostgreSQL’den türetilmiş Greenplum ve Citus Data veritabanları ile gerçek zamanlı analitik uygulamaları, paralel sorgu işlemelerine yönelik veritabanı sistemleri kurabilirsiniz.

Diğer Veritabanlarından Göç

PostgreSQL’in mimarisi, hem ilişkisel hem de ilişkisel olmayan modellerden herhangi bir mevcut veritabanı sisteminden geçişi destekleyecek kadar esnektir.

Veritabanı göçünü kolaylaştıran birçok özelliğe sahiptir. Mükemmel özelliklerden biri, diğer veritabanlarının PostgreSQL’e bağlanmasını sağlayan Yabancı Veri Paketleyicileridir (Foreign Data Wrappers).

Yabancı Veri Paketleyici eklentileri ile harici veri kaynaklarına bağlanarak üzerinde sorgu çalıştırabilir, veri aktarabilir/alabilir ve yerel veri tabloları üzerinde yapılan sorguların sonuçları ile birleştirebilir, veri entegrasyonu yapabilirsiniz. Genel, spesifik (Oracle, MySQL, PostgreSQL, MS SQL Server, DB2, Teradata), NoSQL (Cassandra, MongoDB, Redis, Neo4j), dosya (XML, CSV, düz metin), coğrafi bilgi sistemleri gibi farklı yapılarda harici veri kaynaklarına ve farklı veritabanlarına erişebilirsiniz (http://wiki.postgresql.org/wiki/Foreign_data_wrappers).

SQL standartlarını ile uyumlu olması, özellikle ticari ilişkisel veritabanlarından PostgreSQL’e göçü kolaylaştırmaktadır. Diğer veritabanlarından PostgreSQL’e göç için geliştirilmiş açık kaynak kodlu ve ticari araçlar mevcuttur

NoSQL

PostgreSQL sadece ilişkisel veritabanı ve SQL dilinden ibaret değildir. Yapısal veri modellerinin yanında, yarı yapısal ve yapısal olmayan (NoSQL) veri yapılarını da destekler.

Güçlü veritabanı özellikleri ve yapısal olmayan veriler için şemasız veri depoları, geliştiricilerin çevik bir şekilde güvenilir ve esnek uygulamalar oluşturmasını sağlar.

PostgreSQL’in bu kabiliyeti hem SQL hem de NoSQL arasında seçim yaparken şüpheyi ortadan kaldırırken, aynı anda iki özelliğe sahip olmamızı sağlar.

JSON (JavaScript Simple Object Notation) ve JSONB (JSON Binary) veri türlerini destekler.

Anahtar/değer (key/value) çiftleri PostgreSQL hstore uzantısı tarafından desteklenir.

XML(Extensible Markup Language) veri türünü destekler. PostgreSQL, XML belgelerini oluşturmak için XML fonksiyonlarına sahiptir. Ayrıca, bir XML belgesindeki bilgileri bulmak için xpath’i destekler

Limitleri

PostgreSQL Ticari ve Açık Kaynak Kodlu Yönetim Araçları

• Yönetim Araçları

phpPgAdmin

dBeaver

OmniDB

PgDevOps

EDB Postgres Enterprise Manager (Ticari)

Navicat (Ticari)

• İzleme ve Performans Analizi

powa

pgBadger

mamonsu

Zabbix

Nagios

Open Postgresql Monitoring

Quest Foglight for PostgreSQL (Ticari)

• Yedekleme ve Veri Entegrasyonu

repmgr

pglogical

Bucardo

Slony

pgBarman,

pgBackRest

Pitrery

Omnipitr

Wal-e

pg_probackup

EDB Backup and Recovery Tool (Ticari)

• Yüksek Erişilebilirlik ve Yük Dengeleme

Pgbouncer

Pgpool

PgHA

Repmgr

EDB Postgres Failover Manager (Ticari)

• Veritabanı Göçü (Migration)

Ora2Pg

Pentaho

SQLINES

Foreign Data Wrappers

EDB Postgres Migration Toolkit
(Ticari)

Talend (Ticari)

Ispirer MnMTK (Ticari)

psql Komut Listesi

• Login
$ psql -d veritabani -U kullanici –W
(-h bağlanılacak sunucu, -U bağlantı kurulacak kullanıcı, -p port numarası)

• Sık kullanılan psql komutları

Veri yükleme, yedekleme

$ psql -W -U kullanici -H sunucuadi < dosya.sql

$ pg_dump -W -U kullanici -h sunucuadi veritabani_adi > dosya.sql

$ pg_dump –kullanici=kullanici-adi –file=yedek-dosya-adi veritabaniadi

$ psql -U kullanici-adi veritabaniadi < yedek-dosya-adi

$ pg_basebackup -U kullanici-adi -x -D /yedekleme-klasoru/

Kaynak : yte.bilgem.tubitak.gov.tr

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir