Postgresql’de Schema Yönetimi

Postgresql veri tabanında şema kavramı veri tabanı objeleri için bir namespace anlamına gelmektedir. Tablo, view, index, fonksiyon gibi bir veri tabanı objesine erişmek istendiği zaman schema_name.object_name isimlendirmesi kullanılır.

Her şema yalnızca bir veri tabanına ait olabilir. Bir veri tabanında ise birden çok şema yaratılabilir. Farklı isimdeki iki şema, aynı isimde objeler içerebilir.

Şemalar ile veri tabanı objeleri mantıksal gruplara dahil edilir ve yönetimleri kolaylaşır. Ve birden cok user’ın karışıklık olmadan aynı veri tabanını kullanabilmesini sağlar.

Public Schema

Postgresql’de yeni oluşturulan her veri tabanında public isimli bir şema bulunur. Veri tabanında şema adı belirtmeden bir obje yaratıldığı zaman otomatik olarak objeler public şemasında yaratılır. Yani Public şema veri tabanları için default şemadır.

CREATE TABLE table01(…)

CREATE TABLE public.table01(…)

Yukarıdaki iki komut aynı anlama gelmektedir.

Search path denilen sistem değişkeni şema isimlerini tutar. Şema adı belirtmeden bir obje girildiği zaman veri tabanı search path’de yer alan şema isimlerini kullanarak objeyi arar.

SELECT current_schema(); komutu ile o anda kullanılan şema görüntülenebilir. Show search_path komutu ise search path’in değerini gösterir.

Eğer username ile aynı isimde bir şema var ise publice schema yerine o kullanılır.

Yeni bir şema oluşturmak için Create Schema komutu kullanılır.Veri tabanı objesi şema adı verilmeden oluşturulmaya çalışıldığında Search path’e hangi şema adı ilk önce yazılır ise o şemada yaratılır.

Schema Privileges

Postgresql veri tabanında her kullanıcı kendi şeması üzerindeki objelere erişebilir. Farklı şemalardaki objelere erişimler için kullanıcılara erişmek istedikleri şema için USAGE hakkı tanımlanmalıdır. USAGE hakkı aşağıdaki gibi tanımlanır.

GRANT USAGE ON SCHEMA schema_name to user_name ;

Kullanıcıların kendi şemalarından başka bir şema üzerinde object oluşturabilmesi için ise CREATE yetkisi verilmelidir.

GRANT CREATE ON SCHEMA schema_name TO user_name;

Bütün kullanıcıların public schema üzerinde USAGE ve CREATE yetkileri default olarak tanımlıdır.

Veysel YUKSEL
Latest posts by Veysel YUKSEL (see all)

Veysel YUKSEL

RDBMS ve NoSQL veri tabanı yönetimi ve Big Data teknolojileri.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir