hackerspace postgresql atolyesi - 1

20
PostgreSQL Atölyesi Erkin Çakar [email protected] Hackerspace – 09.2013 1. oturum

Upload: erkin-cakar

Post on 16-Jul-2015

152 views

Category:

Technology


2 download

TRANSCRIPT

PostgreSQL Atölyesi

Erkin Ç[email protected]

Hackerspace – 09.20131. 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