Şemalar, bir Hologres veritabanı içindeki tabloları düzenleyerek birden fazla kullanıcının veya uygulamanın birbirini etkilemeden aynı veritabanını paylaşmasına olanak tanır.
Çalışma biçimi
Hologres PostgreSQL ile uyumludur ve şema davranışı PostgreSQL standardını izler. Şemalar, tablo adresleme yapısını database.table biçiminden database.schema.table biçimine değiştirir; bu sayede farklı şemalardaki tablolar veya veri türleri çakışma olmadan aynı ada sahip olabilir.
Her Hologres veritabanında varsayılan olarak public adlı bir şema bulunur. Açıkça bir şema adı belirtilmeden oluşturulan tablolar public şemasında saklanır.
Aşağıdaki şekil, bir Hologres örneğindeki nesne hiyerarşisini gösterir.

Hologres şu anda aşağıdakileri destekler:
Şema oluşturma
Şema yeniden adlandırma
Bir şema içinde tablo oluşturma
Söz dizimi
CREATE SCHEMA schema_name;
Şema oluşturma
-
Şemayı oluşturun.
CREATE SCHEMA schemaname;--Create a schema. -
Yeni şemaya geçin ve bu şema içinde bir tablo oluşturun.
SET search_path TO schemaname;--Switch to the target schema. CREATE TABLE blink_demo (id text); --Create a table in the target schema. -
Etkin şemanın değiştiğini doğrulayın.
SELECT CURRENT_SCHEMA();--View the current schema.Sorgu
schemanamedeğerini döndürür; bu da geçişin başarılı olduğunu gösterir.
Bir tablonun hangi şemaya ait olduğunu kontrol etmek için terminalde aşağıdaki komutu çalıştırın:
\d tablename; --View the schema to which the target table belongs. This statement applies only to the terminal.
Şemalar arasında tablo oluşturma
search_path değerini değiştirmeden belirli bir şemada tablo oluşturmak için tablo adının önüne şema adını ekleyin: schema.table.
Public şemasında tablo oluşturma:
CREATE TABLE public.mytest (
name text,
id INT);
Public şemasına bağlıyken başka bir şemada tablo oluşturma:
SET search_path TO public;
CREATE TABLE my_schema.mytest (
name text,
id INT,
age INT
);
Şema depolama boyutunu görüntüleme
Bir şemadaki tüm tabloların toplam depolama boyutunu görüntülemek için aşağıdaki sorguyu çalıştırın:
SELECT table_schema, pg_size_pretty(SUM(pg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name))::decimal)) AS schema_size
FROM information_schema.tables
WHERE table_schema = '<schema_name>'--Replace <schema_name> with the name of your schema.
GROUP BY table_schema;