[object 계층]

PostgreSQL objects hierarchy

1. template databases

  1) template1 : Database 생성시 참조되는 기본 database 

  2) template0 : template1이 문제 생겼을때 fix용도이거나 dump 복구하는 용으로 사용

2. databases : 사용자 데이터베이스

3. Roles

  1) superuser : superuser role는 login를 제외하고 모든 퍼미션을 bypass 함

  2) login : 데이터베이스에 접속하기 위해 client 사용

  3) createdb : 데이터베이스를 생성

  4) ceaterole : role를 생성/수정/삭제/변경 

  5) replication : replication 사용

  6) password : 패스워드 설정 (사용기간, 암호 알고리즘등)

  7) connection limit : connection 개수를 설정

  8) inherit : roles에 할당한 권한들을 상속

  9) bypassrls: row-level-security 를 bypass

4. Tablespaces : 데이터베이스 또는 데이터베이스 object에 저장위치를 지정

5. Settings : PostgreSQL server에 replication, write-ahead logs, resource consumption, query planning, logging, 

                authentication, statistic collection, garbage collection, client connection, lock management 등 제어


[object간 연관관계]

PostgreSQL high-level object interaction

 

[스키마]

Schema

 SELECT * FROM pg_catalog.pg_database;

1) table 종류

    - Permanent table

    - Temporary table

    - Unlogged table : not written into the wal files

    - Child table

2) Data types

    - smallint (2bytes) : -32,768 ~ + 32,767

    - int  (4bytes) : - 2147483648 ~ + 2147483647

    - bigint (8bytes) :  -9223372036854775808 ~ +9223372036854775807

    - numeric/decimal (variable) : up to 131072 (정수), up to 16383 (소수)

    - real (4bytes) : 1e-37 ~ 1e+37

    - double precision (8 bytes) : 1e-307 ~ 1e+308

    - char : 1

    - name : 64

    - char(n) : 1 ~ 10485760 (10 * 1024 * 1024)

    - varchar(n) : 1 ~ 10485760 like text with check constraint.  (text에 check를 사용)

    - text : unlimited

    - timestamp without time zone (8bytes) :  timestamp 동일

    - timestamp with time zone (8bytes) : timestamptz 동일

    - date (4bytes) : date only

    - time without time zone (8bytes) : time of day

    - time with time zone (12bytes) : times of day only, with time zone

    - interval (16bytes) : time interval

 3) example

     - 테이블 

     create table test (

            id   int primary key generated by default as identity,

            name   text not null,

            email   text not null unique,

            password   text not null,

            check (name !~ '\s'),

            check (email ~* '^\w+@\w+[.]\w+$'),

            check (char_length(password) >= 8) 

      );

      - view

      create view test.test_view select id, name, email from test.test;


'RDB > PostreSQL' 카테고리의 다른 글

PostgreSQL 보안  (0) 2016.03.22
postgresql index  (0) 2016.03.17
postgresql replication  (0) 2015.12.14
postgresql bench test 및 data dump  (0) 2015.12.09
postgresql 모니터링  (0) 2015.12.08

+ Recent posts