Tag: postgresql schema

Postgresql’de Schema Kavramı

Bir önceki yazımda PostgreSQL’de schema kavramından ve obje hiyerarşi’sinden bahsetmiştim. Bu yazımızda schema kavramını detaylandıracağız. Önceki yazıdada bahsettiğim gibi PostgreSQL veritabanı cluster, bir veya daha fazla veritabanı içerebilir. Roller ve diğer birkaç nesne türü, tüm cluster genelinde paylaşılır yani global nesnelerdir. Sunucuya ise client bağlantısı, yalnızca bağlantı isteğinde, belirtilen tek bir veritabanındaki verilere erişebilir.

Veritabanı ise tabloları ve objeleri içeren bir veya daha fazla schema’ya sahip olabilir, yani her schema yalnızca bir veri tabanına ait olabilirken  bir veri tabanında birden çok schema yaratılabilir. Farklı isimdeki iki schema, aynı isimde objeler içerebilir. Aslında burada schema kavramı veritabanı objeleri için namespace anlamına gelmektedir. Veri tabanı objesine erişmek istendiği zaman schema_name.object_name isimlendirmesi kullanılır. Veritabanlarından farklı olarak, schemalar katı bir şekilde ayrılmaz: bir kullanıcı, yetkileri varsa, bağlı oldukları veritabanındaki schemaların herhangi birindeki objelere erişebilir.  Schemaları kullanmak istemenin birkaç nedeni vardır;

  • Birçok kullanıcının birbirine müdahale etmeden, veritabanını kullanmasına izin vermek için.
  • Veritabanı objelerini daha yönetilebilir hale getirmek için mantıksal gruplar halinde düzenlemek.
  • Üçüncü taraf uygulamalar, diğer objelerin adlarıyla çakışmaması için ayrı schemalara yerleştirilebilir.
  • Schemalar, işletim sistemi düzeyindeki dizinlere benzer, ancak schemalar iç içe olamaz.

(continue reading…)

Loading


PostgreSQL’de Rol, Kullanıcı ve Grup Kavramı


Postgresql’de role, group role, user, schema gibi kavramları daha kolay anlayabilmek adına önce Postresql’de nesne hiyerarşisini bir resim ile kısaca göstermek istedim.

Postgresql-ROLE-USER-SCHEMA

Resimden de anlaşılacağı gibi; initdb yaptımız noktadan itibaren veritabanı clusterımız oluşur,  veritabanı cluster’ın altında ise roller, veritabanları ve tablespaceler vardır. Veritabanı le tablo,index, sequence vb objelerin arasında ise schema diye bir katman vardır.

İlk dikkat etmemiz gereken nokta roller ve tablespacelerin veritabanı ile aynı seviyede olması, yani hemen veritabanı cluster’ın altında olması. Bunun nedeni bir kullanıcı ve tablespace oluşturduğumuzda bu nesnelerin veritabanına ait olmaması yada bir diğer deyişle bu nesneleri globel nesne olması. Buradan şunuda anlayabiliriz roller ve tablespaceleri birden fazla veritabanında kullanabileceğimiz.

İkinci dikkat etmemiz gerekn nokta ise schema kavramı bu kavramı başka bir yazıda detaylıca anlatacağım ama kavram karmaşası olmaması adına kısaca değinmek istiyorum. Öncelikle bir veritabanında bir veya daha fazla schema olabilir, hatta aynı nesne ismi aynı veritabanında farklı schemalarda kullanılabilir. Veritabanlarından farklı olarak schemalar katı bir şekilde ayrılmaz: bir kullanıcı, yetkileri varsa, bağlı oldukları veritabanındaki schemaların herhangi birindeki nesnelere erişebilir. Schemaları  kullanmak istemenin birkaç nedeni vardır:

  • Birçok kullanıcının birbirine müdahale etmeden bir veritabanını kullanmasına izin vermek için.
  • Veritabanı nesnelerini daha yönetilebilir hale getirmek için mantıksal gruplar halinde düzenlemek.
  • Üçüncü taraf uygulamalar, diğer nesnelerin adlarıyla çakışmaması için ayrı schemalara yerleştirilebilir.
  • Schemalar, işletim sistemi düzeyindeki dizinlere benzer, ancak schemalar iç içe olamaz.

PostgreSQL’de ROL Kavramı

Gelelim bugünkü asıl konumuz olan rol kavramına; PostgreSQL, roller kavramını kullanarak veritabanı erişim izinlerini yönetir. Bir rol, rolün nasıl ayarlandığına bağlı olarak bir veritabanı kullanıcısı veya bir veritabanı kullanıcısı grubu olarak düşünülebilir.  Bu koyu yazdığım yer işin can alıcı noktası, Postgresql’de user diye bir kavram yoktur user dediğimiz nesne, rolün LOGIN yetkili halidir. Bu dediğimin anlaşılabilmesi adına 3 farklı nesne oluşturacağım ve daha sonra \du  komutu veya pg_user/pg_roles sistem viewleri ile bu nesnelere bakacağız;

NOT : Rol kavramı, “user” ve ” groups ” kavramlarını kapsar. 8.1’den önceki PostgreSQL sürümlerinde, user ve groups farklı türde varlıklardı, ancak şimdi yalnızca roller var. Herhangi bir rol bir kullanıcı, bir grup veya her ikisi olarak hareket edebilir. (continue reading…)

Loading


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress