Detaylara girmeden önce kavramları netleştirmemiz gerektiğini düşünüyorum çünkü kavramlar farklı veritabanları için değişebiliyor hatta aynı veritabanı için aynı kavram veritabanı yöneticisi ve yazılımcı için bile farklı anlamlara gelebiliyor. Bu nedenle Postgresql’deki kavramları kısaca anlatmak istiyorum.
PostgreSQL’de her tablo, sütun koleksiyonunun isimlendirlmiş halidir. Tablolar, veritabanları halinde gruplandırılır yani veritabanları tablo koleksiyonlarıdır ve tek bir PostgreSQL instance(verilere erişimi idare eden) tarafından yönetilen veritabanı koleksiyonuna, veritabanı cluster denir. Bu kısmı önemsediğim için elimden geldiğince kısa ve öz yazmaya çalıştım ve bu parağrafdan anlaşılmasını istedikleirm PostgreSQL’de tablo, veritabanı, veritabanı cluster ve instance kavramları.
Bir sunucuda birden fazla cluster çalışabilir ama her cluster kendi data dizininde çalışması gerekir yani başka bir deyişle bir data dizininde sadece bir tane cluster çalışabilir. Bu arada bir sunucuda birden fazla cluster çalışıyorsa her cluster için farklı port kullanılması gerekir eğer aynı port kullanılsın isteniyorsa o zaman da sunucuda birden fazla ip olması lazım.
NOT : Yukarıdaki özellikle instance ve cluster kavramlarını Oracle veritabanlarındaki anlamlarıyla karıştırmamak gerekir.
Cluster’ın Mantıksal Yapısı
Cluster, PostgreSQL sunucusu tarafından yönetilen veritabanı koleksiyonudur. PostgreSQL’deki “veritabanı cluster” terimi, “bir grup veritabanı sunucusu” anlamına gelmez. Bir PostgreSQL sunucusu, tek bir ana bilgisayarda çalışır ve tek bir veritabanı clusterını yönetir. Veritabanı, veritabanı nesnelerinin bir koleksiyonudur. İlişkisel veritabanı teorisinde, veritabanı nesnesi verileri depolamak veya referans vermek için kullanılan veri yapısıdır. PostgreSQL’de veritabanları aynı zamanda veritabanı nesneleridir ve mantıksal olarak birbirlerinden ayrılırlar. Diğer tüm veritabanı nesneleri (örn. Tablolar, dizinler, vb.) İlgili veritabanlarına aittir. Aslında aşağıdaki resim herşeyi özetliyor.
PostgreSQL’deki tüm veritabanı nesneleri, 4 baytlık integer olan unique bir OID (object id) değeri bulunur. Veritabanı nesneleri ve ilgili OID’ler arasındaki ilişkiler, nesnelerin türüne bağlı olarak uygun sistem kataloglarında saklanır. Örneğin, veritabanlarının OID’leri ve heap tabloları sırasıyla pg_database ve pg_class’da saklanır, böylece aşağıdaki gibi sorgular çalıştırarak bilmek istediğiniz OID’leri bulabilirsiniz: (continue reading…)