SlideShare a Scribd company logo
1 of 20
PostgreSQL Atölyesi
Erkin Çakar
erk.cakar@gmail.com
Hackerspace – 09.2013
1. oturum
Ajanda
● PostgreSQL Temelleri
● Nedir?
● Template Veritabanı Kavramı
● PostgreSQL'de Şema Kavramı
● Transactionlar & MVCC
● Savepointler
● Kullanıcı/grup kavramı & yetkilendirme
● Erişim Kontrol Mekanizması
● PostgreSQL yapılandırması
Tarihçe
● 1977 – 1985
– Berkeley Üniversitesi'nde Ingres adı verilen ilişkisel veritabanı geliştirildi.
– Ingres kodu Relational Technologies/Ingres Corporation tarafından satın alındı ve ilk ticari ilişkisel
veritabanlarından biri oldu.
● 1986 – 1994
– Berkeley Üniversitesi'nde geliştirilmeye devam etti ve Postgres adını aldı.
– Bu kod ise Illustra tarafından satın alındı ve Informix olarak geliştirilmeye başlandı
● 1995 – 1996
– 1995’te SQL özellikleri Postgres’e eklendi ve Postgres95 adını aldı
● 1996 -
– kod geliştirmesi için e-posta listesi açılmasından sonra birçok gönüllü Postgres’i geliştirmek için
çalışmaya başladı.
– Adı son kez değişti ve PostgreSQL oldu.
ACID Uyumluluğu
● ATOMICITY: Ya hep ya hiç
● CONSISTENCY: Tutarlı verinin yazıldığı garanti edilir.
● ISOLATION: Bir transaction diğer transactionlarda yapılan işlemleri goremez,
müdahale edemez.
● DURABILITY: Commit edilen veri kaybolamaz.
Transactionlar
● READ COMMITTED
– Kayıt eklenebilir, güncellenebilir ve silinebilir
– Güncel veriyi görür
● REPEATABLE READ
– Kayıt eklenebilir
– Güncelleme ve silme yapılamaz
– Transaction içinde değişen veriyi değil hep aynı veriyi görür
● SERIALIZABLE
– Yeni kayıt, güncelleme ve silme yapılamaz
– Transaction içinde değişen veriyi değil hep aynı veriyi görür
MVCC
● Multi-Version Concurrency Control
● Okuma ve yazma işlemlerinin çakışmasını önleyerek birbirlerinden bağımsız bir
biçimde çalışabilmelerini sağlar.
Couchbase Virtuoso firebird
PostgreSQL BigTable HyperGraphDB
OrientDB Project Voldemort Drizzle
CouchDB clustrix IBM DB2
InnoDB Cloudant StormDB
Percona Server InterSystems Caché InterBase
MVCC
● Committed & Xmin < Current XID – görünür
● Xmax <= Current XID – görünmez
Savepoint
● Bir transaction içinde birden fazla olabilir.
● ROLLBACK TO SAVEPOINT tek yönde olur.
Template Veritabanı Kavramı
● En temeli: template0
● Esnek: template1
– kullanıcı yetkileri
– Extensions & language
● datistemplate = true
● Template yaratabilirsiniz
PostgreSQL Şema Kavramı
● Mantıksal gruplara ayırma
● Daha kolay yönetim
● 3. parti uygulama rahatlığı
Kullanıcı/grup Yetkilendirmeleri
● CREATE ROLE = CREATE USER = CREATE GROUP
● REVOKE ALL ON SCHEMA public FROM public;
● 5 tablo
● Her grup için 2 kullanıcı olsun.
Gruplar
– admin: Tüm yetkilere sahip olsun
– audit: Sadece okuma yetkisi
– crm: user tablosunda sadece email ve phone kolonlarını görebilsin. Bir
başka tablo da ise sadece bir kolonu göremesin (örn. creditcard no)
– developer: okuma yazma silme güncelleme işlemlerini yapabilsin.
Erişim Kontrol Mekanizmaları
● pg_hba.conf
● listen_address='*'
host travego_test srv_travego 10.22.2.142/32 md5
host travego_test srv_setra 10.22.2.107/32 md5
host travego_test erkin_cakar 172.10.120.0/24 md5
host @dikey_tests +dikey_developer 172.10.120.0/24 md5
PostgreSQL Yapılandırması
● RAID10 & !RAID5
● Tablespace
● data, index, pg_xlog, backup, wal archive
● [root@travego ~]$ df -h
/dev/mapper/vg_travego-lv_root
123G 17G 100G 15% /
/dev/mapper/travego_base-lv_base
197G 6.6G 181G 4% /data/base
/dev/mapper/travego_index-lv_index
99G 3.4G 91G 4% /data/index
/dev/mapper/travego_wal-lv_wal
148G 16G 126G 11% /data/archives
RAID Yapıları
RAID Yapıları
RAID Yapıları
Dosya Yolu
travego=# select pg_relation_filenode('auth_user');
pg_relation_filenode
----------------------
16910
(1 row)
travego=# select pg_relation_filepath('auth_user');
pg_relation_filepath
----------------------------------------------
pg_tblspc/16399/PG_9.2_201204301/16400/16910
(1 row)
PostgreSQL Kurulum
● yum install postgresql93-server postgresql93-contrib
● apt-get install postgresql-9.3
Önemli
● Tablo ve Index günlük büyüme oranları
● Vacuum süresi
● WAL archive takibi
● Schema değişiklikleri
● tail_n_mail
● Graphite & Carbon
● Fabric
– pg_hba.conf
– postgresql.conf
– Crontab
● Login & sudo mails
Kaynaklar
● http://postgresql.org
● https://devcenter.heroku.com/articles/postgresql-concurrency
● http://en.wikipedia.org/wiki/Multiversion_concurrency_control
● http://www.slideshare.net/Lipsum/postgresqle-genel-bak-14036831
● http://en.wikipedia.org/wiki/Standard_RAID_levels

More Related Content

Similar to Hackerspace PostgreSQL Atolyesi - 1

Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaHüseyin Mert
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11Cihan Özhan
 
agem_intern_report
agem_intern_reportagem_intern_report
agem_intern_reportMeliz Ersoy
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleriErtugrul Akbas
 
Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Anar Godjaev
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
WordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
WordPress ve Multisite Wordpress İle Büyük Ölçekli ÇözümlerWordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
WordPress ve Multisite Wordpress İle Büyük Ölçekli ÇözümlerSalih Özdemir
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices ArchitectureDilaver Demirel
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Symfony2 & doctrine
Symfony2 & doctrineSymfony2 & doctrine
Symfony2 & doctrineEmre YILMAZ
 
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziPig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziHakan Ilter
 
Edb kurumsal dunyaicinoneriler.101614
Edb kurumsal dunyaicinoneriler.101614Edb kurumsal dunyaicinoneriler.101614
Edb kurumsal dunyaicinoneriler.101614EDB
 
Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden GateAnar Godjaev
 

Similar to Hackerspace PostgreSQL Atolyesi - 1 (20)

Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11
 
agem_intern_report
agem_intern_reportagem_intern_report
agem_intern_report
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
 
12factor apps
12factor apps12factor apps
12factor apps
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleri
 
C# OOP
C# OOPC# OOP
C# OOP
 
Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇
 
Sukru_TRSUG2016
Sukru_TRSUG2016Sukru_TRSUG2016
Sukru_TRSUG2016
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
WordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
WordPress ve Multisite Wordpress İle Büyük Ölçekli ÇözümlerWordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
WordPress ve Multisite Wordpress İle Büyük Ölçekli Çözümler
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Symfony2 & doctrine
Symfony2 & doctrineSymfony2 & doctrine
Symfony2 & doctrine
 
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri AnaliziPig ve Hive ile Hadoop üzerinde Veri Analizi
Pig ve Hive ile Hadoop üzerinde Veri Analizi
 
Çevik Yaklaşım ve Scrum
Çevik Yaklaşım ve ScrumÇevik Yaklaşım ve Scrum
Çevik Yaklaşım ve Scrum
 
Edb kurumsal dunyaicinoneriler.101614
Edb kurumsal dunyaicinoneriler.101614Edb kurumsal dunyaicinoneriler.101614
Edb kurumsal dunyaicinoneriler.101614
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 
Nosql & MongoDB
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDB
 

Hackerspace PostgreSQL Atolyesi - 1

  • 2. Ajanda ● PostgreSQL Temelleri ● Nedir? ● Template Veritabanı Kavramı ● PostgreSQL'de Şema Kavramı ● Transactionlar & MVCC ● Savepointler ● Kullanıcı/grup kavramı & yetkilendirme ● Erişim Kontrol Mekanizması ● PostgreSQL yapılandırması
  • 3. Tarihçe ● 1977 – 1985 – Berkeley Üniversitesi'nde Ingres adı verilen ilişkisel veritabanı geliştirildi. – Ingres kodu Relational Technologies/Ingres Corporation tarafından satın alındı ve ilk ticari ilişkisel veritabanlarından biri oldu. ● 1986 – 1994 – Berkeley Üniversitesi'nde geliştirilmeye devam etti ve Postgres adını aldı. – Bu kod ise Illustra tarafından satın alındı ve Informix olarak geliştirilmeye başlandı ● 1995 – 1996 – 1995’te SQL özellikleri Postgres’e eklendi ve Postgres95 adını aldı ● 1996 - – kod geliştirmesi için e-posta listesi açılmasından sonra birçok gönüllü Postgres’i geliştirmek için çalışmaya başladı. – Adı son kez değişti ve PostgreSQL oldu.
  • 4. ACID Uyumluluğu ● ATOMICITY: Ya hep ya hiç ● CONSISTENCY: Tutarlı verinin yazıldığı garanti edilir. ● ISOLATION: Bir transaction diğer transactionlarda yapılan işlemleri goremez, müdahale edemez. ● DURABILITY: Commit edilen veri kaybolamaz.
  • 5. Transactionlar ● READ COMMITTED – Kayıt eklenebilir, güncellenebilir ve silinebilir – Güncel veriyi görür ● REPEATABLE READ – Kayıt eklenebilir – Güncelleme ve silme yapılamaz – Transaction içinde değişen veriyi değil hep aynı veriyi görür ● SERIALIZABLE – Yeni kayıt, güncelleme ve silme yapılamaz – Transaction içinde değişen veriyi değil hep aynı veriyi görür
  • 6. MVCC ● Multi-Version Concurrency Control ● Okuma ve yazma işlemlerinin çakışmasını önleyerek birbirlerinden bağımsız bir biçimde çalışabilmelerini sağlar. Couchbase Virtuoso firebird PostgreSQL BigTable HyperGraphDB OrientDB Project Voldemort Drizzle CouchDB clustrix IBM DB2 InnoDB Cloudant StormDB Percona Server InterSystems Caché InterBase
  • 7. MVCC ● Committed & Xmin < Current XID – görünür ● Xmax <= Current XID – görünmez
  • 8. Savepoint ● Bir transaction içinde birden fazla olabilir. ● ROLLBACK TO SAVEPOINT tek yönde olur.
  • 9. Template Veritabanı Kavramı ● En temeli: template0 ● Esnek: template1 – kullanıcı yetkileri – Extensions & language ● datistemplate = true ● Template yaratabilirsiniz
  • 10. PostgreSQL Şema Kavramı ● Mantıksal gruplara ayırma ● Daha kolay yönetim ● 3. parti uygulama rahatlığı
  • 11. Kullanıcı/grup Yetkilendirmeleri ● CREATE ROLE = CREATE USER = CREATE GROUP ● REVOKE ALL ON SCHEMA public FROM public; ● 5 tablo ● Her grup için 2 kullanıcı olsun. Gruplar – admin: Tüm yetkilere sahip olsun – audit: Sadece okuma yetkisi – crm: user tablosunda sadece email ve phone kolonlarını görebilsin. Bir başka tablo da ise sadece bir kolonu göremesin (örn. creditcard no) – developer: okuma yazma silme güncelleme işlemlerini yapabilsin.
  • 12. Erişim Kontrol Mekanizmaları ● pg_hba.conf ● listen_address='*' host travego_test srv_travego 10.22.2.142/32 md5 host travego_test srv_setra 10.22.2.107/32 md5 host travego_test erkin_cakar 172.10.120.0/24 md5 host @dikey_tests +dikey_developer 172.10.120.0/24 md5
  • 13. PostgreSQL Yapılandırması ● RAID10 & !RAID5 ● Tablespace ● data, index, pg_xlog, backup, wal archive ● [root@travego ~]$ df -h /dev/mapper/vg_travego-lv_root 123G 17G 100G 15% / /dev/mapper/travego_base-lv_base 197G 6.6G 181G 4% /data/base /dev/mapper/travego_index-lv_index 99G 3.4G 91G 4% /data/index /dev/mapper/travego_wal-lv_wal 148G 16G 126G 11% /data/archives
  • 17. Dosya Yolu travego=# select pg_relation_filenode('auth_user'); pg_relation_filenode ---------------------- 16910 (1 row) travego=# select pg_relation_filepath('auth_user'); pg_relation_filepath ---------------------------------------------- pg_tblspc/16399/PG_9.2_201204301/16400/16910 (1 row)
  • 18. PostgreSQL Kurulum ● yum install postgresql93-server postgresql93-contrib ● apt-get install postgresql-9.3
  • 19. Önemli ● Tablo ve Index günlük büyüme oranları ● Vacuum süresi ● WAL archive takibi ● Schema değişiklikleri ● tail_n_mail ● Graphite & Carbon ● Fabric – pg_hba.conf – postgresql.conf – Crontab ● Login & sudo mails
  • 20. Kaynaklar ● http://postgresql.org ● https://devcenter.heroku.com/articles/postgresql-concurrency ● http://en.wikipedia.org/wiki/Multiversion_concurrency_control ● http://www.slideshare.net/Lipsum/postgresqle-genel-bak-14036831 ● http://en.wikipedia.org/wiki/Standard_RAID_levels